xref: /illumos-gate/usr/src/uts/common/syscall/SYSCALL.README (revision bc1f688b4872ace323eaddbb1a6365d054e7bf56)
1
2CDDL HEADER START
3
4The contents of this file are subject to the terms of the
5Common Development and Distribution License, Version 1.0 only
6(the "License").  You may not use this file except in compliance
7with the License.
8
9You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10or http://www.opensolaris.org/os/licensing.
11See the License for the specific language governing permissions
12and limitations under the License.
13
14When distributing Covered Code, include this CDDL HEADER in each
15file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16If applicable, add the following below this CDDL HEADER, with the
17fields enclosed by brackets "[]" replaced with your own identifying
18information: Portions Copyright [yyyy] [name of copyright owner]
19
20CDDL HEADER END
21
22Copyright 2000 Sun Microsystems, Inc.  All rights reserved.
23Use is subject to license terms.
24
25ident	"%Z%%M%	%I%	%E% SMI"
26
27System Call Files
28------ ---- -----
29
30The universal dumping grounds for system calls in Solaris 2.x,
31common/os/scalls.c and common/fs/vncalls.c, have been sub-divided into
32smaller files.
33
34The old files had become quite large, and contained much completely
35unrelated code. From a software engineering standpoint, it didn't seem
36like a good idea to permit system calls or underlying routines
37to be cognizant of the internal interfaces and underlying routines
38of unrelated system calls.
39
40From a practical standpoint, recompiling all of scalls.c or vncalls.c
41after making only a small change in one system call seemed like
42cruel and unusual punishment.  Also, running "bringover" after
43changing scalls.c or vncalls.c in one's own environment had a
44high probability of encountering a conflict.
45
46In an attempt to improve maintainability, we have split these files
47and created new directories to hold the results. One hopes that this
48new organization will prove easier to maintain and change.
49
50The principles listed below guided the split-up. Please try to adhere
51to them if you add new system calls.
52
53
541) System calls now live in directories called "syscall". Architecture
55   independant system calls live in common/syscall and architecture
56   dependant system calls live in sparc/syscall or i86/syscall.
57
582) Most system calls have their own separate file. We try to keep
59   these files as small as possible.
60
613) Unrelated system calls should NEVER be put in the same file. Do
62   not consider any of these files "dumping grounds" for new system
63   call work.
64
654) Some files DO contain more than one system call. This occurs
66   under the following restricted conditions:
67
68	o System calls that are internally related, either because
69	  they alone call a set of static functions to do the dirty
70	  work, or because they access locally-defined static data.
71	  The system calls in sigqueue.c and lwpsys.c are examples
72	  of the first case; lwp_sobj.c is an example of the second.
73
74	o Fairly trivial pairs of "get-" and "set-" operation system
75	  calls. The file rlimit.c, containing getrlimit() and
76	  setrlimit() is a case in point.
77
78	o System calls that are basically "variations on a theme,"
79	  such as the the different forms of stat in stat.c.
80
815) If a number of system calls make use of a local function, or,
82   if a function is used more widely than in a few system calls,
83   then perhaps this function needs to be moved to one of the
84   kernel-implementation files in common/os or common/fs. For
85   example, this was done with the functions namesetattr and
86   fdsetattr, which were used by several different system calls.
87   These functions were moved into common/os/fio.c, where they
88   seemed to fit better.
89
90-------------------------------------------------------------------
91System Call Reorganization
92------ ---- --------------
93
94The system calls in common/os/scalls.c, common/fs/vncalls.c
95have been broken up into smaller files. In addition, system
96calls that previously resided in <arch>/os/archdep.c have
97been removed from that file. The table below describes the
98manner in which the files have been split up.
99
100The original syscall files have not been deleted, but have been
101renamed to reflect their diminished contents. The file scalls.c
102has been renamed to ssig.c, and vncalls.c has been renamed to
103poll.c.
104
105
106Syscall Entry Point	Old File	New File
107-------------------	--- ----	--- ----
108gtime			scalls.c	common/syscall/time.c
109stime			scalls.c	common/syscall/time.c
110
111adjtime			scalls.c	common/syscall/adjtime.c
112
113times			scalls.c	common/syscall/times.c
114
115sysconfig		scalls.c	common/syscall/sysconfig.c
116
117setuid			scalls.c	common/syscall/uid.c
118getuid			scalls.c	common/syscall/uid.c
119seteuid			scalls.c	common/syscall/uid.c
120
121setgid			scalls.c	common/syscall/gid.c
122getgid			scalls.c	common/syscall/gid.c
123setegid			scalls.c	common/syscall/gid.c
124
125getpid			scalls.c	common/syscall/getpid.c
126
127setgroups		scalls.c	common/syscall/groups.c
128getgroups		scalls.c	common/syscall/groups.c
129
130setpgrp			scalls.c	common/syscall/pgrpsys.c
131
132pause			scalls.c	common/syscall/pause.c
133
134ssig			scalls.c	common/syscall/ssig.c
135
136sigtimedwait		scalls.c	common/syscall/sigtimedwait.c
137
138sigsuspend		scalls.c	common/syscall/sigsuspend.c
139
140sigaltstack		scalls.c	common/syscall/sigaltstack.c
141
142sigpending		scalls.c	common/syscall/sigpending.c
143
144sigprocmask		scalls.c	common/syscall/sigprocmask.c
145
146sigaction		scalls.c	common/syscall/sigaction.c
147
148kill			scalls.c	common/syscall/sigqueue.c
149sigqueue		scalls.c	common/syscall/sigqueue.c
150
151sigsendsys		scalls.c	common/syscall/sigsendset.c
152
153profil			scalls.c	common/syscall/profil.c
154
155alarm			scalls.c	common/syscall/alarm.c
156
157umask			scalls.c	common/syscall/umask.c
158
159ulimit			scalls.c	common/syscall/rlimit.c
160getrlimit		scalls.c	common/syscall/rlimit.c
161setrlimit		scalls.c	common/syscall/rlimit.c
162
163utssys			scalls.c	common/syscall/utssys.c
164
165uname			scalls.c	common/syscall/uname.c
166
167uadmin			scalls.c	common/syscall/uadmin.c
168
169systeminfo		scalls.c	common/syscall/systeminfo.c
170
171syslwp_create		scalls.c	common/syscall/lwp_create.c
172syslwp_exit		scalls.c	common/syscall/lwp_create.c
173
174syslwp_syspend		scalls.c	common/syscall/lwpsys.c
175syslwp_continue		scalls.c	common/syscall/lwpsys.c
176lwp_kill		scalls.c	common/syscall/lwpsys.c
177lwp_wait		scalls.c	common/syscall/lwpsys.c
178
179yield			scalls.c	common/syscall/yield.c
180
181lwp_self		scalls.c	common/syscall/lwp_self.c
182
183lwp_info		scalls.c	common/syscall/lwp_info.c
184
185lwp_mutex_lock		scalls.c	common/syscall/lwp_sobj.c
186lwp_mutex_unlock	scalls.c	common/syscall/lwp_sobj.c
187lwp_cond_wait		scalls.c	common/syscall/lwp_sobj.c
188lwp_cond_signal		scalls.c	common/syscall/lwp_sobj.c
189lwp_cond_broadcast	scalls.c	common/syscall/lwp_sobj.c
190lwp_sema_p		scalls.c	common/syscall/lwp_sobj.c
191lwp_sema_v		scalls.c	common/syscall/lwp_sobj.c
192
193open			vncalls.c	common/syscall/open.c
194creat			vncalls.c	common/syscall/open.c
195
196close			vncalls.c	common/syscall/close.c
197
198read			vncalls.c	common/syscall/rw.c
199write			vncalls.c	common/syscall/rw.c
200pread			vncalls.c	common/syscall/rw.c
201pwrite			vncalls.c	common/syscall/rw.c
202readv			vncalls.c	common/syscall/rw.c
203writev			vncalls.c	common/syscall/rw.c
204
205chdir			vncalls.c	common/syscall/chdir.c
206fchdir			vncalls.c	common/syscall/chdir.c
207chroot			vncalls.c	common/syscall/chdir.c
208fchroot			vncalls.c	common/syscall/chdir.c
209
210mknod			vncalls.c	common/syscall/mknod.c
211xmknod			vncalls.c	common/syscall/mknod.c
212
213mkdir			vncalls.c	common/syscall/mkdir.c
214
215link			vncalls.c	common/syscall/link.c
216
217rename			vncalls.c	common/syscall/rename.c
218
219symlink			vncalls.c	common/syscall/symlink.c
220
221unlink			vncalls.c	common/syscall/unlink.c
222
223rmdir			vncalls.c	common/syscall/rmdir.c
224
225getdents		vncalls.c	common/syscall/getdents.c
226
227lseek			vncalls.c	common/syscall/lseek.c
228llseek			vncalls.c	common/syscall/lseek.c
229
230access			vncalls.c	common/syscall/access.c
231
232stat			vncalls.c	common/syscall/stat.c
233lstat			vncalls.c	common/syscall/stat.c
234fstat			vncalls.c	common/syscall/stat.c
235xstat			vncalls.c	common/syscall/stat.c
236lxstat			vncalls.c	common/syscall/stat.c
237fxstat			vncalls.c	common/syscall/stat.c
238
239fpathconf		vncalls.c	common/syscall/pathconf.c
240pathconf		vncalls.c	common/syscall/pathconf.c
241
242readlink		vncalls.c	common/syscall/readlink.c
243
244chmod			vncalls.c	common/syscall/chmod.c
245fchmod			vncalls.c	common/syscall/chmod.c
246
247chown			vncalls.c	common/syscall/chown.c
248lchown			vncalls.c	common/syscall/chown.c
249fchown			vncalls.c	common/syscall/chown.c
250
251utime			vncalls.c	common/syscall/utime.c
252utimes			vncalls.c	common/syscall/utime.c
253
254fdsync			vncalls.c	common/syscall/fdsync.c
255
256fcntl			vncalls.c	common/syscall/fcntl.c
257
258dup			vncalls.c	common/syscall/dup.c
259
260ioctl			vncalls.c	common/syscall/ioctl.c
261stty			vncalls.c	common/syscall/ioctl.c
262gtty			vncalls.c	common/syscall/ioctl.c
263
264poll			vncalls.c	common/syscall/poll.c
265
266acl			vncalls.c	common/syscall/acl.c
267facl			vncalls.c	common/syscall/acl.c
268
269mount			vfs.c		common/syscall/mount.c
270
271statfs			vfs.c		common/syscall/statfs.c
272fstatfs			vfs.c		common/syscall/statfs.c
273
274statvfs			vfs.c		common/syscall/statvfs.c
275fstatvfs		vfs.c		common/syscall/statvfs.c
276
277sync			vfs.c		common/syscall/sync.c
278
279sysfs			vfs.c		common/syscall/sysfs.c
280
281umount			vfs.c		common/syscall/umount.c
282
283nice			priocntl.c	common/syscall/nice.c
284
285pipe			os/pipe.c	common/syscall/pipe.c
286
287msgsys			os/msg.c	common/syscall/msg.c
288
289semsys			os/sem.c	common/syscall/sem.c
290
291shmsys			os/shm.c	common/syscall/shm.c
292
293getcontext		sparc/archdep.c	sparc/syscall/getcontext.c
294lwp_getprivate		sparc/archdep.c	sparc/syscall/lwp_private.c
295lwp_setprivate		sparc/archdep.c	sparc/syscall/lwp_private.c
296
297getcontext		i86/archdep.c	i86/syscall/getcontext.c
298lwp_getprivate		i86/archdep.c	i86/syscall/lwp_private.c
299lwp_setprivate		i86/archdep.c	i86/syscall/lwp_private.c
300
301-----------------------------------------------------------------
302
303Most of the system calls in this directory have been converted
304to use C-style argument passing, instead of the old uap-pointer
305method. This usually makes the system calls faster and more
306"natural" in implementation.
307