added implementation notes

This commit is contained in:
gdr 1997-02-28 05:42:27 +00:00
parent 596add410c
commit d6b3f6684d
6 changed files with 1027 additions and 0 deletions

90
NOTES/TO.DO Normal file
View File

@ -0,0 +1,90 @@
*******
* soon
*
* $Id: TO.DO,v 1.1 1997/02/28 05:42:26 gdr Exp $
*
*******
Use result of _setModeEmulation(3) in appropriate calls. These include
chmod -
creat - done
open - done
stat - unnecessary
fstat - unnecessary
lstat - unnecessary
check up on the type of nlink_t, used in stat(2)
Write a test that handles:
- negative process numbers
- process numbers exceeding INT_MAX and UINT_MAX
the easiest way to do this is to repeatedly exec a program that prints
it's process number. Keep doing so until either the number wraps or
the machine crashes.
libc/sys/exec.c:
buildCmd should single-quote strings containing whitespace.
If the string already has single quotes, then backspace them.
buildPath should only return files of type S16, EXEC, or EXE.
buildPath should use the mapPath facility.
These functions should operate closer to GS/OS when possible.
Also need to reduce stack requirements.
*******
* remove from / replace in Orcalib
*******
strerror orcalib/string.asm
perror orcalib/stdio.a
sys_errlist orcalib/stdio.a problem
sys_nerr orcalib/vars.a problem
*******
* defer
*******
libc/stdio/perror.c:
use BSDish implementation for perror(3) to avoid stdio.
libc/sys/syscall.c:
for unlink, if file is open, then register a call to unlink
(non-recursive) the file via atexit(3)
libc/sys/trap.asm:
Insert conchecks in trap functions to check to see if GNO
is active and at the right version level. If not, they
should abort.
libc/gen/environ.c:
Review routines. Force them to use GSString routines, reduce
stack usage (depend on dynamic allocation for parm blocks).
libc/gen/err.c:
Use syslogd if not on a tty.
libc/gen/tty.c:
review these routines
do intro man pages:
1 done
2 review DEFINITIONS section
3 done
4 done
5 done
6 done
7 done
8 done
various man pages:
add note under COMPATIBILITY as to whether the routines
are thread-safe. If they write any globals or static
variables, they are not.
Verify that the setdebug(2) macros in gno/gno.h are correct.
Add implementations for execle; the final
envp can't appear in the prototype, but it can be found since it is
the last argument after the first NULL pointer.

90
NOTES/devel/TO.DO Normal file
View File

@ -0,0 +1,90 @@
*******
* soon
*
* $Id: TO.DO,v 1.1 1997/02/28 05:42:26 gdr Exp $
*
*******
Use result of _setModeEmulation(3) in appropriate calls. These include
chmod -
creat - done
open - done
stat - unnecessary
fstat - unnecessary
lstat - unnecessary
check up on the type of nlink_t, used in stat(2)
Write a test that handles:
- negative process numbers
- process numbers exceeding INT_MAX and UINT_MAX
the easiest way to do this is to repeatedly exec a program that prints
it's process number. Keep doing so until either the number wraps or
the machine crashes.
libc/sys/exec.c:
buildCmd should single-quote strings containing whitespace.
If the string already has single quotes, then backspace them.
buildPath should only return files of type S16, EXEC, or EXE.
buildPath should use the mapPath facility.
These functions should operate closer to GS/OS when possible.
Also need to reduce stack requirements.
*******
* remove from / replace in Orcalib
*******
strerror orcalib/string.asm
perror orcalib/stdio.a
sys_errlist orcalib/stdio.a problem
sys_nerr orcalib/vars.a problem
*******
* defer
*******
libc/stdio/perror.c:
use BSDish implementation for perror(3) to avoid stdio.
libc/sys/syscall.c:
for unlink, if file is open, then register a call to unlink
(non-recursive) the file via atexit(3)
libc/sys/trap.asm:
Insert conchecks in trap functions to check to see if GNO
is active and at the right version level. If not, they
should abort.
libc/gen/environ.c:
Review routines. Force them to use GSString routines, reduce
stack usage (depend on dynamic allocation for parm blocks).
libc/gen/err.c:
Use syslogd if not on a tty.
libc/gen/tty.c:
review these routines
do intro man pages:
1 done
2 review DEFINITIONS section
3 done
4 done
5 done
6 done
7 done
8 done
various man pages:
add note under COMPATIBILITY as to whether the routines
are thread-safe. If they write any globals or static
variables, they are not.
Verify that the setdebug(2) macros in gno/gno.h are correct.
Add implementations for execle; the final
envp can't appear in the prototype, but it can be found since it is
the last argument after the first NULL pointer.

76
NOTES/deviations Normal file
View File

