aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/msg.h28
-rw-r--r--include/uapi/linux/sem.h18
2 files changed, 35 insertions, 11 deletions
diff --git a/include/uapi/linux/msg.h b/include/uapi/linux/msg.h
index a70375526578..f51c8001dbe5 100644
--- a/include/uapi/linux/msg.h
+++ b/include/uapi/linux/msg.h
@@ -51,16 +51,28 @@ struct msginfo {
51}; 51};
52 52
53/* 53/*
54 * Scaling factor to compute msgmni: 54 * MSGMNI, MSGMAX and MSGMNB are default values which can be
55 * the memory dedicated to msg queues (msgmni * msgmnb) should occupy 55 * modified by sysctl.
56 * at most 1/MSG_MEM_SCALE of the lowmem (see the formula in ipc/msg.c): 56 *
57 * up to 8MB : msgmni = 16 (MSGMNI) 57 * MSGMNI is the upper limit for the number of messages queues per
58 * 4 GB : msgmni = 8K 58 * namespace.
59 * more than 16 GB : msgmni = 32K (IPCMNI) 59 * It has been chosen to be as large possible without facilitating
60 * scenarios where userspace causes overflows when adjusting the limits via
61 * operations of the form retrieve current limit; add X; update limit".
62 *
63 * MSGMNB is the default size of a new message queue. Non-root tasks can
64 * decrease the size with msgctl(IPC_SET), root tasks
65 * (actually: CAP_SYS_RESOURCE) can both increase and decrease the queue
66 * size. The optimal value is application dependent.
67 * 16384 is used because it was always used (since 0.99.10)
68 *
69 * MAXMAX is the maximum size of an individual message, it's a global
70 * (per-namespace) limit that applies for all message queues.
71 * It's set to 1/2 of MSGMNB, to ensure that at least two messages fit into
72 * the queue. This is also an arbitrary choice (since 2.6.0).
60 */ 73 */
61#define MSG_MEM_SCALE 32
62 74
63#define MSGMNI 16 /* <= IPCMNI */ /* max # of msg queue identifiers */ 75#define MSGMNI 32000 /* <= IPCMNI */ /* max # of msg queue identifiers */
64#define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */ 76#define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */
65#define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */ 77#define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */
66 78
diff --git a/include/uapi/linux/sem.h b/include/uapi/linux/sem.h
index 541fce03b50c..dd73b908b2f3 100644
--- a/include/uapi/linux/sem.h
+++ b/include/uapi/linux/sem.h
@@ -63,10 +63,22 @@ struct seminfo {
63 int semaem; 63 int semaem;
64}; 64};
65 65
66#define SEMMNI 128 /* <= IPCMNI max # of semaphore identifiers */ 66/*
67#define SEMMSL 250 /* <= 8 000 max num of semaphores per id */ 67 * SEMMNI, SEMMSL and SEMMNS are default values which can be
68 * modified by sysctl.
69 * The values has been chosen to be larger than necessary for any
70 * known configuration.
71 *
72 * SEMOPM should not be increased beyond 1000, otherwise there is the
73 * risk that semop()/semtimedop() fails due to kernel memory fragmentation when
74 * allocating the sop array.
75 */
76
77
78#define SEMMNI 32000 /* <= IPCMNI max # of semaphore identifiers */
79#define SEMMSL 32000 /* <= INT_MAX max num of semaphores per id */
68#define SEMMNS (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */ 80#define SEMMNS (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */
69#define SEMOPM 32 /* <= 1 000 max num of ops per semop call */ 81#define SEMOPM 500 /* <= 1 000 max num of ops per semop call */
70#define SEMVMX 32767 /* <= 32767 semaphore maximum value */ 82#define SEMVMX 32767 /* <= 32767 semaphore maximum value */
71#define SEMAEM SEMVMX /* adjust on exit max value */ 83#define SEMAEM SEMVMX /* adjust on exit max value */
72 84