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