@ -0,0 +1,76 @@
$Id: deviations,v 1.1 1997/02/28 05:42:26 gdr Exp $
These are deviations from POSIX 1003.1:
======================================
Feature: full implementation
Header: (various)
Not all functions and system calls specified by POSIX 1003.1 are
implemented.
Feature: non-compliant limits/constants
Header: (various)
Value POSIX GNO Header File
-------------------------------------------------------------------
STDIN_FILENO 0 1 unistd.h
STDOUT_FILENO 1 2 unistd.h
STDERR_FILENO 2 3 unistd.h
_POSIX_LINK_MAX 8 1 limits.h
Feature: alarm(2)
Header: unistd.h
POSIX specifies that both the single argument and return type
should be unsigned int. GNO uses unsigned long for both.
Feature: fork(2)
Header: unistd.h
POSIX specifies an empty argument list, and both child and parent
process resume execution at the point where fork() returns but in
different address spaces. The GNO implementation takes a pointer
to a function at which the child process begins execution, and child
and parent share the address space.
Feature: getpgrp(2)
Header: unistd.h
POSIX specifies a pid_t return type. GNO implementation returns
an int.
These are deviations from the BSD implementations:
=================================================
Feature: POSIX compliance
Header: sys/unistd.h
BSD is POSIX2 compliant, GNO is not. (_POSIX2_VERSION is undefined)
Feature: vfork(2)
Header: unistd.h
See the notes on fork(2) in the section on POSIX deviations.
Feature: machine types
Header: <sys/types.h>, <sys/ansi.h>
BSD uses "long long" and "unsigned long long" for quad_t and u_quad_t,
respectively. GNO uses structures.
Type BSD GNO Header File
-------------------------------------------------------------------------------
quad_t long long (structure) sys/types.h
u_quad_t unsigned long long (structure) sys/types.h
pid_t long short sys/types.h
off_t quad_t long sys/types.h
dev_t unsigned long unsigned short sys/types.h
uid_t unsigned long unsigned short sys/types.h
gid_t unsigned long unsigned short sys/types.h
_BSD_PTRDIFF_T_ int long machine/ansi.h
_BSD_SIZE_T_ unsigned int unsigned long machine/ansi.h
_BSD_SSIZE_T_ int long machine/ansi.h
_BSD_OFF_T_ long long long machine/ansi.h
_BSD_PID_T_ long short machine/ansi.h
_BSD_WCHAR_T_ int long machine/ansi.h
_BSD_RUNE_T_ int long machine/ansi.h
Value BSD GNO Header File
-------------------------------------------------------------------------------
_BSD_CLK_TCK_ 128 60 machine/ansi.h
_BSD_CLOCKS_PER_SEC_ 128 60 machine/ansi.h
LINK_MAX 32767 1 sys/syslimits.h

95
NOTES/headers Normal file
View File

@ -0,0 +1,95 @@
$Id: headers,v 1.1 1997/02/28 05:42:26 gdr Exp $
A hash prefix indicates that it has passed the compile test. An "[Orca]"
indicates that the file is modified from an Orca/C header rather than
from either BSD or custom sources.
# curses.h changed hash type from u_int to u_long
# db.h various macros have changed.
# defaults.h add to user's copy, don't override it (Orca/C v2.1)
# dirent.h *** dirent structures have changed from gno v2.0.4
# err.h
# errno.h
# fcntl.h
# fnmatch.h *** upgraded to BSD 4.4 (incompatible downward)
# fts.h *** upgraded to BSD 4.4 (incompatible downward)
# glob.h
# gno/conf.h
# gno/gno.h
gno/kerntool.h INCOMPLETE CHANGES -- OBSOLETE?
# gno/kvm.h
# gno/proc.h
# gno/sim.h
# grp.h
# limits.h
# machine/ansi.h
# machine/endian.h
# machine/limits.h
# machine/param.h missing a lot of BSD stuff
# machine/signal.h includes stuff from gno/signal.h
# machine/types.h label_t changed from GNO v2.0.4
# netdb.h
# netinet/in.h
# netinet/in_systm.h
# netinet/ip.h
# netinet/tcp.h
# paths.h
protocols/talkd.h
# pwd.h
# regexp.h
# resolv.h
# rpc/types.h
# setjmp.h [Orca]
# sgtty.h
# signal.h
# stddef.h
# stdio.h [Orca] *** critical that __ORCAC_VERSION is correct
# stdlib.h
# string.h * check need for "const" in non-BSD, non-ORCA routines
# sys/cdefs.h
# sys/dirent.h *** dirent structures have changed from gno v2.0.4
# sys/errno.h
# sys/fcntl.h
# sys/filio.h
# sys/ioccom.h
# sys/ioctl.h
# sys/ioctl_compat.h
# sys/mount.h
# sys/param.h
# sys/ports.h GNO specific
# sys/select.h
# sys/signal.h
# sys/sockio.h
# sys/stat.h
# sys/syslimits.h
# sys/syslog.h
# sys/termios.h
# sys/time.h
# sys/times.h
# sys/tty.h
# sys/ttychars.h
# sys/ttycom.h
# sys/ttydefaults.h
# sys/ttydev.h
# sys/types.h quad_t defined but as struct
# sys/uio.h
# sys/unistd.h
# sys/wait.h
# syslog.h
# termcap.h
# termios.h
# time.h * last two fields of struct tm disabled for Orca compat
# ttyent.h
# types.h [Orca] Added GSString types
# unistd.h
# utime.h
# utmp.h very non-BSD
OBSOLETE:
getopt.h replaced by stdlib.h
sys/file.h This was really sys/fcntl.h.
sys/vfs.h Now sys/mount.h
types.h superceeded by one from Orca/C v2.1
tzfile.h no longer part of BSD

