2 * D header file for POSIX.
4 * Authors: Neven Miculinić
7 module core
.sys
.posix
.sys
.msg
;
9 import core
.sys
.posix
.config
;
10 import core
.sys
.posix
.sys
.ipc
;
11 import core
.sys
.posix
.sys
.types
;
12 import core
.stdc
.config
;
14 version (CRuntime_Glibc
):
15 // Some of these may be from linux kernel headers.
18 version (ARM
) version = ARM_Any
;
19 version (AArch64
) version = ARM_Any
;
20 version (HPPA
) version = HPPA_Any
;
21 version (HPPA64
) version = HPPA_Any
;
22 version (MIPS32
) version = MIPS_Any
;
23 version (MIPS64
) version = MIPS_Any
;
24 version (PPC
) version = PPC_Any
;
25 version (PPC64
) version = PPC_Any
;
26 version (RISCV32
) version = RISCV_Any
;
27 version (RISCV64
) version = RISCV_Any
;
28 version (S390
) version = IBMZ_Any
;
29 version (SPARC
) version = SPARC_Any
;
30 version (SPARC64
) version = SPARC_Any
;
31 version (SystemZ
) version = IBMZ_Any
;
38 enum MSG_NOERROR
= 1 << 12; // octal!10000
39 enum MSG_EXCEPT
= 2 << 12; // octal!20000
40 enum MSG_COPY
= 4 << 12; // octal!40000
54 version (Alpha
) version = GENERICMSQ
;
55 version (ARM_Any
) version = GENERICMSQ
;
56 version (IA64
) version = GENERICMSQ
;
57 version (IBMZ_Any
) version = GENERICMSQ
;
58 version (RISCV_Any
) version = GENERICMSQ
;
59 version (LoongArch64
) version = GENERICMSQ
;
63 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/msq-pad.h
64 private enum MSQ_PAD_AFTER_TIME
= (__WORDSIZE
== 32);
65 private enum MSQ_PAD_BEFORE_TIME
= false;
67 else version (HPPA_Any
)
69 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/hppa/bits/msq-pad.h
70 private enum MSQ_PAD_AFTER_TIME
= false;
71 private enum MSQ_PAD_BEFORE_TIME
= (__WORDSIZE
== 32);
73 else version (MIPS_Any
)
75 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/mips/bits/msq-pad.h
76 version (LittleEndian
)
78 private enum MSQ_PAD_AFTER_TIME
= (__WORDSIZE
== 32);
79 private enum MSQ_PAD_BEFORE_TIME
= false;
83 private enum MSQ_PAD_AFTER_TIME
= false;
84 private enum MSQ_PAD_BEFORE_TIME
= (__WORDSIZE
== 32);
87 else version (PPC_Any
)
89 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/msq-pad.h
90 private enum MSQ_PAD_AFTER_TIME
= false;
91 private enum MSQ_PAD_BEFORE_TIME
= (__WORDSIZE
== 32);
93 else version (SPARC_Any
)
95 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/msq-pad.h
96 private enum MSQ_PAD_AFTER_TIME
= false;
97 private enum MSQ_PAD_BEFORE_TIME
= (__WORDSIZE
== 32);
101 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/msq-pad.h
102 private enum MSQ_PAD_AFTER_TIME
= true;
103 private enum MSQ_PAD_BEFORE_TIME
= false;
105 else version (X86_64
)
107 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/msq-pad.h
108 private enum MSQ_PAD_AFTER_TIME
= false;
109 private enum MSQ_PAD_BEFORE_TIME
= false;
112 static assert(0, "unimplemented");
114 // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/msq.h
115 alias msgqnum_t
= ulong_t
;
116 alias msglen_t
= ulong_t
;
118 static if (MSQ_PAD_BEFORE_TIME
)
123 c_ulong __glibc_reserved1
;
125 c_ulong __glibc_reserved2
;
127 c_ulong __glibc_reserved3
;
129 ulong_t __msg_cbytes
;
134 ulong_t __glibc_reserved4
;
135 ulong_t __glibc_reserved5
;
138 else static if (MSQ_PAD_AFTER_TIME
)
144 c_ulong __glibc_reserved1
;
146 c_ulong __glibc_reserved2
;
148 c_ulong __glibc_reserved3
;
149 ulong_t __msg_cbytes
;
154 ulong_t __glibc_reserved4
;
155 ulong_t __glibc_reserved5
;
166 ulong_t __msg_cbytes
;
171 ulong_t __glibc_reserved4
;
172 ulong_t __glibc_reserved5
;
178 // https://sourceware.org/git/?p=glibc.git;a=blob;f=bits/msq.h
179 enum MSG_NOERROR
= 1 << 12; // octal!10000
181 alias msgqnum_t
= ushort;
182 alias msglen_t
= ushort;
203 int msgctl(int msqid
, int cmd
, msqid_ds
* __buf
);
204 int msgget(key_t key
, int msgflg
);
205 ssize_t
msgrcv(int msqid
, void* msgp
, size_t msgsz
, c_long msgtyp
, int msgflg
);
206 int msgsnd(int msqid
, msgbuf
* msgp
, int msgsz
, int msgflg
);