1 --- sysconf.c 2004-04-15 16:50:28.000000000 -0700
2 +++ /Volumes/dee/Len/Build/Libc-3845788.roots/Libc-3845788.sym/sysconf-fbsd.c 2004-11-30 18:08:26.000000000 -0800
4 #include <sys/sysctl.h>
5 #include <sys/resource.h>
6 #include <sys/socket.h>
8 +#include <sys/semaphore.h>
16 -#include "../stdlib/atexit.h"
17 -#include "../stdtime/tzfile.h"
21 #define _PATH_ZONEINFO TZDIR /* from tzfile.h */
27 + quad_t qdvalue; /* for kern.sysv.shmmin */
29 - int mib[2], sverrno, value;
30 + int mib[3], sverrno, value;
35 return (_POSIX_TIMERS);
37 case _SC_AIO_LISTIO_MAX:
38 - mib[0] = CTL_P1003_1B;
39 - mib[1] = CTL_P1003_1B_AIO_LISTIO_MAX;
42 - mib[0] = CTL_P1003_1B;
43 - mib[1] = CTL_P1003_1B_AIO_MAX;
45 + mib[1] = KERN_AIOMAX;
48 case _SC_AIO_PRIO_DELTA_MAX:
49 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_AIO_PRIO_DELTA_MAX)
50 mib[0] = CTL_P1003_1B;
51 mib[1] = CTL_P1003_1B_AIO_PRIO_DELTA_MAX;
56 case _SC_DELAYTIMER_MAX:
57 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_DELAYTIMER_MAX)
58 mib[0] = CTL_P1003_1B;
59 mib[1] = CTL_P1003_1B_DELAYTIMER_MAX;
65 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_MQ_OPEN_MAX)
66 mib[0] = CTL_P1003_1B;
67 mib[1] = CTL_P1003_1B_MQ_OPEN_MAX;
73 defaultresult = getpagesize();
74 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_PAGESIZE)
75 mib[0] = CTL_P1003_1B;
76 mib[1] = CTL_P1003_1B_PAGESIZE;
79 + return defaultresult;
82 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_RTSIG_MAX)
83 mib[0] = CTL_P1003_1B;
84 mib[1] = CTL_P1003_1B_RTSIG_MAX;
89 case _SC_SEM_NSEMS_MAX:
90 - mib[0] = CTL_P1003_1B;
91 - mib[1] = CTL_P1003_1B_SEM_NSEMS_MAX;
95 + mib[2] = KSYSV_SEMMNS;
96 + return (sysctl(mib, 3, &value, &len, NULL, 0) == -1 ? -1 : value);
98 case _SC_SEM_VALUE_MAX:
99 +#if SEM_VALUE_MAX == 0
100 mib[0] = CTL_P1003_1B;
101 mib[1] = CTL_P1003_1B_SEM_VALUE_MAX;
104 + return (SEM_VALUE_MAX);
106 case _SC_SIGQUEUE_MAX:
107 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_SIGQUEUE_MAX)
108 mib[0] = CTL_P1003_1B;
109 mib[1] = CTL_P1003_1B_SIGQUEUE_MAX;
115 +#if defined(CTL_P1003_1B) && defined(CTL_P1003_1B_TIMER_MAX)
116 mib[0] = CTL_P1003_1B;
117 mib[1] = CTL_P1003_1B_TIMER_MAX;
122 yesno: if (sysctl(mib, 2, &value, &len, NULL, 0) == -1)
125 return (defaultresult);
129 case _SC_2_PBS_ACCOUNTING:
130 case _SC_2_PBS_CHECKPOINT:
131 case _SC_2_PBS_LOCATE:
132 case _SC_2_PBS_MESSAGE:
133 case _SC_2_PBS_TRACK:
134 -#if _POSIX2_PBS == 0
135 -#error "don't know how to determine _SC_2_PBS"
137 - * This probably requires digging through the filesystem
138 - * to see if the appropriate package has been installed.
139 - * Since we don't currently support this option at all,
140 - * it's not worth the effort to write the code now.
141 - * Figuring out which of the sub-options are supported
142 - * would be even more difficult, so it's probably easier
143 - * to always say ``no''.
146 - return (_POSIX2_PBS);
149 case _SC_ADVISORY_INFO:
150 #if _POSIX_ADVISORY_INFO == 0
151 #error "_POSIX_ADVISORY_INFO"
152 @@ -348,18 +369,10 @@
154 return (_POSIX_CPUTIME);
157 case _SC_FILE_LOCKING:
159 - * XXX - The standard doesn't tell us how to define
160 - * _POSIX_FILE_LOCKING, so we can't answer this one.
163 -#if _POSIX_THREAD_SAFE_FUNCTIONS > -1
164 case _SC_GETGR_R_SIZE_MAX:
165 case _SC_GETPW_R_SIZE_MAX:
166 -#error "somebody needs to implement this"
169 case _SC_HOST_NAME_MAX:
170 return (MAXHOSTNAMELEN - 1); /* does not include \0 */
171 case _SC_LOGIN_NAME_MAX:
174 return (_POSIX_MONOTONIC_CLOCK);
176 -#if _POSIX_MESSAGE_PASSING > -1
177 case _SC_MQ_PRIO_MAX:
178 - return (MQ_PRIO_MAX);
181 case _SC_READER_WRITER_LOCKS:
182 return (_POSIX_READER_WRITER_LOCKS);
184 @@ -410,10 +421,16 @@
185 return (_POSIX_THREAD_PROCESS_SHARED);
186 case _SC_THREAD_SAFE_FUNCTIONS:
187 return (_POSIX_THREAD_SAFE_FUNCTIONS);
188 + case _SC_THREAD_SPORADIC_SERVER:
189 + return (_POSIX_THREAD_SPORADIC_SERVER);
190 case _SC_THREAD_STACK_MIN:
191 return (PTHREAD_STACK_MIN);
192 case _SC_THREAD_THREADS_MAX:
193 +#ifdef PTHREAD_THREADS_MAX
194 return (PTHREAD_THREADS_MAX); /* XXX wrong type! */
199 return (_POSIX_TIMEOUTS);
201 @@ -425,16 +442,14 @@
203 return (_POSIX_TRACE);
205 -#if _POSIX_TRACE > -1
206 case _SC_TRACE_EVENT_FILTER:
207 return (_POSIX_TRACE_EVENT_FILTER);
208 case _SC_TRACE_INHERIT:
209 return (_POSIX_TRACE_INHERIT);
211 return (_POSIX_TRACE_LOG);
213 case _SC_TTY_NAME_MAX:
215 + path = "/"; // should be _PATH_DEV (PR-3624562)
217 case _SC_TYPED_MEMORY_OBJECTS:
218 #if _POSIX_TYPED_MEMORY_OBJECTS == 0
221 return (ATEXIT_SIZE);
225 mib[1] = KERN_IOV_MAX;
230 case _SC_XOPEN_CRYPT:
231 return (_XOPEN_CRYPT);
232 case _SC_XOPEN_ENH_I18N:
237 - if (sysctlbyname("kern.ipc.shmmin", &value, &len, NULL,
238 + len = sizeof(qdvalue);
239 + if (sysctlbyname("kern.sysv.shmmin", &qdvalue, &len, NULL,
243 @@ -568,11 +588,25 @@
244 return (_POSIX_IPV6);
247 +#ifdef _SC_NPROCESSORS_CONF
248 case _SC_NPROCESSORS_CONF:
250 +#ifdef _SC_NPROCESSORS_ONLN
251 case _SC_NPROCESSORS_ONLN:
253 +#if defined(_SC_NPROCESSORS_CONF) || defined(_SC_NPROCESSORS_ONLN)
258 + case _SC_XBS5_ILP32_OFF32:
259 + return (_XBS5_ILP32_OFF32);
260 + case _SC_XBS5_ILP32_OFFBIG:
261 + return (_XBS5_ILP32_OFFBIG);
262 + case _SC_XBS5_LP64_OFF64:
263 + return (_XBS5_LP64_OFF64);
264 + case _SC_XBS5_LPBIG_OFFBIG:
265 + return (_XBS5_LPBIG_OFFBIG);