syscalls.master revision 1.24
11.24Smycroft $NetBSD: syscalls.master,v 1.24 1994/10/21 00:14:36 mycroft Exp $ 21.22Scgd; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 31.1Sglass 41.23Scgd; NetBSD system call name/number "master" file. 51.23Scgd; (See syscalls.conf to see what it is processed into.) 61.23Scgd; 71.23Scgd; Fields: number type [type-dependent ...] 81.1Sglass; number system call number, must be in order 91.23Scgd; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of 101.24Smycroft; the compatibility options defined in syscalls.conf. 111.23Scgd; 121.1Sglass; types: 131.1Sglass; STD always included 141.23Scgd; OBSOL obsolete, not included in system 151.24Smycroft; UNIMPL unimplemented, not included in system 161.23Scgd; NODEF included, but don't define the syscall number 171.23Scgd; NOARGS included, but don't define the syscall args structure 181.23Scgd; 191.23Scgd; The compat options are defined in the syscalls.conf file, and the 201.23Scgd; compat option name is prefixed to the syscall name. Other than 211.23Scgd; that, they're like NODEF (for 'compat' options), or STD (for 221.23Scgd; 'libcompat' options). 231.23Scgd; 241.23Scgd; The type-dependent arguments are as follows: 251.23Scgd; For STD, NODEF, NOARGS, and compat syscalls: 261.23Scgd; { pseudo-proto } [alias] 271.23Scgd; For other syscalls: 281.23Scgd; [comment] 291.23Scgd; 301.23Scgd; #ifdef's, etc. may be included, and are copied to the output files. 311.23Scgd; #include's are copied to the syscall switch definition file only. 321.1Sglass 331.23Scgd#include <sys/param.h> 341.23Scgd#include <sys/systm.h> 351.23Scgd#include <sys/signal.h> 361.23Scgd#include <sys/mount.h> 371.23Scgd#include <sys/syscallargs.h> 381.1Sglass 391.1Sglass; Reserved/unimplemented system calls in the range 0-150 inclusive 401.1Sglass; are reserved for use in future Berkeley releases. 411.1Sglass; Additional system calls implemented in vendor and other 421.1Sglass; redistributions should be placed in the reserved range at the end 431.1Sglass; of the current calls. 441.1Sglass 451.23Scgd0 STD { int nosys(void); } syscall 461.23Scgd1 STD { int exit(int rval); } 471.23Scgd2 STD { int fork(void); } 481.23Scgd3 STD { int read(int fd, char *buf, u_int nbyte); } 491.23Scgd4 STD { int write(int fd, char *buf, u_int nbyte); } 501.23Scgd5 STD { int open(char *path, int flags, int mode); } 511.23Scgd6 STD { int close(int fd); } 521.23Scgd7 STD { int wait4(int pid, int *status, int options, \ 531.23Scgd struct rusage *rusage); } 541.23Scgd8 COMPAT_43 { int creat(char *path, int mode); } 551.23Scgd9 STD { int link(char *path, char *link); } 561.23Scgd10 STD { int unlink(char *path); } 571.23Scgd11 OBSOL execv 581.23Scgd12 STD { int chdir(char *path); } 591.23Scgd13 STD { int fchdir(int fd); } 601.23Scgd14 STD { int mknod(char *path, int mode, int dev); } 611.23Scgd15 STD { int chmod(char *path, int mode); } 621.23Scgd16 STD { int chown(char *path, int uid, int gid); } 631.23Scgd17 STD { int obreak(char *nsize); } break 641.23Scgd18 STD { int getfsstat(struct statfs *buf, long bufsize, \ 651.23Scgd int flags); } 661.23Scgd19 COMPAT_43 { long lseek(int fd, long offset, int whence); } 671.23Scgd20 STD { pid_t getpid(void); } 681.23Scgd21 STD { int mount(char *type, char *path, int flags, \ 691.23Scgd caddr_t data); } 701.23Scgd22 STD { int unmount(char *path, int flags); } 711.23Scgd23 STD { int setuid(uid_t uid); } 721.23Scgd24 STD { uid_t getuid(void); } 731.23Scgd25 STD { uid_t geteuid(void); } 741.23Scgd26 STD { int ptrace(int req, pid_t pid, caddr_t addr, \ 751.23Scgd int data); } 761.23Scgd27 STD { int recvmsg(int s, struct msghdr *msg, int flags); } 771.23Scgd28 STD { int sendmsg(int s, caddr_t msg, int flags); } 781.23Scgd29 STD { int recvfrom(int s, caddr_t buf, size_t len, \ 791.23Scgd int flags, caddr_t from, int *fromlenaddr); } 801.23Scgd30 STD { int accept(int s, caddr_t name, int *anamelen); } 811.23Scgd31 STD { int getpeername(int fdes, caddr_t asa, int *alen); } 821.23Scgd32 STD { int getsockname(int fdes, caddr_t asa, int *alen); } 831.23Scgd33 STD { int access(char *path, int flags); } 841.23Scgd34 STD { int chflags(char *path, int flags); } 851.23Scgd35 STD { int fchflags(int fd, int flags); } 861.23Scgd36 STD { int sync(void); } 871.23Scgd37 STD { int kill(int pid, int signum); } 881.23Scgd38 COMPAT_43 { int stat(char *path, struct ostat *ub); } 891.23Scgd39 STD { pid_t getppid(void); } 901.23Scgd40 COMPAT_43 { int lstat(char *path, struct ostat *ub); } 911.23Scgd41 STD { int dup(u_int fd); } 921.23Scgd42 STD { int pipe(void); } 931.23Scgd43 STD { gid_t getegid(void); } 941.23Scgd44 STD { int profil(caddr_t samples, u_int size, \ 951.23Scgd u_int offset, u_int scale); } 961.1Sglass#ifdef KTRACE 971.23Scgd45 STD { int ktrace(char *fname, int ops, int facs, \ 981.23Scgd int pid); } 991.1Sglass#else 1001.23Scgd45 UNIMPL ktrace 1011.1Sglass#endif 1021.23Scgd46 STD { int sigaction(int signum, struct sigaction *nsa, \ 1031.23Scgd struct sigaction *osa); } 1041.23Scgd47 STD { gid_t getgid(void); } 1051.23Scgd48 STD { int sigprocmask(int how, sigset_t mask); } 1061.23Scgd49 STD { int getlogin(char *namebuf, u_int namelen); } 1071.23Scgd50 STD { int setlogin(char *namebuf); } 1081.23Scgd51 STD { int acct(char *path); } 1091.23Scgd52 STD { int sigpending(void); } 1101.23Scgd53 STD { int sigaltstack(struct sigaltstack *nss, \ 1111.23Scgd struct sigaltstack *oss); } 1121.23Scgd54 STD { int ioctl(int fd, u_long com, caddr_t data); } 1131.23Scgd55 STD { int reboot(int opt); } 1141.23Scgd56 STD { int revoke(char *path); } 1151.23Scgd57 STD { int symlink(char *path, char *link); } 1161.23Scgd58 STD { int readlink(char *path, char *buf, int count); } 1171.23Scgd59 STD { int execve(char *path, char **argp, char **envp); } 1181.23Scgd60 STD { int umask(int newmask); } 1191.23Scgd61 STD { int chroot(char *path); } 1201.23Scgd62 COMPAT_43 { int fstat(int fd, struct ostat *sb); } 1211.23Scgd63 COMPAT_43 { int getkerninfo(int op, char *where, int *size, \ 1221.23Scgd int arg); } 1231.23Scgd64 COMPAT_43 { int getpagesize(void); } 1241.23Scgd65 STD { int msync(caddr_t addr, int len); } 1251.23Scgd66 STD { int vfork(void); } 1261.23Scgd67 OBSOL vread 1271.23Scgd68 OBSOL vwrite 1281.23Scgd69 STD { int sbrk(int incr); } 1291.23Scgd70 STD { int sstk(int incr); } 1301.23Scgd71 COMPAT_43 { int mmap(caddr_t addr, int len, int prot, \ 1311.23Scgd int flags, int fd, long pos); } 1321.23Scgd72 STD { int ovadvise(int anom); } vadvise 1331.23Scgd73 STD { int munmap(caddr_t addr, int len); } 1341.23Scgd74 STD { int mprotect(caddr_t addr, int len, int prot); } 1351.23Scgd75 STD { int madvise(caddr_t addr, int len, int behav); } 1361.23Scgd76 OBSOL vhangup 1371.23Scgd77 OBSOL vlimit 1381.23Scgd78 STD { int mincore(caddr_t addr, int len, char *vec); } 1391.23Scgd79 STD { int getgroups(u_int gidsetsize, gid_t *gidset); } 1401.23Scgd80 STD { int setgroups(u_int gidsetsize, gid_t *gidset); } 1411.23Scgd81 STD { int getpgrp(void); } 1421.23Scgd82 STD { int setpgid(int pid, int pgid); } 1431.23Scgd83 STD { int setitimer(u_int which, struct itimerval *itv, \ 1441.23Scgd struct itimerval *oitv); } 1451.23Scgd84 COMPAT_43 { int wait(void); } 1461.23Scgd85 STD { int swapon(char *name); } 1471.23Scgd86 STD { int getitimer(u_int which, struct itimerval *itv); } 1481.23Scgd87 COMPAT_43 { int gethostname(char *hostname, u_int len); } 1491.23Scgd88 COMPAT_43 { int sethostname(char *hostname, u_int len); } 1501.23Scgd89 COMPAT_43 { int getdtablesize(void); } 1511.23Scgd90 STD { int dup2(u_int from, u_int to); } 1521.23Scgd91 UNIMPL getdopt 1531.23Scgd92 STD { int fcntl(int fd, int cmd, void *arg); } 1541.23Scgd93 STD { int select(u_int nd, fd_set *in, fd_set *ou, \ 1551.23Scgd fd_set *ex, struct timeval *tv); } 1561.23Scgd94 UNIMPL setdopt 1571.23Scgd95 STD { int fsync(int fd); } 1581.23Scgd96 STD { int setpriority(int which, int who, int prio); } 1591.23Scgd97 STD { int socket(int domain, int type, int protocol); } 1601.23Scgd98 STD { int connect(int s, caddr_t name, int namelen); } 1611.23Scgd99 COMPAT_43 { int accept(int s, caddr_t name, int *anamelen); } 1621.23Scgd100 STD { int getpriority(int which, int who); } 1631.23Scgd101 COMPAT_43 { int send(int s, caddr_t buf, int len, int flags); } 1641.23Scgd102 COMPAT_43 { int recv(int s, caddr_t buf, int len, int flags); } 1651.23Scgd103 STD { int sigreturn(struct sigcontext *sigcntxp); } 1661.23Scgd104 STD { int bind(int s, caddr_t name, int namelen); } 1671.23Scgd105 STD { int setsockopt(int s, int level, int name, \ 1681.23Scgd caddr_t val, int valsize); } 1691.23Scgd106 STD { int listen(int s, int backlog); } 1701.23Scgd107 OBSOL vtimes 1711.23Scgd108 COMPAT_43 { int sigvec(int signum, struct sigvec *nsv, \ 1721.23Scgd struct sigvec *osv); } 1731.23Scgd109 COMPAT_43 { int sigblock(int mask); } 1741.23Scgd110 COMPAT_43 { int sigsetmask(int mask); } 1751.23Scgd111 STD { int sigsuspend(int mask); } 1761.23Scgd112 COMPAT_43 { int sigstack(struct sigstack *nss, \ 1771.23Scgd struct sigstack *oss); } 1781.23Scgd113 COMPAT_43 { int recvmsg(int s, struct omsghdr *msg, int flags); } 1791.23Scgd114 COMPAT_43 { int sendmsg(int s, caddr_t msg, int flags); } 1801.1Sglass#ifdef TRACE 1811.23Scgd115 STD { int vtrace(int request, int value); } 1821.1Sglass#else 1831.23Scgd115 OBSOL vtrace 1841.1Sglass#endif 1851.23Scgd116 STD { int gettimeofday(struct timeval *tp, \ 1861.23Scgd struct timezone *tzp); } 1871.23Scgd117 STD { int getrusage(int who, struct rusage *rusage); } 1881.23Scgd118 STD { int getsockopt(int s, int level, int name, \ 1891.23Scgd caddr_t val, int *avalsize); } 1901.17Scgd#ifdef vax 1911.23Scgd119 STD { int resuba(int value); } 1921.17Scgd#else 1931.23Scgd119 UNIMPL resuba 1941.17Scgd#endif 1951.23Scgd120 STD { int readv(int fd, struct iovec *iovp, u_int iovcnt); } 1961.23Scgd121 STD { int writev(int fd, struct iovec *iovp, \ 1971.23Scgd u_int iovcnt); } 1981.23Scgd122 STD { int settimeofday(struct timeval *tv, \ 1991.23Scgd struct timezone *tzp); } 2001.23Scgd123 STD { int fchown(int fd, int uid, int gid); } 2011.23Scgd124 STD { int fchmod(int fd, int mode); } 2021.23Scgd125 COMPAT_43 { int recvfrom(int s, caddr_t buf, size_t len, \ 2031.23Scgd int flags, caddr_t from, int *fromlenaddr); } 2041.23Scgd126 COMPAT_43 { int setreuid(int ruid, int euid); } 2051.23Scgd127 COMPAT_43 { int setregid(int rgid, int egid); } 2061.23Scgd128 STD { int rename(char *from, char *to); } 2071.23Scgd129 COMPAT_43 { int truncate(char *path, long length); } 2081.23Scgd130 COMPAT_43 { int ftruncate(int fd, long length); } 2091.23Scgd131 STD { int flock(int fd, int how); } 2101.23Scgd132 STD { int mkfifo(char *path, int mode); } 2111.23Scgd133 STD { int sendto(int s, caddr_t buf, size_t len, \ 2121.23Scgd int flags, caddr_t to, int tolen); } 2131.23Scgd134 STD { int shutdown(int s, int how); } 2141.23Scgd135 STD { int socketpair(int domain, int type, int protocol, \ 2151.23Scgd int *rsv); } 2161.23Scgd136 STD { int mkdir(char *path, int mode); } 2171.23Scgd137 STD { int rmdir(char *path); } 2181.23Scgd138 STD { int utimes(char *path, struct timeval *tptr); } 2191.23Scgd139 OBSOL 4.2 sigreturn 2201.23Scgd140 STD { int adjtime(struct timeval *delta, \ 2211.23Scgd struct timeval *olddelta); } 2221.23Scgd141 COMPAT_43 { int getpeername(int fdes, caddr_t asa, int *alen); } 2231.23Scgd142 COMPAT_43 { int32_t gethostid(void); } 2241.23Scgd143 COMPAT_43 { int sethostid(int32_t hostid); } 2251.23Scgd144 COMPAT_43 { int getrlimit(u_int which, struct ogetrlimit *rlp); } 2261.23Scgd145 COMPAT_43 { int setrlimit(u_int which, struct ogetrlimit *rlp); } 2271.23Scgd146 COMPAT_43 { int killpg(int pgid, int signum); } 2281.23Scgd147 STD { int setsid(void); } 2291.23Scgd148 STD { int quotactl(char *path, int cmd, int uid, \ 2301.23Scgd caddr_t arg); } 2311.23Scgd149 COMPAT_43 { int quota(void); } 2321.23Scgd150 COMPAT_43 { int getsockname(int fdec, caddr_t asa, int *alen); } 2331.1Sglass 2341.1Sglass; Syscalls 151-180 inclusive are reserved for vendor-specific 2351.1Sglass; system calls. (This includes various calls added for compatibity 2361.1Sglass; with other Unix variants.) 2371.1Sglass; Some of these calls are now supported by BSD... 2381.23Scgd151 UNIMPL 2391.23Scgd152 UNIMPL 2401.23Scgd153 UNIMPL 2411.23Scgd154 UNIMPL 2421.20Smycroft#if defined(NFSCLIENT) || defined(NFSSERVER) 2431.23Scgd155 STD { int nfssvc(int flag, caddr_t argp); } 2441.1Sglass#else 2451.23Scgd155 UNIMPL 2461.1Sglass#endif 2471.23Scgd156 COMPAT_43 { int getdirentries(int fd, char *buf, u_int count, \ 2481.23Scgd long *basep); } 2491.23Scgd157 STD { int statfs(char *path, struct statfs *buf); } 2501.23Scgd158 STD { int fstatfs(int fd, struct statfs *buf); } 2511.23Scgd159 UNIMPL 2521.23Scgd160 UNIMPL 2531.2Sglass#ifdef NFSCLIENT 2541.23Scgd161 STD { int getfh(char *fname, fhandle_t *fhp); } 2551.1Sglass#else 2561.23Scgd161 UNIMPL getfh 2571.1Sglass#endif 2581.23Scgd162 COMPAT_09 { int getdomainname(char *domainname, int len); } 2591.23Scgd163 COMPAT_09 { int setdomainname(char *domainname, int len); } 2601.23Scgd164 COMPAT_09 { int uname(struct outsname *name); } 2611.23Scgd165 STD { int sysarch(int op, char *parms); } 2621.23Scgd166 UNIMPL 2631.23Scgd167 UNIMPL 2641.23Scgd168 UNIMPL 2651.23Scgd; XXX more generally, never on machines where sizeof(void *) != sizeof(int) 2661.23Scgd#if defined(SYSVSEM) && !defined(alpha) 2671.23Scgd169 COMPAT_10 { int semsys(int which, int a2, int a3, int a4, \ 2681.23Scgd int a5); } 2691.9Scgd#else 2701.23Scgd169 UNIMPL 1.0 semsys 2711.9Scgd#endif 2721.23Scgd; XXX more generally, never on machines where sizeof(void *) != sizeof(int) 2731.23Scgd#if defined(SYSVMSG) && !defined(alpha) 2741.23Scgd170 COMPAT_10 { int msgsys(int which, int a2, int a3, int a4, \ 2751.23Scgd int a5, int a6); } 2761.9Scgd#else 2771.23Scgd170 UNIMPL 1.0 msgsys 2781.9Scgd#endif 2791.23Scgd; XXX more generally, never on machines where sizeof(void *) != sizeof(int) 2801.23Scgd#if defined(SYSVSHM) && !defined(alpha) 2811.23Scgd171 COMPAT_10 { int shmsys(int which, int a2, int a3, int a4); } 2821.1Sglass#else 2831.23Scgd171 UNIMPL 1.0 shmsys 2841.1Sglass#endif 2851.23Scgd172 UNIMPL 2861.23Scgd173 UNIMPL 2871.23Scgd174 UNIMPL 2881.23Scgd175 UNIMPL 2891.23Scgd176 UNIMPL 2901.23Scgd177 UNIMPL 2911.23Scgd178 UNIMPL 2921.23Scgd179 UNIMPL 2931.23Scgd180 UNIMPL 2941.1Sglass 2951.1Sglass; Syscalls 180-199 are used by/reserved for BSD 2961.23Scgd181 STD { int setgid(gid_t gid); } 2971.23Scgd182 STD { int setegid(gid_t egid); } 2981.23Scgd183 STD { int seteuid(uid_t euid); } 2991.17Scgd#ifdef LFS 3001.23Scgd184 STD { int lfs_bmapv(fsid_t *fsidp, \ 3011.23Scgd struct block_info *blkiov, int blkcnt); } 3021.23Scgd185 STD { int lfs_markv(fsid_t *fsidp, \ 3031.23Scgd struct block_info *blkiov, int blkcnt); } 3041.23Scgd186 STD { int lfs_segclean(fsid_t *fsidp, u_long segment); } 3051.23Scgd187 STD { int lfs_segwait(fsid_t *fsidp, struct timeval *tv); } 3061.23Scgd#else 3071.23Scgd184 UNIMPL 3081.23Scgd185 UNIMPL 3091.23Scgd186 UNIMPL 3101.23Scgd187 UNIMPL 3111.23Scgd#endif 3121.23Scgd188 STD { int stat(char *path, struct stat *ub); } 3131.23Scgd189 STD { int fstat(int fd, struct stat *sb); } 3141.23Scgd190 STD { int lstat(char *path, struct stat *ub); } 3151.23Scgd191 STD { int pathconf(char *path, int name); } 3161.23Scgd192 STD { int fpathconf(int fd, int name); } 3171.23Scgd193 UNIMPL 3181.23Scgd194 STD { int getrlimit(u_int which, struct rlimit *rlp); } 3191.23Scgd195 STD { int setrlimit(u_int which, struct rlimit *rlp); } 3201.23Scgd196 STD { int getdirentries(int fd, char *buf, u_int count, \ 3211.23Scgd long *basep); } 3221.23Scgd197 STD { caddr_t mmap(caddr_t addr, size_t len, int prot, \ 3231.23Scgd int flags, int fd, long pad, off_t pos); } 3241.23Scgd198 STD { int nosys(void); } __syscall 3251.23Scgd199 STD { off_t lseek(int fd, int pad, off_t offset, \ 3261.23Scgd int whence); } 3271.23Scgd200 STD { int truncate(char *path, int pad, off_t length); } 3281.23Scgd201 STD { int ftruncate(int fd, int pad, off_t length); } 3291.23Scgd202 STD { int __sysctl(int *name, u_int namelen, void *old, \ 3301.23Scgd size_t *oldlenp, void *new, size_t newlen); } 3311.23Scgd203 STD { int mlock(caddr_t addr, size_t len); } 3321.23Scgd204 STD { int munlock(caddr_t addr, size_t len); } 3331.23Scgd205 UNIMPL 3341.23Scgd206 UNIMPL 3351.23Scgd207 UNIMPL 3361.23Scgd208 UNIMPL 3371.23Scgd209 UNIMPL 3381.11Scgd; 3391.11Scgd; Syscalls 210-219 are reserved for dynamically loaded syscalls 3401.11Scgd; 3411.11Scgd#ifdef LKM 3421.23Scgd210 NODEF { int lkmnosys(void); } 3431.23Scgd211 NODEF { int lkmnosys(void); } 3441.23Scgd212 NODEF { int lkmnosys(void); } 3451.23Scgd213 NODEF { int lkmnosys(void); } 3461.23Scgd214 NODEF { int lkmnosys(void); } 3471.23Scgd215 NODEF { int lkmnosys(void); } 3481.23Scgd216 NODEF { int lkmnosys(void); } 3491.23Scgd217 NODEF { int lkmnosys(void); } 3501.23Scgd218 NODEF { int lkmnosys(void); } 3511.23Scgd219 NODEF { int lkmnosys(void); } 3521.11Scgd#else /* !LKM */ 3531.23Scgd210 UNIMPL 3541.23Scgd211 UNIMPL 3551.23Scgd212 UNIMPL 3561.23Scgd213 UNIMPL 3571.23Scgd214 UNIMPL 3581.23Scgd215 UNIMPL 3591.23Scgd216 UNIMPL 3601.23Scgd217 UNIMPL 3611.23Scgd218 UNIMPL 3621.23Scgd219 UNIMPL 3631.6Scgd#endif /* !LKM */ 3641.23Scgd; System calls 220-240 are reserved for use by NetBSD 3651.23Scgd#ifdef SYSVSEM 3661.23Scgd220 STD { int __semctl(int semid, int semnum, int cmd, \ 3671.23Scgd union semun *arg); } 3681.23Scgd221 STD { int semget(key_t key, int nsems, int semflg); } 3691.23Scgd222 STD { int semop(int semid, struct sembuf *sops, \ 3701.23Scgd u_int nsops); } 3711.23Scgd223 STD { int semconfig(int flag); } 3721.23Scgd#else 3731.23Scgd220 UNIMPL semctl 3741.23Scgd221 UNIMPL semget 3751.23Scgd222 UNIMPL semop 3761.23Scgd223 UNIMPL semconfig 3771.23Scgd#endif 3781.23Scgd#ifdef SYSVMSG 3791.23Scgd224 STD { int msgctl(int msqid, int cmd, \ 3801.23Scgd struct msqid_ds *buf); } 3811.23Scgd225 STD { int msgget(key_t key, int msgflg); } 3821.23Scgd226 STD { int msgsnd(int msqid, void *msgp, size_t msgsz, \ 3831.23Scgd int msgflg); } 3841.23Scgd227 STD { int msgrcv(int msqid, void *msgp, size_t msgsz, \ 3851.23Scgd long msgtyp, int msgflg); } 3861.23Scgd#else 3871.23Scgd224 UNIMPL msgctl 3881.23Scgd225 UNIMPL msgget 3891.23Scgd226 UNIMPL msgsnd 3901.23Scgd227 UNIMPL msgrcv 3911.23Scgd#endif 3921.23Scgd#ifdef SYSVSHM 3931.23Scgd228 STD { int shmat(int shmid, void *shmaddr, int shmflg); } 3941.23Scgd229 STD { int shmctl(int shmid, int cmd, \ 3951.23Scgd struct shmid_ds *buf); } 3961.23Scgd230 STD { int shmdt(void *shmaddr); } 3971.23Scgd231 STD { int shmget(key_t key, int size, int shmflg); } 3981.23Scgd#else 3991.23Scgd228 UNIMPL shmat 4001.23Scgd229 UNIMPL shmctl 4011.23Scgd230 UNIMPL shmdt 4021.23Scgd231 UNIMPL shmget 4031.23Scgd#endif 404