Oberon || Library || Module Index || Search Engine || Definition || Module


Ulm's Oberon Library:
Sys


NAME

Sys - UNIX system calls

SYNOPSIS

CONST
   syscall           =   0;   setrlimit         = 128;
   exit              =   1;   getrlimit         = 129;
   fork              =   2;   lchown            = 130;
   read              =   3;   memcntl           = 131;
   write             =   4;   getpmsg           = 132;
   open              =   5;   putpmsg           = 133;
   close             =   6;   rename            = 134;
   wait              =   7;   uname             = 135;
   creat             =   8;   setegid           = 136;
   link              =   9;   sysconfig         = 137;
   unlink            =  10;   adjtime           = 138;
   exec              =  11;   systeminfo        = 139;
   chdir             =  12;   seteuid           = 141;
   time              =  13;   vtrace            = 142;
   mknod             =  14;   fork1             = 143;
   chmod             =  15;   sigtimedwait      = 144;
   chown             =  16;   lwpInfo           = 145;
   brk               =  17;   yield             = 146;
   stat              =  18;   lwpSemaWait       = 147;
   lseek             =  19;   lwpSemaPost       = 148;
   getpid            =  20;   lwpSemaTrywait    = 149;
   mount             =  21;   corectl           = 151;
   umount            =  22;   modctl            = 152;
   setuid            =  23;   fchroot           = 153;
   getuid            =  24;   utimes            = 154;
   stime             =  25;   vhangup           = 155;
   pcsample          =  26;   gettimeofday      = 156;
   alarm             =  27;   getitimer         = 157;
   fstat             =  28;   setitimer         = 158;
   pause             =  29;   lwpCreate         = 159;
   utime             =  30;   lwpExit           = 160;
   stty              =  31;   lwpSuspend        = 161;
   gtty              =  32;   lwpContinue       = 162;
   access            =  33;   lwpKill           = 163;
   nice              =  34;   lwpSelf           = 164;
   statfs            =  35;   lwpSetprivate     = 165;
   sync              =  36;   lwpGetprivate     = 166;
   kill              =  37;   lwpWait           = 167;
   fstatfs           =  38;   lwpMutexWakeup    = 168;
   pgrpsys           =  39;   lwpMutexLock      = 169;
   xenix             =  40;   lwpCondWait       = 170;
   dup               =  41;   lwpCondSignal     = 171;
   pipe              =  42;   lwpCondBroadcast  = 172;
   times             =  43;   pread             = 173;
   profil            =  44;   pwrite            = 174;
   plock             =  45;   llseek            = 175;
   setgid            =  46;   instSync          = 176;
   getgid            =  47;   srmlimitsys       = 177;
   signal            =  48;   kaio              = 178;
   msgsys            =  49;   cpc               = 179;
   sysi86            =  50;   tsolsys           = 184;
   syssun            =  50;   acl               = 185;
   acct              =  51;   auditsys          = 186;
   shmsys            =  52;   processorBind     = 187;
   semsys            =  53;   processorInfo     = 188;
   ioctl             =  54;   pOnline           = 189;
   uadmin            =  55;   sigqueue          = 190;
   utssys            =  57;   clockGettime      = 191;
   fdsync            =  58;   clockSettime      = 192;
   execve            =  59;   clockGetres       = 193;
   umask             =  60;   timerCreate       = 194;
   chroot            =  61;   timerDelete       = 195;
   fcntl             =  62;   timerSettime      = 196;
   ulimit            =  63;   timerGettime      = 197;
   tasksys           =  70;   timerGetoverrun   = 198;
   acctctl           =  71;   nanosleep         = 199;
   exacctsys         =  72;   facl              = 200;
   reserved73        =  73;   door              = 201;
   reserved74        =  74;   setreuid          = 202;
   reserved75        =  75;   setregid          = 203;
   reserved76        =  76;   installUtrap      = 204;
   reserved77        =  77;   signotify         = 205;
   reserved78        =  78;   schedctl          = 206;
   rmdir             =  79;   pset              = 207;
   mkdir             =  80;   sparcUtrapInstall = 208;
   getdents          =  81;   resolvepath       = 209;
   sysfs             =  84;   signotifywait     = 210;
   getmsg            =  85;   lwpSigredirect    = 211;
   putmsg            =  86;   lwpAlarm          = 212;
   poll              =  87;   getdents64        = 213;
   lstat             =  88;   mmap64            = 214;
   symlink           =  89;   stat64            = 215;
   readlink          =  90;   lstat64           = 216;
   setgroups         =  91;   fstat64           = 217;
   getgroups         =  92;   statvfs64         = 218;
   fchmod            =  93;   fstatvfs64        = 219;
   fchown            =  94;   setrlimit64       = 220;
   sigprocmask       =  95;   getrlimit64       = 221;
   sigsuspend        =  96;   pread64           = 222;
   sigaltstack       =  97;   pwrite64          = 223;
   sigaction         =  98;   creat64           = 224;
   sigpending        =  99;   open64            = 225;
   context           = 100;   rpcsys            = 226;
   evsys             = 101;   soSocket          = 230;
   evtrapret         = 102;   soSocketpair      = 231;
   statvfs           = 103;   bind              = 232;
   fstatvfs          = 104;   listen            = 233;
   getloadavg        = 105;   accept            = 234;
   nfssys            = 106;   connect           = 235;
   waitsys           = 107;   shutdown          = 236;
   sigsendsys        = 108;   recv              = 237;
   hrtsys            = 109;   recvfrom          = 238;
   acancel           = 110;   recvmsg           = 239;
   async             = 111;   send              = 240;
   priocntlsys       = 112;   sendmsg           = 241;
   pathconf          = 113;   sendto            = 242;
   mincore           = 114;   getpeername       = 243;
   mmap              = 115;   getsockname       = 244;
   mprotect          = 116;   getsockopt        = 245;
   munmap            = 117;   setsockopt        = 246;
   fpathconf         = 118;   sockconfig        = 247;
   vfork             = 119;   ntpGettime        = 248;
   fchdir            = 120;   ntpAdjtime        = 249;
   readv             = 121;   lwpMutexUnlock    = 250;
   writev            = 122;   lwpMutexTrylock   = 251;
   xstat             = 123;   lwpMutexInit      = 252;
   lxstat            = 124;   cladm             = 253;
   fxstat            = 125;   lwpSigtimedwait   = 254;
   xmknod            = 126;   umount2           = 255;
   clocal            = 127;


