X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b0d623f7f2ae71ed96e60569f61f9a9a27016e80..0a7de7458d150b5d4dffc935ba399be265ef0a1a:/bsd/sys/sem_internal.h diff --git a/bsd/sys/sem_internal.h b/bsd/sys/sem_internal.h index 42fd3bffb..14ef51653 100644 --- a/bsd/sys/sem_internal.h +++ b/bsd/sys/sem_internal.h @@ -2,7 +2,7 @@ * Copyright (c) 2000-2007 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -22,7 +22,7 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* @@ -58,49 +58,49 @@ #endif struct user_semid_ds { - struct ipc_perm sem_perm; /* [XSI] operation permission struct */ - struct sem *sem_base; /* 32 bit base ptr for semaphore set */ - unsigned short sem_nsems; /* [XSI] number of sems in set */ - user_time_t sem_otime; /* [XSI] last operation time */ - __int32_t sem_pad1; /* RESERVED: DO NOT USE! */ - user_time_t sem_ctime; /* [XSI] last change time */ - /* Times measured in secs since */ - /* 00:00:00 GMT, Jan. 1, 1970 */ - __int32_t sem_pad2; /* RESERVED: DO NOT USE! */ - __int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ + struct ipc_perm sem_perm; /* [XSI] operation permission struct */ + struct sem *sem_base; /* 32 bit base ptr for semaphore set */ + unsigned short sem_nsems; /* [XSI] number of sems in set */ + user_time_t sem_otime; /* [XSI] last operation time */ + __int32_t sem_pad1; /* RESERVED: DO NOT USE! */ + user_time_t sem_ctime; /* [XSI] last change time */ + /* Times measured in secs since */ + /* 00:00:00 GMT, Jan. 1, 1970 */ + __int32_t sem_pad2; /* RESERVED: DO NOT USE! */ + __int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ }; #pragma pack(4) struct user64_semid_ds { - struct ipc_perm sem_perm; /* [XSI] operation permission struct */ - int32_t sem_base; /* 32 bit base ptr for semaphore set */ - unsigned short sem_nsems; /* [XSI] number of sems in set */ - user64_time_t sem_otime; /* [XSI] last operation time */ - int32_t sem_pad1; /* RESERVED: DO NOT USE! */ - user64_time_t sem_ctime; /* [XSI] last change time */ - /* Times measured in secs since */ - /* 00:00:00 GMT, Jan. 1, 1970 */ - int32_t sem_pad2; /* RESERVED: DO NOT USE! */ - int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ + struct ipc_perm sem_perm; /* [XSI] operation permission struct */ + int32_t sem_base; /* 32 bit base ptr for semaphore set */ + unsigned short sem_nsems; /* [XSI] number of sems in set */ + user64_time_t sem_otime; /* [XSI] last operation time */ + int32_t sem_pad1; /* RESERVED: DO NOT USE! */ + user64_time_t sem_ctime; /* [XSI] last change time */ + /* Times measured in secs since */ + /* 00:00:00 GMT, Jan. 1, 1970 */ + int32_t sem_pad2; /* RESERVED: DO NOT USE! */ + int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ }; struct user32_semid_ds { - struct ipc_perm sem_perm; /* [XSI] operation permission struct */ - int32_t sem_base; /* 32 bit base ptr for semaphore set */ - unsigned short sem_nsems; /* [XSI] number of sems in set */ - user32_time_t sem_otime; /* [XSI] last operation time */ - int32_t sem_pad1; /* RESERVED: DO NOT USE! */ - user32_time_t sem_ctime; /* [XSI] last change time */ - /* Times measured in secs since */ - /* 00:00:00 GMT, Jan. 1, 1970 */ - int32_t sem_pad2; /* RESERVED: DO NOT USE! */ - int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ + struct ipc_perm sem_perm; /* [XSI] operation permission struct */ + int32_t sem_base; /* 32 bit base ptr for semaphore set */ + unsigned short sem_nsems; /* [XSI] number of sems in set */ + user32_time_t sem_otime; /* [XSI] last operation time */ + int32_t sem_pad1; /* RESERVED: DO NOT USE! */ + user32_time_t sem_ctime; /* [XSI] last change time */ + /* Times measured in secs since */ + /* 00:00:00 GMT, Jan. 1, 1970 */ + int32_t sem_pad2; /* RESERVED: DO NOT USE! */ + int32_t sem_pad3[4]; /* RESERVED: DO NOT USE! */ }; #pragma pack() union user_semun { - user_addr_t buf; /* buffer for IPC_STAT & IPC_SET */ - user_addr_t array; /* array for GETALL & SETALL */ + user_addr_t buf; /* buffer for IPC_STAT & IPC_SET */ + user_addr_t array; /* array for GETALL & SETALL */ }; typedef union user_semun user_semun_t; @@ -112,8 +112,8 @@ typedef union user_semun user_semun_t; /* * Kernel implementation stuff */ -#define SEMVMX 32767 /* semaphore maximum value */ -#define SEMAEM 16384 /* adjust on exit max value */ +#define SEMVMX 32767 /* semaphore maximum value */ +#define SEMAEM 16384 /* adjust on exit max value */ /* * Configuration parameters. SEMMNI, SEMMNS, and SEMMNU are hard limits. @@ -125,28 +125,28 @@ typedef union user_semun user_semun_t; /* * Configuration parameters */ -#ifndef SEMMNS /* # of semaphores in system */ -#define SEMMNS (1048576/sizeof(struct sem)) -#endif /* no more than 1M of semaphore data */ -#ifndef SEMMNI /* # of semaphore identifiers */ -#define SEMMNI SEMMNS /* max of 1 for each semaphore */ +#ifndef SEMMNS /* # of semaphores in system */ +#define SEMMNS (1048576/sizeof(struct sem)) +#endif /* no more than 1M of semaphore data */ +#ifndef SEMMNI /* # of semaphore identifiers */ +#define SEMMNI SEMMNS /* max of 1 for each semaphore */ #endif #ifndef SEMUME -#define SEMUME 10 /* max # of undo entries per process */ +#define SEMUME 10 /* max # of undo entries per process */ #endif -#ifndef SEMMNU /* # of undo structures in system */ -#define SEMMNU SEMMNS /* 1 for each semaphore. This is quite large */ -#endif /* This should be max 1 for each process */ +#ifndef SEMMNU /* # of undo structures in system */ +#define SEMMNU SEMMNS /* 1 for each semaphore. This is quite large */ +#endif /* This should be max 1 for each process */ /* shouldn't need tuning */ #ifndef SEMMAP -#define SEMMAP 30 /* # of entries in semaphore map */ +#define SEMMAP 30 /* # of entries in semaphore map */ #endif #ifndef SEMMSL -#define SEMMSL SEMMNS /* max # of semaphores per id */ +#define SEMMSL SEMMNS /* max # of semaphores per id */ #endif #ifndef SEMOPM -#define SEMOPM 100 /* max # of operations per semop call */ +#define SEMOPM 5 /* max # of operations per semop call */ #endif @@ -154,50 +154,50 @@ typedef union user_semun user_semun_t; * Undo structure (internal: one per process) */ struct sem_undo { - int un_next_idx; /* index of next active undo structure */ - struct proc *un_proc; /* owner of this structure */ - short un_cnt; /* # of active entries */ + int un_next_idx; /* index of next active undo structure */ + struct proc *un_proc; /* owner of this structure */ + short un_cnt; /* # of active entries */ struct undo { - short une_adjval; /* adjust on exit values */ - short une_num; /* semaphore # */ - int une_id; /* semid */ - struct undo *une_next; /* next undo entry */ - } *un_ent; /* undo entries */ + short une_adjval; /* adjust on exit values */ + short une_num; /* semaphore # */ + int une_id; /* semid */ + struct undo *une_next; /* next undo entry */ + } *un_ent; /* undo entries */ }; /* * semaphore info struct (internal; for administrative limits and ipcs) */ struct seminfo { - int semmap, /* # of entries in semaphore map */ - semmni, /* # of semaphore identifiers */ - semmns, /* # of semaphores in system */ - semmnu, /* # of undo structures in system */ - semmsl, /* max # of semaphores per id */ - semopm, /* max # of operations per semop call */ - semume, /* max # of undo entries per process */ - semusz, /* size in bytes of undo structure */ - semvmx, /* semaphore maximum value */ - semaem; /* adjust on exit max value */ + int semmap, /* # of entries in semaphore map */ + semmni, /* # of semaphore identifiers */ + semmns, /* # of semaphores in system */ + semmnu, /* # of undo structures in system */ + semmsl, /* max # of semaphores per id */ + semopm, /* max # of operations per semop call */ + semume, /* max # of undo entries per process */ + semusz, /* size in bytes of undo structure */ + semvmx, /* semaphore maximum value */ + semaem; /* adjust on exit max value */ }; -extern struct seminfo seminfo; +extern struct seminfo seminfo; /* * Kernel wrapper for the user-level structure */ struct semid_kernel { - struct user_semid_ds u; - struct label *label; /* MAC framework label */ + struct user_semid_ds u; + struct label *label; /* MAC framework label */ }; /* internal "mode" bits */ -#define SEM_ALLOC 01000 /* semaphore is allocated */ -#define SEM_DEST 02000 /* semaphore will be destroyed on last detach */ +#define SEM_ALLOC 01000 /* semaphore is allocated */ +#define SEM_DEST 02000 /* semaphore will be destroyed on last detach */ -#define SEMMNI_INC 8 /* increment value for semaphore identifiers */ -#define SEMMNS_INC 64 /* increment value for semaphores */ -#define SEMMNU_INC 32 /* increment value for undo structures */ +#define SEMMNI_INC 8 /* increment value for semaphore identifiers */ +#define SEMMNS_INC 64 /* increment value for semaphores */ +#define SEMMNU_INC 32 /* increment value for undo structures */ /* * Due to the way semaphore memory is allocated, we have to ensure that @@ -215,14 +215,14 @@ struct semid_kernel { /* * #define SEMUSZ SEM_ALIGN(offsetof(struct sem_undo, un_ent[SEMUME])) */ -#define SEMUSZ sizeof(struct sem_undo) +#define SEMUSZ sizeof(struct sem_undo) -extern struct semid_kernel *sema; /* semaphore id pool */ -extern struct sem *sem_pool; /* semaphore pool */ -/* This is now a struct sem_undo with the new memory allocation +extern struct semid_kernel *sema; /* semaphore id pool */ +extern struct sem *sem_pool; /* semaphore pool */ +/* This is now a struct sem_undo with the new memory allocation * extern int *semu; // undo structure pool */ -extern struct sem_undo *semu; /* undo structure pool */ +extern struct sem_undo *semu; /* undo structure pool */ /* * Macro to find a particular sem_undo vector @@ -235,7 +235,7 @@ extern struct sem_undo *semu; /* undo structure pool */ /* * This macro doesn't work because we are using a staticly allocated array * for semu now. - * #define SEMU(ix) ((struct sem_undo *)(((intptr_t)semu)+ix * SEMUSZ)) + * #define SEMU(ix) ((struct sem_undo *)(((intptr_t)semu)+ix * SEMUSZ)) */ #define SEMU(ix) (&semu[ix]) @@ -243,6 +243,6 @@ extern struct sem_undo *semu; /* undo structure pool */ /* * Process sem_undo vectors at proc exit. */ -void semexit(struct proc *p); +void semexit(struct proc *p); #endif /* !_SYS_SEM__INTERNALH_ */