1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
  24  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  25  * Use is subject to license terms.
  26  */
  27 /*
  28  * Copyright (c) 2012, Joyent, Inc.  All rights reserved.
  29  */
  30 
  31 /*
  32  * Stubs for the standalone to reduce the dependence on external libraries
  33  */
  34 
  35 #include <string.h>
  36 #include "misc.h"
  37 
  38 /*ARGSUSED*/
  39 int
  40 cond_init(cond_t *cvp, int type, void *arg)
  41 {
  42         return (0);
  43 }
  44 
  45 /*ARGSUSED*/
  46 int
  47 cond_destroy(cond_t *cvp)
  48 {
  49         return (0);
  50 }
  51 
  52 /*ARGSUSED*/
  53 int
  54 cond_wait(cond_t *cv, mutex_t *mutex)
  55 {
  56         umem_panic("attempt to wait on standumem cv %p", cv);
  57 
  58         /*NOTREACHED*/
  59         return (0);
  60 }
  61 
  62 /*ARGSUSED*/
  63 int
  64 cond_broadcast(cond_t *cvp)
  65 {
  66         return (0);
  67 }
  68 
  69 /*ARGSUSED*/
  70 int
  71 pthread_setcancelstate(int state, int *oldstate)
  72 {
  73         return (0);
  74 }
  75 
  76 thread_t
  77 thr_self(void)
  78 {
  79         return ((thread_t)1);
  80 }
  81 
  82 static mutex_t _mp = DEFAULTMUTEX;
  83 
  84 /*ARGSUSED*/
  85 int
  86 mutex_init(mutex_t *mp, int type, void *arg)
  87 {
  88         (void) memcpy(mp, &_mp, sizeof (mutex_t));
  89         return (0);
  90 }
  91 
  92 /*ARGSUSED*/
  93 int
  94 mutex_destroy(mutex_t *mp)
  95 {
  96         return (0);
  97 }
  98 
  99 /*ARGSUSED*/
 100 int
 101 _mutex_held(void *mp)
 102 {
 103         return (1);
 104 }
 105 
 106 /*ARGSUSED*/
 107 int
 108 mutex_lock(mutex_t *mp)
 109 {
 110         return (0);
 111 }
 112 
 113 /*ARGSUSED*/
 114 int
 115 mutex_trylock(mutex_t *mp)
 116 {
 117         return (0);
 118 }
 119 
 120 /*ARGSUSED*/
 121 int
 122 mutex_unlock(mutex_t *mp)
 123 {
 124         return (0);
 125 }
 126 
 127 int
 128 issetugid(void)
 129 {
 130         return (1);
 131 }
 132 
 133 int
 134 _tmem_get_nentries(void)
 135 {
 136         return (0);
 137 }
 138 
 139 uintptr_t
 140 _tmem_get_base(void)
 141 {
 142         return (0);
 143 }
 144 
 145 /*ARGSUSED*/
 146 void
 147 _tmem_set_cleanup(void (*f)(int, void *))
 148 {
 149 }
 150 
 151 int
 152 isspace(int c)
 153 {
 154         switch (c) {
 155         case ' ':
 156         case '\t':
 157         case '\n':
 158         case '\r':
 159         case '\f':
 160         case '\v':
 161                 return (1);
 162         }
 163         return (0);
 164 }