[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sysconf.c _SC_SEM_XXX patch



Hi,

I have wrote a very small patch to add _SC_SEM_NSEMS_MAX and _SC_SEM_VALUE_MAX to sysconf().
I apologize if it is not adequate.



diff -u unistd.old.h unistd.h --- unistd.old.h Fri May 7 01:05:12 2004 +++ unistd.h Fri May 7 01:06:55 2004 @@ -119,6 +119,9 @@ #define _SC_FSYNC 29 #define _SC_XOPEN_SHM 30

+#define _SC_SEM_NSEMS_MAX      31
+#define _SC_SEM_VALUE_MAX      32
+
 #ifdef notyet
 /* P1003.1c */
 #define _SC_GETGR_R_SIZE_MAX


diff -u sysconf.old.c sysconf.c --- sysconf.old.c Fri May 7 00:03:45 2004 +++ sysconf.c Fri May 7 00:25:27 2004 @@ -42,6 +42,7 @@ #include <sys/sysctl.h> #include <sys/time.h> #include <sys/resource.h> +#include <sys/sem.h>

 #include <errno.h>
 #include <unistd.h>
@@ -64,7 +65,7 @@
 {
        struct rlimit rl;
        size_t len;
-       int mib[2], value;
+       int mib[3], value;

        len = sizeof(value);

@@ -184,6 +185,18 @@
mib[0] = CTL_USER;
mib[1] = USER_POSIX2_UPE;
goto yesno;
+
+/* SEM */
+ case _SC_SEM_NSEMS_MAX:
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_SEMINFO;
+ mib[2] = KERN_SEMINFO_SEMMNS;
+ goto sem;
+ case _SC_SEM_VALUE_MAX:
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_SEMINFO;
+ mib[2] = KERN_SEMINFO_SEMVMX;
+sem: return (sysctl(mib, 3, &value, &len, NULL, 0) == -1 ? -1 : value);


 /* XPG 4.2 */
        case _SC_XOPEN_SHM:


Cordialement, Jean-Gérard Pailloncy



Visit your host, monkey.org