diff options
Diffstat (limited to 'do/ipcget')
-rw-r--r-- | do/ipcget | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/do/ipcget b/do/ipcget new file mode 100644 index 0000000000..8eed98e2b0 --- /dev/null +++ b/do/ipcget @@ -0,0 +1,36 @@ +int +do_ipcget(optype, arglast) +int optype; +int *arglast; +{ + register STR **st = stack->ary_array; + register int sp = arglast[0]; + key_t key; + int n, flags; + + key = (key_t)str_gnum(st[++sp]); + n = (optype == O_MSGGET) ? 0 : (int)str_gnum(st[++sp]); + flags = (int)str_gnum(st[++sp]); + errno = 0; + switch (optype) + { +#ifdef HAS_MSG + case O_MSGGET: + return msgget(key, flags); +#endif +#ifdef HAS_SEM + case O_SEMGET: + return semget(key, n, flags); +#endif +#ifdef HAS_SHM + case O_SHMGET: + return shmget(key, n, flags); +#endif +#if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM) + default: + fatal("%s not implemented", opname[optype]); +#endif + } + return -1; /* should never happen */ +} + |