June 2025 | ||||||
Mo | Tu | We | Th | Fr | Sa | Su |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 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 | 1 | 2 | 3 | 4 | 5 | 6 |
01: #ifndef __ASM_GENERIC_MSGBUF_H 02: #define __ASM_GENERIC_MSGBUF_H 03: 04: #include <asm/bitsperlong.h> 05: /* 06: * generic msqid64_ds structure. 07: * 08: * Note extra padding because this structure is passed back and forth 09: * between kernel and user space. 10: * 11: * msqid64_ds was originally meant to be architecture specific, but 12: * everyone just ended up making identical copies without specific 13: * optimizations, so we may just as well all use the same one. 14: * 15: * 64 bit architectures typically define a 64 bit __kernel_time_t, 16: * so they do not need the first three padding words. 17: * On big-endian systems, the padding is in the wrong place. 18: * 19: * Pad space is left for: 20: * - 64-bit time_t to solve y2038 problem 21: * - 2 miscellaneous 32-bit values 22: */ 23: 24: struct msqid64_ds { 25: struct ipc64_perm msg_perm; 26: __kernel_time_t msg_stime; /* last msgsnd time */ 27: #if __BITS_PER_LONG != 64 28: unsigned long __unused1; 29: #endif 30: __kernel_time_t msg_rtime; /* last msgrcv time */ 31: #if __BITS_PER_LONG != 64 32: unsigned long __unused2; 33: #endif 34: __kernel_time_t msg_ctime; /* last change time */ 35: #if __BITS_PER_LONG != 64 36: unsigned long __unused3; 37: #endif 38: unsigned long msg_cbytes; /* current number of bytes on queue */ 39: unsigned long msg_qnum; /* number of messages in queue */ 40: unsigned long msg_qbytes; /* max number of bytes on queue */ 41: __kernel_pid_t msg_lspid; /* pid of last msgsnd */ 42: __kernel_pid_t msg_lrpid; /* last receive pid */ 43: unsigned long __unused4; 44: unsigned long __unused5; 45: }; 46: 47: #endif /* __ASM_GENERIC_MSGBUF_H */ 48: