The system calls are implemented as a user toolset, tool number 3. These tools are called the same way regular system tools (such as QuickDraw) are called, except that you must JSL to $E10008 instead of to $E10000 (or to $E1000C instead of to $E10004 for the alternate entry point). The function numbers for the currently defined tools are as follows:
getpid * | $0903 | kill | $0A03 |
fork | $0B03 | swait | $0D03 |
ssignal | $0E03 | screate | $0F03 |
sdelete | $1003 | kvm_open | $1103 |
kvm_close | $1203 | kvm_getproc | $1303 |
kvm_nextproc | $1403 | kvm_setproc | $1503 |
signal | $1603 | wait | $1703 |
tcnewpgrp | $1803 | settpgrp | $1903 |
tctpgrp | $1A03 | sigsetmask | $1B03 |
sigblock | $1C03 | execve | $1D03 |
alarm | $1E03 | setdebug * | $1F03 |
setsystemvector * | $2003 | sigpause | $2103 |
dup | $2203 | dup2 | $2303 |
pipe | $2403 | getpgrp | $2503 |
ioctl | $2603 | stat | $2703 |
fstat | $2803 | lstat | $2903 |
getuid | $2A03 | getgid | $2B03 |
geteuid | $2C03 | getegid | $2D03 |
setuid | $2E03 | setgid | $2F03 |
procsend | $3003 | procreceive | $3103 |
procrecvclr | $3203 | procrecvtim | $3303 |
setpgrp | $3403 | times | $3503 |
pcreate | $3603 | psend | $3703 |
preceive | $3803 | pdelete | $3903 |
preset | $3A03 | pbind | $3B03 |
pgetport | $3C03 | pgetcount | $3D03 |
scount | $3E03 | fork2 | $3F03 |
getppid | $4003 | SetGNOQuitRec | $4103 |
alarm10 | $4203 |
The following system calls are new to GNO v2.0.6:
select | $4303 | InstallNetDriver | $4403 |
socket | $4503 | bind | $4603 |
connect | $4703 | listen | $4803 |
accept | $4903 | recvfrom | $4A03 |
sendto | $4B03 | recv | $4C03 |
send | $4D03 | getpeername | $4E03 |
getsockname | $4F03 | getsockopt | $5003 |
setsockopt | $5103 | shutdown | $5203 |
setreuid | $5303 | setregid | $5403 |
Parameters should be pushed onto the stack in the same order as defined by the C prototypes outlines in the synopsis section of the manual pages; that is, left-to-right. In addition to those parameters, all of the functions (except those denoted by a *) take an integer pointer parameter errno. This is a pointer to a word value which will contain the errno code returned by the function if an error occurs, and should be pushed onto the stack after all the other parameters. The calls do not clear this code to 0 if no error occurs; thus, you must check the return value of the function to see if an error occurred, and then check errno to get the actual error code.
Do not forget to also push space on the stack (before the parameters) for the call to store its return value.
These low-level system call interfaces are not to be used in general programming. It is assumed the programmer will use the libraries provided, or use this information to create a new library. The system call interface is subject to change without notice; any changes will, of course, be documented in future versions of GNO/ME.
Feedback