1#ifndef _LINUX_MSG_H
2#define _LINUX_MSG_H
3
4#include <linux/ipc.h>
5
6
7#define MSG_STAT 11
8#define MSG_INFO 12
9
10
11#define MSG_NOERROR 010000
12#define MSG_EXCEPT 020000
13
14
15struct msqid_ds {
16 struct ipc_perm msg_perm;
17 struct msg *msg_first;
18 struct msg *msg_last;
19 __kernel_time_t msg_stime;
20 __kernel_time_t msg_rtime;
21 __kernel_time_t msg_ctime;
22 unsigned long msg_lcbytes;
23 unsigned long msg_lqbytes;
24 unsigned short msg_cbytes;
25 unsigned short msg_qnum;
26 unsigned short msg_qbytes;
27 __kernel_ipc_pid_t msg_lspid;
28 __kernel_ipc_pid_t msg_lrpid;
29};
30
31
32#include <asm/msgbuf.h>
33
34
35struct msgbuf {
36 long mtype;
37 char mtext[1];
38};
39
40
41struct 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#define MSGMNI 16
53#define MSGMAX 8192
54#define MSGMNB 16384
55
56
57#define MSGPOOL (MSGMNI*MSGMNB/1024)
58#define MSGTQL MSGMNB
59#define MSGMAP MSGMNB
60#define MSGSSZ 16
61#define __MSGSEG ((MSGPOOL*1024)/ MSGSSZ)
62#define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff)
63
64#ifdef __KERNEL__
65
66asmlinkage long sys_msgget (key_t key, int msgflg);
67asmlinkage long sys_msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg);
68asmlinkage long sys_msgrcv (int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg);
69asmlinkage long sys_msgctl (int msqid, int cmd, struct msqid_ds *buf);
70
71#endif
72
73#endif
74