Module Name: src Committed By: pgoyette Date: Wed May 13 01:00:16 UTC 2015
Modified Files: src/sys/kern: init_sysctl.c sysv_msg.c sysv_sem.c sysv_shm.c Log Message: More preparation for modularizing the SYSVxxx options. Here we change the kern.ipc.sysvxxx sysctls into dynamic values, so each sub-component of SYSVxxx can declare its own availability. To generate a diff of this commit: cvs rdiff -u -r1.205 -r1.206 src/sys/kern/init_sysctl.c cvs rdiff -u -r1.67 -r1.68 src/sys/kern/sysv_msg.c cvs rdiff -u -r1.92 -r1.93 src/sys/kern/sysv_sem.c cvs rdiff -u -r1.126 -r1.127 src/sys/kern/sysv_shm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/init_sysctl.c diff -u src/sys/kern/init_sysctl.c:1.205 src/sys/kern/init_sysctl.c:1.206 --- src/sys/kern/init_sysctl.c:1.205 Wed Apr 22 16:42:24 2015 +++ src/sys/kern/init_sysctl.c Wed May 13 01:00:16 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: init_sysctl.c,v 1.205 2015/04/22 16:42:24 pooka Exp $ */ +/* $NetBSD: init_sysctl.c,v 1.206 2015/05/13 01:00:16 pgoyette Exp $ */ /*- * Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.205 2015/04/22 16:42:24 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.206 2015/05/13 01:00:16 pgoyette Exp $"); #include "opt_sysv.h" #include "opt_compat_netbsd.h" @@ -75,6 +75,16 @@ uid_t security_setidcore_owner = 0; gid_t security_setidcore_group = 0; mode_t security_setidcore_mode = (S_IRUSR|S_IWUSR); +/* + * Current status of SysV IPC capability. Initially, these are + * 0 if the capability is not built-in to the kernel, but can + * be updated if the appropriate kernel module is (auto)loaded. + */ + +int kern_has_sysvmsg = 0; +int kern_has_sysvshm = 0; +int kern_has_sysvsem = 0; + static const u_int sysctl_lwpprflagmap[] = { LPR_DETACHED, L_DETACHED, 0 @@ -276,38 +286,25 @@ SYSCTL_SETUP(sysctl_kern_setup, "sysctl NULL, 0, NULL, 0, CTL_KERN, KERN_SYSVIPC, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, - CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, + CTLFLAG_PERMANENT|CTLFLAG_READONLY, CTLTYPE_INT, "sysvmsg", SYSCTL_DESCR("System V style message support available"), - NULL, -#ifdef SYSVMSG - 1, -#else /* SYSVMSG */ - 0, -#endif /* SYSVMSG */ - NULL, 0, CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_MSG, CTL_EOL); + NULL, 0, &kern_has_sysvmsg, sizeof(int), + CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_MSG, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, - CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, + CTLFLAG_PERMANENT|CTLFLAG_READONLY, CTLTYPE_INT, "sysvsem", SYSCTL_DESCR("System V style semaphore support " - "available"), NULL, -#ifdef SYSVSEM - 1, -#else /* SYSVSEM */ - 0, -#endif /* SYSVSEM */ - NULL, 0, CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_SEM, CTL_EOL); + "available"), + NULL, 0, &kern_has_sysvsem, sizeof(int), + CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_SEM, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, - CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, + CTLFLAG_PERMANENT|CTLFLAG_READONLY, CTLTYPE_INT, "sysvshm", SYSCTL_DESCR("System V style shared memory support " - "available"), NULL, -#ifdef SYSVSHM - 1, -#else /* SYSVSHM */ - 0, -#endif /* SYSVSHM */ - NULL, 0, CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_SHM, CTL_EOL); + "available"), + NULL, 0, &kern_has_sysvshm, sizeof(int), + CTL_KERN, KERN_SYSVIPC, KERN_SYSVIPC_SHM, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, CTLTYPE_INT, "synchronized_io", Index: src/sys/kern/sysv_msg.c diff -u src/sys/kern/sysv_msg.c:1.67 src/sys/kern/sysv_msg.c:1.68 --- src/sys/kern/sysv_msg.c:1.67 Tue May 12 05:19:20 2015 +++ src/sys/kern/sysv_msg.c Wed May 13 01:00:16 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_msg.c,v 1.67 2015/05/12 05:19:20 pgoyette Exp $ */ +/* $NetBSD: sysv_msg.c,v 1.68 2015/05/13 01:00:16 pgoyette Exp $ */ /*- * Copyright (c) 1999, 2006, 2007 The NetBSD Foundation, Inc. @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_msg.c,v 1.67 2015/05/12 05:19:20 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_msg.c,v 1.68 2015/05/13 01:00:16 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_sysv.h" @@ -89,6 +89,8 @@ static kcondvar_t msg_realloc_cv; static void msg_freehdr(struct __msg *); +extern int kern_has_sysvmsg; + void msginit(void) { @@ -157,6 +159,8 @@ msginit(void) cv_init(&msg_realloc_cv, "msgrealc"); msg_realloc_state = false; + kern_has_sysvmsg = 1; + sysvipcinit(); } Index: src/sys/kern/sysv_sem.c diff -u src/sys/kern/sysv_sem.c:1.92 src/sys/kern/sysv_sem.c:1.93 --- src/sys/kern/sysv_sem.c:1.92 Tue May 12 05:19:20 2015 +++ src/sys/kern/sysv_sem.c Wed May 13 01:00:16 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_sem.c,v 1.92 2015/05/12 05:19:20 pgoyette Exp $ */ +/* $NetBSD: sysv_sem.c,v 1.93 2015/05/13 01:00:16 pgoyette Exp $ */ /*- * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.92 2015/05/12 05:19:20 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.93 2015/05/13 01:00:16 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_sysv.h" @@ -87,6 +87,10 @@ static u_int sem_waiters __cacheline_a #define SEM_PRINTF(a) #endif +void *hook; /* cookie from exithook_establish() */ + +extern int kern_has_sysvsem; + struct sem_undo *semu_alloc(struct proc *); int semundo_adjust(struct proc *, struct sem_undo **, int, int, int); void semundo_clear(int, int); @@ -132,6 +136,8 @@ seminit(void) semu_list = NULL; exithook_establish(semexit, NULL); + kern_has_sysvsem = 1; + sysvipcinit(); } Index: src/sys/kern/sysv_shm.c diff -u src/sys/kern/sysv_shm.c:1.126 src/sys/kern/sysv_shm.c:1.127 --- src/sys/kern/sysv_shm.c:1.126 Tue May 12 05:19:20 2015 +++ src/sys/kern/sysv_shm.c Wed May 13 01:00:16 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_shm.c,v 1.126 2015/05/12 05:19:20 pgoyette Exp $ */ +/* $NetBSD: sysv_shm.c,v 1.127 2015/05/13 01:00:16 pgoyette Exp $ */ /*- * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.126 2015/05/12 05:19:20 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.127 2015/05/13 01:00:16 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_sysv.h" @@ -108,6 +108,8 @@ struct shmmap_state { SLIST_HEAD(, shmmap_entry) entries; }; +extern int kern_has_sysvshm; + #ifdef SHMDEBUG #define SHMPRINTF(a) printf a #else @@ -986,6 +988,8 @@ shminit(void) shm_realloc_disable = 0; shm_realloc_state = false; + kern_has_sysvshm = 1; + sysvipcinit(); }