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