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