1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  24  */
  25 
  26 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T     */
  27 /*        All Rights Reserved   */
  28 
  29 #ifndef _SYS_SYSCALL_H
  30 #define _SYS_SYSCALL_H
  31 
  32 #ifdef  __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 /*
  37  *      system call numbers
  38  *              syscall(SYS_xxxx, ...)
  39  */
  40 
  41         /* syscall enumeration MUST begin with 1 */
  42 
  43         /*
  44          * SunOS/SPARC uses 0 for the indirect system call SYS_syscall
  45          * but this doesn't count because it is just another way
  46          * to specify the real system call number.
  47          */
  48 
  49 #define SYS_syscall     0
  50 #define SYS_exit        1
  51 #define SYS_read        3
  52 #define SYS_write       4
  53 #define SYS_open        5
  54 #define SYS_close       6
  55 #define SYS_linkat      7
  56 #define SYS_link        9
  57 #define SYS_unlink      10
  58 #define SYS_symlinkat   11
  59 #define SYS_chdir       12
  60 #define SYS_time        13
  61 #define SYS_mknod       14
  62 #define SYS_chmod       15
  63 #define SYS_chown       16
  64 #define SYS_brk         17
  65 #define SYS_stat        18
  66 #define SYS_lseek       19
  67 #define SYS_getpid      20
  68 #define SYS_mount       21
  69 #define SYS_readlinkat  22
  70 #define SYS_setuid      23
  71 #define SYS_getuid      24
  72 #define SYS_stime       25
  73 #define SYS_pcsample    26
  74 #define SYS_alarm       27
  75 #define SYS_fstat       28
  76 #define SYS_pause       29
  77 #define SYS_stty        31
  78 #define SYS_gtty        32
  79 #define SYS_access      33
  80 #define SYS_nice        34
  81 #define SYS_statfs      35
  82 #define SYS_sync        36
  83 #define SYS_kill        37
  84 #define SYS_fstatfs     38
  85 #define SYS_pgrpsys     39
  86         /*
  87          * subcodes:
  88          *      getpgrp()         :: syscall(39,0)
  89          *      setpgrp()         :: syscall(39,1)
  90          *      getsid(pid)       :: syscall(39,2,pid)
  91          *      setsid()          :: syscall(39,3)
  92          *      getpgid(pid)      :: syscall(39,4,pid)
  93          *      setpgid(pid,pgid) :: syscall(39,5,pid,pgid)
  94          */
  95 #define SYS_uucopystr   40
  96 #define SYS_pipe        42
  97 #define SYS_times       43
  98 #define SYS_profil      44
  99 #define SYS_faccessat   45
 100 #define SYS_setgid      46
 101 #define SYS_getgid      47
 102 #define SYS_mknodat     48
 103 #define SYS_msgsys      49
 104         /*
 105          * subcodes:
 106          *      msgget(...)  :: msgsys(0, ...)
 107          *      msgctl(...)  :: msgsys(1, ...)
 108          *      msgrcv(...)  :: msgsys(2, ...)
 109          *      msgsnd(...)  :: msgsys(3, ...)
 110          *      msgids(...)  :: msgsys(4, ...)
 111          *      msgsnap(...) :: msgsys(5, ...)
 112          *      see <sys/msg.h>
 113          */
 114 #define SYS_sysi86      50
 115         /*
 116          * subcodes:
 117          *      sysi86(code, ...)
 118          */
 119 #define SYS_acct        51
 120 #define SYS_shmsys      52
 121         /*
 122          * subcodes:
 123          *      shmat (...) :: shmsys(0, ...)
 124          *      shmctl(...) :: shmsys(1, ...)
 125          *      shmdt (...) :: shmsys(2, ...)
 126          *      shmget(...) :: shmsys(3, ...)
 127          *      shmids(...) :: shmsys(4, ...)
 128          *      see <sys/shm.h>
 129          */
 130 #define SYS_semsys      53
 131         /*
 132          * subcodes:
 133          *      semctl(...) :: semsys(0, ...)
 134          *      semget(...) :: semsys(1, ...)
 135          *      semop (...) :: semsys(2, ...)
 136          *      semids(...) :: semsys(3, ...)
 137          *      semtimedop(...) :: semsys(4, ...)
 138          *      see <sys/sem.h>
 139          */
 140 #define SYS_ioctl       54
 141 #define SYS_uadmin      55
 142 #define SYS_fchownat    56
 143 #define SYS_utssys      57
 144         /*
 145          * subcodes (third argument):
 146          *      uname(obuf)  (obsolete)   :: syscall(57, obuf, ign, 0)
 147          *                                      subcode 1 unused
 148          *      ustat(dev, obuf)          :: syscall(57, obuf, dev, 2)
 149          *      fusers(path, flags, obuf) :: syscall(57, path, flags, 3, obuf)
 150          *      see <sys/utssys.h>
 151          */
 152 #define SYS_fdsync      58
 153 #define SYS_execve      59
 154 #define SYS_umask       60
 155 #define SYS_chroot      61
 156 #define SYS_fcntl       62
 157 #define SYS_ulimit      63
 158 #define SYS_renameat    64
 159 #define SYS_unlinkat    65
 160 #define SYS_fstatat     66
 161 #define SYS_fstatat64   67
 162 #define SYS_openat      68
 163 #define SYS_openat64    69
 164 #define SYS_tasksys     70
 165         /*
 166          * subcodes:
 167          *      settaskid(...) :: tasksys(0, ...)
 168          *      gettaskid(...) :: tasksys(1, ...)
 169          *      getprojid(...) :: tasksys(2, ...)
 170          */
 171 #define SYS_acctctl     71
 172 #define SYS_exacctsys   72
 173         /*
 174          * subcodes:
 175          *      getacct(...) :: exacct(0, ...)
 176          *      putacct(...) :: exacct(1, ...)
 177          *      wracct(...) :: exacct(2, ...)
 178          */
 179 #define SYS_getpagesizes        73
 180         /*
 181          * subcodes:
 182          *      getpagesizes2(...)      :: getpagesizes(0, ...)
 183          *      getpagesizes(...)       :: getpagesizes(1, ...) legacy
 184          */
 185 #define SYS_rctlsys     74
 186         /*
 187          * subcodes:
 188          *      getrctl(...) :: rctlsys(0, ...)
 189          *      setrctl(...) :: rctlsys(1, ...)
 190          *      rctllist(...) :: rctlsys(2, ...)
 191          *      rctlctl(...) :: rctlsys(3, ...)
 192          */
 193 #define SYS_sidsys      75
 194         /*
 195          * subcodes:
 196          *      allocids(...)           :: sidsys(0, ...)
 197          *      idmap_reg(...)          :: sidsys(1, ...)
 198          *      idmap_unreg(...)        :: sidsys(2, ...)
 199          */
 200 #define SYS_lwp_park    77
 201         /*
 202          * subcodes:
 203          *      _lwp_park(timespec_t *, lwpid_t)        :: syslwp_park(0, ...)
 204          *      _lwp_unpark(lwpid_t, int)               :: syslwp_park(1, ...)
 205          *      _lwp_unpark_all(lwpid_t *, int)         :: syslwp_park(2, ...)
 206          *      _lwp_unpark_cancel(lwpid_t *, int)      :: syslwp_park(3, ...)
 207          *      _lwp_set_park(lwpid_t *, int)           :: syslwp_park(4, ...)
 208          */
 209 #define SYS_sendfilev   78
 210         /*
 211          * subcodes :
 212          *      sendfilev()   :: sendfilev(0, ...)
 213          *      sendfilev64() :: sendfilev(1, ...)
 214          */
 215 #define SYS_rmdir       79
 216 #define SYS_mkdir       80
 217 #define SYS_getdents    81
 218 #define SYS_privsys     82
 219         /*
 220          * subcodes:
 221          *      setppriv(...)           :: privsys(0, ...)
 222          *      getppriv(...)           :: privsys(1, ...)
 223          *      getimplinfo(...)        :: privsys(2, ...)
 224          *      setpflags(...)          :: privsys(3, ...)
 225          *      getpflags(...)          :: privsys(4, ...)
 226          *      issetugid();            :: privsys(5)
 227          */
 228 #define SYS_ucredsys    83
 229         /*
 230          * subcodes:
 231          *      ucred_get(...)          :: ucredsys(0, ...)
 232          *      getpeerucred(...)       :: ucredsys(1, ...)
 233          */
 234 #define SYS_sysfs       84
 235         /*
 236          * subcodes:
 237          *      sysfs(code, ...)
 238          *      see <sys/fstyp.h>
 239          */
 240 #define SYS_getmsg      85
 241 #define SYS_putmsg      86
 242 #define SYS_lstat       88
 243 #define SYS_symlink     89
 244 #define SYS_readlink    90
 245 #define SYS_setgroups   91
 246 #define SYS_getgroups   92
 247 #define SYS_fchmod      93
 248 #define SYS_fchown      94
 249 #define SYS_sigprocmask 95
 250 #define SYS_sigsuspend  96
 251 #define SYS_sigaltstack 97
 252 #define SYS_sigaction   98
 253 #define SYS_sigpending  99
 254         /*
 255          * subcodes:
 256          *                      subcode 0 unused
 257          *      sigpending(...) :: syscall(99, 1, ...)
 258          *      sigfillset(...) :: syscall(99, 2, ...)
 259          */
 260 #define SYS_context     100
 261         /*
 262          * subcodes:
 263          *      getcontext(...) :: syscall(100, 0, ...)
 264          *      setcontext(...) :: syscall(100, 1, ...)
 265          */
 266 #define SYS_fchmodat    101
 267 #define SYS_mkdirat     102
 268 #define SYS_statvfs     103
 269 #define SYS_fstatvfs    104
 270 #define SYS_getloadavg  105
 271 #define SYS_nfssys      106
 272 #define SYS_waitid      107
 273 #define SYS_waitsys     SYS_waitid      /* historical */
 274 #define SYS_sigsendsys  108
 275 #define SYS_hrtsys      109
 276 #define SYS_utimesys    110
 277         /*
 278          * subcodes:
 279          *      futimens(...)   :: syscall(110, 0, ...)
 280          *      utimensat(...)  :: syscall(110, 1, ...)
 281          */
 282 #define SYS_sigresend   111
 283 #define SYS_priocntlsys 112
 284 #define SYS_pathconf    113
 285 #define SYS_mincore     114
 286 #define SYS_mmap        115
 287 #define SYS_mprotect    116
 288 #define SYS_munmap      117
 289 #define SYS_fpathconf   118
 290 #define SYS_vfork       119
 291 #define SYS_fchdir      120
 292 #define SYS_readv       121
 293 #define SYS_writev      122
 294 #define SYS_mmapobj     127
 295 #define SYS_setrlimit   128
 296 #define SYS_getrlimit   129
 297 #define SYS_lchown      130
 298 #define SYS_memcntl     131
 299 #define SYS_getpmsg     132
 300 #define SYS_putpmsg     133
 301 #define SYS_rename      134
 302 #define SYS_uname       135
 303 #define SYS_setegid     136
 304 #define SYS_sysconfig   137
 305 #define SYS_adjtime     138
 306 #define SYS_systeminfo  139
 307 #define SYS_sharefs     140
 308 #define SYS_seteuid     141
 309 #define SYS_forksys     142
 310         /*
 311          * subcodes:
 312          *      forkx(flags)    :: forksys(0, flags)
 313          *      forkallx(flags) :: forksys(1, flags)
 314          *      vforkx(flags)   :: forksys(2, flags)
 315          */
 316 #define SYS_sigtimedwait        144
 317 #define SYS_lwp_info    145
 318 #define SYS_yield       146
 319 #define SYS_lwp_sema_post       148
 320 #define SYS_lwp_sema_trywait    149
 321 #define SYS_lwp_detach  150
 322 #define SYS_corectl     151
 323 #define SYS_modctl      152
 324 #define SYS_fchroot     153
 325 #define SYS_vhangup     155
 326 #define SYS_gettimeofday        156
 327 #define SYS_getitimer           157
 328 #define SYS_setitimer           158
 329 #define SYS_lwp_create          159
 330 #define SYS_lwp_exit            160
 331 #define SYS_lwp_suspend         161
 332 #define SYS_lwp_continue        162
 333 #define SYS_lwp_kill            163
 334 #define SYS_lwp_self            164
 335 #define SYS_lwp_sigmask         165
 336 #define SYS_lwp_private         166
 337 #define SYS_lwp_wait            167
 338 #define SYS_lwp_mutex_wakeup    168
 339 #define SYS_lwp_cond_wait       170
 340 #define SYS_lwp_cond_signal     171
 341 #define SYS_lwp_cond_broadcast  172
 342 #define SYS_pread               173
 343 #define SYS_pwrite              174
 344 #define SYS_llseek              175
 345 #define SYS_inst_sync           176
 346 #define SYS_brand               177
 347 #define SYS_kaio                178
 348         /*
 349          * subcodes:
 350          *      aioread(...)    :: kaio(AIOREAD, ...)
 351          *      aiowrite(...)   :: kaio(AIOWRITE, ...)
 352          *      aiowait(...)    :: kaio(AIOWAIT, ...)
 353          *      aiocancel(...)  :: kaio(AIOCANCEL, ...)
 354          *      aionotify()     :: kaio(AIONOTIFY)
 355          *      aioinit()       :: kaio(AIOINIT)
 356          *      aiostart()      :: kaio(AIOSTART)
 357          *      see <sys/aio.h>
 358          */
 359 #define SYS_cpc                 179
 360 #define SYS_lgrpsys             180
 361 #define SYS_meminfosys          SYS_lgrpsys
 362         /*
 363          * subcodes:
 364          *      meminfo(...) :: meminfosys(MISYS_MEMINFO, ...)
 365          */
 366 #define SYS_rusagesys           181
 367         /*
 368          * subcodes:
 369          *      getrusage(...) :: rusagesys(RUSAGESYS_GETRUSAGE, ...)
 370          *      getvmusage(...)    :: rusagesys(RUSAGESYS_GETVMUSAGE, ...)
 371          */
 372 #define SYS_port                182
 373         /*
 374          * subcodes:
 375          *      port_create(...) :: portfs(PORT_CREATE, ...)
 376          *      port_associate(...) :: portfs(PORT_ASSOCIATE, ...)
 377          *      port_dissociate(...) :: portfs(PORT_DISSOCIATE, ...)
 378          *      port_send(...) :: portfs(PORT_SEND, ...)
 379          *      port_sendn(...) :: portfs(PORT_SENDN, ...)
 380          *      port_get(...) :: portfs(PORT_GET, ...)
 381          *      port_getn(...) :: portfs(PORT_GETN, ...)
 382          *      port_alert(...) :: portfs(PORT_ALERT, ...)
 383          *      port_dispatch(...) :: portfs(PORT_DISPATCH, ...)
 384          */
 385 #define SYS_pollsys             183
 386 #define SYS_labelsys            184
 387 #define SYS_acl                 185
 388 #define SYS_auditsys            186
 389 #define SYS_processor_bind      187
 390 #define SYS_processor_info      188
 391 #define SYS_p_online            189
 392 #define SYS_sigqueue            190
 393 #define SYS_clock_gettime       191
 394 #define SYS_clock_settime       192
 395 #define SYS_clock_getres        193
 396 #define SYS_timer_create        194
 397 #define SYS_timer_delete        195
 398 #define SYS_timer_settime       196
 399 #define SYS_timer_gettime       197
 400 #define SYS_timer_getoverrun    198
 401 #define SYS_nanosleep           199
 402 #define SYS_facl                200
 403 #define SYS_door                201
 404         /*
 405          * Door Subcodes:
 406          *      0       door_create
 407          *      1       door_revoke
 408          *      2       door_info
 409          *      3       door_call
 410          *      4       door_return
 411          */
 412 #define SYS_setreuid            202
 413 #define SYS_setregid            203
 414 #define SYS_install_utrap       204
 415 #define SYS_signotify           205
 416 #define SYS_schedctl            206
 417 #define SYS_pset                207
 418 #define SYS_sparc_utrap_install 208
 419 #define SYS_resolvepath         209
 420 #define SYS_lwp_mutex_timedlock 210
 421 #define SYS_lwp_sema_timedwait  211
 422 #define SYS_lwp_rwlock_sys      212
 423         /*
 424          * subcodes:
 425          *      lwp_rwlock_rdlock(...)    :: syscall(212, 0, ...)
 426          *      lwp_rwlock_wrlock(...)    :: syscall(212, 1, ...)
 427          *      lwp_rwlock_tryrdlock(...) :: syscall(212, 2, ...)
 428          *      lwp_rwlock_trywrlock(...) :: syscall(212, 3, ...)
 429          *      lwp_rwlock_unlock(...)    :: syscall(212, 4, ...)
 430          */
 431 /* system calls for large file ( > 2 gigabyte) support */
 432 #define SYS_getdents64          213
 433 #define SYS_mmap64              214
 434 #define SYS_stat64              215
 435 #define SYS_lstat64             216
 436 #define SYS_fstat64             217
 437 #define SYS_statvfs64           218
 438 #define SYS_fstatvfs64          219
 439 #define SYS_setrlimit64         220
 440 #define SYS_getrlimit64         221
 441 #define SYS_pread64             222
 442 #define SYS_pwrite64            223
 443 #define SYS_open64              225
 444 #define SYS_rpcsys              226
 445 #define SYS_zone                227
 446         /*
 447          * subcodes:
 448          *      zone_create(...) :: zone(ZONE_CREATE, ...)
 449          *      zone_destroy(...) :: zone(ZONE_DESTROY, ...)
 450          *      zone_getattr(...) :: zone(ZONE_GETATTR, ...)
 451          *      zone_enter(...) :: zone(ZONE_ENTER, ...)
 452          *      zone_list(...) :: zone(ZONE_LIST, ...)
 453          *      zone_shutdown(...) :: zone(ZONE_SHUTDOWN, ...)
 454          *      zone_lookup(...) :: zone(ZONE_LOOKUP, ...)
 455          *      zone_boot(...) :: zone(ZONE_BOOT, ...)
 456          *      zone_version(...) :: zone(ZONE_VERSION, ...)
 457          *      zone_setattr(...) :: zone(ZONE_SETATTR, ...)
 458          *      zone_add_datalink(...) :: zone(ZONE_ADD_DATALINK, ...)
 459          *      zone_remove_datalink(...) :: zone(ZONE_DEL_DATALINK, ...)
 460          *      zone_check_datalink(...) :: zone(ZONE_CHECK_DATALINK, ...)
 461          *      zone_list_datalink(...) :: zone(ZONE_LIST_DATALINK, ...)
 462          */
 463 #define SYS_autofssys           228
 464 #define SYS_getcwd              229
 465 #define SYS_so_socket           230
 466 #define SYS_so_socketpair       231
 467 #define SYS_bind                232
 468 #define SYS_listen              233
 469 #define SYS_accept              234
 470 #define SYS_connect             235
 471 #define SYS_shutdown            236
 472 #define SYS_recv                237
 473 #define SYS_recvfrom            238
 474 #define SYS_recvmsg             239
 475 #define SYS_send                240
 476 #define SYS_sendmsg             241
 477 #define SYS_sendto              242
 478 #define SYS_getpeername         243
 479 #define SYS_getsockname         244
 480 #define SYS_getsockopt          245
 481 #define SYS_setsockopt          246
 482 #define SYS_sockconfig          247
 483         /*
 484          * NTP codes
 485          */
 486 #define SYS_ntp_gettime         248
 487 #define SYS_ntp_adjtime         249
 488 #define SYS_lwp_mutex_unlock    250
 489 #define SYS_lwp_mutex_trylock   251
 490 #define SYS_lwp_mutex_register  252
 491 #define SYS_cladm               253
 492 #define SYS_uucopy              254
 493 #define SYS_umount2             255
 494 
 495 #ifndef _ASM
 496 
 497 typedef struct {                /* syscall set type */
 498         unsigned int    word[16];
 499 } sysset_t;
 500 
 501 #if !defined(_KERNEL)
 502 
 503 typedef struct {        /* return values from system call */
 504         long    sys_rval1;      /* primary return value from system call */
 505         long    sys_rval2;      /* second return value from system call */
 506 } sysret_t;
 507 
 508 #if defined(__STDC__)
 509 extern int      syscall(int, ...);
 510 extern int      __systemcall(sysret_t *, int, ...);
 511 extern int      __set_errno(int);
 512 #else
 513 extern int      syscall();
 514 extern int      __systemcall();
 515 extern int      __set_errno();
 516 #endif
 517 
 518 #endif  /* _KERNEL */
 519 
 520 #endif  /* _ASM */
 521 
 522 #ifdef  __cplusplus
 523 }
 524 #endif
 525 
 526 #endif  /* _SYS_SYSCALL_H */