From: Dr. Michael Lauer Date: Sun, 11 Mar 2018 13:03:02 +0000 (+0100) Subject: posix: Add System V IPC (shared memory, semaphores, message queues) X-Git-Tag: 0.40.1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11a30c9ef04f7f12f4ec68081c3bb6a849bb3668;p=thirdparty%2Fvala.git posix: Add System V IPC (shared memory, semaphores, message queues) --- diff --git a/vapi/posix.vapi b/vapi/posix.vapi index 3ff93d3a1..02f25b311 100644 --- a/vapi/posix.vapi +++ b/vapi/posix.vapi @@ -1534,6 +1534,29 @@ namespace Posix { [CCode (cheader_filename = "sys/ioctl.h", sentinel = "")] public int ioctl (int fildes, int request, ...); + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_CREAT; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_EXCL; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_NOWAIT; + [CCode (cheader_filename = "sys/ipc.h")] + public const key_t IPC_PRIVATE; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_RMID; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_SET; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_STAT; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_R; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_W; + [CCode (cheader_filename = "sys/ipc.h")] + public const int IPC_M; + [CCode (cheader_filename = "sys/ipc.h")] + public key_t ftok (string pathname, int proj_id); + [CCode (cheader_filename = "syslog.h")] public void openlog (string ident, int option, int facility ); @@ -1758,6 +1781,68 @@ namespace Posix { public string[] h_addr_list; } + [CCode (cname = "struct msqid_ds", cheader_filename = "sys/msg.h", free_function = "", has_type_id = false)] + public struct MsqIdDs { + } + + [CCode (cname = "short", cheader_filename = "sys/msg.h", cprefix = "MSG_", has_type_id = false)] + public enum MsqCmd { + STAT, + INFO + } + + [CCode (cheader_filename = "sys/msg.h")] + public const int MSG_COPY; + [CCode (cheader_filename = "sys/msg.h")] + public const int MSG_EXCEPT; + [CCode (cheader_filename = "sys/msg.h")] + public const int MSG_NOERROR; + [CCode (cheader_filename = "sys/msg.h")] + public int msgctrl (int msqid, MsqCmd cmd, MsqIdDs buf); + [CCode (cheader_filename = "sys/msg.h")] + public int msgget (key_t key, int msgflg = 0); + [CCode (cheader_filename = "sys/msg.h")] + public ssize_t msgrcv (int msqid, uint8[] buf, long msgtyp = 0, int msgflg = 0); + [CCode (cheader_filename = "sys/msg.h")] + public int msgsnd (int msqid, uint8[] buf, int msgflg = 0); + + [CCode (cname = "struct sembuf", cheader_filename = "sys/sem.h", free_function = "", has_type_id = false)] + public struct SemBuf { + public ushort sem_num; + public SemCmd sem_op; + public short sem_flg; + } + + [CCode (cname = "short", cheader_filename = "sys/sem.h", cprefix = "", has_type_id = false)] + public enum SemCmd { + GETPID, + GETVAL, + GETALL, + GETNCNT, + GETZCNT, + SETVAL, + SETALL, + IPC_STAT, + IPC_SET, + IPC_RMID, + } + + [CCode (cheader_filename = "sys/sem.h")] + public const short SEM_UNDO; + [CCode (cheader_filename = "sys/sem.h")] + public int semctl (int semid, int semnum, int cmd, ...); + [CCode (cheader_filename = "sys/sem.h")] + public int semget (key_t key, int nsems, int semflg = 0); + [CCode (cheader_filename = "sys/sem.h")] + public int semop (int semid, SemBuf[] sops); + + [CCode (cheader_filename = "sys/shm.h")] + public void* shmat (int shmid, void* shmaddr, int shmflg = 0); + [CCode (cheader_filename = "sys/shm.h")] + public int shmdt (void* shmaddr); + [CCode (cheader_filename = "sys/shm.h")] + public int shmget (key_t key, size_t size, int shmflg = 0); + [CCode (cheader_filename = "sys/stat.h")] public int mkfifo (string filename, mode_t mode);