diff options
Diffstat (limited to 'include/uapi/linux/msg.h')
-rw-r--r-- | include/uapi/linux/msg.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/include/uapi/linux/msg.h b/include/uapi/linux/msg.h new file mode 100644 index 000000000000..78dbd2f996a3 --- /dev/null +++ b/include/uapi/linux/msg.h | |||
@@ -0,0 +1,75 @@ | |||
1 | #ifndef _UAPI_LINUX_MSG_H | ||
2 | #define _UAPI_LINUX_MSG_H | ||
3 | |||
4 | #include <linux/ipc.h> | ||
5 | |||
6 | /* ipcs ctl commands */ | ||
7 | #define MSG_STAT 11 | ||
8 | #define MSG_INFO 12 | ||
9 | |||
10 | /* msgrcv options */ | ||
11 | #define MSG_NOERROR 010000 /* no error if message is too big */ | ||
12 | #define MSG_EXCEPT 020000 /* recv any msg except of specified type.*/ | ||
13 | |||
14 | /* Obsolete, used only for backwards compatibility and libc5 compiles */ | ||
15 | struct msqid_ds { | ||
16 | struct ipc_perm msg_perm; | ||
17 | struct msg *msg_first; /* first message on queue,unused */ | ||
18 | struct msg *msg_last; /* last message in queue,unused */ | ||
19 | __kernel_time_t msg_stime; /* last msgsnd time */ | ||
20 | __kernel_time_t msg_rtime; /* last msgrcv time */ | ||
21 | __kernel_time_t msg_ctime; /* last change time */ | ||
22 | unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */ | ||
23 | unsigned long msg_lqbytes; /* ditto */ | ||
24 | unsigned short msg_cbytes; /* current number of bytes on queue */ | ||
25 | unsigned short msg_qnum; /* number of messages in queue */ | ||
26 | unsigned short msg_qbytes; /* max number of bytes on queue */ | ||
27 | __kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */ | ||
28 | __kernel_ipc_pid_t msg_lrpid; /* last receive pid */ | ||
29 | }; | ||
30 | |||
31 | /* Include the definition of msqid64_ds */ | ||
32 | #include <asm/msgbuf.h> | ||
33 | |||
34 | /* message buffer for msgsnd and msgrcv calls */ | ||
35 | struct msgbuf { | ||
36 | long mtype; /* type of message */ | ||
37 | char mtext[1]; /* message text */ | ||
38 | }; | ||
39 | |||
40 | /* buffer for msgctl calls IPC_INFO, MSG_INFO */ | ||
41 | struct msginfo { | ||
42 | int msgpool; | ||
43 | int msgmap; | ||
44 | int msgmax; | ||
45 | int msgmnb; | ||
46 | int msgmni; | ||
47 | int msgssz; | ||
48 | int msgtql; | ||
49 | unsigned short msgseg; | ||
50 | }; | ||
51 | |||
52 | /* | ||
53 | * Scaling factor to compute msgmni: | ||
54 | * the memory dedicated to msg queues (msgmni * msgmnb) should occupy | ||
55 | * at most 1/MSG_MEM_SCALE of the lowmem (see the formula in ipc/msg.c): | ||
56 | * up to 8MB : msgmni = 16 (MSGMNI) | ||
57 | * 4 GB : msgmni = 8K | ||
58 | * more than 16 GB : msgmni = 32K (IPCMNI) | ||
59 | */ | ||
60 | #define MSG_MEM_SCALE 32 | ||
61 | |||
62 | #define MSGMNI 16 /* <= IPCMNI */ /* max # of msg queue identifiers */ | ||
63 | #define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */ | ||
64 | #define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */ | ||
65 | |||
66 | /* unused */ | ||
67 | #define MSGPOOL (MSGMNI * MSGMNB / 1024) /* size in kbytes of message pool */ | ||
68 | #define MSGTQL MSGMNB /* number of system message headers */ | ||
69 | #define MSGMAP MSGMNB /* number of entries in message map */ | ||
70 | #define MSGSSZ 16 /* message segment size */ | ||
71 | #define __MSGSEG ((MSGPOOL * 1024) / MSGSSZ) /* max no. of segments */ | ||
72 | #define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff) | ||
73 | |||
74 | |||
75 | #endif /* _UAPI_LINUX_MSG_H */ | ||