Home | History | Annotate | Download | only in syscall
      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	"@(#)SYSCALL.README	1.7	05/06/10 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