Blame view
include/linux/msg.h
3.63 KB
1da177e4c
|
1 2 3 4 |
#ifndef _LINUX_MSG_H #define _LINUX_MSG_H #include <linux/ipc.h> |
1da177e4c
|
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/* ipcs ctl commands */ #define MSG_STAT 11 #define MSG_INFO 12 /* msgrcv options */ #define MSG_NOERROR 010000 /* no error if message is too big */ #define MSG_EXCEPT 020000 /* recv any msg except of specified type.*/ /* Obsolete, used only for backwards compatibility and libc5 compiles */ struct msqid_ds { struct ipc_perm msg_perm; struct msg *msg_first; /* first message on queue,unused */ struct msg *msg_last; /* last message in queue,unused */ __kernel_time_t msg_stime; /* last msgsnd time */ __kernel_time_t msg_rtime; /* last msgrcv time */ __kernel_time_t msg_ctime; /* last change time */ unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */ unsigned long msg_lqbytes; /* ditto */ unsigned short msg_cbytes; /* current number of bytes on queue */ unsigned short msg_qnum; /* number of messages in queue */ unsigned short msg_qbytes; /* max number of bytes on queue */ __kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_ipc_pid_t msg_lrpid; /* last receive pid */ }; /* Include the definition of msqid64_ds */ #include <asm/msgbuf.h> /* message buffer for msgsnd and msgrcv calls */ struct msgbuf { long mtype; /* type of message */ char mtext[1]; /* message text */ }; /* buffer for msgctl calls IPC_INFO, MSG_INFO */ struct msginfo { int msgpool; int msgmap; int msgmax; int msgmnb; int msgmni; int msgssz; int msgtql; unsigned short msgseg; }; |
f7bf3df8b
|
51 52 53 54 55 56 57 58 59 |
/* * Scaling factor to compute msgmni: * the memory dedicated to msg queues (msgmni * msgmnb) should occupy * at most 1/MSG_MEM_SCALE of the lowmem (see the formula in ipc/msg.c): * up to 8MB : msgmni = 16 (MSGMNI) * 4 GB : msgmni = 8K * more than 16 GB : msgmni = 32K (IPCMNI) */ #define MSG_MEM_SCALE 32 |
1da177e4c
|
60 61 62 63 64 |
#define MSGMNI 16 /* <= IPCMNI */ /* max # of msg queue identifiers */ #define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */ #define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */ /* unused */ |
68aa0a206
|
65 |
#define MSGPOOL (MSGMNI * MSGMNB / 1024) /* size in kbytes of message pool */ |
1da177e4c
|
66 67 68 |
#define MSGTQL MSGMNB /* number of system message headers */ #define MSGMAP MSGMNB /* number of entries in message map */ #define MSGSSZ 16 /* message segment size */ |
68aa0a206
|
69 |
#define __MSGSEG ((MSGPOOL * 1024) / MSGSSZ) /* max no. of segments */ |
1da177e4c
|
70 71 72 |
#define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff) #ifdef __KERNEL__ |
77597ad66
|
73 |
#include <linux/list.h> |
1da177e4c
|
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
/* one msg_msg structure for each message */ struct msg_msg { struct list_head m_list; long m_type; int m_ts; /* message text size */ struct msg_msgseg* next; void *security; /* the actual message follows immediately */ }; /* one msq_queue structure for each present queue on the system */ struct msg_queue { struct kern_ipc_perm q_perm; time_t q_stime; /* last msgsnd time */ time_t q_rtime; /* last msgrcv time */ time_t q_ctime; /* last change time */ unsigned long q_cbytes; /* current number of bytes on queue */ unsigned long q_qnum; /* number of messages in queue */ unsigned long q_qbytes; /* max number of bytes on queue */ pid_t q_lspid; /* pid of last msgsnd */ pid_t q_lrpid; /* last receive pid */ struct list_head q_messages; struct list_head q_receivers; struct list_head q_senders; }; |
651971cb7
|
101 102 103 104 105 |
/* Helper routines for sys_msgsnd and sys_msgrcv */ extern long do_msgsnd(int msqid, long mtype, void __user *mtext, size_t msgsz, int msgflg); extern long do_msgrcv(int msqid, long *pmtype, void __user *mtext, size_t msgsz, long msgtyp, int msgflg); |
1da177e4c
|
106 107 108 |
#endif /* __KERNEL__ */ #endif /* _LINUX_MSG_H */ |