CONST ncalls = 256; CONST namelen = 18;

TYPE Name = ARRAY namelen OF CHAR;

VAR name: ARRAY ncalls OF Name;

DESCRIPTION

Sys exports the UNIX system call numbers. The system call numbers are extracted from /usr/include/sys/syscall.h. System call numbers are given as first argument to SYSTEM.UNIXCALL. The array name contains the names of the system calls, e.g. name[4] = "write".

EXAMPLE

Implementation of the write(2) system call:
PROCEDURE Write(fd: SysTypes.File;
                buf: SysTypes.Address;
                cnt: SysTypes.Count) : SysTypes.Count;
   (* return value of    -1: I/O error
                        >=0: number of bytes written
   *)
   VAR
      d0, d1: INTEGER;
BEGIN
   IF SYSTEM.UNIXCALL(Sys.write, d0, d1, fd, buf, cnt) THEN
      RETURN d0
   ELSE
      SysErrors.Raise(d0, Sys.write, "");
      RETURN -1
   END;
END Write;

SEE ALSO

SysErrors
standardized event handling for system call failures
SysTypes
definition of some types needed for system calls

FILES

/usr/include/sys/syscall.h
system call numbers

BUGS

Not every system call described in chapter 2 of the UNIX manual is a unique system call, e.g. semsys realizes all semaphore operations.

Some of these system calls are not available on releases before Solaris 8.


Edited by: borchert, last change: 2000/11/16, revision: 1.3.2.3, converted to HTML: 2000/11/17

Oberon || Library || Module Index || Search Engine || Definition || Module