Date: Mon, 4 Dec 2006 16:39:42 GMT From: Todd Miller <millert@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 111025 for review Message-ID: <200612041639.kB4Gdgoo059222@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=111025 Change 111025 by millert@millert_g5tower on 2006/12/04 16:38:58 Export the posix sem/shm subsystem locks. Use struct definitions in the header files instead of duplicating them in the .c files. Affected files ... .. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/posix_sem.c#6 edit .. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/posix_shm.c#6 edit .. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/sys/posix_sem.h#4 edit .. //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/sys/posix_shm.h#4 edit Differences ... ==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/posix_sem.c#6 (text+ko) ==== @@ -65,6 +65,7 @@ #include <sys/tty.h> #include <sys/malloc.h> #include <sys/semaphore.h> +#include <sys/posix_sem.h> #include <sys/sysproto.h> #include <bsm/audit_kernel.h> @@ -90,30 +91,7 @@ #define f_ops f_fglob->fg_ops #define f_offset f_fglob->fg_offset #define f_data f_fglob->fg_data -#define PSEMNAMLEN 31 /* maximum name segment length we bother with */ - -struct pseminfo { - unsigned int psem_flags; - unsigned int psem_usecount; - mode_t psem_mode; - uid_t psem_uid; - gid_t psem_gid; - char psem_name[PSEMNAMLEN + 1]; /* segment name */ - semaphore_t psem_semobject; - struct proc * sem_proc; - struct label * psem_label; -}; -#define PSEMINFO_NULL (struct pseminfo *)0 -#define PSEM_NONE 1 -#define PSEM_DEFINED 2 -#define PSEM_ALLOCATED 4 -#define PSEM_MAPPED 8 -#define PSEM_INUSE 0x10 -#define PSEM_REMOVED 0x20 -#define PSEM_INCREATE 0x40 -#define PSEM_INDELETE 0x80 - struct psemcache { LIST_ENTRY(psemcache) psem_hash; /* hash chain */ struct pseminfo *pseminfo; /* vnode the name refers to */ @@ -183,10 +161,7 @@ static lck_grp_t *psx_sem_subsys_lck_grp; static lck_grp_attr_t *psx_sem_subsys_lck_grp_attr; static lck_attr_t *psx_sem_subsys_lck_attr; -static lck_mtx_t psx_sem_subsys_mutex; - -#define PSEM_SUBSYS_LOCK() lck_mtx_lock(& psx_sem_subsys_mutex) -#define PSEM_SUBSYS_UNLOCK() lck_mtx_unlock(& psx_sem_subsys_mutex) + lck_mtx_t psx_sem_subsys_mutex; static int psem_cache_add(struct pseminfo *psemp, struct psemname *pnp, struct psemcache *pcp); ==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/kern/posix_shm.c#6 (text+ko) ==== @@ -67,6 +67,7 @@ #include <sys/mman.h> #include <sys/stat.h> #include <sys/sysproto.h> +#include <sys/posix_shm.h> #include <bsm/audit_kernel.h> @@ -93,35 +94,7 @@ #define f_ops f_fglob->fg_ops #define f_offset f_fglob->fg_offset #define f_data f_fglob->fg_data -#define PSHMNAMLEN 31 /* maximum name segment length we bother with */ - -struct pshminfo { - unsigned int pshm_flags; - unsigned int pshm_usecount; - off_t pshm_length; - mode_t pshm_mode; - uid_t pshm_uid; - gid_t pshm_gid; - char pshm_name[PSHMNAMLEN + 1]; /* segment name */ - void * pshm_memobject; -#if DIAGNOSTIC - unsigned int pshm_readcount; - unsigned int pshm_writecount; - struct proc * pshm_proc; -#endif /* DIAGNOSTIC */ - struct label* pshm_label; -}; -#define PSHMINFO_NULL (struct pshminfo *)0 -#define PSHM_NONE 1 -#define PSHM_DEFINED 2 -#define PSHM_ALLOCATED 4 -#define PSHM_MAPPED 8 -#define PSHM_INUSE 0x10 -#define PSHM_REMOVED 0x20 -#define PSHM_INCREATE 0x40 -#define PSHM_INDELETE 0x80 - struct pshmcache { LIST_ENTRY(pshmcache) pshm_hash; /* hash chain */ struct pshminfo *pshminfo; /* vnode the name refers to */ @@ -193,10 +166,7 @@ static lck_grp_t *psx_shm_subsys_lck_grp; static lck_grp_attr_t *psx_shm_subsys_lck_grp_attr; static lck_attr_t *psx_shm_subsys_lck_attr; -static lck_mtx_t psx_shm_subsys_mutex; - -#define PSHM_SUBSYS_LOCK() lck_mtx_lock(& psx_shm_subsys_mutex) -#define PSHM_SUBSYS_UNLOCK() lck_mtx_unlock(& psx_shm_subsys_mutex) + lck_mtx_t psx_shm_subsys_mutex; /* Initialize the mutex governing access to the posix shm subsystem */ ==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/sys/posix_sem.h#4 (text+ko) ==== @@ -76,4 +76,10 @@ #define PSEM_INCREATE 0x40 #define PSEM_INDELETE 0x80 +#ifdef KERNEL +extern lck_mtx_t psx_sem_subsys_mutex; +#define PSEM_SUBSYS_LOCK() lck_mtx_lock(& psx_sem_subsys_mutex) +#define PSEM_SUBSYS_UNLOCK() lck_mtx_unlock(& psx_sem_subsys_mutex) +#endif + #endif ==== //depot/projects/trustedbsd/sedarwin8/darwin/xnu/bsd/sys/posix_shm.h#4 (text+ko) ==== @@ -80,4 +80,10 @@ #define PSHM_INCREATE 0x40 #define PSHM_INDELETE 0x80 +#ifdef KERNEL +extern lck_mtx_t psx_shm_subsys_mutex; +#define PSHM_SUBSYS_LOCK() lck_mtx_lock(& psx_shm_subsys_mutex) +#define PSHM_SUBSYS_UNLOCK() lck_mtx_unlock(& psx_shm_subsys_mutex) +#endif /* KERNEL */ + #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612041639.kB4Gdgoo059222>