6 #if __BYTE_ORDER != __BIG_ENDIAN
7 #undef SYSCALL_IPC_BROKEN_MODE
10 int shmctl(int id
, int cmd
, struct shmid_ds
*buf
)
12 #ifdef SYSCALL_IPC_BROKEN_MODE
16 tmp
.shm_perm
.mode
*= 0x10000U
;
21 int r
= __syscall(SYS_shmctl
, id
, IPC_CMD(cmd
), buf
);
23 int r
= __syscall(SYS_ipc
, IPCOP_shmctl
, id
, IPC_CMD(cmd
), 0, buf
, 0);
25 #ifdef SYSCALL_IPC_BROKEN_MODE
26 if (r
>= 0) switch (cmd
| IPC_TIME64
) {
30 buf
->shm_perm
.mode
>>= 16;
34 if (r
>= 0 && (cmd
&IPC_TIME64
)) {
35 IPC_HILO(buf
, shm_atime
);
36 IPC_HILO(buf
, shm_dtime
);
37 IPC_HILO(buf
, shm_ctime
);
40 return __syscall_ret(r
);