Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef __ASM_GENERIC_MSGBUF_H
0003 #define __ASM_GENERIC_MSGBUF_H
0004 
0005 #include <asm/bitsperlong.h>
0006 #include <asm/ipcbuf.h>
0007 
0008 /*
0009  * generic msqid64_ds structure.
0010  *
0011  * Note extra padding because this structure is passed back and forth
0012  * between kernel and user space.
0013  *
0014  * msqid64_ds was originally meant to be architecture specific, but
0015  * everyone just ended up making identical copies without specific
0016  * optimizations, so we may just as well all use the same one.
0017  *
0018  * 64 bit architectures use a 64-bit long time field here, while
0019  * 32 bit architectures have a pair of unsigned long values.
0020  * On big-endian systems, the lower half is in the wrong place.
0021  *
0022  * Pad space is left for:
0023  * - 2 miscellaneous 32-bit values
0024  */
0025 
0026 struct msqid64_ds {
0027     struct ipc64_perm msg_perm;
0028 #if __BITS_PER_LONG == 64
0029     long         msg_stime; /* last msgsnd time */
0030     long         msg_rtime; /* last msgrcv time */
0031     long         msg_ctime; /* last change time */
0032 #else
0033     unsigned long   msg_stime;  /* last msgsnd time */
0034     unsigned long   msg_stime_high;
0035     unsigned long   msg_rtime;  /* last msgrcv time */
0036     unsigned long   msg_rtime_high;
0037     unsigned long   msg_ctime;  /* last change time */
0038     unsigned long   msg_ctime_high;
0039 #endif
0040     unsigned long   msg_cbytes; /* current number of bytes on queue */
0041     unsigned long   msg_qnum;   /* number of messages in queue */
0042     unsigned long    msg_qbytes;    /* max number of bytes on queue */
0043     __kernel_pid_t msg_lspid;   /* pid of last msgsnd */
0044     __kernel_pid_t msg_lrpid;   /* last receive pid */
0045     unsigned long    __unused4;
0046     unsigned long    __unused5;
0047 };
0048 
0049 #endif /* __ASM_GENERIC_MSGBUF_H */