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