292
NOTES/notes.960227 Normal file
View File

@ -0,0 +1,292 @@
7 Jan 97
$Id: notes.960227,v 1.1 1997/02/28 05:42:27 gdr Exp $
Header File Changes
===================
Where the Orca headers no longer suffice, effort has been made to make use
of the BSD 4.4 headers with minimal modifications.
Some BSD headers, due to the filenames used, cannot be placed on ProDOS
filesystems. There are a few problems with this (in my perceived order
of priority):
- having headers on HFS volumes slows down compilations
- the usual lack of disk optimization/fixing avail for HFS
- there are GNO users that don't use HFS volumes
OTOH, we don't want in general to break ported code which uses source like
#include <net/if_arp.h>
Therefore, I have renamed the original source files to use ProDOS naming
conventions. In this example, the new file is <net/if.arp.h>. There
is *also* a file called <net/if_arp.h> which can be installed on an
HFS volume, but this contains little more than an #include <net/if.arp.h>.
This way, the headers which require an HFS volume can be _optionally_
installed by the GNO user.
For the sake of compile time efficiency, I've been changing lines in
the GNO system header files like
#include <sys/types.h>
to
#ifndef _SYS_TYPES_H_
#include <sys/types.h>
#endif
This isn't complete, but it's getting there. I didn't touch any Orca/C
headers that used nested #includes but otherwise needed no modifications.
13/orcacdefs/defaults.h:
I'm trying to push through some "standard" arch and OS defines,
since they really help to be defined in many applications ports.
The contents of defaults.h should be copied into your
13/orcacdefs/defaults.h file (or copied to that directory if you
don't already have such a file).
The macros defined in that file are
__appleiigs__
__GNO__
__ORCAC_VERSION
_ANSI_SOURCE (if __KeepNamespacePure__ is defined)
__KeepNamespacePure__ (if _ANSI_SOURCE is defined)
Currently nothing depends on the _value_ of "__GNO__", just
that it is defined. The system header files which would have
bad side effects if __GNO__ is not defined will bitch if this
is the case. These header files are ones where it was desirable
to leave the BSD version in for reference.
By putting __ORCAC_VERSION in defaults.h, we know that
- it isn't defined for earlier Orca/C versions
- it can be incremented
Orca headers use __KeepNamespacePure__ and BSD headers use
_ANSI_SOURCE. We try to make them identical.
arpa/nameser.h:
The non-standard field 'pr' (primary server required) in
typedef struct {} HEADER has been removed, and it's storage
moved to the 'unused' field. The size of the structure and
the offsets of the remaining members haven't changed. This
was a BSD change, not mine.
The following macros have been added. The the header for
their meanings:
__BIND
HFIXEDSZ
INT32SZ
INT64SZ
INADDRSZ
arpa/telnet.h:
This file appears to have lots of changes, but I think
that, given a recompilation of the relevent sources, they
should be benign. If not, then the descriptions below
should give sufficient info to #ifdef out the problem parts.
There are new TELOPT_* macros, values 35-39, inclusive.
This affects NTELOPTS, TELOPT_LAST, TELOPT_OK, and the
'telopts' character array.
The following arrays are now terminated by a NULL pointer
telopts
telcmnds
slc_names
The following macros are also new:
TELQUAL_INFO
TELQUAL_REPLY
TELQUAL_NAME
LFLOW_* (4 of them)
MODE_SOFT_TAB
MODE_LIT_ECHO
MODE_MASK (changed due to two previous macros)
SLC_NAME_OK
SLC_NAME
fcntl.h:
used to contain #defines for L_SET, L_INCR, and L_XTND. These
were renamed by POSIX 1003.1 to SEEK_SET, SEEK_CUR, and SEEK_END,
respectively. If the old macros are desired, they can be obtained
by #including <unistd.h>.
machine/ansi.h:
wchar_t (and therefore rune_t) have been changed from
"unsigned short" to "int" to match the is*() definitions
in <ctype.h>. This shouldn't be a problem since there aren't
yet any library routines that use these types.
machine/endian.h
Note that under BSD 4.4, both BIG_ENDIAN and LITTLE_ENDIAN (and,
for that matter, PDP_ENDIAN) are defined. The way to test
endianness is not
#ifdef LITTLE_ENDIAN
but rather
#if (BYTE_ORDER == LITTLE_ENDIAN)
I doubt that the kernel uses this macro ...
netdb.h:
decl of inet_aton() removed; it should come from arpa/inet.h
decl of struct rpcent removed; it should come from rpc/rpc.h
net/*:
It appears that this directory is very much non-BSD. I haven't
touched it at all -- something in me says, "Danger, Will!".
After things settle down, it might be worth it to make it
closer to BSD, at least in the file names. However, I'm not
going to worry about it right now.
For your perusal (if required) I've included the directory
net.BSD which is the BSD 4.4 version of the net/* files.
This subdirectory is not intended to be part of the GNO
distribution.
netinet/in.h:
If the functions in_makeaddr() and in_lnaof() are used in the
kernel, could you prototype them and reenable them where they
appear in this file? If not, please delete them and the
enclosing #ifdef.
netinet/ip.h:
BSD 4.4 uses a different value for IPTOS_PREC_ROUTINE than was
in your original header. I've got both in (one #ifdef'd), but
could you delete the non-BSD one if it doesn't impact the
kernel or GS/TCP?
pwd.h:
struct passwd has changed in BSD 4.4. getpwent and related
routines have been updated, so any program that is using those
routines to access the /etc/passwd file will be fine. The
file itself has not changed.
resolv.h:
Name of "struct state" has changed to "__res_state" (I suspect
this was done to keep from polluting the namespace). The
"options" field has changed from long to u_long, and the
structure has been lengthened.
The new 'struct __res_state' has, however, been #ifdef'd out
and you have your old 'struct state'. Macro values haven't
changed. The functions you were using weren't prototyped, so
I had to assume the BSD prototypes are correct.
If you are willing to change to use 'struct __res_state', then
check out the #define of '__RES' near the top of <resolv.h>.
If you change then '__RES' should become an unconditional #define.
stdio.h:
As of Orca/C v2.1.1b2, the definition of FILE has changed.
The _pbk field has changed from
int _pbk;
to
int _pbk[2];
This is controlled via __ORCAC_VERSION defined in defaults.h
sys/ioccom.h:
This header file now specifies that the high 3 (vice 2) bits
of the uppper word are used to encode in/out status of the
parameter; is this compatible with the kernel? (Grep for
"IOCPARM_MASK" and look at the comments immediately prior to
it.)
### sys/ioctl.h:
I've included a "GNO-specific" section -- are these GNO-specific
macros actually used anywhere?
There are still some conflicts in this file with <sys/termios.h>,
however they're not new -- they were in the headers you sent me
as well. One of these is the TOSTOP and associated macros.
sys/socket.h:
It appears that the structures you used for "msghdr" and "sockaddr"
have been deemed out-of-date in 4.4BSD; they have been renamed
"omsghdr" and "osockaddr", respectively. I don't know how you
want to handle this; if necessary I guess one could use #ifdefs
and #define sockaddr as osockaddr, et al. I don't think the
new structs should be outright deleted from the header.
The field sequence, macro values, and so forth match your previous
implementation.
So that your routines are still getting the correct prototypes,
I've used the macros __SOCKADDR and __MSGHDR in the header file
prototypes; they're #defined right above the decls.
sys/termios.h:
The names of two of the fields in struct termios has changed:
ispeed --> c_ispeed
ospeed --> c_ospeed
See also the comments for <sys/ioctl.h>
sys/unistd.h:
The values of some of the _PC* macros have changed. I don't
think this should matter since the functions pathconf(3) and
fpathconf(3) haven't yet been implemented.
The following headers I don't believe are part of GNO, although they
were included with the headers you sent. Please correct me if I'm
wrong:
cons.h
console.h
debug.h
sprite.h
sys/m16.ioctl -- perhaps part of GNO, but not a header
The following Orca headers were modified, but I don't believe that the
mods are required for GNO users. (Are these fixes that should be
forwarded to Mike W?) [asked 12 Jan]
appleshare.h
appletalk.h <-- out of date as well
control.h
locator.h
misctool.h
The following headers appear to be not only non-GNO, but obsolete:
newshell.h
shell2.h
Library Changes:
===============
There were lots of additions.
libc/sys/trap.asm [formerly l2.asm]
execve renamed to _execve
getpgrp renamed to _getpgrp
kvm_getproc, kvm_nextproc, and kvm_setproc provided as alternate
entry points into kvmgetproc, kvmnextproc, and kvmsetproc
(respectively) since they were documented entry points in GNO v2.0.4
setpgid is provided as an alternate entry point to setpgrp.
The two are identical (under BSD), but the latter is considered
obsolete.
vfork added as alternate entry point to fork.
libc/sys/syscall.c
The mkdir implementation could easily accept a mode parameter
and thus become POSIX compliant. Should the mode be added?
Manual Page Considerations:
==========================
undocumented(2):
This man page lists the undocumented kernel calls. I don't
know if all of these are supposed to _remain_ undocumented ...
kill(2):
Please verify that description of operation with negative process
numbers matches implementation. If there is no match, and
the implementation cannot or will not be changed, please
delete these paragraphs and change the STANDARDS section
to read "The kill function is not POSIX 1003.1 conformant."
semaphore(2):
I'm guessing at the behavior of scount; please verify it.
intro(2):
The "DEFINITIONS" section of this man page is as yet verbatim
from the BSD man page; I haven't had a chance to review it.
If you have any comments, speak up ...

384
NOTES/status.lib Normal file
View File

@ -0,0 +1,384 @@
$Id: status.lib,v 1.1 1997/02/28 05:42:27 gdr Exp $
Key for Code Status column:
R == reviewed
C == compiled
T == tested
The man page column info specifies in which chapter the manual page
resides. If it is blank, it is not yet written. "2U" indicates
undocumented system calls in undocumented.2. If these should be documented,
Derek, please write a man page for them or tell me what should be in there.
function file code man header
status page
======================================================================
GNO-specific
------------
GIchange libc/gno/gsstring.c T 3 gno/gno.h
GIfree libc/gno/gsstring.c T 3 gno/gno.h
GIinit libc/gno/gsstring.c T 3 gno/gno.h
GOchange libc/gno/gsstring.c T 3 gno/gno.h
GOfree libc/gno/gsstring.c T 3 gno/gno.h
GOinit libc/gno/gsstring.c T 3 gno/gno.h
InstallNetDriver libc/sys/trap.asm C 2U gno/gno.h
SetGNOQuitRec libc/sys/trap.asm C 2U gno/gno.h
WriteGString libc/gno/gnomisc.c
__C2GS libc/gno/gsstring.c C 3 gno/gno.h
__C2GSMALLOC libc/gno/gsstring.c T 3 gno/gno.h
__GS2C libc/gno/gsstring.c C 3 gno/gno.h
__GS2CMALLOC libc/gno/gsstring.c C 3 gno/gno.h
__prognameGS libc/gno/gnomisc.c T 3 gno/gno.h
_beginStackCheck libc/gno/stack.asm T 3 gno/gno.h
_endStackCheck libc/gno/stack.asm T 3 gno/gno.h
_errnoText [var] libc/stdio/perror.c T na na
_getModeEmulation libc/sys/map.c T 3 gno/gno.h
_mapErr libc/gno/map.c T 3 gno/gno.h
_mapMode2GS libc/gno/map.c T 3 gno/gno.h
_mapMode2Unix libc/gno/map.c C 3 gno/gno.h
_mapPath libc/gno/map.c C 3 gno/gno.h
_mapPathGS libc/gno/map.c C 3 gno/gno.h
_setFdTranslation libc/sys/syscall.c C static na
_setModeEmulation libc/sys/map.c C 3 gno/gno.h
_setPathMapping libc/gno/map.c C 3 gno/gno.h
buildCmd libc/sys/exec.c C 3 gno/gno.h
buildEnv libc/sys/exec.c C 3 gno/gno.h
buildPath libc/sys/exec.c C 3 gno/gno.h
environInit libc/gen/environ.c T 3 stdlib.h
environPop libc/gen/environ.c T 3 stdlib.h
environPush libc/gen/environ.c T 3 stdlib.h
isRootPath libc/sys/exec.c C 3 gno/gno.h
kernStatus (inline) T 2 gno/gno.h
kernVersion (inline) T 2 gno/gno.h
needsgno libc/gno/gnomisc.c T 3 gno/gno.h
old_syslog libc/gen/oldlog.c C sys/syslog.h
rexit libc/sys/syscall.c C 3 stdlib.h
setdebug libc/sys/trap.asm T 2 gno/gno.h
setsystemvector libc/sys/trap.asm C 2U gno/gno.h
settpgrp libc/sys/trap.asm C 2 gno/gno.h
tcnewpgrp libc/sys/trap.asm C 2 gno/gno.h
tctpgrp libc/sys/trap.asm C 2 gno/gno.h
~GNO_COMMAND libc/gno/gnocmd.asm C 3 na
~GNO_FREEARG libc/gno/parsearg.asm C 3 na
~GNO_PARSEARG libc/gno/parsearg.asm C 3 na
BSD-ish
-------
__crypt_f libc/gen/crypta.asm C na na
__crypt_rotate libc/gen/crypta.asm C na na
__crypt_transpose libc/gen/crypta.asm C na na
__mb_cur_max [var] libc/locale/table.c C stdlib.h
_execve libc/sys/trap.asm C 2 unistd.h
_getpgrp libc/sys/trap.asm C 2 unistd.h
_longjmp libc/gen/setjmp.asm C 3 setjmp.h
_setjmp libc/gen/setjmp.asm C 3 setjmp.h
accept libc/sys/trap.asm C 2 sys/socket.h
access libc/sys/syscall.c C 2 unistd.h
alarm libc/sys/trap.asm C 2 unistd.h
alarm10 libc/sys/trap.asm C 2 unistd.h
alphasort libc/gen/scandir.c T 3 dirent.h
alphacasesort libc/gen/scandir.c T 3 dirent.h
basename libc/gen/basename.c T 3 unistd.h
bcopy libc/gen/bmem.c C 3 string.h
bind libc/sys/trap.asm C 2 sys/socket.h
bzero libc/gen/bmem.c C 3 string.h
chdir libc/sys/syscall.c C 3 unistd.h
close libc/sys/syscall.c C 2 unistd.h
closedir libc/gen/dirent.c T 3 dirent.h
closelog libc/gen/syslog.asm C 3 sys/syslog.h
connect libc/sys/trap.asm C 2 sys/socket.h
creat libc/sys/syscall.c T 2 sys/fcntl.h
crypt libc/gen/crypt.c C 3 unistd.h
dirfd (macro) T 3 dirent.h
dirname libc/gen/basename.c T 3 unistd.h
dup libc/sys/trap.asm C 2 unistd.h
dup2 libc/sys/trap.asm C 2 unistd.h
encrypt libc/gen/crypt.c C 3 unistd.h
endgrent libc/gen/getgrent.c T 3 grp.h
endpwent libc/gen/getpwent.c T 3 pwd.h
endttyent libc/gen/getttyent.c C 3 ttyent.h
err libc/gen/err.c T 3 err.h
errx libc/gen/err.c T 3 err.h
exec libc/sys/exec.c C 3 unistd.h
execl libc/sys/exec.c T 3 unistd.h
execle 3 unistd.h
execlp libc/sys/exec.c T 3 unistd.h
execv libc/sys/exec.c T 3 unistd.h
execve libc/sys/exec.c T 3 unistd.h
execvp libc/sys/exec.c T 3 unistd.h
fchdir libc/sys/syscall.c C 3 unistd.hf
fnmatch libc/gen/fnmatch.c T 3 fnmatch.h
fork libc/sys/trap.asm C 2 unistd.h
fork2 libc/sys/trap.asm C 2 unistd.h
fstat libc/sys/trap.asm C 2 sys/stat.h
fstatfs libc/sys/syscall.c C 2 sys/mount.h
fsync libc/sys/syscall.c C 2 unistd.h
ftruncate libc/sys/syscall.c C 2 unistd.h
getcwd libc/gen/getcwd.c T 3 unistd.h
getdtablesize libc/sys/syscall.c C 2 unistd.h
getegid libc/sys/trap.asm C 2 unistd.h
getenv libc/gen/environ.c T 3 stdlib.h
geteuid libc/sys/trap.asm C 2 unistd.h
getgid libc/sys/trap.asm C 2 unistd.h
getgrent libc/gen/getgrent.c T 3 grp.h
getgrgid libc/gen/getgrent.c T 3 grp.h
getgrnam libc/gen/getgrent.c T 3 grp.h
gethostname libc/gen/hostname.c C 3 unistd.h
getopt libc/stdlib/getopt.c C 3 stdlib.h
getopt_restart libc/stdlib/getopt.c C 3 stdlib.h
getpass libc/gen/getpass.c C 3 unistd.h
getpeername libc/sys/trap.asm C 2 sys/socket.h
getpgrp libc/sys/syscall.c C 2 unistd.h
getpid libc/sys/trap.asm T 2 unistd.h
getppid libc/sys/trap.asm C 2 unistd.h
getpwent libc/gen/getpwent.c T 3 pwd.h
getpwnam libc/gen/getpwent.c T 3 pwd.h
getpwuid libc/gen/getpwent.c T 3 pwd.h
getsockname libc/sys/trap.asm C 2 sys/socket.h
getsockopt 2 sys/socket.h
getsubopt libc/stdlib/getsubopt.c C 3 stdlib.h
gettimeofday libc/sys/syscall.c C 2 sys/time.h
getttyent libc/gen/getttyent.c C 3 ttyent.h
getttynam libc/gen/getttyent.c C 3 ttyent.h
getuid libc/sys/trap.asm C 2 unistd.h
getwd libc/gen/getcwd.c T 3 unistd.h
group_from_gid libc/gen/pwcache.c C 3 na
gtty libc/gen/compat.c C 3 sgtty.h
index libc/string/str.c C 3 string.h
ioctl libc/sys/trap.asm C 2 sys/ioctl.h
isatty libc/gen/tty.c C 3 unistd.h
kill libc/sys/trap.asm C 2 signal.h
kvm_close libc/sys/trap.asm C 2U gno/gno.h
kvm_getproc libc/sys/trap.asm C 2U gno/gno.h
kvm_nextproc libc/sys/trap.asm C 2U gno/gno.h
kvm_open libc/sys/trap.asm C 2U gno/gno.h
kvm_setproc libc/sys/trap.asm C 2U gno/gno.h
kvmgetproc libc/sys/trap.asm C 2U gno/gno.h
kvmnextproc libc/sys/trap.asm C 2U gno/gno.h
kvmsetproc libc/sys/trap.asm C 2U gno/gno.h
listen libc/sys/trap.asm C 2 sys/socket.h
longjmp libc/gen/setjmp.asm C 3 setjmp.h
lseek libc/sys/syscall.c C 2 unistd.h
lstat libc/sys/trap.asm C 2 sys/stat.h
mkdir libc/sys/syscall.c C 2 sys/stat.h
mkstemp libc/stdio/mktemp.c C 3 unistd.h
mktemp libc/stdio/mktemp.c C 3 unistd.h
open libc/sys/syscall.c C 2 sys/fcntl.h
opendir libc/gen/dirent.c T 3 dirent.h
openlog libc/gen/syslog.asm C 3 sys/syslog.h
optarg [var] libc/stdlib/getopt.c C 3 stdlib.h
opterr [var] libc/stdlib/getopt.c C 3 stdlib.h
optind [var] libc/stdlib/getopt.c C 3 stdlib.h
optopt [var] libc/stdlib/getopt.c C 3 stdlib.h
optreset [var] libc/stdlib/getopt.c C 3 stdlib.h
pause libc/gen/sleep.c T 3 unistd.h
pbind libc/sys/trap.asm C 2 sys/ports.h
pclose libc/gen/popen.c C 3 stdio.h
pcreate libc/sys/trap.asm C 2 sys/ports.h
pdelete libc/sys/trap.asm C 2 sys/ports.h
perror libc/stdio/perror.c T 3 stdio.h
pgetcount libc/sys/trap.asm C 2 sys/ports.h
pgetport libc/sys/trap.asm C 2 sys/ports.h
pipe libc/sys/trap.asm C 2 unistd.h
popen libc/gen/popen.c C 3 stdio.h
preceive libc/sys/trap.asm C 2 sys/ports.h
preset libc/sys/trap.asm C 2 sys/ports.h
procreceive libc/sys/trap.asm C 2 gno/gno.h
procrecvclr libc/sys/trap.asm C 2 gno/gno.h
procrecvtim libc/sys/trap.asm C 2 gno/gno.h
procsend libc/sys/trap.asm C 2 gno/gno.h
psend libc/sys/trap.asm C 2 sys/ports.h
putenv libc/gen/environ.c T 3 stdlib.h
raise libc/sys/syscall.c C 3 signal.h
read libc/sys/syscall.c C 2 unistd.h
readdir libc/gen/dirent.c T 3 dirent.h
recv libc/sys/trap.asm C 2 sys/socket.h
recvfrom libc/sys/trap.asm C 2 sys/socket.h
recvmsg ( missing from kernel ) 2 sys/socket.h
rewinddir libc/gen/dirent.c T 3 dirent.h
rindex libc/string/str.c C 3 string.h
scandir libc/gen/scandir.c T 3 dirent.h
scount libc/sys/trap.asm C 2 gno/gno.h
screate libc/sys/trap.asm C 2 gno/gno.h
sdelete libc/sys/trap.asm C 2 gno/gno.h
seekdir libc/gen/dirent.c T 3 dirent.h
select libc/sys/trap.asm C 2 unistd.h
send libc/sys/trap.asm C 2 sys/socket.h
sendmsg ( missing from kernel ) 2 sys/socket.h
sendto libc/sys/trap.asm C 2 sys/socket.h
setegid libc/sys/trap.asm C 2 unistd.h
setenv libc/gen/environ.c T 3 stdlib.h
seteuid libc/sys/trap.asm C 2 unistd.h
setgid libc/sys/trap.asm C 2 unistd.h
setgrent libc/gen/getgrent.c T 3 grp.h
setgroupent libc/gen/getgrent.c T 3 grp.h
sethostname libc/gen/hostname.c C 3 unistd.h
setjmp libc/gen/setjmp.asm C 3 setjmp.h
setkey libc/gen/crypt.c C 3 unistd.h
setlogmask libc/gen/syslog.asm C 3 sys/syslog.h
setpassent libc/gen/getpwent.c 3 pwd.h
setpgid libc/sys/trap.asm C 2 unistd.h
setpgrp libc/sys/trap.asm C 2 unistd.h
setpwent libc/gen/getpwent.c T 3 pwd.h
setregid libc/sys/trap.asm C 2 unistd.h
setreuid libc/sys/trap.asm C 2 unistd.h
setrgid libc/sys/trap.asm C 2 unistd.h
setruid libc/sys/trap.asm C 2 unistd.h
setsockopt libc/sys/trap.asm C 2 sys/socket.h
settimeofday 2 sys/time.h
setttyent libc/gen/getttyent.c C 3 ttyent.h
setuid libc/sys/trap.asm C 2 unistd.h
shutdown libc/sys/trap.asm C 2 sys/socket.h
sigblock libc/sys/trap.asm C 2 signal.h
siglongjmp 3 setjmp.h
sigmask (macro) C 2 sys/signal.h
signal libc/sys/trap.asm C 2 sys/signal.h
sigpause libc/sys/trap.asm C 2 signal.h
sigsetjmp 3 setjmp.h
sigsetmask libc/sys/trap.asm C 2 signal.h
sleep libc/gen/sleep.c T 3 unistd.h
socket libc/sys/trap.asm C 2 sys/socket.h
ssignal libc/sys/trap.asm C 2 gno/gno.h
stat libc/sys/trap.asm C 2 sys/stat.h
statfs libc/sys/syscall.c C 2 sys/mount.h
strcasecmp libc/str/case.c T 3 string.h
strdup libc/string/str.c C 3 string.h
strerror libc/stdio/perror.c T 3 stdio.h
stricmp libc/str/case.c C 3 string.h
strincmp libc/str/case.c C 3 string.h
strncasecmp libc/str/case.c C 3 string.h
strsep libc/string/str.c C 3 string.h
stty libc/gen/compat.c C 3 sgtty.h
suboptarg [var] libc/stdlib/getsubopt.c C 3 stdlib.h
swait libc/sys/trap.asm C 2 gno/gno.h
sys_errlist @@ [var] libc/stdio/perror.c T 3 stdio.h
sys_nerr @@ [var] libc/stdio/perror.c T 3 stdio.h
syslog libc/gen/syslog.asm C 3 sys/syslog.h
telldir libc/gen/dirent.c T 3 dirent.h
tempnam libc/stdio/tempnam.c C 3 stdio.h
times libc/sys/trap.asm C 2 sys/times.h
tmpfile orcalib/stdio.asm T 3 stdio.h
tmpnam orcalib/stdio.asm T 3 stdio.h
truncate libc/sys/syscall.c C 2 unistd.h
ttyname libc/gen/tty.c C 3 unistd.h
ttyslot libc/gen/tty.c C 3 unistd.h
umask libc/sys/syscall.c C 2 sys/stat.h
unlink libc/sys/syscall.c T 2 unistd.h
unsetenv libc/gen/environ.c T 3 stdlib.h
user_from_uid libc/gen/pwcache.c C 3 na
utime libc/gen/utime.c T 3 sys/time.h
utimes libc/gen/utime.c T 2 utime.h
verr libc/gen/err.c T 3 err.h
verrx libc/gen/err.c T 3 err.h
vfork libc/sys/trap.asm C 2 unistd.h
vsyslog libc/gen/syslog.asm C 3 sys/syslog.h
vwarn libc/gen/err.c T 3 err.h
vwarnx libc/gen/err.c T 3 err.h
wait libc/sys/trap.asm C 2 sys/wait.h
wait3 ( missing from kernel ) 2 sys/wait.h
wait4 ( missing from kernel ) 2 sys/wait.h
waitpid libc/sys/syscall.c C 2 sys/wait.h
warn libc/gen/err.c T 3 err.h
warnx libc/gen/err.c T 3 err.h
write libc/sys/syscall.c C 2 unistd.h
login libutil/login.c C libutil.h
login_tty libutil/logintty.c C libutil.h
@@ -- The sys_errlist and sys_nerr variables are currently renamed
to _gno_sys_errlist and _gno_sys_nerr until problems with OrcaLib
can be resolved. _Don't_ access any of these four variables
directly; go through strerror().
Files Currently Compiling:
-------------------------
DATA OPTIMIZE DEBUG MEMORY SEGMENT TESTING NAME
BANK MODEL COMPLETE
==============================================================
0 0 0 Y Y libc/gen/basename.c
0 0 0 Y N libc/gen/bmem.c
0 0 0 Y N libc/gen/compat.c
0 0 0 N N libc/gen/crypt.c
na na N N libc/gen/crypta.asm
0 0 0 Y Y libc/gen/dirent.c
8 0 0 Y Y libc/gen/err.c
0 0 0 Y Y libc/gen/fnmatch.c
0 0 0 Y Y libc/gen/getcwd.c
0 0 0 Y Y libc/gen/getgrent.c
0 0 0 Y N libc/gen/getpass.c
0 0 0 Y Y libc/gen/getpwent.c
0 0 0 Y N libc/gen/getttyent.c
0 0 0 Y N libc/gen/hostname.c
0 0 0 Y N libc/gen/oldlog.c
0 0 0 Y N libc/gen/popen.c
0 0 0 Y N libc/gen/pwcache.c
0 0 0 Y Y libc/gen/scandir.c
na na N N libc/gen/setjmp.asm
0 0 0 Y Y libc/gen/sleep.c
na na Y N libc/gen/syslog.asm
0 0 0 Y N libc/gen/tty.c
0 0 0 Y Y libc/gen/utime.c
na na N N libc/gno/gnocmd.asm
0* 0 0 (1) Y Y libc/gno/gnomisc.c
0 (79) 0 0 (1) Y Y libc/gno/gsstring.c
0 0 (25) 0 (1) Y N libc/gno/map.c
na na N N libc/gno/parsearg.asm
na na Y Y libc/gno/stack.asm
0 0 0 Y N libc/locale/table.c [stub]
0 0 0 Y N libc/stdio/mktemp.c
1 0 0 0 Y Y libc/stdio/perror.c
0 0 0 Y N libc/stdio/tempnam.c
1 0 0 0 Y Y libc/stdlib/environ.c
0 0 0 Y N libc/stdlib/getopt.c
0 0 0 Y N libc/stdlib/getsubopt.c
0 0 0 Y N libc/string/case.c
0 0 0 Y N libc/string/str.c
0+8 0 0 Y libc/sys/exec.c
0+8 0 0 Y libc/sys/syscall.c
na na Y N libc/sys/trap.asm
0 0 0 Y N libutil/login.c
0 0 0 Y N libutil/logintty.c
NOTES: () tested at a previous level
NEED TO WRITE OR DUPLICATE MAN PAGES FOR
----------------------------------------
login libc(3)
login_tty
regexp libc(3)
termcap libc(3)
queue 3
tty 4
grp 5
passwd 5
termcap 5
environ 7
ms 7
man 7
cron 8
runover 8 (obsolete?)
dialup 8
PUT IN NEXT RELEASE
-------------------
fts_children (libc/gen/fts.c) 3
fts_close (libc/gen/fts.c) 3
fts_open (libc/gen/fts.c) 3
fts_read (libc/gen/fts.c) 3
fts_set (libc/gen/fts.c) 3
chmod (libc/sys/syscall.c) 2
fchmod (libc/sys/syscall.c)
fcntl (sys/fcntl.h)
fdopen
sys_siglist [var]