//#define _KERNEL #include #include #include #include #include // By Philip Semanchuk for posix_ipc and http://bugs.python.org/issue3110 // OpenSolaris 2008.05 WITHOUT #define _KERNEL: // SEM_VALUE_MAX is undefined // _SEM_VALUE_MAX is undefined // sysconf(_SC_SEM_VALUE_MAX) = 2147483647 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = 2147483647 // OpenSolaris 2008.05 WITH #define _KERNEL: // SEM_VALUE_MAX is undefined // _SEM_VALUE_MAX = 2147483647 // sysconf(_SC_SEM_VALUE_MAX) = 2147483647 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = 2147483647 // OS X 10.5.5: // SEM_VALUE_MAX = 32767 // _SEM_VALUE_MAX is undefined // sysconf(_SC_SEM_VALUE_MAX) = 32767 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = 32767 // Some version of Linux (RHEL I think): // SEM_VALUE_MAX = 2147483647 // _SEM_VALUE_MAX is undefined // sysconf(_SC_SEM_VALUE_MAX) = -1 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = 2147483647 // Ubuntu 8.04 // SEM_VALUE_MAX = 2147483647 // _SEM_VALUE_MAX is undefined // sysconf(_SC_SEM_VALUE_MAX) = 2147483647 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = 2147483647 // FreeBSD 7 (/usr/src/sys/conf/NOTES says, // "p1003_1b_semaphores are very experimental") // SEM_VALUE_MAX = -1 <== This is (~0U) // _SEM_VALUE_MAX is undefined // sysconf(_SC_SEM_VALUE_MAX) = -1 // _POSIX_SEM_VALUE_MAX = 32767 // PATCH_SEM_VALUE_MAX = -1 int main() { #ifdef SEM_VALUE_MAX printf("SEM_VALUE_MAX = %ld\n", (long)SEM_VALUE_MAX); #else printf("SEM_VALUE_MAX is undefined\n"); #endif #ifdef _SEM_VALUE_MAX printf("_SEM_VALUE_MAX = %ld\n", (long)_SEM_VALUE_MAX); #else printf("_SEM_VALUE_MAX is undefined\n"); #endif #ifdef _SC_SEM_VALUE_MAX printf("sysconf(_SC_SEM_VALUE_MAX) = %ld\n", sysconf(_SC_SEM_VALUE_MAX)); #else printf("_SC_SEM_VALUE_MAX is undefined\n"); #endif #ifdef _POSIX_SEM_VALUE_MAX printf("_POSIX_SEM_VALUE_MAX = %ld\n", (long)_POSIX_SEM_VALUE_MAX); #else printf("_POSIX_SEM_VALUE_MAX is undefined\n"); #endif #ifndef SEM_VALUE_MAX # ifdef _SEM_VALUE_MAX # define PATCH_SEM_VALUE_MAX _SEM_VALUE_MAX # else # define PATCH_SEM_VALUE_MAX INT_MAX # endif #else # define PATCH_SEM_VALUE_MAX SEM_VALUE_MAX #endif printf("PATCH_SEM_VALUE_MAX = %ld\n", (long)PATCH_SEM_VALUE_MAX); return 0; }