add directory study
This commit is contained in:
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cat
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cat
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/chown
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/chown
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cp
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cp
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cpdir
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/cpdir
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/echo
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/echo
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/getlf
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/getlf
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/login
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/login
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/mkdir
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/mkdir
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/mv
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/mv
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/pwd
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/pwd
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/rm
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/rm
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/rmdir
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/rmdir
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/sh.gz
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/sh.gz
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/su
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/su
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/sync
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/bin/sync
Normal file
Binary file not shown.
13
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/group
Normal file
13
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/group
Normal file
@@ -0,0 +1,13 @@
|
||||
root::0:root
|
||||
other::1:
|
||||
bin::2:root,bin,daemon
|
||||
sys::3:root,bin,sys,adm
|
||||
adm::4:root,adm,daemon
|
||||
uucp::5:uucp
|
||||
mail::7:root
|
||||
daemon::12:root,daemon
|
||||
cron::16:
|
||||
lp::18:lp
|
||||
mem::20:
|
||||
sysadmin::23:sysadmin
|
||||
group::50:
|
||||
5
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/message
Normal file
5
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/message
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
If your screen goes blank periodically, hit the F3 key.
|
||||
|
||||
Welcome to MINIX.
|
||||
|
||||
41
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/mkdev
Normal file
41
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/mkdev
Normal file
@@ -0,0 +1,41 @@
|
||||
# Make the special files. Call:
|
||||
# /etc/mkdev ram_size hd1_size hd2_size hd3_size hd4_size
|
||||
# If the sizes are omitted, 0 is used.
|
||||
|
||||
case $# in
|
||||
5) A=$1; B=$2; C=$3 D=$4; E=$5 ;;
|
||||
*) A=0; B=0; C=0; D=0; E=0;
|
||||
echo RAM disk and hard disk sizes are being set to 0 ;;
|
||||
esac
|
||||
|
||||
mknod ram b 1 0 $A
|
||||
mknod mem c 1 1
|
||||
mknod kmem c 1 2
|
||||
mknod null c 1 3
|
||||
mknod port c 1 4
|
||||
mknod fd0 b 2 0 0
|
||||
mknod fd1 b 2 1 0
|
||||
mknod pc0 b 2 4 360
|
||||
mknod pc1 b 2 5 360
|
||||
mknod at0 b 2 8 1200
|
||||
mknod at1 b 2 9 1200
|
||||
mknod ps0 b 2 16 720
|
||||
mknod ps1 b 2 17 720
|
||||
mknod pat0 b 2 20 360
|
||||
mknod pat1 b 2 21 360
|
||||
mknod PS0 b 2 28 1440
|
||||
mknod PS1 b 2 29 1440
|
||||
mknod hd0 b 3 0 0
|
||||
mknod hd1 b 3 1 $B
|
||||
mknod hd2 b 3 2 $C
|
||||
mknod hd3 b 3 3 $D
|
||||
mknod hd4 b 3 4 $E
|
||||
mknod console c 4 0
|
||||
mknod tty0 c 4 0
|
||||
mknod tty1 c 4 1
|
||||
mknod tty2 c 4 2
|
||||
mknod tty c 5 0
|
||||
mknod lp c 6 0
|
||||
chmod 600 hd?
|
||||
chmod 640 mem kmem
|
||||
chmod 222 lp
|
||||
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/mount
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/mount
Normal file
Binary file not shown.
4
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/passwd
Normal file
4
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/passwd
Normal file
@@ -0,0 +1,4 @@
|
||||
root:ok9WLe10V{vdt:0:0::/:
|
||||
daemon:*:1:1::/etc:
|
||||
bin::2:2::/bin:
|
||||
ast:Oky||V|yoZ7vO:8:3::/usr/ast:
|
||||
23
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/rc
Normal file
23
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/rc
Normal file
@@ -0,0 +1,23 @@
|
||||
# This file performs various system initializations.
|
||||
|
||||
# Initialize files.
|
||||
>/etc/mtab # create file to log mounts
|
||||
>/etc/utmp # /etc/utmp keeps track of logins
|
||||
|
||||
# Mount the floppy disk.
|
||||
/bin/getlf "Please insert /usr diskette in drive 0. Then hit ENTER."
|
||||
/etc/mount /dev/fd0 /usr # mount the floppy disk
|
||||
|
||||
# Try to read the hardware real-time clock, if there is one, to set the date
|
||||
/usr/bin/date `/usr/bin/readclock` </dev/tty0
|
||||
|
||||
# Initialization (cannot be done until /usr is mounted).
|
||||
>/usr/adm/wtmp # accounting information
|
||||
/usr/bin/printroot >>/etc/mtab # /etc/mtab keeps track of mounts
|
||||
|
||||
# Initialize the first RS232 line to 1200 baud.
|
||||
/usr/bin/stty 1200 </dev/tty1
|
||||
|
||||
#Display the message of the day and start update.
|
||||
cat /etc/message
|
||||
/etc/update &
|
||||
37
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_move
Normal file
37
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_move
Normal file
@@ -0,0 +1,37 @@
|
||||
# Shell script to set up usr when no RAM disk is being used.
|
||||
cd /usr
|
||||
|
||||
if test -d bin; then : ; else echo Cannot find /usr/bin; exit 1; fi
|
||||
if test -d lib; then : ; else echo Cannot find /usr/lib; exit 1; fi
|
||||
if test -d src; then : ; else echo Cannot find /usr/src; exit 1; fi
|
||||
if test -d tmp; then : ; else echo Cannot find /usr/tmp; exit 1; fi
|
||||
if test -d include; then : ; else echo Cannot find /usr/include; exit 1; fi
|
||||
|
||||
mkdir dev etc usr usr/tmp 2>/dev/null
|
||||
|
||||
cd /etc
|
||||
cp * /usr/etc
|
||||
|
||||
cd /usr/dev
|
||||
/etc/mkdev
|
||||
echo "You may wish to rm /usr/dev/ram and /usr/dev/hd* and remake them with sizes."
|
||||
echo "It is not required however. Installing sizes is only affects a few"
|
||||
echo "programs that sequentially read entire partitions, such as 'readall'"
|
||||
|
||||
cd /usr
|
||||
mv lib usr/lib
|
||||
mv src usr/src
|
||||
mv adm usr/adm
|
||||
mv ast usr/ast
|
||||
mv doc usr/doc
|
||||
mv man usr/man
|
||||
mv spool usr/spool
|
||||
mv include usr/include
|
||||
mv bin usr/bin
|
||||
mkdir bin
|
||||
cd /bin
|
||||
cp * /usr/bin
|
||||
PATH=$PATH:/usr/usr/bin
|
||||
cd /usr/usr/bin
|
||||
fixbin /usr/bin /usr/bin >/dev/null 2>&1
|
||||
fixbin /usr/usr/bin /usr/usr/bin >/dev/null 2>&1
|
||||
35
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_root
Normal file
35
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_root
Normal file
@@ -0,0 +1,35 @@
|
||||
case $# in
|
||||
6) ;;
|
||||
*) echo "Usage: setup_root device ram_size hd1_size hd2_size hd3_size hd4_size"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
old_dir=`pwd` # save current directory
|
||||
if /etc/mount $1 /user
|
||||
then : # successful mount
|
||||
else echo "Unable to mount $1. Root file system not created."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make the directories
|
||||
cd /user
|
||||
mkdir bin dev etc lib tmp user usr
|
||||
chown bin bin dev etc lib tmp user usr
|
||||
chgrp bin bin dev etc lib tmp user usr
|
||||
chmod 777 bin dev etc lib tmp user usr
|
||||
|
||||
# Make the special files.
|
||||
cd dev
|
||||
/etc/mkdev $2 $3 $4 $5 $6
|
||||
|
||||
# Copy /bin and /etc
|
||||
cpdir -m /bin /user/bin
|
||||
cpdir -m /etc /user/etc
|
||||
fixbin /user/bin /user/bin >/dev/null 2>&1
|
||||
chown bin /user/etc/*
|
||||
chown root /user/etc/*mount
|
||||
chmod 4755 /user/etc/*mount
|
||||
|
||||
cd $old_dir
|
||||
/etc/umount $1
|
||||
205
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_usr
Normal file
205
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/setup_usr
Normal file
@@ -0,0 +1,205 @@
|
||||
# Install the /usr file system
|
||||
disk=6 # starting disk (1-3 are boot diskettes)
|
||||
STOP=18 # first disk that does not exist
|
||||
|
||||
i=/usr/include
|
||||
s=/usr/src
|
||||
l=/usr/src/lib
|
||||
|
||||
# Unmount all hard disk partitions and see if the argument can be mounted.
|
||||
case $# in
|
||||
1) ;;
|
||||
*) echo Please specify the special file for the MINIX partition
|
||||
echo For example: /etc/setup_usr /dev/hd1
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
cd /
|
||||
/etc/umount /dev/hd1 >/dev/null 2>&1
|
||||
/etc/umount /dev/hd2 >/dev/null 2>&1
|
||||
/etc/umount /dev/hd3 >/dev/null 2>&1
|
||||
/etc/umount /dev/hd4 >/dev/null 2>&1
|
||||
if /etc/mount $1 /user >/dev/null 2>&1
|
||||
then :
|
||||
else echo Unable to mount $1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PATH=$PATH:/user/bin # hard disk will be mounted on /user
|
||||
|
||||
# Make the principal MINIX directories.
|
||||
echo Making directories
|
||||
mkdir /user/adm 2>/dev/null
|
||||
mkdir /user/ast 2>/dev/null
|
||||
mkdir /user/bin 2>/dev/null
|
||||
mkdir /user/doc 2>/dev/null
|
||||
mkdir /user/etc 2>/dev/null
|
||||
mkdir /user/include 2>/dev/null
|
||||
mkdir /user/include/minix 2>/dev/null
|
||||
mkdir /user/include/sys 2>/dev/null
|
||||
mkdir /user/lib 2>/dev/null
|
||||
mkdir /user/lib/tmac 2>/dev/null
|
||||
mkdir /user/man 2>/dev/null
|
||||
mkdir /user/spool 2>/dev/null
|
||||
mkdir /user/spool/at 2>/dev/null
|
||||
mkdir /user/spool/lpd 2>/dev/null
|
||||
mkdir /user/spool/mail 2>/dev/null
|
||||
mkdir /user/spool/uucp 2>/dev/null
|
||||
mkdir /user/src 2>/dev/null
|
||||
mkdir /user/src/amoeba 2>/dev/null
|
||||
mkdir /user/src/amoeba/examples 2>/dev/null
|
||||
mkdir /user/src/amoeba/kernel 2>/dev/null
|
||||
mkdir /user/src/amoeba/fs 2>/dev/null
|
||||
mkdir /user/src/amoeba/mm 2>/dev/null
|
||||
mkdir /user/src/amoeba/util 2>/dev/null
|
||||
mkdir /user/src/commands 2>/dev/null
|
||||
mkdir /user/src/commands/bin 2>/dev/null
|
||||
mkdir /user/src/commands/ibm 2>/dev/null
|
||||
mkdir /user/src/commands/bawk 2>/dev/null
|
||||
mkdir /user/src/commands/de 2>/dev/null
|
||||
mkdir /user/src/commands/dis88 2>/dev/null
|
||||
mkdir /user/src/commands/ic 2>/dev/null
|
||||
mkdir /user/src/commands/indent 2>/dev/null
|
||||
mkdir /user/src/commands/kermit 2>/dev/null
|
||||
mkdir /user/src/commands/m4 2>/dev/null
|
||||
mkdir /user/src/commands/make 2>/dev/null
|
||||
mkdir /user/src/commands/mined 2>/dev/null
|
||||
mkdir /user/src/commands/nroff 2>/dev/null
|
||||
mkdir /user/src/commands/patch 2>/dev/null
|
||||
mkdir /user/src/commands/sh 2>/dev/null
|
||||
mkdir /user/src/commands/zmodem 2>/dev/null
|
||||
mkdir /user/src/elle 2>/dev/null
|
||||
mkdir /user/src/fs 2>/dev/null
|
||||
mkdir /user/src/lib 2>/dev/null
|
||||
mkdir /user/src/lib/ansi 2>/dev/null
|
||||
mkdir /user/src/lib/ibm 2>/dev/null
|
||||
mkdir /user/src/lib/other 2>/dev/null
|
||||
mkdir /user/src/lib/posix 2>/dev/null
|
||||
mkdir /user/src/lib/string 2>/dev/null
|
||||
mkdir /user/src/kernel 2>/dev/null
|
||||
mkdir /user/src/mm 2>/dev/null
|
||||
mkdir /user/src/test 2>/dev/null
|
||||
mkdir /user/src/tools 2>/dev/null
|
||||
mkdir /user/tmp 2>/dev/null
|
||||
|
||||
# At this point, the root file system is in place and diskette #5 is in
|
||||
# drive 0 mounted on /usr. The MINIX hard disk partition is on /user.
|
||||
# Copy /bin and /etc to the hard disk.
|
||||
echo Copying /bin
|
||||
cpdir -m /bin /user/bin # copy /bin to the hard disk
|
||||
echo Copying /etc
|
||||
cpdir -m /etc /user/etc # copy /etc to the hard disk
|
||||
cpdir -m /usr/bin /user/bin # copy /usr/bin to the hard disk
|
||||
echo Copying diskette 5
|
||||
fixbin /user/bin /user/bin >/dev/null 2>&1
|
||||
echo Diskette 5 copied
|
||||
/etc/umount /dev/fd0
|
||||
|
||||
|
||||
while test $disk != $STOP
|
||||
do getlf "Please insert disk $disk, then hit the ENTER key"
|
||||
/etc/mount /dev/fd0 /usr -r
|
||||
cd /usr
|
||||
for dir in *
|
||||
do echo Copying $dir
|
||||
if test $dir = 'LAST_DISK'; then disk=`expr $STOP - 1`; fi
|
||||
|
||||
# Establish base name
|
||||
case $dir in
|
||||
include) base=/user/include ;;
|
||||
ast) base=/user/ast ;;
|
||||
bin) base=/user/bin ;;
|
||||
etc) base=/user/etc ;;
|
||||
usrlib) base=/user/lib ;;
|
||||
kernel) base=/user/src/kernel ;;
|
||||
fs) base=/user/src/fs ;;
|
||||
mm) base=/user/src/mm ;;
|
||||
tools) base=/user/src/tools ;;
|
||||
test) base=/user/src/test ;;
|
||||
elle) base=/user/src/elle ;;
|
||||
amoeba) base=/user/src/amoeba ;;
|
||||
lib) base=/user/src/lib ;;
|
||||
commands) base=/user/src/commands ;;
|
||||
LAST_DISK) base=/tmp ;;
|
||||
*) base=/user/$dir ;;
|
||||
esac
|
||||
|
||||
cd / # cpdir creates pipes in current dir
|
||||
cpdir -m /usr/$dir $base
|
||||
done
|
||||
disk=`expr $disk + 1`
|
||||
cd /
|
||||
/etc/umount /dev/fd0
|
||||
done
|
||||
|
||||
#All the disks have now been loaded. Unpack them.
|
||||
echo Loading finished. Please remove the last diskette from the drive.
|
||||
echo The files will now be unpacked.
|
||||
cd /
|
||||
fixbin /user/bin /user/bin >/dev/null 2>&1
|
||||
/etc/umount $1 >/dev/null 2>&1
|
||||
/etc/mount $1 /usr >/dev/null 2>&1
|
||||
|
||||
echo Unpacking /usr/lib
|
||||
cd /usr/lib
|
||||
compress -d *Z >/dev/null 2>&1
|
||||
rm -f *Z 2>/dev/null
|
||||
chown bin *
|
||||
|
||||
for d in $i \
|
||||
$i/minix \
|
||||
$i/sys \
|
||||
$s/elle \
|
||||
$s/kernel \
|
||||
$s/fs \
|
||||
$s/mm \
|
||||
$s/tools \
|
||||
$s/test \
|
||||
$l/ansi \
|
||||
$l/posix \
|
||||
$l/other \
|
||||
$l/ibm \
|
||||
$l/string \
|
||||
$s/commands \
|
||||
$s/commands/ibm \
|
||||
$s/commands/bawk \
|
||||
$s/commands/de \
|
||||
$s/commands/dis88 \
|
||||
$s/commands/indent \
|
||||
$s/commands/ic \
|
||||
$s/commands/m4 \
|
||||
$s/commands/make \
|
||||
$s/commands/mined \
|
||||
$s/commands/nroff \
|
||||
$s/commands/patch \
|
||||
$s/commands/sh \
|
||||
$s/commands/zmodem \
|
||||
$s/commands/kermit \
|
||||
$s/commands/elvis \
|
||||
$s/amoeba \
|
||||
$s/amoeba/kernel \
|
||||
$s/amoeba/fs \
|
||||
$s/amoeba/mm \
|
||||
$s/amoeba/examples \
|
||||
$s/amoeba/util
|
||||
do echo Unpacking $d
|
||||
cd $d
|
||||
compress -d *Z >/dev/null 2>&1
|
||||
rm -f *.Z 2>/dev/null
|
||||
for j in *.a; do ar x $j >/dev/null 2>&1; done
|
||||
rm -f *.a 2>/dev/null
|
||||
chown bin * .
|
||||
done
|
||||
|
||||
# link commands/nroff/tmac.an to lib/tmac/tmac.an
|
||||
ln /usr/src/commands/nroff/tmac.an /usr/lib/tmac/tmac.an
|
||||
|
||||
rm -rf /usr/LAST_DISK 2>/dev/null
|
||||
chown bin /usr/*
|
||||
|
||||
cd /usr/lib
|
||||
chmod 755 cem cpp cg opt
|
||||
|
||||
echo Installation completed.
|
||||
exit 0
|
||||
32
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/termcap
Normal file
32
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/termcap
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
# Minix Termcap
|
||||
# Modified by Glen Overby <overby@plains.nodak.edu> 3/4/90
|
||||
# Added insert/delete line, character, etc. Now supports
|
||||
# everything the console impliments that Termcap can use.
|
||||
mx|minix|minix console:\
|
||||
:bs:\
|
||||
:co#80:li#25:\
|
||||
:cd=\E[0J:cl=\E[H\E[0J:\
|
||||
:so=\E[7m:se=\E[0m:\
|
||||
:us=\E[4m:ue=\E[0m:\
|
||||
:mb=\E[5m:md=\E[1m:\
|
||||
:mr=\E[7m:me=\E[0m:\
|
||||
:sr=\EM:\
|
||||
:cm=\E[%i%d;%dH:\
|
||||
:ho=\E[H:\
|
||||
:al=\E[L:AL=\E[%dL:\
|
||||
:ce=\E[K:\
|
||||
:DC=\E[%dP:dc=\E[P:\
|
||||
:DL=\E[%dM:dl=\E[M:\
|
||||
:DO=\E[%dB:do=\E[B:\
|
||||
:IC=\E[%d@:ic=\E[@:\
|
||||
:it#8:\
|
||||
:le=^H:LE=\E[%dD:nd=\E[C:\
|
||||
:RI=\E[%dC:\
|
||||
:up=\E[A:UP=\E[%dA:\
|
||||
:ku=\E[A:kd=\E[B:\
|
||||
:kl=\E[D:kr=\E[C:\
|
||||
:kh=\E[H:k0=\E[Y:\
|
||||
:k1=\E[V:k2=\E[U:\
|
||||
:k3=\E[T:k4=\E[S:\
|
||||
:k5=\E[G:
|
||||
2
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/ttys
Normal file
2
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/ttys
Normal file
@@ -0,0 +1,2 @@
|
||||
100
|
||||
0f1
|
||||
2
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/ttytype
Normal file
2
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/ttytype
Normal file
@@ -0,0 +1,2 @@
|
||||
minix tty0
|
||||
vt100 tty1
|
||||
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/umount
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/umount
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/update
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/etc/update
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/adm/wtmp
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/adm/wtmp
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/aal
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/aal
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/as.gz
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/as.gz
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/c89
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/c89
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/cc
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/bin2/cc
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/cc.c.gz
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Binaries/usr/ansi_cc/cc.c.gz
Normal file
Binary file not shown.
@@ -0,0 +1,97 @@
|
||||
|
||||
Here are the sed-script and a short description of the changes between the
|
||||
old and the new assembler. The sed-script does not work under MINIX because
|
||||
of the \< and \> patterns. Furthermore, it doesn't change ! into ~.
|
||||
|
||||
|
||||
s/|/!/
|
||||
s/\([ ]*\.\)byte\>/\1data1/
|
||||
s/\([ ]*\.\)word\>/\1data2/
|
||||
s/\([ ]*\.\)long\>/\1data4/
|
||||
s/^\([ ]*\.\)globl\>/\1extern/
|
||||
s/\<b\([xp]\)_\([sd]\)i\>/b\1),(\2i/
|
||||
s/^\([ ]*\)seg\>[ ]*\([ecsd]\)s\>/\1\2seg/
|
||||
s/^\([ ]*\)in\>/\1inb/
|
||||
s/^\([ ]*\)out\>/\1outb/
|
||||
s/^\([ ]*\)stob\>/\1stosb/
|
||||
s/^\([ ]*\)stow\>/\1stos/
|
||||
s/^\([ ]*\)lodb\>/\1lodsb/
|
||||
s/^\([ ]*\)lodw\>/\1lods/
|
||||
s/^\([ ]*\)scab\>/\1scasb/
|
||||
s/^\([ ]*\)scaw\>/\1scas/
|
||||
s/^\([ ]*\)jc\>/\1jb/
|
||||
s/^\([ ]*\)jnc\>/\1jnb/
|
||||
s/^\([ ]*\)calli\>/\1callf/
|
||||
s/^\([ ]*\)jmpi\>/\1jmpf/
|
||||
s/^\([ ]*\)reti\>/\1retf/
|
||||
s/^\([ ]*\)j\>/\1jmp/
|
||||
s/^\([ ]*\)br\>/\1jmp/
|
||||
s/^\([ ]*\)beq\>/\1je/
|
||||
s/^\([ ]*\)bge\>/\1jge/
|
||||
s/^\([ ]*\)bgt\>/\1jg/
|
||||
s/^\([ ]*\)bhi\>/\1jnbe/
|
||||
s/^\([ ]*\)bhis\>/\1jnb/
|
||||
s/^\([ ]*\)ble\>/\1jle/
|
||||
s/^\([ ]*\)blo\>/\1jb/
|
||||
s/^\([ ]*\)blos\>/\1jbe/
|
||||
s/^\([ ]*\)blt\>/\1jnge/
|
||||
s/^\([ ]*\)bne\>/\1jne/
|
||||
----
|
||||
Changes between the old and the new assembler:
|
||||
|
||||
|
||||
+ Files beginning with a '#' are preprocessed. The
|
||||
preprocessor is not a general preprocessor, but an
|
||||
ANSI-C pre-processor, so some old tricks and some con-
|
||||
structions may not work. An example is the #, which is
|
||||
now an preprocessor-operator.
|
||||
|
||||
+ The comment symbol is now '!' instead of '|'. The symbol
|
||||
for the not-operator is now '~' instead of '!'.
|
||||
|
||||
+ The .byte, .word and .long directives are now called
|
||||
.data1, .data2 and .data4 repectively.
|
||||
|
||||
+ The adressing modes (bx_si), (bx_di), (bp_si) and
|
||||
(bp_si) are now written as (bx)(si), (bx)(di), (bp)(si)
|
||||
and (bp)(si) respectively.
|
||||
|
||||
+ The mapping of old instructions to new ones is given in
|
||||
the following table.
|
||||
|
||||
___________________________________
|
||||
|old instruction new instruction|
|
||||
|in inb |
|
||||
|out outb |
|
||||
|stob stosb |
|
||||
|lodb lodsb |
|
||||
|lodw lodsw |
|
||||
|scab scasb |
|
||||
|scaw scas |
|
||||
|jc jb |
|
||||
|jnc jnb |
|
||||
|calli callf |
|
||||
|jmpi jmpf |
|
||||
|reti retf |
|
||||
|j jmp |
|
||||
|br jmp |
|
||||
|beq je |
|
||||
|bge jge |
|
||||
|bgt jg |
|
||||
|bhi jnbe |
|
||||
|bhis jnb |
|
||||
|ble jle |
|
||||
|blo jb |
|
||||
|blos jbe |
|
||||
|blt jnge |
|
||||
|bne jne |
|
||||
|_________________________________|
|
||||
|
||||
|
||||
Be aware that some instructions are still valid, but
|
||||
now have a different meaning. Examples are the in and
|
||||
out intructions, which will work on words instead of
|
||||
bytes.
|
||||
|
||||
+ The assembler knows i80286 and i80x87 instructions.
|
||||
----
|
||||
@@ -0,0 +1,110 @@
|
||||
/* The <a.out> header file describes the format of executable files. */
|
||||
|
||||
#ifndef _AOUT_H
|
||||
#define _AOUT_H
|
||||
|
||||
struct exec { /* a.out header */
|
||||
unsigned char a_magic[2]; /* magic number */
|
||||
unsigned char a_flags; /* flags, see below */
|
||||
unsigned char a_cpu; /* cpu id */
|
||||
unsigned char a_hdrlen; /* length of header */
|
||||
unsigned char a_unused; /* reserved for future use */
|
||||
unsigned short a_version; /* version stamp */
|
||||
/* not used */
|
||||
long a_text; /* size of text segement in bytes */
|
||||
long a_data; /* size of data segment in bytes */
|
||||
long a_bss; /* size of bss segment in bytes */
|
||||
long a_no_entry; /* in fact: entry point, a_entry */
|
||||
long a_total; /* total memory allocated */
|
||||
long a_syms; /* size of symbol table */
|
||||
/* SHORT FORM ENDS HERE */
|
||||
long a_trsize; /* text relocation size */
|
||||
long a_drsize; /* data relocation size */
|
||||
long a_tbase; /* text relocation base */
|
||||
long a_dbase; /* data relocation base */
|
||||
};
|
||||
|
||||
#define A_MAGIC0 (unsigned char) 0x01
|
||||
#define A_MAGIC1 (unsigned char) 0x03
|
||||
#define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||\
|
||||
(X).a_magic[1] != A_MAGIC1)
|
||||
|
||||
/* CPU Id of TARGET machine */
|
||||
/* byte order coded in low order two bits */
|
||||
#define A_NONE 0x00 /* unknown */
|
||||
#define A_I8086 0x04 /* intel i8086/8088 */
|
||||
#define A_M68K 0x0B /* motorola m68000 */
|
||||
#define A_NS16K 0x0C /* national semiconductor 16032 */
|
||||
#define A_I80386 0x10 /* intel i80386 */
|
||||
|
||||
#define A_BLR(cputype) ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */
|
||||
#define A_WLR(cputype) ((cputype&0x02)!=0) /* TRUE if words left-to-right */
|
||||
|
||||
/* flags: */
|
||||
#define A_EXEC 0x10 /* executable */
|
||||
#define A_SEP 0x20 /* separate I/D */
|
||||
#define A_PURE 0x40 /* pure text */ /* not used */
|
||||
#define A_TOVLY 0x80 /* text overlay */ /* not used */
|
||||
|
||||
/* offsets of various things: */
|
||||
#define A_MINHDR 32
|
||||
#define A_TEXTPOS(X) ((long)(X).a_hdrlen)
|
||||
#define A_DATAPOS(X) (A_TEXTPOS(X) + (X).a_text)
|
||||
#define A_HASRELS(X) ((X).a_hdrlen > (unsigned char) A_MINHDR)
|
||||
#define A_HASEXT(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 8))
|
||||
#define A_HASLNS(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16))
|
||||
#define A_HASTOFF(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24))
|
||||
#define A_TRELPOS(X) (A_DATAPOS(X) + (X).a_data)
|
||||
#define A_DRELPOS(X) (A_TRELPOS(X) + (X).a_trsize)
|
||||
#define A_SYMPOS(X) (A_TRELPOS(X) + (A_HASRELS(X) ? \
|
||||
((X).a_trsize + (X).a_drsize) : 0))
|
||||
|
||||
struct reloc {
|
||||
long r_vaddr; /* virtual address of reference */
|
||||
unsigned short r_symndx; /* internal segnum or extern symbol num */
|
||||
unsigned short r_type; /* relocation type */
|
||||
};
|
||||
|
||||
/* r_tyep values: */
|
||||
#define R_ABBS 0
|
||||
#define R_RELLBYTE 2
|
||||
#define R_PCRBYTE 3
|
||||
#define R_RELWORD 4
|
||||
#define R_PCRWORD 5
|
||||
#define R_RELLONG 6
|
||||
#define R_PCRLONG 7
|
||||
#define R_REL3BYTE 8
|
||||
#define R_KBRANCHE 9
|
||||
|
||||
/* r_symndx for internal segments */
|
||||
#define S_ABS ((unsigned short)-1)
|
||||
#define S_TEXT ((unsigned short)-2)
|
||||
#define S_DATA ((unsigned short)-3)
|
||||
#define S_BSS ((unsigned short)-4)
|
||||
|
||||
struct nlist { /* symbol table entry */
|
||||
char n_name[8]; /* symbol name */
|
||||
long n_value; /* value */
|
||||
unsigned char n_sclass; /* storage class */
|
||||
unsigned char n_numaux; /* number of auxiliary entries */
|
||||
/* not used */
|
||||
unsigned short n_type; /* language base and derived type */
|
||||
/* not used */
|
||||
};
|
||||
|
||||
/* low bits of storage class (section) */
|
||||
#define N_SECT 07 /* section mask */
|
||||
#define N_UNDF 00 /* undefined */
|
||||
#define N_ABS 01 /* absolute */
|
||||
#define N_TEXT 02 /* text */
|
||||
#define N_DATA 03 /* data */
|
||||
#define N_BSS 04 /* bss */
|
||||
#define N_COMM 05 /* (common) */
|
||||
|
||||
/* high bits of storage class */
|
||||
#define N_CLASS 0370 /* storage class mask */
|
||||
#define C_NULL
|
||||
#define C_EXT 0020 /* external symbol */
|
||||
#define C_STAT 0030 /* static */
|
||||
|
||||
#endif /* _AOUT_H */
|
||||
@@ -0,0 +1,100 @@
|
||||
#ifndef _AMOEBA_H
|
||||
#define _AMOEBA_H
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* (c) Copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands */
|
||||
/* */
|
||||
/* This product is part of the Amoeba distributed operating system. */
|
||||
/* */
|
||||
/* Permission to use, sell, duplicate or disclose this software must be */
|
||||
/* obtained in writing. Requests for such permissions may be sent to */
|
||||
/* */
|
||||
/* */
|
||||
/* Dr. Andrew S. Tanenbaum */
|
||||
/* Dept. of Mathematics and Computer Science */
|
||||
/* Vrije Universiteit */
|
||||
/* Postbus 7161 */
|
||||
/* 1007 MC Amsterdam */
|
||||
/* The Netherlands */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
** If the host operating system for amoeba transactions is not amoeba
|
||||
** then several things may need to be done to make the amoeba code
|
||||
** compatible. These are provided in host_os.h.
|
||||
*/
|
||||
#include "host_os.h"
|
||||
|
||||
#define PORTSIZE 6
|
||||
#define OOBSIZE 20
|
||||
#define HEADERSIZE 32
|
||||
#define PRIVSIZE 10
|
||||
#define CAPSIZE 16
|
||||
|
||||
#define FAIL ((unshort) -1)
|
||||
#define NOTFOUND ((unshort) -2)
|
||||
#define BADADDRESS ((unshort) -3)
|
||||
#define ABORTED ((unshort) -4)
|
||||
#define TRYAGAIN ((unshort) -5)
|
||||
|
||||
#define sizeoftable(t) (sizeof(t) / sizeof((t)[0]))
|
||||
|
||||
#define NILPORT ((port *) 0)
|
||||
#define NILBUF ((bufptr) 0)
|
||||
|
||||
#define _FP(p) ((struct _fakeport *) (p))
|
||||
#ifndef lint
|
||||
#define PortCmp(p, q) (_FP(p)->_p1==_FP(q)->_p1 && _FP(p)->_p2==_FP(q)->_p2)
|
||||
#define NullPort(p) (_FP(p)->_p1==0L && _FP(p)->_p2==0)
|
||||
#else
|
||||
#define PortCmp(p, q) ((p)->_portbytes[0] == (q)->_portbytes[0])
|
||||
#define NullPort(p) ((p)->_portbytes[0] == 0)
|
||||
#endif
|
||||
|
||||
typedef char *bufptr;
|
||||
#ifndef MAX_BLOCK_NR
|
||||
typedef unsigned short unshort;
|
||||
#endif
|
||||
typedef char *event_t;
|
||||
|
||||
typedef struct {
|
||||
char _portbytes[PORTSIZE];
|
||||
} port;
|
||||
|
||||
struct _fakeport {
|
||||
long _p1;
|
||||
short _p2;
|
||||
};
|
||||
|
||||
typedef struct { /* private part of capability */
|
||||
char prv_object[3];
|
||||
char prv_rights;
|
||||
port prv_random;
|
||||
} private;
|
||||
|
||||
typedef struct {
|
||||
port cap_port;
|
||||
private cap_priv;
|
||||
} capability;
|
||||
|
||||
typedef struct {
|
||||
port h_port;
|
||||
port h_signature;
|
||||
private h_priv;
|
||||
unshort h_command;
|
||||
long h_offset;
|
||||
unshort h_size;
|
||||
unshort h_extra;
|
||||
} header;
|
||||
|
||||
#define h_status h_command /* alias: reply status */
|
||||
|
||||
/*
|
||||
** Some function declarations that people tend to forget
|
||||
** because they are lazy.
|
||||
*/
|
||||
extern unshort trans(), getreq(), putrep(), timeout();
|
||||
|
||||
#endif /* _AMOEBA_H */
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
** parameters for trans, getreq and putrep are given to the kernel
|
||||
** in a Trpar struct
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
header * p_hdr; /* header pointer */
|
||||
bufptr p_buf; /* buffer pointer */
|
||||
unshort p_cnt; /* character count */
|
||||
} Param;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Param tp_par[2];
|
||||
unshort tp_maxloc; /* trans locate timeout */
|
||||
} Trpar;
|
||||
@@ -0,0 +1,54 @@
|
||||
/* The <ansi.h> header checks whether the compiler claims conformance to ANSI
|
||||
* Standard C. If so, the symbol _ANSI is defined as 1, otherwise it is
|
||||
* defined as 0. Based on the result, a macro
|
||||
*
|
||||
* _PROTOTYPE(function, params)
|
||||
*
|
||||
* is defined. This macro expands in different ways, generating either
|
||||
* ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie)
|
||||
* prototypes, as needed. Finally, some programs use _CONST, _VOIDSTAR etc
|
||||
* in such a way that they are portable over both ANSI and K&R compilers.
|
||||
* The appropriate macros are defined here.
|
||||
*/
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#define _ANSI_H
|
||||
|
||||
/* ANSI C requires __STDC__ to be defined as 1 for an ANSI C compiler.
|
||||
* Some half-ANSI compilers define it as 0. Get around this here.
|
||||
*/
|
||||
|
||||
#define _ANSI 0 /* 0 if compiler is not ANSI C, 1 if it is */
|
||||
|
||||
#ifdef __STDC__ /* __STDC__ defined for (near) ANSI compilers*/
|
||||
#if __STDC__ == 1 /* __STDC__ == 1 for conformant compilers */
|
||||
#undef _ANSI /* get rid of above definition */
|
||||
#define _ANSI 1 /* _ANSI = 1 for ANSI C compilers */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* At this point, _ANSI has been set correctly to 0 or 1. Define the
|
||||
* _PROTOTYPE macro to either expand both of its arguments (ANSI prototypes),
|
||||
* only the function name (K&R prototypes).
|
||||
*/
|
||||
|
||||
#if _ANSI
|
||||
#define _PROTOTYPE(function, params) function params
|
||||
#define _VOIDSTAR void *
|
||||
#define _VOID void
|
||||
#define _CONST const
|
||||
#define _VOLATILE volatile
|
||||
#define _SIZET size_t
|
||||
|
||||
#else
|
||||
|
||||
#define _PROTOTYPE(function, params) function()
|
||||
#define _VOIDSTAR void *
|
||||
#define _VOID void
|
||||
#define _CONST
|
||||
#define _VOLATILE
|
||||
#define _SIZET int
|
||||
|
||||
#endif /* _ANSI */
|
||||
|
||||
#endif /* ANSI_H */
|
||||
@@ -0,0 +1,18 @@
|
||||
/* The <ar.h> header gives the layout of archives. */
|
||||
|
||||
#ifndef _AR_H
|
||||
#define _AR_H
|
||||
|
||||
#define ARMAG 0177545
|
||||
#define _NAME_MAX 14
|
||||
|
||||
struct ar_hdr {
|
||||
char ar_name[_NAME_MAX];
|
||||
char ar_date[4]; /* long in byte order 2 3 1 0 */
|
||||
char ar_uid;
|
||||
char ar_gid;
|
||||
char ar_mode[2]; /* short in byte order 0 1 */
|
||||
char ar_size[4]; /* long in byte order 2 3 1 0 */
|
||||
};
|
||||
|
||||
#endif /* _AR_H */
|
||||
@@ -0,0 +1,35 @@
|
||||
/* The <assert.h> header contains a macro called "assert" that allows
|
||||
* programmers to put assertions in the code. These assertions can be verified
|
||||
* at run time. If an assertion fails, an error message is printed.
|
||||
* Assertion checking can be disabled by adding the statement
|
||||
*
|
||||
* #define NDEBUG
|
||||
*
|
||||
* to the program before the
|
||||
*
|
||||
* #include <assert.h>
|
||||
*
|
||||
* statement.
|
||||
*/
|
||||
|
||||
#ifdef assert
|
||||
#undef assert /* make this file idempotent */
|
||||
#endif
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef NDEBUG
|
||||
/* Debugging disabled -- do not evaluate assertions. */
|
||||
#define assert(expr) ((void) 0)
|
||||
#else
|
||||
/* Debugging enabled -- verify assertions at run time. */
|
||||
#if _ANSI
|
||||
_PROTOTYPE( _VOID __bad_assertion, (const char *__expr, const char *__file, int __line) );
|
||||
#define assert(expr) ((void) ((expr) ? (void)0 : __bad_assertion( #expr, __FILE__, __LINE__)))
|
||||
#else
|
||||
#define assert(expr) ((void) ((expr) ? 0 : __assert( __FILE__, __LINE__)))
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef _BLOCK_SIZE_H
|
||||
#define _BLOCK_SIZE_H
|
||||
|
||||
#define BLOCK_SIZE 1024 /* file system data block size */
|
||||
|
||||
#endif /* _BLOCK_SIZE_H */
|
||||
@@ -0,0 +1,72 @@
|
||||
/* The <ctype.h> header file defines some macros used to identify characters.
|
||||
* It works by using a table stored in chartab.c. When a character is presented
|
||||
* to one of these macros, the character is used as an index into the table
|
||||
* (__ctype) to retrieve a byte. The relevant bit is then extracted.
|
||||
*/
|
||||
|
||||
#ifndef _CTYPE_H
|
||||
#define _CTYPE_H
|
||||
|
||||
extern char __ctype[]; /* property array defined in chartab.c */
|
||||
extern int __x; /* scratch variable defined in chartab.c */
|
||||
|
||||
#define _U 0x01 /* this bit is for upper-case letters [A-Z] */
|
||||
#define _L 0x02 /* this bit is for lower-case letters [a-z] */
|
||||
#define _N 0x04 /* this bit is for numbers [0-9] */
|
||||
#define _S 0x08 /* this bit is for white space \t \n \f etc */
|
||||
#define _P 0x10 /* this bit is for punctuation characters */
|
||||
#define _C 0x20 /* this bit is for control characters */
|
||||
#define _X 0x40 /* this bit is for hex digits [a-f] and [A-F]*/
|
||||
|
||||
/* Function Prototypes (have to go before the macros). */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int isalnum, (int _c) ); /* alphanumeric [a-z], [A-Z], [0-9] */
|
||||
_PROTOTYPE( int isalpha, (int _c) ); /* alphabetic */
|
||||
_PROTOTYPE( int iscntrl, (int _c) ); /* control characters */
|
||||
_PROTOTYPE( int isdigit, (int _c) ); /* digit [0-9] */
|
||||
_PROTOTYPE( int isgraph, (int _c) ); /* graphic character */
|
||||
_PROTOTYPE( int islower, (int _c) ); /* lower-case letter [a-z] */
|
||||
_PROTOTYPE( int isprint, (int _c) ); /* printable character */
|
||||
_PROTOTYPE( int ispunct, (int _c) ); /* punctuation mark */
|
||||
_PROTOTYPE( int isspace, (int _c) ); /* white space sp, \f, \n, \r, \t, \v*/
|
||||
_PROTOTYPE( int isupper, (int _c) ); /* upper-case letter [A-Z] */
|
||||
_PROTOTYPE( int isxdigit,(int _c) ); /* hex digit [0-9], [a-f], [A-F] */
|
||||
_PROTOTYPE( int tolower, (int _c) ); /* convert to lower-case */
|
||||
_PROTOTYPE( int toupper, (int _c) ); /* convert to upper-case */
|
||||
|
||||
/* Macros for identifying character classes. */
|
||||
#define isalnum(c) ((__ctype+1)[c]&(_U|_L|_N))
|
||||
#define isalpha(c) ((__ctype+1)[c]&(_U|_L))
|
||||
#define iscntrl(c) ((__ctype+1)[c]&_C)
|
||||
#define isgraph(c) ((__ctype+1)[c]&(_P|_U|_L|_N))
|
||||
#define ispunct(c) ((__ctype+1)[c]&_P)
|
||||
#define isspace(c) ((__ctype+1)[c]&_S)
|
||||
#define isxdigit(c) ((__ctype+1)[c]&(_N|_X))
|
||||
|
||||
#define isdigit(c) ((unsigned) ((c) - '0') < 10)
|
||||
#define islower(c) ((unsigned) ((c) - 'a') < 26)
|
||||
#define isupper(c) ((unsigned) ((c) - 'A') < 26)
|
||||
#define isprint(c) ((unsigned) ((c) - ' ') < 95)
|
||||
#define isascii(c) ((unsigned) (c) < 128)
|
||||
|
||||
|
||||
/* The following two macros are weird to keep the Language Police at bay.
|
||||
* The macro 'tolower' only affects upper case letters, and 'toupper'
|
||||
* only affects lower case letters. Neither one is permitted to evaluate
|
||||
* its argument more than once. Thus a simple definition like:
|
||||
*
|
||||
* #define tolower(c) (isupper(c) ? c - 'A' + 'a' : c)
|
||||
*
|
||||
* is prohibited because the argument 'c' is evaluated twice.
|
||||
* It might be an expression that has side effects, such as a function
|
||||
* call that increments a counter and returns its value as a character.
|
||||
* The solution is to first copy the argument to a scratch variable, __x.
|
||||
*/
|
||||
|
||||
#define tolower(c) (__x = (c), isupper(__x) ? __x - 'A' + 'a' : __x)
|
||||
#define toupper(c) (__x = (c), islower(__x) ? __x - 'a' + 'A' : __x)
|
||||
|
||||
#endif /* _CTYPE_H */
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef _CURSES_H
|
||||
#define _CURSES_H
|
||||
|
||||
#include <ansi.h>
|
||||
|
||||
/* Lots of junk here, not packaged right. */
|
||||
extern char termcap[];
|
||||
extern char tc[];
|
||||
extern char *ttytype;
|
||||
extern char *arp;
|
||||
extern char *cp;
|
||||
|
||||
extern char *cl;
|
||||
extern char *cm;
|
||||
extern char *so;
|
||||
extern char *se;
|
||||
|
||||
extern char /* nscrn[ROWS][COLS], cscrn[ROWS][COLS], */ row, col, mode;
|
||||
extern char str[];
|
||||
|
||||
_PROTOTYPE( void addstr, (char *_s) );
|
||||
_PROTOTYPE( void clear, (void) );
|
||||
_PROTOTYPE( void clrtobot, (void) );
|
||||
_PROTOTYPE( void clrtoeol, (void) );
|
||||
_PROTOTYPE( void endwin, (void) );
|
||||
_PROTOTYPE( void fatal, (char *_s) );
|
||||
_PROTOTYPE( char inch, (void) );
|
||||
_PROTOTYPE( void initscr, (void) );
|
||||
_PROTOTYPE( void move, (int _y, int _x) );
|
||||
/* WRONG, next is varargs. */
|
||||
_PROTOTYPE( void printw, (char *_fmt, char *_a1, char *_a2, char *_a3,
|
||||
char *_a4, char *_a5) );
|
||||
_PROTOTYPE( void outc, (int _c) );
|
||||
_PROTOTYPE( void refresh, (void) );
|
||||
_PROTOTYPE( void standend, (void) );
|
||||
_PROTOTYPE( void standout, (void) );
|
||||
_PROTOTYPE( void touchwin, (void) );
|
||||
|
||||
#endif /* _CURSES_H */
|
||||
@@ -0,0 +1,40 @@
|
||||
/* The <dirent.h> header file is for POSIX. It is used by the opendir(),
|
||||
* readdir(), writedir(), and related procedure calls.
|
||||
*/
|
||||
|
||||
#ifndef _DIRENT_H
|
||||
#define _DIRENT_H
|
||||
|
||||
/* DIRBUF must in general be larger than the filesystem buffer size. */
|
||||
#define _DIRBUF 2048 /* buffer size for fs-indep. dirs */
|
||||
#define _DIR_MAGIC 19997 /* arbitrary number for marking DIRs */
|
||||
|
||||
/* The DIR structure is used for all the directory operations. */
|
||||
typedef struct {
|
||||
int dd_fd; /* file descriptor */
|
||||
int dd_loc; /* offset in block */
|
||||
int dd_size; /* amount of valid data */
|
||||
int dd_magic; /* magic number to recognize DIRs */
|
||||
char *dd_buf; /* -> directory block */
|
||||
} DIR; /* stream data from opendir() */
|
||||
|
||||
|
||||
struct dirent { /* data from getdents()/readdir() */
|
||||
long d_ino; /* inode number of entry */
|
||||
off_t d_off; /* offset of disk directory entry */
|
||||
unsigned short d_reclen; /* length of this record */
|
||||
char d_name[1]; /* name of file plus a 0 byte */
|
||||
};
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int closedir, (DIR *_dirp) );
|
||||
_PROTOTYPE( int getdents, (int _fildes, char *_buf, unsigned _nbyte) );
|
||||
_PROTOTYPE( DIR *opendir, (char *_dirname) );
|
||||
_PROTOTYPE( struct dirent *readdir, (DIR *_dirp) );
|
||||
_PROTOTYPE( void rewinddir, (DIR *_dirp) );
|
||||
|
||||
#endif /* _DIRENT_H */
|
||||
@@ -0,0 +1,96 @@
|
||||
/* The <errno.h> header defines the numbers of the various errors that can
|
||||
* occur during program execution. They are visible to user programs and
|
||||
* should be small positive integers. However, they are also used within
|
||||
* MINIX, where they must be negative. For example, the READ system call is
|
||||
* executed internally by calling do_read(). This function returns either a
|
||||
* (negative) error number or a (positive) number of bytes actually read.
|
||||
*
|
||||
* To solve the problem of having the error numbers be negative inside the
|
||||
* the system and positive outside, the following mechanism is used. All the
|
||||
* definitions are are the form:
|
||||
*
|
||||
* #define EPERM (_SIGN 1)
|
||||
*
|
||||
* If the macro _SYSTEM is defined, then _SIGN is set to "-", otherwise it is
|
||||
* set to "". Thus when compiling the operating system, the macro _SYSTEM
|
||||
* will be defined, setting EPERM to (- 1), whereas when when this
|
||||
* file is included in an ordinary user program, EPERM has the value ( 1).
|
||||
*/
|
||||
|
||||
#ifndef _ERRNO_H /* check if <errno.h> is already included */
|
||||
#define _ERRNO_H /* it is not included; note that fact */
|
||||
|
||||
/* Now define _SIGN as "" or "-" depending on _SYSTEM. */
|
||||
#ifdef _SYSTEM
|
||||
# define _SIGN -
|
||||
# define OK 0
|
||||
#else
|
||||
# define _SIGN
|
||||
#endif
|
||||
|
||||
extern int errno; /* place where the error numbers go */
|
||||
|
||||
/* Here are the numerical values of the error numbers. */
|
||||
#define _NERROR 39 /* number of errors */
|
||||
|
||||
#define ERROR (_SIGN 99) /* generic error */
|
||||
#define EPERM (_SIGN 1) /* operation not permitted */
|
||||
#define ENOENT (_SIGN 2) /* no such file or directory */
|
||||
#define ESRCH (_SIGN 3) /* no such process */
|
||||
#define EINTR (_SIGN 4) /* interrupted function call */
|
||||
#define EIO (_SIGN 5) /* input/output error */
|
||||
#define ENXIO (_SIGN 6) /* no such device or address */
|
||||
#define E2BIG (_SIGN 7) /* arg list too long */
|
||||
#define ENOEXEC (_SIGN 8) /* exec format error */
|
||||
#define EBADF (_SIGN 9) /* bad file descriptor */
|
||||
#define ECHILD (_SIGN 10) /* no child process */
|
||||
#define EAGAIN (_SIGN 11) /* resource temporarily unavailable */
|
||||
#define ENOMEM (_SIGN 12) /* not enough space */
|
||||
#define EACCES (_SIGN 13) /* permission denied */
|
||||
#define EFAULT (_SIGN 14) /* bad address */
|
||||
#define ENOTBLK (_SIGN 15) /* Extension: not a block special file */
|
||||
#define EBUSY (_SIGN 16) /* resource busy */
|
||||
#define EEXIST (_SIGN 17) /* file exists */
|
||||
#define EXDEV (_SIGN 18) /* improper link */
|
||||
#define ENODEV (_SIGN 19) /* no such device */
|
||||
#define ENOTDIR (_SIGN 20) /* not a directory */
|
||||
#define EISDIR (_SIGN 21) /* is a directory */
|
||||
#define EINVAL (_SIGN 22) /* invalid argument */
|
||||
#define ENFILE (_SIGN 23) /* too many open files in system */
|
||||
#define EMFILE (_SIGN 24) /* too many open files */
|
||||
#define ENOTTY (_SIGN 25) /* inappropriate I/O control operation */
|
||||
#define ETXTBSY (_SIGN 26) /* no longer used */
|
||||
#define EFBIG (_SIGN 27) /* file too large */
|
||||
#define ENOSPC (_SIGN 28) /* no space left on device */
|
||||
#define ESPIPE (_SIGN 29) /* invalid seek */
|
||||
#define EROFS (_SIGN 30) /* read-only file system */
|
||||
#define EMLINK (_SIGN 31) /* too many links */
|
||||
#define EPIPE (_SIGN 32) /* broken pipe */
|
||||
#define EDOM (_SIGN 33) /* domain error (from ANSI C std) */
|
||||
#define ERANGE (_SIGN 34) /* result too large (from ANSI C std) */
|
||||
#define EDEADLK (_SIGN 35) /* resource deadlock avoided */
|
||||
#define ENAMETOOLONG (_SIGN 36) /* file name too long */
|
||||
#define ENOLCK (_SIGN 37) /* no locks available */
|
||||
#define ENOSYS (_SIGN 38) /* function not implemented */
|
||||
#define ENOTEMPTY (_SIGN 39) /* directory not empty */
|
||||
|
||||
/* The following are not POSIX errors, but they can still happen. */
|
||||
#define ELOCKED (_SIGN 101) /* can't send message */
|
||||
#define EBADCALL (_SIGN 102) /* error on send/receive */
|
||||
|
||||
/* The following error codes are generated by the kernel itself. */
|
||||
#ifdef _SYSTEM
|
||||
#define E_BAD_DEST -1 /* destination address illegal */
|
||||
#define E_BAD_SRC -2 /* source address illegal */
|
||||
#define E_TRY_AGAIN -3 /* can't send-- tables full */
|
||||
#define E_OVERRUN -4 /* interrupt for task that is not waiting */
|
||||
#define E_BAD_BUF -5 /* message buf outside caller's addr space */
|
||||
#define E_TASK -6 /* can't send to task */
|
||||
#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */
|
||||
#define E_NO_PERM -8 /* ordinary users can't send to tasks */
|
||||
#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */
|
||||
#define E_BAD_ADDR -10 /* bad address given to utility routine */
|
||||
#define E_BAD_PROC -11 /* bad proc number given to utility */
|
||||
#endif /* _SYSTEM */
|
||||
|
||||
#endif /* _ERRNO_H */
|
||||
@@ -0,0 +1,68 @@
|
||||
/* The <fcntl.h> header is needed by the open() and fcntl() system calls,
|
||||
* which have a variety of parameters and flags. They are described here.
|
||||
* The formats of the calls to each of these are:
|
||||
*
|
||||
* open(path, oflag [,mode]) open a file
|
||||
* fcntl(fd, cmd [,arg]) get or set file attributes
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _FCNTL_H
|
||||
#define _FCNTL_H
|
||||
|
||||
/* These values are used for cmd in fcntl(). POSIX Table 6-1. */
|
||||
#define F_DUPFD 0 /* duplicate file descriptor */
|
||||
#define F_GETFD 1 /* get file descriptor flags */
|
||||
#define F_SETFD 2 /* set file descriptor flags */
|
||||
#define F_GETFL 3 /* get file status flags */
|
||||
#define F_SETFL 4 /* set file status flags */
|
||||
#define F_GETLK 5 /* get record locking information */
|
||||
#define F_SETLK 6 /* set record locking information */
|
||||
#define F_SETLKW 7 /* set record locking info; wait if blocked */
|
||||
|
||||
/* File descriptor flags used for fcntl(). POSIX Table 6-2. */
|
||||
#define FD_CLOEXEC 1 /* close on exec flag for third arg of fcntl */
|
||||
|
||||
/* L_type values for record locking with fcntl(). POSIX Table 6-3. */
|
||||
#define F_RDLCK 0 /* shared or read lock */
|
||||
#define F_WRLCK 1 /* exclusive or write lock */
|
||||
#define F_UNLCK 2 /* unlock */
|
||||
|
||||
/* Oflag values for open(). POSIX Table 6-4. */
|
||||
#define O_CREAT 00100 /* creat file if it doesn't exist */
|
||||
#define O_EXCL 00200 /* exclusive use flag */
|
||||
#define O_NOCTTY 00400 /* do not assign a controlling terminal */
|
||||
#define O_TRUNC 01000 /* truncate flag */
|
||||
|
||||
/* File status flags for open() and fcntl(). POSIX Table 6-5. */
|
||||
#define O_APPEND 02000 /* set append mode */
|
||||
#define O_NONBLOCK 04000 /* no delay */
|
||||
|
||||
/* File access modes for open() and fcntl(). POSIX Table 6-6. */
|
||||
#define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */
|
||||
#define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */
|
||||
#define O_RDWR 2 /* open(name, O_RDWR) opens read/write */
|
||||
|
||||
/* Mask for use with file access modes. POSIX Table 6-7. */
|
||||
#define O_ACCMODE 03 /* mask for file access modes */
|
||||
|
||||
/* Struct used for locking. POSIX Table 6-8. */
|
||||
struct flock {
|
||||
short l_type; /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
|
||||
short l_whence; /* flag for starting offset */
|
||||
off_t l_start; /* relative offset in bytes */
|
||||
off_t l_len; /* size; if 0, then until EOF */
|
||||
pid_t l_pid; /* process id of the locks' owner */
|
||||
};
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int creat, (const char *_path, /* mode_t */ unsigned _mode) );
|
||||
_PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...) );
|
||||
_PROTOTYPE( int open, (const char *_path, int _oflag, ...) );
|
||||
|
||||
#endif /* _FCNTL_H */
|
||||
@@ -0,0 +1,68 @@
|
||||
/* The <fcntl.h> header is needed by the open() and fcntl() system calls,
|
||||
* which have a variety of parameters and flags. They are described here.
|
||||
* The formats of the calls to each of these are:
|
||||
*
|
||||
* open(path, oflag [mode]) open a file
|
||||
* fcntl(fd, cmd,[ arg]) get or set file attributes
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _FCNTL_H
|
||||
#define _FCNTL_H
|
||||
|
||||
/* These values are used for cmd in fcntl(). POSIX Table 6-1. */
|
||||
#define F_DUPFD 0 /* duplicate file descriptor */
|
||||
#define F_GETFD 1 /* get file descriptor flags */
|
||||
#define F_SETFD 2 /* set file descriptor flags */
|
||||
#define F_GETFL 3 /* get file status flags */
|
||||
#define F_SETFL 4 /* set file status flags */
|
||||
#define F_GETLK 5 /* get record locking information */
|
||||
#define F_SETLK 6 /* set record locking information */
|
||||
#define F_SETLKW 7 /* set record locking info; wait if blocked */
|
||||
|
||||
/* File descriptor flags used for fcntl(). POSIX Table 6-2. */
|
||||
#define FD_CLOEXEC 1 /* close on exec flag for third arg of fcntl */
|
||||
|
||||
/* L_type values for record locking with fcntl(). POSIX Table 6-3. */
|
||||
#define F_RDLCK 0 /* shared or read lock */
|
||||
#define F_WRLCK 1 /* exclusive or write lock */
|
||||
#define F_UNLCK 2 /* unlock */
|
||||
|
||||
/* Oflag values for open(). POSIX Table 6-4. */
|
||||
#define O_CREAT 00100 /* creat file if it doesn't exist */
|
||||
#define O_EXCL 00200 /* exclusive use flag */
|
||||
#define O_NOCTTY 00400 /* do not assign a controlling terminal */
|
||||
#define O_TRUNC 01000 /* truncate flag */
|
||||
|
||||
/* File status flags for open() and fcntl(). POSIX Table 6-5. */
|
||||
#define O_APPEND 02000 /* set append mode */
|
||||
#define O_NONBLOCK 04000 /* no delay */
|
||||
|
||||
/* File access modes for open() and fcntl(). POSIX Table 6-6. */
|
||||
#define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */
|
||||
#define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */
|
||||
#define O_RDWR 2 /* open(name, O_RDWR) opens read/write */
|
||||
|
||||
/* Mask for use with file access modes. POSIX Table 6-7. */
|
||||
#define O_ACCMODE 03 /* mask for file access modes */
|
||||
|
||||
/* Struct used for locking. POSIX Table 6-8. */
|
||||
struct flock {
|
||||
short l_type; /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
|
||||
short l_whence; /* flag for starting offset */
|
||||
off_t l_start; /* relative offset in bytes */
|
||||
off_t l_len; /* size; if 0, then until EOF */
|
||||
pid_t l_pid; /* process id of the locks' owner */
|
||||
};
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int creat, (const char *_path, /* mode_t */ unsigned _mode) );
|
||||
_PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...) );
|
||||
_PROTOTYPE( int open, (const char *_path, int _oflag, ...) );
|
||||
|
||||
#endif /* _FCNTL_H */
|
||||
@@ -0,0 +1,42 @@
|
||||
/* The <float.h> header defines some implementation limits for (IEEE) floating
|
||||
* point. Application programs can use it to find out how big and small
|
||||
* floating-point numbers can be, what epsilon to use for iteration, etc.
|
||||
*/
|
||||
|
||||
#ifndef _FLOAT_H
|
||||
#define _FLOAT_H
|
||||
|
||||
#define FLT_DIG 6
|
||||
#define FLT_EPSILON 1.19209290e-07
|
||||
#define FLT_MANT_DIG 24
|
||||
#define FLT_MAX 3.40282347e+38F
|
||||
#define FLT_MAX_10_EXP 38
|
||||
#define FLT_MAX_EXP 128
|
||||
#define FLT_MIN 1.17549435e-38F
|
||||
#define FLT_MIN_10_EXP -37
|
||||
#define FLT_MIN_EXP -125
|
||||
|
||||
#define DBL_DIG 15
|
||||
#define DBL_EPSILON 2.2204460492503131e-16
|
||||
#define DBL_MANT_DIG 53
|
||||
#define DBL_MAX 1.7976931348623157e+308
|
||||
#define DBL_MAX_10_EXP 308
|
||||
#define DBL_MAX_EXP 1024
|
||||
#define DBL_MIN 2.2250738585072014e-308
|
||||
#define DBL_MIN_10_EXP -307
|
||||
#define DBL_MIN_EXP -1021
|
||||
|
||||
#define LDBL_DIG 15
|
||||
#define LDBL_EPSILON 2.2204460492503131e-16
|
||||
#define LDBL_MANT_DIG 53
|
||||
#define LDBL_MAX 1.7976931348623157e+308L
|
||||
#define LDBL_MAX_10_EXP 308
|
||||
#define LDBL_MAX_EXP 1024
|
||||
#define LDBL_MIN 2.2250738585072014e-308L
|
||||
#define LDBL_MIN_10_EXP -307
|
||||
#define LDBL_MIN_EXP -1021
|
||||
|
||||
#define FLT_ROUNDS 1
|
||||
#define FLT_RADIX 2
|
||||
|
||||
#endif /* _FLOAT_H */
|
||||
@@ -0,0 +1,27 @@
|
||||
/* The <grp.h> header is used for the getgrid() and getgrnam() calls. */
|
||||
|
||||
#ifndef _GRP_H
|
||||
#define _GRP_H
|
||||
|
||||
struct group {
|
||||
char *gr_name; /* the name of the group */
|
||||
char *gr_passwd; /* the group passwd */
|
||||
gid_t gr_gid; /* the numerical group ID */
|
||||
char **gr_mem; /* a vector of pointers to the members */
|
||||
};
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( struct group *getgrgid, (int _gid) );
|
||||
_PROTOTYPE( struct group *getgrnam, (char *_name) );
|
||||
|
||||
#ifdef _MINIX
|
||||
_PROTOTYPE( void endgrent, (void) );
|
||||
_PROTOTYPE( struct group *getgrent, (void) );
|
||||
_PROTOTYPE( int setgrent, (void) );
|
||||
#endif
|
||||
|
||||
#endif /* _GRP_H */
|
||||
@@ -0,0 +1,136 @@
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* (c) Copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands */
|
||||
/* */
|
||||
/* This product is part of the Amoeba distributed operating system. */
|
||||
/* */
|
||||
/* Permission to use, sell, duplicate or disclose this software must be */
|
||||
/* obtained in writing. Requests for such permissions may be sent to */
|
||||
/* */
|
||||
/* */
|
||||
/* Dr. Andrew S. Tanenbaum */
|
||||
/* Dept. of Mathematics and Computer Science */
|
||||
/* Vrije Universiteit */
|
||||
/* Postbus 7161 */
|
||||
/* 1007 MC Amsterdam */
|
||||
/* The Netherlands */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
** This is the host_os.h file for Minix
|
||||
*/
|
||||
|
||||
#define SIGAMOEBA SIGEMT
|
||||
|
||||
#ifdef AM_KERNEL
|
||||
/*
|
||||
** to avoid altering trans.c, portcache.c, etc we need the following
|
||||
*/
|
||||
|
||||
#ifndef PRIVATE
|
||||
#define PRIVATE static
|
||||
#endif
|
||||
|
||||
/*
|
||||
** The following sequences of undefs and defines is to avoid clashes in the
|
||||
** naming of variables and constants in Amoeba and Minix.
|
||||
*/
|
||||
|
||||
#undef ABORT
|
||||
#undef ABORTED
|
||||
#undef ACK
|
||||
#undef ACKED
|
||||
#undef ALIVE
|
||||
#undef BADADDRESS
|
||||
#undef BROADCAST
|
||||
#undef BUFSIZE
|
||||
#undef CRASH
|
||||
#undef DEAD
|
||||
#undef DELETE
|
||||
#undef DONE
|
||||
#undef DONTKNOW
|
||||
#undef ENQUIRY
|
||||
#undef FAIL
|
||||
#undef FAILED
|
||||
#undef GLOBAL
|
||||
#undef HASHMASK
|
||||
#undef HEADERSIZE
|
||||
#undef HERE
|
||||
#undef IDLE
|
||||
#undef IMMORTAL
|
||||
#undef LAST
|
||||
#undef LOCAL
|
||||
#undef LOCATE
|
||||
#undef LOCATING
|
||||
#undef LOOK
|
||||
#undef MEMFAULT
|
||||
#undef MORTAL
|
||||
#undef NAK
|
||||
#undef NESTED
|
||||
#undef NHASH
|
||||
#undef NILVECTOR
|
||||
#undef NOSEND
|
||||
#undef NOTFOUND
|
||||
#undef NOWAIT
|
||||
#undef NOWHERE
|
||||
#undef PACKETSIZE
|
||||
#undef PORT
|
||||
#undef RECEIVING
|
||||
#undef REPLY
|
||||
#undef REQUEST
|
||||
#undef RETRANS
|
||||
#undef RUNNABLE
|
||||
#undef SEND
|
||||
#undef SENDING
|
||||
#undef SERVING
|
||||
#undef SOMEWHERE
|
||||
#undef TASK
|
||||
#undef TYPE
|
||||
#undef WAIT
|
||||
|
||||
#undef bit
|
||||
#undef concat
|
||||
#undef disable
|
||||
#undef enable
|
||||
#undef hash
|
||||
#undef hibyte
|
||||
#undef lobyte
|
||||
#undef siteaddr
|
||||
#undef sizeoftable
|
||||
|
||||
#define allocbuf am_allocbuf
|
||||
#define append am_append
|
||||
#define area am_area
|
||||
#define badassertion am_badassertion
|
||||
#define cleanup am_cleanup
|
||||
#define debug am_debug
|
||||
#define destroy am_destroy
|
||||
#define freebuf am_freebuf
|
||||
#define getall am_gall
|
||||
#define getbuf am_gbuf
|
||||
#define getreq am_greq
|
||||
#define getsig am_gsig
|
||||
#define handle am_handle
|
||||
#define locate am_locate
|
||||
#define netenable am_netenable
|
||||
#define netsweep am_sweep
|
||||
#define ntask am_ntsk
|
||||
#define pickoff am_pickoff
|
||||
#define porttab am_ptab
|
||||
#define puthead am_puthead
|
||||
#define putbuf am_pbuf
|
||||
#define putrep am_prep
|
||||
#define putsig am_psig
|
||||
#define sendsig am_sendsig
|
||||
#define sleep am_sleep
|
||||
#define task am_task
|
||||
#define ticker am_ticker
|
||||
#define timeout am_timeout
|
||||
#define trans am_trans
|
||||
#define umap am_umap
|
||||
#define uniqport am_uniqport
|
||||
#define uppertask am_uppertask
|
||||
#define wakeup am_wakeup
|
||||
|
||||
#endif /* AM_KERNEL */
|
||||
@@ -0,0 +1,39 @@
|
||||
/* The <lib.h> header is the master header used by the library.
|
||||
* All the C files in the lib subdirectories include it.
|
||||
*/
|
||||
|
||||
#ifndef _LIB_H
|
||||
#define _LIB_H
|
||||
|
||||
/* First come the defines. */
|
||||
#define _POSIX_SOURCE 1 /* tell headers to include POSIX stuff */
|
||||
#define _MINIX 1 /* tell headers to include MINIX stuff */
|
||||
|
||||
/* The following are so basic, all the lib files get them automatically. */
|
||||
#include <minix/config.h> /* must be first */
|
||||
#include <sys/types.h>
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <ansi.h>
|
||||
|
||||
#include <minix/const.h>
|
||||
#include <minix/type.h>
|
||||
#include <minix/callnr.h>
|
||||
|
||||
extern message _M;
|
||||
|
||||
#define MM 0
|
||||
#define FS 1
|
||||
|
||||
_PROTOTYPE( int _callm1, (int _proc, int _syscallnr,
|
||||
int _int1, int _int2, int _int3,
|
||||
char *_ptr1, char *_ptr2, char *_ptr3) );
|
||||
_PROTOTYPE( int _callm3, (int _proc, int _syscallnr, int _int1,
|
||||
const char *_name) );
|
||||
_PROTOTYPE( int _callx, (int _proc, int _syscallnr) );
|
||||
_PROTOTYPE( int _len, (const char *_s) );
|
||||
_PROTOTYPE( void panic, (const char *_message, int _errnum) );
|
||||
_PROTOTYPE( int _sendrec, (int _src_dest, message *_m_ptr) );
|
||||
_PROTOTYPE( void begsig, (int dummy) );
|
||||
|
||||
#endif /* _LIB_H */
|
||||
@@ -0,0 +1,39 @@
|
||||
/* The <lib.h> header is the master header used by the library.
|
||||
* All the C files in the lib subdirectories include it.
|
||||
*/
|
||||
|
||||
#ifndef _LIB_H
|
||||
#define _LIB_H
|
||||
|
||||
/* First come the defines. */
|
||||
#define _POSIX_SOURCE 1 /* tell headers to include POSIX stuff */
|
||||
#define _MINIX 1 /* tell headers to include MINIX stuff */
|
||||
|
||||
/* The following are so basic, all the lib files get them automatically. */
|
||||
#include <minix/config.h> /* must be first */
|
||||
#include <sys/types.h>
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <ansi.h>
|
||||
|
||||
#include <minix/const.h>
|
||||
#include <minix/type.h>
|
||||
#include <minix/callnr.h>
|
||||
|
||||
extern message _M;
|
||||
|
||||
#define MM 0
|
||||
#define FS 1
|
||||
|
||||
_PROTOTYPE( int _callm1, (int _proc, int _syscallnr,
|
||||
int _int1, int _int2, int _int3,
|
||||
char *_ptr1, char *_ptr2, char *_ptr3) );
|
||||
_PROTOTYPE( int _callm3, (int _proc, int _syscallnr, int _int1,
|
||||
const char *_name) );
|
||||
_PROTOTYPE( int _callx, (int _proc, int _syscallnr) );
|
||||
_PROTOTYPE( int _len, (const char *_s) );
|
||||
_PROTOTYPE( void panic, (const char *_message, int _errnum) );
|
||||
_PROTOTYPE( int _sendrec, (int _src_dest, message *_m_ptr) );
|
||||
extern _PROTOTYPE( void begsig, (int _dummy) );
|
||||
|
||||
#endif /* _LIB_H */
|
||||
@@ -0,0 +1,63 @@
|
||||
/* The <limits.h> header defines some basic sizes, both of the language types
|
||||
* (e.g., the number of bits in an integer), and of the operating system (e.g.
|
||||
* the number of characters in a file name.
|
||||
*/
|
||||
|
||||
#ifndef _LIMITS_H
|
||||
#define _LIMITS_H
|
||||
|
||||
/* Definitions about chars (8 bits in MINIX, and signed). */
|
||||
#define CHAR_BIT 8 /* # bits in a char */
|
||||
#define CHAR_MIN -128 /* minimum value of a char */
|
||||
#define CHAR_MAX 127 /* maximum value of a char */
|
||||
#define SCHAR_MIN -128 /* minimum value of a signed char */
|
||||
#define SCHAR_MAX 127 /* maximum value of a signed char */
|
||||
#define UCHAR_MAX 255 /* maximum value of an unsigned char */
|
||||
#define MB_LEN_MAX 1 /* maximum length of a multibyte char */
|
||||
|
||||
/* Definitions about shorts (16 bits in MINIX). */
|
||||
#define SHRT_MIN (-32767-1) /* minimum value of a short */
|
||||
#define SHRT_MAX 32767 /* maximum value of a short */
|
||||
#define USHRT_MAX 65535 /* maximum value of unsigned short */
|
||||
|
||||
/* Definitions about ints (16 bits in MINIX for 8088, 80286, Atari etc) */
|
||||
#define INT_MIN (-32767-1) /* minimum value of an int */
|
||||
#define INT_MAX 32767 /* maximum value of an int */
|
||||
#define UINT_MAX 65535 /* maximum value of an unsigned int */
|
||||
|
||||
/*Definitions about longs (32 bits in MINIX). */
|
||||
#define LONG_MIN (-2147483647-1)/* minimum value of a long */
|
||||
#define LONG_MAX 2147483647L /* maximum value of a long */
|
||||
#define ULONG_MAX 4294967295L /* maximum value of an unsigned long */
|
||||
|
||||
/* Minimum sizes required by the POSIX P1003.1 standard (Table 2-2). */
|
||||
#ifdef _POSIX_SOURCE /* these are only visible for POSIX */
|
||||
#define _POSIX_ARG_MAX 4096 /* exec() may have 4K worth of args */
|
||||
#define _POSIX_CHILD_MAX 6 /* a process may have 6 children */
|
||||
#define _POSIX_LINK_MAX 8 /* a file may have 8 links */
|
||||
#define _POSIX_MAX_CANON 255 /* size of the canonical input queue */
|
||||
#define _POSIX_MAX_INPUT 255 /* you can type 255 chars ahead */
|
||||
#define _POSIX_NAME_MAX 14 /* a file name may have 14 chars */
|
||||
#define _POSIX_NGROUPS_MAX 0 /* supplementary group IDs are optional */
|
||||
#define _POSIX_OPEN_MAX 16 /* a process may have 16 files open */
|
||||
#define _POSIX_PATH_MAX 255 /* a pathname may contain 255 chars */
|
||||
#define _POSIX_PIPE_BUF 512 /* pipes writes of 512 bytes are atomic */
|
||||
|
||||
/* Values actually implemented by MINIX (Tables 2-3, 2-4, and 2-5). */
|
||||
/* Some of these old names had better be defined when not POSIX. */
|
||||
#define _NO_LIMIT 100 /* arbitrary number; limit not enforced */
|
||||
|
||||
#define NGROUPS_MAX 0 /* supplemental group IDs not available */
|
||||
#define ARG_MAX 4096 /* # bytes of args + environ for exec() */
|
||||
#define CHILD_MAX _NO_LIMIT /* MINIX does not limit children */
|
||||
#define OPEN_MAX 20 /* # open files a process may have */
|
||||
#define LINK_MAX 127 /* # links a file may have */
|
||||
#define MAX_CANON 255 /* size of the canonical input queue */
|
||||
#define MAX_INPUT 255 /* size of the type-ahead buffer */
|
||||
#define NAME_MAX 14 /* # chars in a file name */
|
||||
#define PATH_MAX 255 /* # chars in a path name */
|
||||
#define PIPE_BUF 512 /* # bytes in atomic write to a pipe */
|
||||
|
||||
#endif /* _POSIX_SOURCE */
|
||||
|
||||
#endif /* _LIMITS_H */
|
||||
@@ -0,0 +1,47 @@
|
||||
/* The <locale.h> header is used to custom tailor currency symbols, decimal
|
||||
* points, and other items to the local style. It is ANSI's attempt at
|
||||
* avoiding cultural imperialism. The locale given below is for C.
|
||||
*/
|
||||
|
||||
#ifndef _LOCALE_H
|
||||
#define _LOCALE_H
|
||||
|
||||
struct lconv {
|
||||
char *decimal_point; /* "." */
|
||||
char *thousands_sep; /* "" */
|
||||
char *grouping; /* "" */
|
||||
char *int_curr_symbol; /* "" */
|
||||
char *currency_symbol; /* "" */
|
||||
char *mon_decimal_point; /* "" */
|
||||
char *mon_thousands_sep; /* "" */
|
||||
char *mon_grouping; /* "" */
|
||||
char *positive_sign; /* "" */
|
||||
char *negative_sign; /* "" */
|
||||
char int_frac_digits; /* CHAR_MAX */
|
||||
char frac_digits; /* CHAR_MAX */
|
||||
char p_cs_precedes; /* CHAR_MAX */
|
||||
char p_sep_by_space; /* CHAR_MAX */
|
||||
char n_cs_precedes; /* CHAR_MAX */
|
||||
char n_sep_by_space; /* CHAR_MAX */
|
||||
char p_sign_posn; /* CHAR_MAX */
|
||||
char n_sign_posn; /* CHAR_MAX */
|
||||
};
|
||||
|
||||
#define NULL ((void *)0)
|
||||
|
||||
#define LC_ALL 1
|
||||
#define LC_COLLATE 2
|
||||
#define LC_CTYPE 3
|
||||
#define LC_MONETARY 4
|
||||
#define LC_NUMERIC 5
|
||||
#define LC_TIME 6
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( char *setlocale, (int _category, const char *_locale) );
|
||||
_PROTOTYPE( struct lconv *localeconv, (void) );
|
||||
|
||||
#endif /* _LOCALE_H */
|
||||
@@ -0,0 +1,36 @@
|
||||
/* The <math.h> header contains prototypes for mathematical functions. */
|
||||
|
||||
#ifndef _MATH_H
|
||||
#define _MATH_H
|
||||
|
||||
#define HUGE_VAL 9.9e+999 /* though it will generate a warning */
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( double acos, (double _x) );
|
||||
_PROTOTYPE( double asin, (double _x) );
|
||||
_PROTOTYPE( double atan, (double _x) );
|
||||
_PROTOTYPE( double atan2, (double _y, double _x) );
|
||||
_PROTOTYPE( double ceil, (double _x) );
|
||||
_PROTOTYPE( double cos, (double _x) );
|
||||
_PROTOTYPE( double cosh, (double _x) );
|
||||
_PROTOTYPE( double exp, (double _x) );
|
||||
_PROTOTYPE( double fabs, (double _x) );
|
||||
_PROTOTYPE( double floor, (double _x) );
|
||||
_PROTOTYPE( double fmod, (double _x, double _y) );
|
||||
_PROTOTYPE( double frexp, (double _x, int *_exp) );
|
||||
_PROTOTYPE( double ldexp, (double _x, int _exp) );
|
||||
_PROTOTYPE( double log, (double _x) );
|
||||
_PROTOTYPE( double log10, (double _x) );
|
||||
_PROTOTYPE( double modf, (double _x, double *_iptr) );
|
||||
_PROTOTYPE( double pow, (double _x, double _y) );
|
||||
_PROTOTYPE( double sin, (double _x) );
|
||||
_PROTOTYPE( double sinh, (double _x) );
|
||||
_PROTOTYPE( double sqrt, (double _x) );
|
||||
_PROTOTYPE( double tan, (double _x) );
|
||||
_PROTOTYPE( double tanh, (double _x) );
|
||||
|
||||
#endif /* _MATH_H */
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* mathconst.h - mathematic constants
|
||||
*/
|
||||
/* $Header: mathconst.h,v 1.3 89/12/18 13:59:33 eck Exp $ */
|
||||
|
||||
#if !defined(_MATHCONST_H)
|
||||
#define _MATHCONST_H
|
||||
|
||||
/* some constants (Hart & Cheney) */
|
||||
#define M_PI 3.14159265358979323846264338327950288
|
||||
#define M_2PI 6.28318530717958647692528676655900576
|
||||
#define M_3PI_4 2.35619449019234492884698253745962716
|
||||
#define M_PI_2 1.57079632679489661923132169163975144
|
||||
#define M_3PI_8 1.17809724509617246442349126872981358
|
||||
#define M_PI_4 0.78539816339744830961566084581987572
|
||||
#define M_PI_8 0.39269908169872415480783042290993786
|
||||
#define M_1_PI 0.31830988618379067153776752674502872
|
||||
#define M_2_PI 0.63661977236758134307553505349005744
|
||||
#define M_4_PI 1.27323954473516268615107010698011488
|
||||
#define M_E 2.71828182845904523536028747135266250
|
||||
#define M_LOG2E 1.44269504088896340735992468100189213
|
||||
#define M_LOG10E 0.43429448190325182765112891891660508
|
||||
#define M_LN2 0.69314718055994530941723212145817657
|
||||
#define M_LN10 2.30258509299404568401799145468436421
|
||||
#define M_SQRT2 1.41421356237309504880168872420969808
|
||||
#define M_1_SQRT2 0.70710678118654752440084436210484904
|
||||
#define M_EULER 0.57721566490153286060651209008240243
|
||||
|
||||
#endif /* _MATHCONST_H */
|
||||
@@ -0,0 +1,43 @@
|
||||
/* boot.h */
|
||||
|
||||
/* Redefine root and root image devices as variables.
|
||||
* This keeps the diffs small but may cause future confusion.
|
||||
*/
|
||||
#define BOOT_DEV (boot_parameters.bp_ramimagedev)
|
||||
#define ROOT_DEV (boot_parameters.bp_rootdev)
|
||||
|
||||
/* Device numbers of RAM, floppy and hard disk devices.
|
||||
* h/com.h defines RAM_DEV but only as the minor number.
|
||||
*/
|
||||
#define DEV_FD0 0x200
|
||||
#define DEV_HD0 0x300
|
||||
#define DEV_RAM 0x100
|
||||
|
||||
/* Default device numbers for root and root image.
|
||||
* Root image is only used when root is /dev/ram.
|
||||
*/
|
||||
#define DRAMIMAGEDEV (DEV_FD0 + 0)
|
||||
#define DROOTDEV (DEV_RAM + 0)
|
||||
|
||||
/* Default RAM disk size.
|
||||
* Not used if root is /dev/ram when size is from root image.
|
||||
*/
|
||||
#define DRAMSIZE 0
|
||||
|
||||
/* Default scan code to fake a PC keyboard. */
|
||||
#define DSCANCODE 13
|
||||
|
||||
/* Default processor type for no restriction (88 would force 386 to 88). */
|
||||
#define DPROCESSOR 0xFFFF
|
||||
|
||||
/* Structure to hold boot parameters. */
|
||||
struct bparam_s
|
||||
{
|
||||
dev_t bp_rootdev;
|
||||
dev_t bp_ramimagedev;
|
||||
unsigned short bp_ramsize;
|
||||
unsigned short bp_scancode; /* still put into BX for kernel */
|
||||
unsigned short bp_processor;
|
||||
};
|
||||
|
||||
extern struct bparam_s boot_parameters;
|
||||
@@ -0,0 +1,58 @@
|
||||
#define NCALLS 70 /* number of system calls allowed */
|
||||
|
||||
#define EXIT 1
|
||||
#define FORK 2
|
||||
#define READ 3
|
||||
#define WRITE 4
|
||||
#define OPEN 5
|
||||
#define CLOSE 6
|
||||
#define WAIT 7
|
||||
#define CREAT 8
|
||||
#define LINK 9
|
||||
#define UNLINK 10
|
||||
#define CHDIR 12
|
||||
#define TIME 13
|
||||
#define MKNOD 14
|
||||
#define CHMOD 15
|
||||
#define CHOWN 16
|
||||
#define BRK 17
|
||||
#define STAT 18
|
||||
#define LSEEK 19
|
||||
#define GETPID 20
|
||||
#define MOUNT 21
|
||||
#define UMOUNT 22
|
||||
#define SETUID 23
|
||||
#define GETUID 24
|
||||
#define STIME 25
|
||||
#define PTRACE 26
|
||||
#define ALARM 27
|
||||
#define FSTAT 28
|
||||
#define PAUSE 29
|
||||
#define UTIME 30
|
||||
#define ACCESS 33
|
||||
#define SYNC 36
|
||||
#define KILL 37
|
||||
#define RENAME 38
|
||||
#define MKDIR 39
|
||||
#define RMDIR 40
|
||||
#define DUP 41
|
||||
#define PIPE 42
|
||||
#define TIMES 43
|
||||
#define SETGID 46
|
||||
#define GETGID 47
|
||||
#define SIGNAL 48
|
||||
#define IOCTL 54
|
||||
#define FCNTL 55
|
||||
#define EXEC 59
|
||||
#define UMASK 60
|
||||
#define CHROOT 61
|
||||
|
||||
/* The following are not system calls, but are processed like them. */
|
||||
#define KSIG 64 /* kernel detected a signal */
|
||||
#define UNPAUSE 65 /* to MM or FS: check for EINTR */
|
||||
#define BRK2 66 /* to MM: used to say how big FS & INIT are */
|
||||
#define REVIVE 67 /* to FS: revive a sleeping process */
|
||||
#define TASK_REPLY 68 /* to FS: reply code from tty task */
|
||||
|
||||
/* The following IS a system call for amoeba transactions */
|
||||
#define AM_SYSCALL 69
|
||||
@@ -0,0 +1,166 @@
|
||||
/* System calls. */
|
||||
#define SEND 1 /* function code for sending messages */
|
||||
#define RECEIVE 2 /* function code for receiving messages */
|
||||
#define BOTH 3 /* function code for SEND + RECEIVE */
|
||||
#define ANY (NR_PROCS+100) /* receive(ANY, buf) accepts from any source */
|
||||
|
||||
/* Task numbers, function codes and reply codes. */
|
||||
|
||||
#define TTY -NR_TASKS /* terminal I/O class */
|
||||
# define TTY_READ 3 /* fcn code for reading from tty */
|
||||
# define TTY_WRITE 4 /* fcn code for writing to tty */
|
||||
# define TTY_IOCTL 5 /* fcn code for ioctl */
|
||||
# define TTY_SETPGRP 6 /* fcn code for setpgrp */
|
||||
# define TTY_OPEN 7 /* fcn code for opening tty */
|
||||
# define TTY_CLOSE 8 /* fcn code for closing tty */
|
||||
# define SUSPEND -998 /* used in interrupts when tty has no data */
|
||||
|
||||
#ifdef AM_KERNEL
|
||||
#define AMOEBA
|
||||
#endif
|
||||
|
||||
#ifdef AMOEBA
|
||||
|
||||
/* There are AM_NTASK copies of the amoeba kernel task.
|
||||
* If you change AM_NTASKS be sure to adjust kernel/table.c and fs/table.c
|
||||
*/
|
||||
#define AM_NTASKS 4 /* number of kernel tasks of this class */
|
||||
|
||||
#define AMINT_CLASS (TTY+1) /* Amoeba event handler */
|
||||
#define AMOEBA_CLASS (AMINT_CLASS+AM_NTASKS) /* transaction handlers */
|
||||
# define ETHER_ARRIV 1 /* fcn code for packet arrival */
|
||||
# define AM_TRANS 2 /* amoeba transaction */
|
||||
# define AM_GETREQ 3 /* amoeba getrequest */
|
||||
# define AM_PUTREP 4 /* amoeba putrep */
|
||||
# define AM_REVIVE 6 /* used by kernel task to revive luser task */
|
||||
# define AM_TIMEOUT 8 /* used to talk to clock task */
|
||||
# define AM_PUTSIG 9 /* when the luser hits the DEL ! */
|
||||
# define AM_TASK_DIED 10 /* sent if task died during a transaction */
|
||||
|
||||
#else /* if AMOEBA not defined */
|
||||
|
||||
#define AMOEBA_CLASS TTY
|
||||
|
||||
#endif /* AMOEBA */
|
||||
|
||||
/*
|
||||
* New class definitions should go here and should be defined relative
|
||||
* to AMOEBA_CLASS (ie. as AMOEBA_CLASS+n, for the nth task added).
|
||||
*/
|
||||
|
||||
#define IDLE (AMOEBA_CLASS+1) /* task to run when there's nothing to run */
|
||||
|
||||
#define PRINTER -7 /* printer I/O class */
|
||||
/* The printer uses the same commands as TTY. */
|
||||
|
||||
#define WINCHESTER -6 /* winchester (hard) disk class */
|
||||
#define FLOPPY -5 /* floppy disk class */
|
||||
# define DISK_READ 3 /* fcn code to DISK (must equal TTY_READ) */
|
||||
# define DISK_WRITE 4 /* fcn code to DISK (must equal TTY_WRITE) */
|
||||
# define DISK_IOCTL 5 /* fcn code for setting up RAM disk */
|
||||
# define SCATTERED_IO 6 /* fcn code for multiple reads/writes */
|
||||
# define OPTIONAL_IO 16 /* modifier to DISK_* codes within vector */
|
||||
|
||||
#define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */
|
||||
# define RAM_DEV 0 /* minor device for /dev/ram */
|
||||
# define MEM_DEV 1 /* minor device for /dev/mem */
|
||||
# define KMEM_DEV 2 /* minor device for /dev/kmem */
|
||||
# define NULL_DEV 3 /* minor device for /dev/null */
|
||||
#if (CHIP == INTEL)
|
||||
# define PORT_DEV 4 /* minor device for /dev/port */
|
||||
#endif
|
||||
|
||||
#define CLOCK -3 /* clock class */
|
||||
# define SET_ALARM 1 /* fcn code to CLOCK, set up alarm */
|
||||
# define GET_TIME 3 /* fcn code to CLOCK, get real time */
|
||||
# define SET_TIME 4 /* fcn code to CLOCK, set real time */
|
||||
# define REAL_TIME 1 /* reply from CLOCK: here is real time */
|
||||
|
||||
#define SYSTASK -2 /* internal functions */
|
||||
# define SYS_XIT 1 /* fcn code for sys_xit(parent, proc) */
|
||||
# define SYS_GETSP 2 /* fcn code for sys_sp(proc, &new_sp) */
|
||||
# define SYS_SIG 3 /* fcn code for sys_sig(proc, sig) */
|
||||
# define SYS_FORK 4 /* fcn code for sys_fork(parent, child) */
|
||||
# define SYS_NEWMAP 5 /* fcn code for sys_newmap(procno, map_ptr) */
|
||||
# define SYS_COPY 6 /* fcn code for sys_copy(ptr) */
|
||||
# define SYS_EXEC 7 /* fcn code for sys_exec(procno, new_sp) */
|
||||
# define SYS_TIMES 8 /* fcn code for sys_times(procno, bufptr) */
|
||||
# define SYS_ABORT 9 /* fcn code for sys_abort() */
|
||||
# define SYS_FRESH 10 /* fcn code for sys_fresh() (Atari only) */
|
||||
# define SYS_KILL 11 /* fcn code for sys_kill(proc, sig) */
|
||||
# define SYS_GBOOT 12 /* fcn code for sys_gboot(procno, bootptr) */
|
||||
# define SYS_UMAP 13 /* fcn code for sys_umap(procno, etc) */
|
||||
# define SYS_MEM 14 /* fcn code for sys_mem() */
|
||||
# define SYS_TRACE 15 /* fcn code for sys_trace(req,pid,addr,data) */
|
||||
|
||||
#define HARDWARE -1 /* used as source on interrupt generated msgs*/
|
||||
|
||||
/* Names of message fields for messages to CLOCK task. */
|
||||
#define DELTA_TICKS m6_l1 /* alarm interval in clock ticks */
|
||||
#define FUNC_TO_CALL m6_f1 /* pointer to function to call */
|
||||
#define NEW_TIME m6_l1 /* value to set clock to (SET_TIME) */
|
||||
#define CLOCK_PROC_NR m6_i1 /* which proc (or task) wants the alarm? */
|
||||
#define SECONDS_LEFT m6_l1 /* how many seconds were remaining */
|
||||
|
||||
/* Names of message fields used for messages to block and character tasks. */
|
||||
#define DEVICE m2_i1 /* major-minor device */
|
||||
#define PROC_NR m2_i2 /* which (proc) wants I/O? */
|
||||
#define COUNT m2_i3 /* how many bytes to transfer */
|
||||
#define POSITION m2_l1 /* file offset */
|
||||
#define ADDRESS m2_p1 /* core buffer address */
|
||||
|
||||
/* Names of message fields for messages to TTY task. */
|
||||
#define TTY_LINE m2_i1 /* message parameter: terminal line */
|
||||
#define TTY_REQUEST m2_i3 /* message parameter: ioctl request code */
|
||||
#define TTY_SPEK m2_l1 /* message parameter: ioctl speed, erasing */
|
||||
#define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */
|
||||
#define TTY_PGRP m2_i3 /* message parameter: process group */
|
||||
|
||||
/* Names of messages fields used in reply messages from tasks. */
|
||||
#define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */
|
||||
#define REP_STATUS m2_i2 /* bytes transferred or error number */
|
||||
|
||||
/* Names of fields for copy message to SYSTASK. */
|
||||
#define SRC_SPACE m5_c1 /* T or D space (stack is also D) */
|
||||
#define SRC_PROC_NR m5_i1 /* process to copy from */
|
||||
#define SRC_BUFFER m5_l1 /* virtual address where data come from */
|
||||
#define DST_SPACE m5_c2 /* T or D space (stack is also D) */
|
||||
#define DST_PROC_NR m5_i2 /* process to copy to */
|
||||
#define DST_BUFFER m5_l2 /* virtual address where data go to */
|
||||
#define COPY_BYTES m5_l3 /* number of bytes to copy */
|
||||
|
||||
/* Field names for accounting, SYSTASK and miscellaneous. */
|
||||
#define USER_TIME m4_l1 /* user time consumed by process */
|
||||
#define SYSTEM_TIME m4_l2 /* system time consumed by process */
|
||||
#define CHILD_UTIME m4_l3 /* user time consumed by process' children */
|
||||
#define CHILD_STIME m4_l4 /* sys time consumed by process' children */
|
||||
|
||||
#define PROC1 m1_i1 /* indicates a process */
|
||||
#define PROC2 m1_i2 /* indicates a process */
|
||||
#define PID m1_i3 /* process id passed from MM to kernel */
|
||||
#define STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */
|
||||
#define PR m6_i1 /* process number for sys_sig */
|
||||
#define SIGNUM m6_i2 /* signal number for sys_sig */
|
||||
#define FUNC m6_f1 /* function pointer for sys_sig */
|
||||
#define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
|
||||
#define CANCEL 0 /* general request to force a task to cancel */
|
||||
#define SIG_MAP m1_i2 /* used by kernel for passing signal bit map */
|
||||
|
||||
#ifdef AMOEBA
|
||||
|
||||
/* Names of message fields for amoeba tasks */
|
||||
#define AM_OP m2_i1 /* one of the above operators */
|
||||
#define AM_PROC_NR m2_i2 /* process # of proc doing operation */
|
||||
#define AM_COUNT m2_i3 /* size of buffer for operation */
|
||||
#define AM_ADDRESS m2_p1 /* address of buffer for operation */
|
||||
|
||||
/* For communication between MM and AMOEBA_CLASS kernel tasks */
|
||||
#define AM_STATUS m2_i3 /* same use as REP_STATUS but for amoeba */
|
||||
#define AM_FREE_IT m2_l1 /* 1=not a getreq, 0=is a getreq */
|
||||
|
||||
/* Special for passing a physical address from the ethernet driver */
|
||||
#define AM_PADDR m2_l1 /* to the transaction layer */
|
||||
|
||||
#endif /* AMOEBA */
|
||||
|
||||
#define HARD_INT 2 /* fcn code for all hardware interrupts */
|
||||
@@ -0,0 +1,111 @@
|
||||
/* This file sets configuration parameters for the MINIX kernel, FS, and MM.
|
||||
* It is divided up into two main sections. The first section contains
|
||||
* user-settable parameters. In the second section, various internal system
|
||||
* parameters are set based on the user-settable parameters.
|
||||
*/
|
||||
|
||||
/*===========================================================================*
|
||||
* This section contains user-settable parameters *
|
||||
*===========================================================================*/
|
||||
|
||||
/* MACHINE must be set to one of the machine types list below. */
|
||||
#define MACHINE IBM_PC /* Must be one of the names listed below */
|
||||
#define IBM_PC 1 /* any 8088 or 80286-based system */
|
||||
#define IBM_386 3 /* any 80386-based system, IBM or clone */
|
||||
#define IBM_486 4 /* any 80486-based system, IBM or clone */
|
||||
#define IBM_586 5 /* any 80586-based system, IBM or clone */
|
||||
#define PS2_30 23 /* IBM PS/2 model 30 (8086) */
|
||||
#define PS2_50 25 /* IBM PS/2 model 50 or 60 (80286) */
|
||||
#define PS2_70 27 /* IBM PS/2 model 70 or 80 (80386) */
|
||||
#define SUN_4 40 /* any SUN SPARC-based system */
|
||||
#define ATARI 60 /* ATARI ST (68000) */
|
||||
#define AMIGA 61 /* Commodore Amiga (68000) */
|
||||
#define MACINTOSH 62 /* Apple Macintosh (68000) */
|
||||
|
||||
|
||||
/* If ROBUST is set to 1, writes of i-node, directory, and indirect blocks
|
||||
* from the cache happen as soon as the blocks are modified. This gives a more
|
||||
* robust, but slower, file system. If it is set to 0, these blocks are not
|
||||
* given any special treatment, which may cause problems if the system crashes.
|
||||
*/
|
||||
#define ROBUST 0 /* 0 for speed, 1 for robustness */
|
||||
|
||||
/* If HAVE_SCATTERED_IO is set to 1, scattered I/O is enabled. */
|
||||
/* DEBUG - 1.4b will always use this. */
|
||||
#define HAVE_SCATTERED_IO 1
|
||||
|
||||
|
||||
/* The buffer cache should be made as large as you can afford. */
|
||||
#if INTEL_32BITS
|
||||
#define NR_BUFS 320 /* # blocks in the buffer cache */
|
||||
#define NR_BUF_HASH 512 /* size of buf hash table; MUST BE POWER OF 2*/
|
||||
#else
|
||||
#define NR_BUFS 30 /* # blocks in the buffer cache */
|
||||
#define NR_BUF_HASH 32 /* size of buf hash table; MUST BE POWER OF 2*/
|
||||
#endif
|
||||
|
||||
|
||||
/* Defines for kernel configuration. */
|
||||
#define AUTO_BIOS 0 /* xt_wini.c - use Western's autoconfig BIOS */
|
||||
#define C_RS232_INT_HANDLERS 0 /* rs232.c - use slower C int handlers */
|
||||
#define DEFAULT_CLASS 0 /* floppy.c - 3 or 5 to get only that size */
|
||||
#define LINEWRAP 0 /* console.c - wrap lines at column 80 */
|
||||
#define NO_HANDSHAKE 0 /* rs232.c - don't use CTS/RTS handshaking */
|
||||
#define STUPID_WINI_ADJUST 0 /* *wini.c - skip odd 1st sector of partition*/
|
||||
|
||||
/* These configuration defines control debugging and unfinished code. */
|
||||
#define FLOPPY_TIMING 0 /* floppy.c - for fine tuning floppy driver */
|
||||
#define MONITOR 0 /* xt_wini.c - monitor loop in w_wait_int */
|
||||
#define RECORD_FLOPPY_SKEW 0 /* floppy.c - for deciding nr_sectors */
|
||||
|
||||
/* These configuration defines control worthless code. */
|
||||
#define SPARE_VIDEO_MEMORY 0 /* misc.c - use memory from any 2nd vid card */
|
||||
#define SPLIMITS 0 /* mpx*.x - set stack limits (never checked) */
|
||||
|
||||
|
||||
/*===========================================================================*
|
||||
* There are no user-settable parameters after this line *
|
||||
*===========================================================================*/
|
||||
/* Set the CHIP type based on the machine selected. The symbol CHIP is actually
|
||||
* indicative of more than just the CPU. For example, machines for which
|
||||
* CHIP == INTEL are expected to have 8259A interrrupt controllers and the
|
||||
* other properties of IBM PC/XT/AT/386 types machines in general. */
|
||||
#define INTEL 1 /* CHIP type for PC, XT, AT, 386 and clones */
|
||||
#define M68000 2 /* CHIP type for Atari, Amiga, Macintosh */
|
||||
#define SPARC 3 /* CHIP type for SUN-4 (e.g. SPARCstation) */
|
||||
|
||||
#if MACHINE <= PS2_70
|
||||
#define CHIP INTEL
|
||||
#endif
|
||||
|
||||
#if (MACHINE == ATARI) | (MACHINE == AMIGA) | (MACHINE == MACINTOSH)
|
||||
#define CHIP M68000
|
||||
#endif
|
||||
|
||||
#if (MACHINE == SUN_4)
|
||||
#define CHIP SPARC
|
||||
#endif
|
||||
|
||||
#if MACHINE == ATARI
|
||||
#define ASKDEV 1 /* ask for boot device */
|
||||
#define FASTLOAD 1 /* use multiple block transfers to init ram */
|
||||
#endif
|
||||
|
||||
/* The file buf.h uses MAYBE_WRITE_IMMED. */
|
||||
#if ROBUST
|
||||
#define MAYBE_WRITE_IMMED WRITE_IMMED /* slower but perhaps safer */
|
||||
#else
|
||||
#define MAYBE_WRITE_IMMED 0 /* faster */
|
||||
#endif
|
||||
|
||||
#ifndef MACHINE
|
||||
#error "In <minix/config.h> please define MACHINE"
|
||||
#endif
|
||||
|
||||
#ifndef CHIP
|
||||
#error "In <minix/config.h> please define MACHINE to have a legal value"
|
||||
#endif
|
||||
|
||||
#if (MACHINE == 0)
|
||||
#error "MACHINE has incorrect value (0)"
|
||||
#endif
|
||||
@@ -0,0 +1,88 @@
|
||||
/* Copyright (C) 1990 by Prentice-Hall, Inc. Permission is hereby granted
|
||||
* to redistribute the binary and source programs of this system for
|
||||
* educational or research purposes. For other use, written permission from
|
||||
* Prentice-Hall is required.
|
||||
*/
|
||||
|
||||
#define EXTERN extern /* used in *.h files */
|
||||
#define PRIVATE static /* PRIVATE x limits the scope of x */
|
||||
#define PUBLIC /* PUBLIC is the opposite of PRIVATE */
|
||||
#define FORWARD static /* some compilers require this to be 'static'*/
|
||||
|
||||
#define TRUE 1 /* used for turning integers into Booleans */
|
||||
#define FALSE 0 /* used for turning integers into Booleans */
|
||||
|
||||
#define HZ 60 /* clock freq (software settable on IBM-PC) */
|
||||
#define BLOCK_SIZE 1024 /* # bytes in a disk block */
|
||||
#define SUPER_USER (uid_t) 0 /* uid_t of superuser */
|
||||
|
||||
#define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
|
||||
#define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
|
||||
|
||||
#ifdef AM_KERNEL
|
||||
#define NR_TASKS 14 /* must be 5 more than without amoeba */
|
||||
#else
|
||||
#define NR_TASKS 9 /* number of tasks in the transfer vector */
|
||||
#endif
|
||||
|
||||
#define NR_PROCS 32 /* number of slots in proc table */
|
||||
#define NR_SEGS 3 /* # segments per process */
|
||||
#define T 0 /* proc[i].mem_map[T] is for text */
|
||||
#define D 1 /* proc[i].mem_map[D] is for data */
|
||||
#define S 2 /* proc[i].mem_map[S] is for stack */
|
||||
|
||||
#define MAX_P_LONG 2147483647 /* maximum positive long, i.e. 2**31 - 1 */
|
||||
|
||||
/* Memory is allocated in clicks. */
|
||||
#if (CHIP == INTEL) || (CHIP == M68000)
|
||||
#define CLICK_SIZE 256 /* unit in which memory is allocated */
|
||||
#define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */
|
||||
#endif
|
||||
|
||||
#define click_to_round_k(n) \
|
||||
((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
|
||||
#if CLICK_SIZE < 1024
|
||||
#define k_to_click(n) ((n) * (1024 / CLICK_SIZE))
|
||||
#else
|
||||
#define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
|
||||
#endif
|
||||
|
||||
/* Process numbers of some important processes */
|
||||
#define MM_PROC_NR 0 /* process number of memory manager */
|
||||
#define FS_PROC_NR 1 /* process number of file system */
|
||||
#define INIT_PROC_NR 2 /* init -- the process that goes multiuser */
|
||||
#define LOW_USER 2 /* first user not part of operating system */
|
||||
|
||||
/* Miscellaneous */
|
||||
#define BYTE 0377 /* mask for 8 bits */
|
||||
#define TO_USER 0 /* flag telling to copy from fs to user */
|
||||
#define FROM_USER 1 /* flag telling to copy from user to fs */
|
||||
#define READING 0 /* copy data to user */
|
||||
#define WRITING 1 /* copy data from user */
|
||||
|
||||
#if (MACHINE != ATARI)
|
||||
#define ABS -999 /* this process means absolute memory */
|
||||
#endif
|
||||
|
||||
#define WORD_SIZE 2 /* number of bytes per word */
|
||||
|
||||
#define NIL_PTR (char *) 0 /* generally useful expression */
|
||||
|
||||
#define NO_NUM 0x8000 /* used as numerical argument to panic() */
|
||||
#define SIG_PUSH_BYTES (4*sizeof(int)) /* how many bytes pushed by signal */
|
||||
|
||||
/* Flag bits for i_mode in the inode. */
|
||||
#define I_TYPE 0170000 /* this field gives inode type */
|
||||
#define I_REGULAR 0100000 /* regular file, not dir or special */
|
||||
#define I_BLOCK_SPECIAL 0060000 /* block special file */
|
||||
#define I_DIRECTORY 0040000 /* file is a directory */
|
||||
#define I_CHAR_SPECIAL 0020000 /* character special file */
|
||||
#define I_NAMED_PIPE 0010000 /* named pipe (FIFO) */
|
||||
#define I_SET_UID_BIT 0004000 /* set effective uid_t on exec */
|
||||
#define I_SET_GID_BIT 0002000 /* set effective gid_t on exec */
|
||||
#define ALL_MODES 0006777 /* all bits for user, group and others */
|
||||
#define RWX_MODES 0000777 /* mode bits for RWX only */
|
||||
#define R_BIT 0000004 /* Rwx protection bit */
|
||||
#define W_BIT 0000002 /* rWx protection bit */
|
||||
#define X_BIT 0000001 /* rwX protection bit */
|
||||
#define I_NOT_ALLOC 0000000 /* this inode is free */
|
||||
@@ -0,0 +1,17 @@
|
||||
/* PC (and AT) BIOS structure to hold disk parameters. Under Minix, it is
|
||||
* used mainly for formatting.
|
||||
*/
|
||||
|
||||
struct disk_parameter_s {
|
||||
char spec1;
|
||||
char spec2;
|
||||
char motor_turnoff_sec;
|
||||
char sector_size_code;
|
||||
char sectors_per_cylinder;
|
||||
char gap_length;
|
||||
char dtl;
|
||||
char gap_length_for_format;
|
||||
char fill_byte_for_format;
|
||||
char head_settle_msec;
|
||||
char motor_start_eigth_sec;
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
#ifndef _MINIX_ERRNO_H
|
||||
#define _MINIX_ERRNO_H /* it is not included; note that fact */
|
||||
|
||||
#define OK 0
|
||||
|
||||
extern int errno; /* place where the error numbers go */
|
||||
|
||||
/* Here are the numerical values of the error numbers. */
|
||||
#define ERROR (-99) /* generic error */
|
||||
#define EPERM (- 1) /* operation not permitted */
|
||||
#define ENOENT (- 2) /* no such file or directory */
|
||||
#define ESRCH (- 3) /* no such process */
|
||||
#define EINTR (- 4) /* interrupted function call */
|
||||
#define EIO (- 5) /* input/output error */
|
||||
#define ENXIO (- 6) /* no such device or address */
|
||||
#define E2BIG (- 7) /* arg list too long */
|
||||
#define ENOEXEC (- 8) /* exec format error */
|
||||
#define EBADF (- 9) /* bad file descriptor */
|
||||
#define ECHILD (-10) /* no child process */
|
||||
#define EAGAIN (-11) /* resource temporarily unavailable */
|
||||
#define ENOMEM (-12) /* not enough space */
|
||||
#define EACCES (-13) /* permission denied */
|
||||
#define EFAULT (-14) /* bad address */
|
||||
#define ENOTBLK (-15) /* Extension: not a block special file */
|
||||
#define EBUSY (-16) /* resource busy */
|
||||
#define EEXIST (-17) /* file exists */
|
||||
#define EXDEV (-18) /* improper link */
|
||||
#define ENODEV (-19) /* no such device */
|
||||
#define ENOTDIR (-20) /* not a directory */
|
||||
#define EISDIR (-21) /* is a directory */
|
||||
#define EINVAL (-22) /* invalid argument */
|
||||
#define ENFILE (-23) /* too many open files in system */
|
||||
#define EMFILE (-24) /* too many open files */
|
||||
#define ENOTTY (-25) /* inappropriate I/O control operation */
|
||||
#define ETXTBSY (-26) /* no longer used */
|
||||
#define EFBIG (-27) /* file too large */
|
||||
#define ENOSPC (-28) /* no space left on device */
|
||||
#define ESPIPE (-29) /* invalid seek */
|
||||
#define EROFS (-30) /* read-only file system */
|
||||
#define EMLINK (-31) /* too many links */
|
||||
#define EPIPE (-32) /* broken pipe */
|
||||
#define EDOM (-33) /* domain error (from ANSI C std) */
|
||||
#define ERANGE (-34) /* result too large (from ANSI C std) */
|
||||
#define EDEADLK (-35) /* resource deadlock avoided */
|
||||
#define ENAMETOOLONG (-36) /* file name too long */
|
||||
#define ENOLCK (-37) /* no locks available */
|
||||
#define ENOSYS (-38) /* function not implemented */
|
||||
#define ENOTEMPTY (-39) /* directory not empty */
|
||||
|
||||
/* The following are not POSIX errors, but they can still happen. */
|
||||
#define ELOCKED (-101) /* can't send message */
|
||||
#define EBADCALL (-102) /* error on send/receive */
|
||||
#define ELONGSTRING (-103) /* string too long */
|
||||
|
||||
/* The following error codes are generated by the kernel itself. */
|
||||
#define E_BAD_DEST -1 /* destination address illegal */
|
||||
#define E_BAD_SRC -2 /* source address illegal */
|
||||
#define E_TRY_AGAIN -3 /* can't send-- tables full */
|
||||
#define E_OVERRUN -4 /* interrupt for task that is not waiting */
|
||||
#define E_BAD_BUF -5 /* message buf outside caller's addr space */
|
||||
#define E_TASK -6 /* can't send to task */
|
||||
#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */
|
||||
#define E_NO_PERM -8 /* ordinary users can't send to tasks */
|
||||
#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */
|
||||
#define E_BAD_ADDR -10 /* bad address given to utility routine */
|
||||
#define E_BAD_PROC -11 /* bad proc number given to utility */
|
||||
|
||||
#endif /* _MINIX_ERRNO_H */
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Description of entry in partition table. */
|
||||
struct part_entry {
|
||||
unsigned char bootind; /* boot indicator 0/ACTIVE_FLAG */
|
||||
unsigned char start_head; /* head value for first sector */
|
||||
unsigned char start_sec; /* sector value + cyl bits for first sector */
|
||||
unsigned char start_cyl; /* track value for first sector */
|
||||
unsigned char sysind; /* system indicator - see systype() */
|
||||
unsigned char last_head; /* head value for last sector */
|
||||
unsigned char last_sec; /* sector value + cyl bits for last sector */
|
||||
unsigned char last_cyl; /* track value for last sector */
|
||||
unsigned long lowsec; /* logical first sector */
|
||||
unsigned long size; /* size of partion in sectors */
|
||||
};
|
||||
|
||||
#define ACTIVE_FLAG 0x80 /* value for active in bootind field (hd0) */
|
||||
#define NR_PARTITIONS 4 /* number of entries in partition table */
|
||||
#define PART_TABLE_OFF 0x1BE /* offset of partition table in boot sector */
|
||||
|
||||
/* Partition types. */
|
||||
#define MINIX_PART 0x81
|
||||
#define NO_PART 0x00
|
||||
#define OLD_MINIX_PART 0x80 /* created before 1.4b, driver must round */
|
||||
@@ -0,0 +1,129 @@
|
||||
/* Macros */
|
||||
#define MAX(a,b) (a > b ? a : b)
|
||||
#define MIN(a,b) (a < b ? a : b)
|
||||
|
||||
/* Type definitions */
|
||||
typedef unsigned short unshort; /* must be 16-bit unsigned */
|
||||
typedef unshort block_nr; /* block number */
|
||||
#define NO_BLOCK (block_nr) 0 /* indicates the absence of a block number */
|
||||
#define MAX_BLOCK_NR (block_nr) 0177777
|
||||
|
||||
#define NO_ENTRY (ino_t) 0 /* indicates the absence of a dir entry */
|
||||
#define MAX_INODE_NR (ino_t) 0177777
|
||||
|
||||
typedef unshort zone_nr; /* zone number */
|
||||
#define NO_ZONE (zone_nr) 0 /* indicates the absence of a zone number */
|
||||
#define HIGHEST_ZONE (zone_nr) 0177777
|
||||
|
||||
typedef unshort bit_nr; /* if ino_t & zone_nr both unshort,
|
||||
then also unshort, else long */
|
||||
|
||||
typedef long zone_type; /* zone size */
|
||||
#define NO_DEV (dev_t) ~0 /* indicates absence of a device number */
|
||||
|
||||
#define MAX_FILE_POS 017777777777L
|
||||
|
||||
#if (CHIP == INTEL)
|
||||
typedef unsigned vir_bytes; /* virtual addresses and lengths in bytes */
|
||||
#endif
|
||||
|
||||
#if (CHIP == M68000)
|
||||
typedef long vir_bytes; /* virtual addresses and lengths in bytes */
|
||||
#endif
|
||||
|
||||
typedef unsigned vir_clicks; /* virtual addresses and lengths in clicks */
|
||||
typedef long phys_bytes; /* physical addresses and lengths in bytes */
|
||||
typedef unsigned phys_clicks; /* physical addresses and lengths in clicks */
|
||||
typedef int signed_clicks; /* same length as phys_clicks, but signed */
|
||||
|
||||
/* Types relating to messages. */
|
||||
#define M1 1
|
||||
#define M3 3
|
||||
#define M4 4
|
||||
#define M3_STRING 14
|
||||
|
||||
typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
|
||||
typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
|
||||
typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
|
||||
typedef struct {long m4l1, m4l2, m4l3, m4l4;} mess_4;
|
||||
typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;} mess_5;
|
||||
typedef struct {int m6i1, m6i2, m6i3; long m6l1; void (*m6f1)();} mess_6;
|
||||
|
||||
typedef struct {
|
||||
int m_source; /* who sent the message */
|
||||
int m_type; /* what kind of message is it */
|
||||
union {
|
||||
mess_1 m_m1;
|
||||
mess_2 m_m2;
|
||||
mess_3 m_m3;
|
||||
mess_4 m_m4;
|
||||
mess_5 m_m5;
|
||||
mess_6 m_m6;
|
||||
} m_u;
|
||||
} message;
|
||||
|
||||
#define MESS_SIZE (sizeof(message))
|
||||
#define NIL_MESS (message *) 0
|
||||
|
||||
/* The following defines provide names for useful members. */
|
||||
#define m1_i1 m_u.m_m1.m1i1
|
||||
#define m1_i2 m_u.m_m1.m1i2
|
||||
#define m1_i3 m_u.m_m1.m1i3
|
||||
#define m1_p1 m_u.m_m1.m1p1
|
||||
#define m1_p2 m_u.m_m1.m1p2
|
||||
#define m1_p3 m_u.m_m1.m1p3
|
||||
|
||||
#define m2_i1 m_u.m_m2.m2i1
|
||||
#define m2_i2 m_u.m_m2.m2i2
|
||||
#define m2_i3 m_u.m_m2.m2i3
|
||||
#define m2_l1 m_u.m_m2.m2l1
|
||||
#define m2_l2 m_u.m_m2.m2l2
|
||||
#define m2_p1 m_u.m_m2.m2p1
|
||||
|
||||
#define m3_i1 m_u.m_m3.m3i1
|
||||
#define m3_i2 m_u.m_m3.m3i2
|
||||
#define m3_p1 m_u.m_m3.m3p1
|
||||
#define m3_ca1 m_u.m_m3.m3ca1
|
||||
|
||||
|
||||
#define m4_l1 m_u.m_m4.m4l1
|
||||
#define m4_l2 m_u.m_m4.m4l2
|
||||
#define m4_l3 m_u.m_m4.m4l3
|
||||
#define m4_l4 m_u.m_m4.m4l4
|
||||
|
||||
#define m5_c1 m_u.m_m5.m5c1
|
||||
#define m5_c2 m_u.m_m5.m5c2
|
||||
#define m5_i1 m_u.m_m5.m5i1
|
||||
#define m5_i2 m_u.m_m5.m5i2
|
||||
#define m5_l1 m_u.m_m5.m5l1
|
||||
#define m5_l2 m_u.m_m5.m5l2
|
||||
#define m5_l3 m_u.m_m5.m5l3
|
||||
|
||||
#define m6_i1 m_u.m_m6.m6i1
|
||||
#define m6_i2 m_u.m_m6.m6i2
|
||||
#define m6_i3 m_u.m_m6.m6i3
|
||||
#define m6_l1 m_u.m_m6.m6l1
|
||||
#define m6_f1 m_u.m_m6.m6f1
|
||||
|
||||
struct mem_map {
|
||||
vir_clicks mem_vir; /* virtual address */
|
||||
phys_clicks mem_phys; /* physical address */
|
||||
vir_clicks mem_len; /* length */
|
||||
};
|
||||
|
||||
struct copy_info { /* used by sys_copy(src, dst, bytes) */
|
||||
int cp_src_proc;
|
||||
int cp_src_space;
|
||||
vir_bytes cp_src_vir;
|
||||
int cp_dst_proc;
|
||||
int cp_dst_space;
|
||||
vir_bytes cp_dst_vir;
|
||||
vir_bytes cp_bytes;
|
||||
};
|
||||
|
||||
struct iorequest_s {
|
||||
long io_position; /* position in device file (really off_t) */
|
||||
char *io_buf; /* buffer in user space */
|
||||
unsigned short io_nbytes; /* size of request */
|
||||
unsigned short io_request; /* read, write (optionally) */
|
||||
};
|
||||
@@ -0,0 +1,30 @@
|
||||
/* The <pwd.h> header defines the items in the password file. */
|
||||
|
||||
#ifndef _PWD_H
|
||||
#define _PWD_H
|
||||
|
||||
struct passwd {
|
||||
char *pw_name; /* login name */
|
||||
uid_t pw_uid; /* uid corresponding to the name */
|
||||
gid_t pw_gid; /* gid corresponding to the name */
|
||||
char *pw_dir; /* user's home directory */
|
||||
char *pw_shell; /* name of the user's shell */
|
||||
|
||||
/* The following members are not defined by POSIX. */
|
||||
char *pw_passwd; /* password information */
|
||||
char *pw_gecos; /* just in case you have a GE 645 around */
|
||||
};
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( void endpwent, (void) );
|
||||
_PROTOTYPE( struct passwd *getpwnam, (char *_name) );
|
||||
_PROTOTYPE( struct passwd *getpwuid, (int _uid) );
|
||||
_PROTOTYPE( struct passwd *getpwent, (void) );
|
||||
_PROTOTYPE( int setpwent, (void) );
|
||||
|
||||
#endif /* _PWD_H */
|
||||
@@ -0,0 +1,28 @@
|
||||
/* The <regexp.h> header is used by the (V8-compatible) regexp(3) routines. */
|
||||
|
||||
#ifndef _REGEXP_H
|
||||
#define _REGEXP_H
|
||||
|
||||
#define CHARBITS 0377
|
||||
#define NSUBEXP 10
|
||||
typedef struct regexp {
|
||||
char *startp[NSUBEXP];
|
||||
char *endp[NSUBEXP];
|
||||
char regstart; /* Internal use only. */
|
||||
char reganch; /* Internal use only. */
|
||||
char *regmust; /* Internal use only. */
|
||||
int regmlen; /* Internal use only. */
|
||||
char program[1]; /* Unwarranted chumminess with compiler. */
|
||||
} regexp;
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( regexp *regcomp, (char *_exp) );
|
||||
_PROTOTYPE( int regexec, (regexp *_prog, char *_string, int _bolflag) );
|
||||
_PROTOTYPE( void regsub, (regexp *_prog, char *_source, char *_dest) );
|
||||
_PROTOTYPE( void regerror, (char *_message) );
|
||||
|
||||
#endif /* _REGEXP_H */
|
||||
@@ -0,0 +1,35 @@
|
||||
/* The <setjmp.h> header relates to the C phenomenon known as setjmp/longjmp.
|
||||
* It is used to escape out of the current situation into a previous one.
|
||||
* A typical example is in an editor, where hitting DEL breaks off the current
|
||||
* command and puts the editor back in the main loop.
|
||||
*/
|
||||
/* In a jmp_buf, there is room for: 1 mask (long), 1 flag (int) and 3
|
||||
* pointers (stack-pointer, local base and program-counter). This may be
|
||||
* too big, but that doesn't matter. It could also be too small, when
|
||||
* sigset_t is larger than a long. Soit.
|
||||
* The identifier __setjmp has a special meaning to the compiler.
|
||||
*/
|
||||
|
||||
#ifndef _SETJMP_H
|
||||
#define _SETJMP_H
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
typedef char jmp_buf[ sizeof(long) + sizeof(int) + 3 * sizeof(void *)];
|
||||
|
||||
_PROTOTYPE(int __setjmp, (jmp_buf _env, int _savemask) );
|
||||
|
||||
#define setjmp(env) __setjmp(env, 0)
|
||||
_PROTOTYPE(void longjmp, (jmp_buf _env, int _val) );
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
typedef jmp_buf sigjmp_buf;
|
||||
|
||||
#define sigsetjmp(env, savemask) __setjmp(env, savemask)
|
||||
_PROTOTYPE(int siglongjmp, (sigjmp_buf _env, int _val) );
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _SETJMP_H */
|
||||
@@ -0,0 +1,96 @@
|
||||
/* The <sgtty.h> header contains data structures for ioctl(). */
|
||||
|
||||
#ifndef _SGTTY_H
|
||||
#define _SGTTY_H
|
||||
|
||||
struct sgttyb {
|
||||
char sg_ispeed; /* input speed */
|
||||
char sg_ospeed; /* output speed */
|
||||
char sg_erase; /* erase character */
|
||||
char sg_kill; /* kill character */
|
||||
int sg_flags; /* mode flags */
|
||||
};
|
||||
|
||||
struct tchars {
|
||||
char t_intrc; /* SIGINT char */
|
||||
char t_quitc; /* SIGQUIT char */
|
||||
char t_startc; /* start output (initially CTRL-Q) */
|
||||
char t_stopc; /* stop output (initially CTRL-S) */
|
||||
char t_eofc; /* EOF (initially CTRL-D) */
|
||||
char t_brkc; /* input delimiter (like nl) */
|
||||
};
|
||||
|
||||
/* Field names */
|
||||
#define XTABS 0006000 /* do tab expansion */
|
||||
#define BITS8 0001400 /* 8 bits/char */
|
||||
#define BITS7 0001000 /* 7 bits/char */
|
||||
#define BITS6 0000400 /* 6 bits/char */
|
||||
#define BITS5 0000000 /* 5 bits/char */
|
||||
#define EVENP 0000200 /* even parity */
|
||||
#define ODDP 0000100 /* odd parity */
|
||||
#define RAW 0000040 /* enable raw mode */
|
||||
#define CRMOD 0000020 /* map lf to cr + lf */
|
||||
#define ECHO 0000010 /* echo input */
|
||||
#define CBREAK 0000002 /* enable cbreak mode */
|
||||
#define COOKED 0000000 /* neither CBREAK nor RAW */
|
||||
|
||||
#define DCD 0100000 /* Data Carrier Detect */
|
||||
|
||||
/* Line speeds */
|
||||
#define B0 0 /* code for line-hangup */
|
||||
#define B110 1
|
||||
#define B300 3
|
||||
#define B1200 12
|
||||
#define B2400 24
|
||||
#define B4800 48
|
||||
#define B9600 96
|
||||
|
||||
#define TIOCGETP (('t'<<8) | 8)
|
||||
#define TIOCSETP (('t'<<8) | 9)
|
||||
#define TIOCGETC (('t'<<8) | 18)
|
||||
#define TIOCSETC (('t'<<8) | 17)
|
||||
#define TIOCFLUSH (('t'<<8) | 16)
|
||||
|
||||
/* Things Minix supports but not properly */
|
||||
/* the divide-by-100 encoding ain't too hot */
|
||||
#define ANYP 0000300
|
||||
#define B50 0
|
||||
#define B75 0
|
||||
#define B134 0
|
||||
#define B150 0
|
||||
#define B200 2
|
||||
#define B600 6
|
||||
#define B1800 18
|
||||
#define B3600 36
|
||||
#define B7200 72
|
||||
#define EXTA 192
|
||||
#define EXTB 0
|
||||
|
||||
/* Things Minix doesn't support but are fairly harmless if used */
|
||||
#define NLDELAY 0001400
|
||||
#define TBDELAY 0006000
|
||||
#define CRDELAY 0030000
|
||||
#define VTDELAY 0040000
|
||||
#define BSDELAY 0100000
|
||||
#define ALLDELAY 0177400
|
||||
|
||||
#if MACHINE == ATARI
|
||||
/* ST specific clock stuff */
|
||||
|
||||
#define DCLOCK ('D'<<8)
|
||||
|
||||
#define DC_RBMS100 (DCLOCK|1)
|
||||
#define DC_RBMS200 (DCLOCK|2)
|
||||
#define DC_RSUPRA (DCLOCK|3)
|
||||
#define DC_RICD (DCLOCK|4)
|
||||
#define DC_WBMS100 (DCLOCK|8)
|
||||
#define DC_WBMS200 (DCLOCK|9)
|
||||
#endif
|
||||
|
||||
#include <ansi.h>
|
||||
|
||||
_PROTOTYPE( int gtty, (int _fd, struct sgttyb *_argp) );
|
||||
_PROTOTYPE( int ioctl, (int _fd, int _request, struct sgttyb *_argp) );
|
||||
_PROTOTYPE( int stty, (int _fd, struct sgttyb *_argp) );
|
||||
|
||||
#endif /* _SGTTY_H */
|
||||
@@ -0,0 +1,97 @@
|
||||
/* The <sgtty.h> header contains data structures for ioctl(). */
|
||||
|
||||
#ifndef _SGTTY_H
|
||||
#define _SGTTY_H
|
||||
|
||||
struct sgttyb {
|
||||
char sg_ispeed; /* input speed */
|
||||
char sg_ospeed; /* output speed */
|
||||
char sg_erase; /* erase character */
|
||||
char sg_kill; /* kill character */
|
||||
int sg_flags; /* mode flags */
|
||||
};
|
||||
|
||||
struct tchars {
|
||||
char t_intrc; /* SIGINT char */
|
||||
char t_quitc; /* SIGQUIT char */
|
||||
char t_startc; /* start output (initially CTRL-Q) */
|
||||
char t_stopc; /* stop output (initially CTRL-S) */
|
||||
char t_eofc; /* EOF (initially CTRL-D) */
|
||||
char t_brkc; /* input delimiter (like nl) */
|
||||
};
|
||||
|
||||
/* Field names */
|
||||
#define XTABS 0006000 /* do tab expansion */
|
||||
#define BITS8 0001400 /* 8 bits/char */
|
||||
#define BITS7 0001000 /* 7 bits/char */
|
||||
#define BITS6 0000400 /* 6 bits/char */
|
||||
#define BITS5 0000000 /* 5 bits/char */
|
||||
#define EVENP 0000200 /* even parity */
|
||||
#define ODDP 0000100 /* odd parity */
|
||||
#define RAW 0000040 /* enable raw mode */
|
||||
#define CRMOD 0000020 /* map lf to cr + lf */
|
||||
#define ECHO 0000010 /* echo input */
|
||||
#define CBREAK 0000002 /* enable cbreak mode */
|
||||
#define COOKED 0000000 /* neither CBREAK nor RAW */
|
||||
|
||||
#define DCD 0100000 /* Data Carrier Detect */
|
||||
|
||||
/* Line speeds */
|
||||
#define B0 0 /* code for line-hangup */
|
||||
#define B110 1
|
||||
#define B300 3
|
||||
#define B1200 12
|
||||
#define B2400 24
|
||||
#define B4800 48
|
||||
#define B9600 96
|
||||
|
||||
#define TIOCGETP (('t'<<8) | 8)
|
||||
#define TIOCSETP (('t'<<8) | 9)
|
||||
#define TIOCGETC (('t'<<8) | 18)
|
||||
#define TIOCSETC (('t'<<8) | 17)
|
||||
#define TIOCFLUSH (('t'<<8) | 16)
|
||||
|
||||
/* Things Minix supports but not properly */
|
||||
/* the divide-by-100 encoding ain't too hot */
|
||||
#define ANYP 0000300
|
||||
#define B0 0
|
||||
#define B50 0
|
||||
#define B75 0
|
||||
#define B134 0
|
||||
#define B150 0
|
||||
#define B200 2
|
||||
#define B600 6
|
||||
#define B1800 18
|
||||
#define B3600 36
|
||||
#define B7200 72
|
||||
#define EXTA 192
|
||||
#define EXTB 0
|
||||
|
||||
/* Things Minix doesn't support but are fairly harmless if used */
|
||||
#define NLDELAY 0001400
|
||||
#define TBDELAY 0006000
|
||||
#define CRDELAY 0030000
|
||||
#define VTDELAY 0040000
|
||||
#define BSDELAY 0100000
|
||||
#define ALLDELAY 0177400
|
||||
|
||||
#if MACHINE == ATARI
|
||||
/* ST specific clock stuff */
|
||||
|
||||
#define DCLOCK ('D'<<8)
|
||||
|
||||
#define DC_RBMS100 (DCLOCK|1)
|
||||
#define DC_RBMS200 (DCLOCK|2)
|
||||
#define DC_RSUPRA (DCLOCK|3)
|
||||
#define DC_RICD (DCLOCK|4)
|
||||
#define DC_WBMS100 (DCLOCK|8)
|
||||
#define DC_WBMS200 (DCLOCK|9)
|
||||
#endif
|
||||
|
||||
#include <ansi.h>
|
||||
|
||||
_PROTOTYPE( int gtty, (int _fd, struct sgttyb *_argp) );
|
||||
_PROTOTYPE( int ioctl, (int _fd, int _request, struct sgttyb *_argp) );
|
||||
_PROTOTYPE( int stty, (int _fd, struct sgttyb *_argp) );
|
||||
|
||||
#endif /* _SGTTY_H */
|
||||
@@ -0,0 +1,114 @@
|
||||
/* The <signal.h> header defines all the ANSI and POSIX signals.
|
||||
* MINIX supports all the signals required by POSIX. They are defined below.
|
||||
* Some additional signals are also supported.
|
||||
*/
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#define _SIGNAL_H
|
||||
|
||||
/* Here are types that are closely associated with signal handling. */
|
||||
typedef int sig_atomic_t;
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
typedef unsigned short sigset_t;
|
||||
#endif
|
||||
|
||||
|
||||
#define _NSIG 16 /* number of signals used */
|
||||
|
||||
#define SIGHUP 1 /* hangup */
|
||||
#define SIGINT 2 /* interrupt (DEL) */
|
||||
#define SIGQUIT 3 /* quit (ASCII FS) */
|
||||
#define SIGILL 4 /* illegal instruction */
|
||||
#define SIGTRAP 5 /* trace trap (not reset when caught) */
|
||||
#define SIGABRT 6 /* IOT instruction */
|
||||
#define SIGIOT 6 /* SIGABRT for people who speak PDP-11 */
|
||||
#define SIGUNUSED 7 /* spare code */
|
||||
#define SIGFPE 8 /* floating point exception */
|
||||
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
|
||||
#define SIGUSR1 10 /* user defined signal # 1 */
|
||||
#define SIGSEGV 11 /* segmentation violation */
|
||||
#define SIGUSR2 12 /* user defined signal # 2 */
|
||||
#define SIGPIPE 13 /* write on a pipe with no one to read it */
|
||||
#define SIGALRM 14 /* alarm clock */
|
||||
#define SIGTERM 15 /* software termination signal from kill */
|
||||
#define SIGSTKFLT 16 /* used by kernel to indicate stack fault */
|
||||
|
||||
#define SIGEMT 7 /* obsolete */
|
||||
#define SIGBUS 10 /* obsolete */
|
||||
|
||||
/* POSIX requires the following signals to be defined, even if they are
|
||||
* not supported. Here are the definitions, but they are not supported.
|
||||
*/
|
||||
#define SIGCHLD 17 /* child process terminated or stopped */
|
||||
#define SIGCONT 18 /* continue if stopped */
|
||||
#define SIGSTOP 19 /* stop signal */
|
||||
#define SIGTSTP 20 /* interactive stop signal */
|
||||
#define SIGTTIN 21 /* background process wants to read */
|
||||
#define SIGTTOU 22 /* background process wants to write */
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
#define SA_NOCLDSTOP 1 /* signal parent if child stops */
|
||||
|
||||
#endif /* _POSIX_SOURCE */
|
||||
|
||||
/* POSIX requires these values for use on system calls involving signals. */
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
/* Macros used as function pointers and one awful prototype. */
|
||||
#if _ANSI
|
||||
#define SIG_DFL ((void (*)(int))0) /* default signal handling */
|
||||
#define SIG_IGN ((void (*)(int))1) /* ignore signal */
|
||||
#define SIG_ERR ((void (*)(int))-1)
|
||||
|
||||
void (*signal(int _sig, void (*_func)(int)))(int);
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
struct sigaction {
|
||||
void (*sa_handler)(int); /* SIG_DFL, SIG_IGN, or pointer to function */
|
||||
sigset_t sa_mask; /* signals to be blocked during handler */
|
||||
int sa_flags; /* special flags */
|
||||
};
|
||||
#endif
|
||||
|
||||
#else /* !_ANSI */
|
||||
#define SIG_DFL ((void (*)())0) /* default signal handling */
|
||||
#define SIG_IGN ((void (*)())1) /* ignore signal */
|
||||
#define SIG_ERR ((void (*)())-1)
|
||||
|
||||
void (*signal()) ();
|
||||
|
||||
#ifdef _POSIX_SOURCE /* otherwise sigset_t is not defined */
|
||||
struct sigaction {
|
||||
void (*sa_handler)(); /* SIG_DFL, SIG_IGN, or pointer to function */
|
||||
sigset_t sa_mask; /* signals to be blocked during handler */
|
||||
int sa_flags; /* special flags */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* _ANSI */
|
||||
|
||||
/* Function Prototypes. */
|
||||
_PROTOTYPE( int raise, (int _sig) );
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
_PROTOTYPE( int kill, (pid_t _pid, int _sig) );
|
||||
_PROTOTYPE( int sigaddset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigdelset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigemptyset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigfillset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigismember, (sigset_t *_set, int _signo) );
|
||||
_PROTOTYPE( int sigpending, (sigset_t *set) );
|
||||
_PROTOTYPE( int sigprocmask, (int _how, sigset_t *_set, sigset_t *_oset));
|
||||
_PROTOTYPE( int sigsuspend, (sigset_t *_sigmask) );
|
||||
_PROTOTYPE( int sigaction,
|
||||
(int _sig, struct sigaction *_a, struct sigaction *_oact) );
|
||||
#endif
|
||||
|
||||
#endif /* _SIGNAL_H */
|
||||
@@ -0,0 +1,113 @@
|
||||
/* The <signal.h> header defines all the ANSI and POSIX signals.
|
||||
* MINIX supports all the signals required by POSIX. They are defined below.
|
||||
* Some additional signals are also supported.
|
||||
*/
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#define _SIGNAL_H
|
||||
|
||||
/* Here are types that are closely associated with signal handling. */
|
||||
typedef int sig_atomic_t;
|
||||
#ifdef _POSIX_SOURCE
|
||||
typedef unsigned short sigset_t;
|
||||
#endif
|
||||
|
||||
|
||||
#define _NSIG 16 /* number of signals used */
|
||||
|
||||
#define SIGHUP 1 /* hangup */
|
||||
#define SIGINT 2 /* interrupt (DEL) */
|
||||
#define SIGQUIT 3 /* quit (ASCII FS) */
|
||||
#define SIGILL 4 /* illegal instruction */
|
||||
#define SIGTRAP 5 /* trace trap (not reset when caught) */
|
||||
#define SIGABRT 6 /* IOT instruction */
|
||||
#define SIGIOT 6 /* SIGABRT for people who speak PDP-11 */
|
||||
#define SIGUNUSED 7 /* spare code */
|
||||
#define SIGFPE 8 /* floating point exception */
|
||||
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
|
||||
#define SIGUSR1 10 /* user defined signal # 1 */
|
||||
#define SIGSEGV 11 /* segmentation violation */
|
||||
#define SIGUSR2 12 /* user defined signal # 2 */
|
||||
#define SIGPIPE 13 /* write on a pipe with no one to read it */
|
||||
#define SIGALRM 14 /* alarm clock */
|
||||
#define SIGTERM 15 /* software termination signal from kill */
|
||||
#define SIGSTKFLT 16 /* used by kernel to indicate stack fault */
|
||||
|
||||
#define SIGEMT 7 /* obsolete */
|
||||
#define SIGBUS 10 /* obsolete */
|
||||
|
||||
/* POSIX requires the following signals to be defined, even if they are
|
||||
* not supported. Here are the definitions, but they are not supported.
|
||||
*/
|
||||
#define SIGCHLD 17 /* child process terminated or stopped */
|
||||
#define SIGCONT 18 /* continue if stopped */
|
||||
#define SIGSTOP 19 /* stop signal */
|
||||
#define SIGTSTP 20 /* interactive stop signal */
|
||||
#define SIGTTIN 21 /* background process wants to read */
|
||||
#define SIGTTOU 22 /* background process wants to write */
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
#define SA_NOCLDSTOP 1 /* signal parent if child stops */
|
||||
|
||||
#endif /* _POSIX_SOURCE */
|
||||
|
||||
/* POSIX requires these values for use on system calls involving signals. */
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
/* Macros used as function pointers and one awful prototype. */
|
||||
#if _ANSI
|
||||
#define SIG_DFL ((void (*)(int))0) /* default signal handling */
|
||||
#define SIG_IGN ((void (*)(int))1) /* ignore signal */
|
||||
#define SIG_ERR ((void (*)(int))-1)
|
||||
|
||||
void (*signal(int _sig, void (*_func)(int)))(int);
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
struct sigaction {
|
||||
void (*sa_handler)(int); /* SIG_DFL, SIG_IGN, or pointer to function */
|
||||
sigset_t sa_mask; /* signals to be blocked during handler */
|
||||
int sa_flags; /* special flags */
|
||||
};
|
||||
#endif
|
||||
|
||||
#else /* !_ANSI */
|
||||
#define SIG_DFL ((void (*)())0) /* default signal handling */
|
||||
#define SIG_IGN ((void (*)())1) /* ignore signal */
|
||||
#define SIG_ERR ((void (*)())-1)
|
||||
|
||||
void (*signal()) ();
|
||||
|
||||
#ifdef _POSIX_SOURCE /* otherwise sigset_t is not defined */
|
||||
struct sigaction {
|
||||
void (*sa_handler)(); /* SIG_DFL, SIG_IGN, or pointer to function */
|
||||
sigset_t sa_mask; /* signals to be blocked during handler */
|
||||
int sa_flags; /* special flags */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* _ANSI */
|
||||
|
||||
/* Function Prototypes. */
|
||||
_PROTOTYPE( int raise, (int _sig) );
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
_PROTOTYPE( int kill, (pid_t _pid, int _sig) );
|
||||
_PROTOTYPE( int sigaddset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigdelset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigemptyset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigfillset, (sigset_t *_set) );
|
||||
_PROTOTYPE( int sigismember, (sigset_t *_set, int _signo) );
|
||||
_PROTOTYPE( int sigpending, (sigset_t *set) );
|
||||
_PROTOTYPE( int sigprocmask, (int _how, sigset_t *_set, sigset_t *_oset));
|
||||
_PROTOTYPE( int sigsuspend, (sigset_t *_sigmask) );
|
||||
_PROTOTYPE( int sigaction,
|
||||
(int _sig, struct sigaction *_a, struct sigaction *_oact) );
|
||||
#endif
|
||||
|
||||
#endif /* _SIGNAL_H */
|
||||
@@ -0,0 +1,29 @@
|
||||
/* The <stdarg.h> header is ANSI's way to handle variable numbers of params.
|
||||
* Some programming languages require a function that is declared with n
|
||||
* parameters to be called with n parameters. C does not. A function may
|
||||
* called with more parameters than it is declared with. The well-known
|
||||
* printf function, for example, may have arbitrarily many parameters.
|
||||
* The question arises how one can access all the parameters in a portable
|
||||
* way. The C standard defines three macros that programs can use to
|
||||
* advance through the parameter list. The definition of these macros for
|
||||
* MINIX are given in this file. The three macros are:
|
||||
*
|
||||
* va_start(ap, parmN) prepare to access parameters
|
||||
* va_arg(ap, type) get next parameter value and type
|
||||
* va_end(ap) access is finished
|
||||
*/
|
||||
|
||||
#ifndef _STDARG_H
|
||||
#define _STDARG_H
|
||||
|
||||
typedef char *va_list;
|
||||
|
||||
#define __vasz(x) ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int) -1))
|
||||
|
||||
#define va_start(ap, parmN) ((ap) = (va_list)&parmN + __vasz(parmN))
|
||||
#define va_arg(ap, type) \
|
||||
(*((type *)((va_list)((ap) = (void *)((va_list)(ap) + __vasz(type))) \
|
||||
- __vasz(type))))
|
||||
#define va_end(ap)
|
||||
|
||||
#endif /* _STDARG_H */
|
||||
@@ -0,0 +1,23 @@
|
||||
/* The <stddef.h> header defines certain commonly used macros. */
|
||||
|
||||
#ifndef _STDDEF_H
|
||||
#define _STDDEF_H
|
||||
|
||||
#define NULL ((void *)0)
|
||||
|
||||
/* The following is not portable, but the compiler accepts it. */
|
||||
#define offsetof(type, ident) ((size_t) &(((type *)0)->ident))
|
||||
|
||||
typedef int ptrdiff_t; /* result of subtracting two pointers */
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t; /* type returned by sizeof */
|
||||
#endif
|
||||
|
||||
#ifndef _WCHAR_T
|
||||
#define _WCHAR_T
|
||||
typedef char wchar_t; /* type expanded character set */
|
||||
#endif
|
||||
|
||||
#endif /* _STDDEF_H */
|
||||
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* stdio.h - input/output definitions
|
||||
*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Header: stdio.h,v 1.3 89/12/18 14:00:10 eck Exp $ */
|
||||
|
||||
#ifndef _STDIO_H
|
||||
#define _STDIO_H
|
||||
|
||||
/*
|
||||
* Focus point of all stdio activity.
|
||||
*/
|
||||
typedef struct __iobuf {
|
||||
int _count;
|
||||
int _fd;
|
||||
int _flags;
|
||||
int _bufsiz;
|
||||
char *_tname;
|
||||
unsigned char *_buf;
|
||||
unsigned char *_ptr;
|
||||
} FILE;
|
||||
|
||||
#define _IOFBF 0x000
|
||||
#define _IOREAD 0x001
|
||||
#define _IOWRITE 0x002
|
||||
#define _IONBF 0x004
|
||||
#define _IOMYBUF 0x008
|
||||
#define _IOEOF 0x010
|
||||
#define _IOERR 0x020
|
||||
#define _IOLBF 0x040
|
||||
#define _IOREADING 0x080
|
||||
#define _IOWRITING 0x100
|
||||
#define _IOAPPEND 0x200
|
||||
|
||||
/* The following definitions are also in <unistd.h>. They should not
|
||||
* conflict.
|
||||
*/
|
||||
#define SEEK_SET 0
|
||||
#define SEEK_CUR 1
|
||||
#define SEEK_END 2
|
||||
|
||||
#define stdin (&__stdin)
|
||||
#define stdout (&__stdout)
|
||||
#define stderr (&__stderr)
|
||||
|
||||
#define BUFSIZ 1024
|
||||
#define NULL ((void *)0)
|
||||
#define EOF (-1)
|
||||
|
||||
#define FOPEN_MAX 20
|
||||
|
||||
#define FILENAME_MAX 14
|
||||
#define TMP_MAX 999
|
||||
#define L_tmpnam (sizeof("/tmp/") + 15)
|
||||
|
||||
typedef long int fpos_t;
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t; /* type returned by sizeof */
|
||||
#endif /* _SIZE_T */
|
||||
|
||||
extern FILE *__iotab[FOPEN_MAX];
|
||||
extern FILE __stdin, __stdout, __stderr;
|
||||
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int remove, (const char *_filename) );
|
||||
_PROTOTYPE( int rename, (const char *_old, const char *_new) );
|
||||
_PROTOTYPE( FILE *tmpfile, (void) );
|
||||
_PROTOTYPE( char *tmpnam, (char *_s) );
|
||||
_PROTOTYPE( int fclose, (FILE *_stream) );
|
||||
_PROTOTYPE( int fflush, (FILE *_stream) );
|
||||
_PROTOTYPE( FILE *fopen, (const char *_filename, const char *_mode) );
|
||||
_PROTOTYPE( FILE *freopen,
|
||||
(const char *_filename, const char *_mode, FILE *_stream) );
|
||||
_PROTOTYPE( void setbuf, (FILE *_stream, char *_buf) );
|
||||
_PROTOTYPE( int setvbuf,
|
||||
(FILE *_stream, char *_buf, int _mode, size_t _size) );
|
||||
_PROTOTYPE( int fprintf, (FILE *_stream, const char *_format, ...) );
|
||||
_PROTOTYPE( int fscanf, (FILE *_stream, const char *_format, ...) );
|
||||
_PROTOTYPE( int printf, (const char *_format, ...) );
|
||||
_PROTOTYPE( int scanf, (const char *_format, ...) );
|
||||
_PROTOTYPE( int sprintf, (char *_s, const char *_format, ...) );
|
||||
_PROTOTYPE( int sscanf, (char *_s, const char *_format, ...) );
|
||||
_PROTOTYPE( int vfprintf,
|
||||
(FILE *_stream, const char *_format, char *_arg) );
|
||||
_PROTOTYPE( int vprintf, (const char *_format, char *_arg) );
|
||||
_PROTOTYPE( int vsprintf, (char *_s, const char *_format, char *_arg) );
|
||||
_PROTOTYPE( int fgetc, (FILE *_stream) );
|
||||
_PROTOTYPE( char *fgets, (char *_s, int _n, FILE *_stream) );
|
||||
_PROTOTYPE( int fputc, (int _c, FILE *_stream) );
|
||||
_PROTOTYPE( int fputs, (const char *_s, FILE *_stream) );
|
||||
_PROTOTYPE( int getc, (FILE *_stream) );
|
||||
_PROTOTYPE( int getchar, (void) );
|
||||
_PROTOTYPE( char *gets, (char *_s) );
|
||||
_PROTOTYPE( int putc, (int _c, FILE *_stream) );
|
||||
_PROTOTYPE( int putchar, (int _c) );
|
||||
_PROTOTYPE( int puts, (const char *_s) );
|
||||
_PROTOTYPE( int ungetc, (int _c, FILE *_stream) );
|
||||
_PROTOTYPE( size_t fread,
|
||||
(void *_ptr, size_t _size, size_t _nmemb, FILE *_stream) );
|
||||
_PROTOTYPE( size_t fwrite,
|
||||
(const void *_ptr, size_t _size, size_t _nmemb, FILE *_stream) );
|
||||
_PROTOTYPE( int fgetpos, (FILE *_stream, fpos_t *_pos) );
|
||||
_PROTOTYPE( int fseek, (FILE *_stream, long _offset, int _whence) );
|
||||
_PROTOTYPE( int fsetpos, (FILE *_stream, fpos_t *_pos) );
|
||||
_PROTOTYPE( long ftell, (FILE *_stream) );
|
||||
_PROTOTYPE( void rewind, (FILE *_stream) );
|
||||
_PROTOTYPE( void clearerr, (FILE *_stream) );
|
||||
_PROTOTYPE( int feof, (FILE *_stream) );
|
||||
_PROTOTYPE( int ferror, (FILE *_stream) );
|
||||
_PROTOTYPE( void perror, (const char *_s) );
|
||||
_PROTOTYPE( int __fillbuf, (FILE *_stream) );
|
||||
_PROTOTYPE( int __flushbuf, (int _c, FILE *_stream) );
|
||||
|
||||
#define getchar() getc(stdin)
|
||||
#define putchar(c) putc(c,stdout)
|
||||
#define getc(p) (--(p)->_count >= 0 ? (int) (*(p)->_ptr++) : \
|
||||
__fillbuf(p))
|
||||
#define putc(c, p) (--(p)->_count >= 0 ? \
|
||||
(int) (*(p)->_ptr++ = (c)) : \
|
||||
__flushbuf((c),(p)))
|
||||
|
||||
#define feof(p) (((p)->_flags & _IOEOF) != 0)
|
||||
#define ferror(p) (((p)->_flags & _IOERR) != 0)
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
_PROTOTYPE( int fileno, (FILE *_stream) );
|
||||
#define fileno(stream) ((stream)->_fd)
|
||||
#endif
|
||||
|
||||
#endif /* _STDIO_H */
|
||||
@@ -0,0 +1,66 @@
|
||||
/* The <stdlib.h> header defines certain common macros, types, and functions.*/
|
||||
|
||||
#ifndef _STDLIB_H
|
||||
#define _STDLIB_H
|
||||
|
||||
/* The macros are NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, and MB_CUR_MAX.*/
|
||||
#define NULL ((void *)0)
|
||||
|
||||
#define EXIT_FAILURE 1 /* standard error return using exit() */
|
||||
#define EXIT_SUCCESS 0 /* successful return using exit() */
|
||||
#define RAND_MAX 32767 /* largest value generated by rand() */
|
||||
#define MB_CUR_MAX 1 /* max value of multibyte character in MINIX */
|
||||
|
||||
typedef struct { int quot, rem; } div_t;
|
||||
typedef struct { long quot, rem; } ldiv_t;
|
||||
|
||||
/* The types are size_t, wchar_t, div_t, and ldiv_t. */
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t; /* type returned by sizeof */
|
||||
#endif
|
||||
|
||||
#ifndef _WCHAR_T
|
||||
#define _WCHAR_T
|
||||
typedef char wchar_t; /* type expanded character set */
|
||||
#endif
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( void abort, (void) );
|
||||
_PROTOTYPE( int abs, (int _j) );
|
||||
_PROTOTYPE( int atexit, (void (*func)(void)) );
|
||||
_PROTOTYPE( double atof, (const char *_nptr) );
|
||||
_PROTOTYPE( int atoi, (const char *_nptr) );
|
||||
_PROTOTYPE( long atol, (const char *_nptr) );
|
||||
_PROTOTYPE( void *calloc, (size_t _nmemb, size_t _size) );
|
||||
_PROTOTYPE( div_t div, (int _numer, int _denom) );
|
||||
_PROTOTYPE( void exit, (int _status) );
|
||||
_PROTOTYPE( void free, (void *_ptr) );
|
||||
_PROTOTYPE( char *getenv, (const char *_name) );
|
||||
_PROTOTYPE( long labs, (long _j) );
|
||||
_PROTOTYPE( ldiv_t ldiv, (long _numer, long _denom) );
|
||||
_PROTOTYPE( void *malloc, (size_t _size) );
|
||||
_PROTOTYPE( int mblen, (const char *_s, size_t _n) );
|
||||
_PROTOTYPE( size_t mbstowcs, (wchar_t *_pwcs, const char *_s, size_t _n));
|
||||
_PROTOTYPE( int mbtowc, (wchar_t *_pwc, const char *_s, size_t _n) );
|
||||
_PROTOTYPE( int rand, (void) );
|
||||
_PROTOTYPE( void *realloc, (void *_ptr, size_t _size) );
|
||||
_PROTOTYPE( void srand, (unsigned int _seed) );
|
||||
_PROTOTYPE( double strtod, (const char *_nptr, char **_endptr) );
|
||||
_PROTOTYPE( long strtol, (const char *_nptr, char **_endptr, int _base) );
|
||||
_PROTOTYPE( int system, (const char *_string) );
|
||||
_PROTOTYPE( size_t wcstombs, (char *_s, const wchar_t *_pwcs, size_t _n));
|
||||
_PROTOTYPE( int wctomb, (char *_s, int _wchar) );
|
||||
_PROTOTYPE( void *bsearch,
|
||||
(const void *_key, const void *_base, size_t _nmemb,
|
||||
size_t _size, int (*_compar) (const void *, const void *)) );
|
||||
_PROTOTYPE( void qsort, (void *_base, size_t _nmemb, size_t _size,
|
||||
int (*_compar) (const void *, const void *)) );
|
||||
_PROTOTYPE( unsigned long int strtoul,
|
||||
(const char *_nptr, char **_endptr, int _base) );
|
||||
|
||||
#endif /* STDLIB_H */
|
||||
@@ -0,0 +1,55 @@
|
||||
/* The <string.h> header contains prototypes for the string handling
|
||||
* functions.
|
||||
*/
|
||||
|
||||
#ifndef _STRING_H
|
||||
#define _STRING_H
|
||||
|
||||
#define NULL ((void *)0)
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t; /* type returned by sizeof */
|
||||
#endif
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( void *memcpy, (void *_s1, const void *_s2, size_t _n) );
|
||||
_PROTOTYPE( void *memmove, (void *_s1, const void *_s2, size_t _n) );
|
||||
_PROTOTYPE( char *strcpy, (char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strncpy, (char *_s1, const char *_s2, size_t _n) );
|
||||
_PROTOTYPE( char *strcat, (char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strncat, (char *_s1, const char *_s2, size_t _n) );
|
||||
_PROTOTYPE( int memcmp, (const void *_s1, const void *_s2, size_t _n) );
|
||||
_PROTOTYPE( int strcmp, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( int strcoll, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( int strncmp, (const char *_s1, const char *_s2, size_t _n) );
|
||||
_PROTOTYPE( size_t strxfrm, (char *_s1, const char *_s2, size_t _n) );
|
||||
_PROTOTYPE( void *memchr, (const void *_s, int _c, size_t _n) );
|
||||
_PROTOTYPE( char *strchr, (const char *_s, int _c) );
|
||||
_PROTOTYPE( size_t strcspn, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strpbrk, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strrchr, (const char *_s, int _c) );
|
||||
_PROTOTYPE( size_t strspn, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strstr, (const char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( char *strtok, (char *_s1, const char *_s2) );
|
||||
_PROTOTYPE( void *memset, (void *_s, int _c, size_t _n) );
|
||||
_PROTOTYPE( char *strerror, ( int _errnum) );
|
||||
_PROTOTYPE( size_t strlen, (const char *_s) );
|
||||
|
||||
#ifdef _MINIX
|
||||
/* For backward compatibility. */
|
||||
_PROTOTYPE( char *index, (const char *_s, int _charwanted) );
|
||||
_PROTOTYPE( char *rindex, (const char *_s, int _charwanted) );
|
||||
_PROTOTYPE( void bcopy, (const char *_src, char *_dst, int _length) );
|
||||
_PROTOTYPE( int bcmp, (const char *_s1, const char *_s2, int _length) );
|
||||
_PROTOTYPE( void bzero, (char *_dst, int _length) );
|
||||
_PROTOTYPE( void *memccpy, (char *_dst, const char *_src, int _ucharstop,
|
||||
size_t _size) );
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _STRING_H */
|
||||
@@ -0,0 +1,21 @@
|
||||
/* The <dir.h> header gives the layout of a directory. */
|
||||
|
||||
#ifndef _SYS_DIR_H
|
||||
#define _SYS_DIR_H
|
||||
|
||||
#ifndef _SYS_TYPES_H /* not quite right */
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#define DIRBLKSIZ 512 /* size of directory block */
|
||||
|
||||
#ifndef DIRSIZ
|
||||
#define DIRSIZ 14
|
||||
#endif
|
||||
|
||||
struct direct {
|
||||
ino_t d_ino;
|
||||
char d_name[DIRSIZ];
|
||||
};
|
||||
|
||||
#endif /* _SYS_DIR_H */
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
<sys/dirent.h> -- file system independent directory entry (SVR3)
|
||||
|
||||
last edit: 25-Apr-1987 D A Gwyn
|
||||
|
||||
prerequisite: <sys/types.h>
|
||||
*/
|
||||
/* $Header: dirent.h,v 1.2 89/12/18 13:53:00 eck Exp $ */
|
||||
|
||||
#if !defined(_SYS_DIRENT_H)
|
||||
#define _SYS_DIRENT_H
|
||||
|
||||
struct dirent /* data from getdents()/readdir() */
|
||||
{
|
||||
long d_ino; /* inode number of entry */
|
||||
off_t d_off; /* offset of disk directory entry */
|
||||
unsigned short d_reclen; /* length of this record */
|
||||
char d_name[1]; /* name of file */ /* non-POSIX */
|
||||
};
|
||||
|
||||
/* The following nonportable ugliness could have been avoided by defining
|
||||
DIRENTSIZ and DIRENTBASESIZ to also have (struct dirent *) arguments. */
|
||||
#define DIRENTBASESIZ (((struct dirent *)0)->d_name \
|
||||
- (char *)&((struct dirent *)0)->d_ino)
|
||||
#define DIRENTSIZ( namlen ) ((DIRENTBASESIZ + sizeof(long) + (namlen)) \
|
||||
/ sizeof(long) * sizeof(long))
|
||||
|
||||
/* DAG -- the following was moved from <dirent.h>, which was the wrong place */
|
||||
#define MAXNAMLEN 512 /* maximum filename length */
|
||||
|
||||
#if !defined(NAME_MAX)
|
||||
#define NAME_MAX (MAXNAMLEN - 1) /* DAG -- added for POSIX */
|
||||
#endif
|
||||
|
||||
#endif /* _SYS_DIRENT_H */
|
||||
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
* sys/errno.h - error numbers
|
||||
*/
|
||||
/* $Header: errno.h,v 1.1 89/12/18 13:50:40 eck Exp $ */
|
||||
|
||||
#if !defined(_SYS_ERRNO_H)
|
||||
#define _SYS_ERRNO_H
|
||||
|
||||
#define EPERM 1 /* Not owner */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
#define EINTR 4 /* Interrupted system call */
|
||||
#define EIO 5 /* I/O error */
|
||||
#define ENXIO 6 /* No such device or address */
|
||||
#define E2BIG 7 /* Arg list too long */
|
||||
#define ENOEXEC 8 /* Exec format error */
|
||||
#define EBADF 9 /* Bad file number */
|
||||
#define ECHILD 10 /* No children */
|
||||
#define EAGAIN 11 /* No more processes */
|
||||
#define ENOMEM 12 /* Not enough core */
|
||||
#define EACCES 13 /* Permission denied */
|
||||
#define EFAULT 14 /* Bad address */
|
||||
#define ENOTBLK 15 /* Block device required */
|
||||
#define EBUSY 16 /* Mount device busy */
|
||||
#define EEXIST 17 /* File exists */
|
||||
#define EXDEV 18 /* Cross-device link */
|
||||
#define ENODEV 19 /* No such device */
|
||||
#define ENOTDIR 20 /* Not a directory*/
|
||||
#define EISDIR 21 /* Is a directory */
|
||||
#define EINVAL 22 /* Invalid argument */
|
||||
#define ENFILE 23 /* File table overflow */
|
||||
#define EMFILE 24 /* Too many open files */
|
||||
#define ENOTTY 25 /* Not a typewriter */
|
||||
#define ETXTBSY 26 /* Text file busy */
|
||||
#define EFBIG 27 /* File too large */
|
||||
#define ENOSPC 28 /* No space left on device */
|
||||
#define ESPIPE 29 /* Illegal seek */
|
||||
#define EROFS 30 /* Read-only file system */
|
||||
#define EMLINK 31 /* Too many links */
|
||||
#define EPIPE 32 /* Broken pipe */
|
||||
|
||||
#if defined(__USG)
|
||||
/* Only ENOMSG, EIDRM and EDEADLK are documented */
|
||||
#define ENOMSG 35 /* No message of desired type */
|
||||
#define EIDRM 36 /* Identifier Removed */
|
||||
#define ECHRNG 37 /* Channel number out of range */
|
||||
#define EL2NSYNC 38 /* Level 2 not synchronized */
|
||||
#define EL3HLT 39 /* Level 3 halted */
|
||||
#define EL3RST 40 /* Level 3 reset */
|
||||
#define ELNRNG 41 /* Link number out of range */
|
||||
#define EUNATCH 42 /* Protocol driver not attached */
|
||||
#define ENOCSI 43 /* No CSI structure available */
|
||||
#define EL2HLT 44 /* Level 2 halted */
|
||||
#define EDEADLK 45 /* DeadLock */
|
||||
#endif /* __USG */
|
||||
|
||||
#if defined(__BDS4_2)
|
||||
/* non-blocking and interrupt i/o */
|
||||
#define EWOULDBLOCK 35 /* Operation would block */
|
||||
#define EINPROGRESS 36 /* Operation now in progress */
|
||||
#define EALREADY 37 /* Operation already in progress */
|
||||
/* ipc/network software */
|
||||
|
||||
/* argument errors */
|
||||
#define ENOTSOCK 38 /* Socket operation on non-socket */
|
||||
#define EDESTADDRREQ 39 /* Destination address required */
|
||||
#define EMSGSIZE 40 /* Message too long */
|
||||
#define EPROTOTYPE 41 /* Protocol wrong type for socket */
|
||||
#define ENOPROTOOPT 42 /* Protocol not available */
|
||||
#define EPROTONOSUPPORT 43 /* Protocol not supported */
|
||||
#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
|
||||
#define EOPNOTSUPP 45 /* Operation not supported on socket */
|
||||
#define EPFNOSUPPORT 46 /* Protocol family not supported */
|
||||
#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
|
||||
#define EADDRINUSE 48 /* Address already in use */
|
||||
#define EADDRNOTAVAIL 49 /* Can't assign requested address */
|
||||
|
||||
/* operational errors */
|
||||
#define ENETDOWN 50 /* Network is down */
|
||||
#define ENETUNREACH 51 /* Network is unreachable */
|
||||
#define ENETRESET 52 /* Network dropped connection on reset */
|
||||
#define ECONNABORTED 53 /* Software caused connection abort */
|
||||
#define ECONNRESET 54 /* Connection reset by peer */
|
||||
#define ENOBUFS 55 /* No buffer space available */
|
||||
#define EISCONN 56 /* Socket is already connected */
|
||||
#define ENOTCONN 57 /* Socket is not connected */
|
||||
#define ESHUTDOWN 58 /* Can't send after socket shutdown */
|
||||
/* ETOOMANYREFS is not documented */
|
||||
#define ETOOMANYREFS 59 /* Too many references: can't splice */
|
||||
#define ETIMEDOUT 60 /* Connection timed out */
|
||||
#define ECONNREFUSED 61 /* Connection refused */
|
||||
|
||||
/* */
|
||||
#define ELOOP 62 /* Too many levels of symbolic links */
|
||||
#define ENAMETOOLONG 63 /* File name too long */
|
||||
|
||||
/* In BSD4.2, ENOTEMPTY is defined as 64. */
|
||||
/* Just use BSD4.3 & Sun UNIX 4.2 definitions */
|
||||
#define EHOSTDOWN 64 /* Host is down */
|
||||
#define EHOSTUNREACH 65 /* No route to host */
|
||||
#define ENOTEMPTY 66 /* Directory not empty */
|
||||
|
||||
/* quotas & mush */
|
||||
/* EPROCLIM and EUSERS are not documented */
|
||||
#define EPROCLIM 67 /* Too many processes */
|
||||
#define EUSERS 68 /* Too many users */
|
||||
#define EDQUOT 69 /* Disc quota exceeded */
|
||||
|
||||
/* Network File System */
|
||||
#define ESTALE 70 /* Stale NFS file handle */
|
||||
#define EREMOTE 71 /* Too many levels of remote in path */
|
||||
|
||||
/* streams */
|
||||
/* only ENOMSG is documented */
|
||||
#define ENOSTR 72 /* Device is not a stream */
|
||||
#define ETIME 73 /* Timer expired */
|
||||
#define ENOSR 74 /* Out of streams resources */
|
||||
#define ENOMSG 75 /* No message of desired type */
|
||||
#define EBADMSG 76 /* Trying to read unreadable message */
|
||||
|
||||
#define EIDRM 77 /* Identifier removed */
|
||||
|
||||
/* SystemV Record Locking */
|
||||
#define EDEADLK 78 /* Deadlock condition. */
|
||||
#define ENOLCK 79 /* No record locks available. */
|
||||
|
||||
#endif /* __BSD4_2 */
|
||||
|
||||
#if defined(_POSIX_SOURCE)
|
||||
#if defined(_MINIX)
|
||||
#define EDEADLK 35 /* resource deadlock avoided */
|
||||
#define ENAMETOOLONG 36 /* file name too long */
|
||||
#define ENOLCK 37 /* no locks available */
|
||||
#define ENOSYS 38 /* function not implemented */
|
||||
#define ENOTEMPTY 39 /* directory not empty */
|
||||
|
||||
#define ELOCKED 101 /* can't send message */
|
||||
#define EBADCALL 102 /* error on send/recieve */
|
||||
#define ELONGSTRING 103 /* string too long */
|
||||
#endif
|
||||
/* Room for other POSIX implementations */
|
||||
#endif
|
||||
|
||||
#endif /* _SYS_ERRNO_H */
|
||||
@@ -0,0 +1,75 @@
|
||||
/* The <sys/stat.h> header defines a struct that is used in the stat() and
|
||||
* fstat functions. The information in this struct comes from the i-node of
|
||||
* some file. These calls are the only approved way to inspect i-nodes.
|
||||
*/
|
||||
|
||||
#ifndef _SYS_STAT_H
|
||||
#define _SYS_STAT_H
|
||||
|
||||
#ifndef _SYS_TYPES_H /* not quite right */
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
struct stat {
|
||||
dev_t st_dev; /* major/minor device number */
|
||||
ino_t st_ino; /* i-node number */
|
||||
mode_t st_mode; /* file mode, protection bits, etc. */
|
||||
short int st_nlink; /* # links; TEMPORARY HACK: should be nlink_t*/
|
||||
uid_t st_uid; /* uid of the file's owner */
|
||||
short int st_gid; /* gid; TEMPORARY HACK: should be gid_t */
|
||||
dev_t st_rdev;
|
||||
off_t st_size; /* file size */
|
||||
time_t st_atime; /* time of last access */
|
||||
time_t st_mtime; /* time of last data modification */
|
||||
time_t st_ctime; /* time of last file status change */
|
||||
};
|
||||
|
||||
/* Traditional mask definitions for st_mode. */
|
||||
#define S_IFMT 0170000 /* type of file */
|
||||
#define S_IFREG 0100000 /* regular */
|
||||
#define S_IFBLK 0060000 /* block special */
|
||||
#define S_IFDIR 0040000 /* directory */
|
||||
#define S_IFCHR 0020000 /* character special */
|
||||
#define S_IFIFO 0010000 /* this is a FIFO */
|
||||
#define S_ISUID 0004000 /* set user id on execution */
|
||||
#define S_ISGID 0002000 /* set group id on execution */
|
||||
/* next is reserved for future use */
|
||||
#define S_ISVTX 01000 /* save swapped text even after use */
|
||||
|
||||
/* POSIX masks for st_mode. */
|
||||
#define S_IRWXU 00700 /* owner: rwx------ */
|
||||
#define S_IRUSR 00400 /* owner: r-------- */
|
||||
#define S_IWUSR 00200 /* owner: -w------- */
|
||||
#define S_IXUSR 00100 /* owner: --x------ */
|
||||
|
||||
#define S_IRWXG 00070 /* group: ---rwx--- */
|
||||
#define S_IRGRP 00040 /* group: ---r----- */
|
||||
#define S_IWGRP 00020 /* group: ----w---- */
|
||||
#define S_IXGRP 00010 /* group: -----x--- */
|
||||
|
||||
#define S_IRWXO 00007 /* others: ------rwx */
|
||||
#define S_IROTH 00004 /* others: ------r-- */
|
||||
#define S_IWOTH 00002 /* others: -------w- */
|
||||
#define S_IXOTH 00001 /* others: --------x */
|
||||
|
||||
/* The following macros test st_mode (from POSIX Sec. 5.6.1.1. */
|
||||
#define S_ISREG(m) ((m & S_IFMT) == S_IFREG) /* is a reg file */
|
||||
#define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR) /* is a directory */
|
||||
#define S_ISCHR(m) ((m & S_IFMT) == S_IFCHR) /* is a char spec */
|
||||
#define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK) /* is a block spec */
|
||||
#define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO) /* is a pipe/FIFO */
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int chmod, (const char *_path, int _mode) );
|
||||
_PROTOTYPE( int fstat, (int _fildes, struct stat *_buf) );
|
||||
_PROTOTYPE( int mkdir, (const char *_path, int _mode) );
|
||||
_PROTOTYPE( int mkfifo, (const char *_path, int _mode) );
|
||||
_PROTOTYPE( int stat , (const char *_path, struct stat *_buf) );
|
||||
_PROTOTYPE( mode_t umask, (int _cmask) );
|
||||
|
||||
#endif /* _SYS_STAT_H */
|
||||
@@ -0,0 +1,26 @@
|
||||
/* The <times.h> header is for time times() system call. */
|
||||
|
||||
#ifndef _SYS_TIMES_H
|
||||
#define _SYS_TIMES_H
|
||||
|
||||
#ifndef _CLOCK_T
|
||||
#define _CLOCK_T
|
||||
typedef long clock_t; /* time in ticks since process started */
|
||||
#endif
|
||||
|
||||
struct tms {
|
||||
clock_t tms_utime;
|
||||
clock_t tms_stime;
|
||||
clock_t tms_cutime;
|
||||
clock_t tms_cstime;
|
||||
};
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( clock_t times, (struct tms *_buffer) );
|
||||
|
||||
#endif /* _SYS_TIMES_H */
|
||||
@@ -0,0 +1,35 @@
|
||||
/* The <sys/types.h> header contains important data type definitions.
|
||||
* It is considered good programming practice to use these definitions,
|
||||
* instead of the underlying base type. By convention, all type names end
|
||||
* with _t.
|
||||
*/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#define _SYS_TYPES_H
|
||||
|
||||
/* The type size_t holds the result of the size_of operator. At first glance,
|
||||
* it seems obvious that it should be an unsigned int, but this is not always
|
||||
* the case. For example, MINIX-ST (68000) has 32-bit pointers and 16-bit
|
||||
* integers. When one asks for the size of a 70K struct or array, the result
|
||||
* requires 17 bits to express, so size_t must be a long type.
|
||||
*/
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t; /* type returned by sizeof */
|
||||
#endif
|
||||
|
||||
#ifndef _TIME_T
|
||||
#define _TIME_T
|
||||
typedef long time_t; /* time in sec since 1 Jan 1970 0000 GMT */
|
||||
#endif
|
||||
|
||||
typedef unsigned short dev_t; /* holds (major|minor) device pair */
|
||||
typedef unsigned char gid_t; /* group id */
|
||||
typedef unsigned short ino_t; /* i-node number */
|
||||
typedef unsigned short mode_t; /* mode number within an i-node */
|
||||
typedef unsigned char nlink_t; /* number-of-links field within an i-node */
|
||||
typedef long off_t; /* offsets within a file */
|
||||
typedef int pid_t; /* type for pids (must be signed) */
|
||||
typedef unsigned short uid_t; /* user id */
|
||||
|
||||
#endif /* _SYS_TYPES_H */
|
||||
@@ -0,0 +1,25 @@
|
||||
/* The <sys/utsname.h> header gives the system name. */
|
||||
|
||||
#ifndef _SYS_UTSNAME_H
|
||||
#define _SYS_UTSNAME_H
|
||||
|
||||
#define _UTSLEN (8 + 1)
|
||||
#define _SNLEN (14 + 1)
|
||||
|
||||
struct utsname {
|
||||
char sysname[_UTSLEN];
|
||||
char nodename[_UTSLEN];
|
||||
char release[_UTSLEN];
|
||||
char version[_UTSLEN];
|
||||
char machine[_UTSLEN];
|
||||
char idnumber[_SNLEN];
|
||||
};
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int uname, (struct utsname *_name) );
|
||||
|
||||
#endif /* _SYS_UTSNAME_H */
|
||||
@@ -0,0 +1,44 @@
|
||||
/* The <sys/wait.h> header contains macros related to wait(). The value
|
||||
* returned by wait() and waitpid() depends on whether the process
|
||||
* terminated by an exit() call, was killed by a signal, or was stopped
|
||||
* due to job control, as follows:
|
||||
*
|
||||
* High byte Low byte
|
||||
* +---------------------+
|
||||
* exit(status) | status | 0 |
|
||||
* +---------------------+
|
||||
* killed by signal | 0 | signal |
|
||||
* +---------------------+
|
||||
* stopped (job control) | signal | 0177 |
|
||||
* +---------------------+
|
||||
*/
|
||||
|
||||
#ifndef _SYS_WAIT_H
|
||||
#define _SYS_WAIT_H
|
||||
|
||||
#ifndef _SYS_TYPES_H /* not quite right */
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#define _LOW(v) ( (v) & 0377)
|
||||
#define _HIGH(v) ( ((v) >> 8) & 0377)
|
||||
|
||||
#define WNOHANG 1 /* do not wait for child to exit */
|
||||
#define WUNTRACED 2 /* for job control; not implemented */
|
||||
|
||||
#define WIFEXITED(s) (_LOW(s) == 0) /* normal exit */
|
||||
#define WEXITSTATUS(s) (_HIGH(s)) /* exit status */
|
||||
#define WTERMSIG(s) (_LOW(s) & 0177) /* sig value */
|
||||
#define WIFSIGNALED(s) (((unsigned int)(x)-1 & 0xFFFF) < 0xFF) /* signaled */
|
||||
#define WIFSTOPPED(s) (_LOW(s) == 0177) /* stopped */
|
||||
#define WSTOPSIG(s) (_HIGH(s) & 0377) /* stop signal */
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( pid_t wait, (int *stat_loc) );
|
||||
_PROTOTYPE( pid_t waitpid, (pid_t _pid, int *_stat_loc, int _options) );
|
||||
|
||||
#endif /* _SYS_WAIT_H */
|
||||
@@ -0,0 +1,71 @@
|
||||
/* The <tar.h> header is used with the tape archiver, tar. */
|
||||
|
||||
#ifndef _TAR_H
|
||||
#define _TAR_H
|
||||
|
||||
#define TBLOCK 512
|
||||
#define NAMSIZ 100
|
||||
#define PFXSIZ 155
|
||||
|
||||
#define TMODLEN 8
|
||||
#define TUIDLEN 8
|
||||
#define TGIDLEN 8
|
||||
#define TSIZLEN 12
|
||||
#define TMTMLEN 12
|
||||
#define TCKSLEN 8
|
||||
|
||||
#define TMAGIC "ustar"
|
||||
#define TMAGLEN 6
|
||||
#define TVERSION "00"
|
||||
#define TVERSLEN 2
|
||||
#define TUNMLEN 32
|
||||
#define TGNMLEN 32
|
||||
#define TDEVLEN 8
|
||||
|
||||
#define REGTYPE '0'
|
||||
#define AREGTYPE '\0'
|
||||
#define LNKTYPE '1'
|
||||
#define SYMTYPE '2'
|
||||
#define CHRTYPE '3'
|
||||
#define BLKTYPE '4'
|
||||
#define DIRTYPE '5'
|
||||
#define FIFOTYPE '6'
|
||||
#define CONTTYPE '7'
|
||||
|
||||
#define TSUID 04000
|
||||
#define TSGID 02000
|
||||
#define TSVTX 01000
|
||||
|
||||
#define TUREAD 00400
|
||||
#define TUWRITE 00200
|
||||
#define TUEXEC 00100
|
||||
#define TGREAD 00040
|
||||
#define TGWRITE 00020
|
||||
#define TGEXEC 00010
|
||||
#define TOREAD 00004
|
||||
#define TOWRITE 00002
|
||||
#define TOEXEC 00001
|
||||
|
||||
union hblock {
|
||||
char dummy[TBLOCK];
|
||||
struct header {
|
||||
char name[NAMSIZ];
|
||||
char mode[TMODLEN];
|
||||
char uid[TUIDLEN];
|
||||
char gid[TGIDLEN];
|
||||
char size[TSIZLEN];
|
||||
char mtime[TMTMLEN];
|
||||
char chksum[TCKSLEN];
|
||||
char typeflag;
|
||||
char linkname[NAMSIZ];
|
||||
char magic[TMAGLEN];
|
||||
char version[TVERSLEN];
|
||||
char uname[TUNMLEN];
|
||||
char gname[TGNMLEN];
|
||||
char devmajor[TDEVLEN];
|
||||
char devminor[TDEVLEN];
|
||||
char prefix[PFXSIZ];
|
||||
} dbuf;
|
||||
};
|
||||
|
||||
#endif /* _TAR_H */
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef _TERMCAP_H
|
||||
#define _TERMCAP_H
|
||||
|
||||
#include <ansi.h>
|
||||
|
||||
_PROTOTYPE( int tgetent, (char *_bp, char *_name) );
|
||||
_PROTOTYPE( int tgetflag, (char *_id) );
|
||||
_PROTOTYPE( int tgetnum, (char *_id) );
|
||||
_PROTOTYPE( char *tgetstr, (char *_id, char **_area) );
|
||||
_PROTOTYPE( char *tgoto, (char *_cm, int _destcol, int _destline) );
|
||||
_PROTOTYPE( int tputs, (char *_cp, int _affcnt, void (*_outc)(int)) );
|
||||
|
||||
#endif /* _TERMCAP_H */
|
||||
@@ -0,0 +1,131 @@
|
||||
/* The <termios.h> header is used for controlling tty modes. */
|
||||
|
||||
#ifndef _TERMIOS_H
|
||||
#define _TERMIOS_H
|
||||
|
||||
typedef unsigned short tcflag_t;
|
||||
typedef unsigned char cc_t;
|
||||
typedef unsigned int speed_t;
|
||||
|
||||
#define NCCS 11 /* size of cc_c array */
|
||||
|
||||
/* Primary terminal control structure. POSIX Table 7-1. */
|
||||
struct termios {
|
||||
tcflag_t c_iflag; /* input modes */
|
||||
tcflag_t c_oflag; /* output modes */
|
||||
tcflag_t c_cflag; /* control modes */
|
||||
tcflag_t c_lflag; /* local modes */
|
||||
speed_t c_ispeed; /* input speed */
|
||||
speed_t c_ospeed; /* output speed */
|
||||
cc_t c_cc[NCCS]; /* control characters */
|
||||
};
|
||||
|
||||
/* Values for termios c_iflag bit map. POSIX Table 7-2. */
|
||||
#define BRKINT 000001 /* signal interrupt on break */
|
||||
#define ICRNL 000002 /* map CR to NL on input */
|
||||
#define IGNBRK 000004 /* ignore break */
|
||||
#define IGNCR 000010 /* ignore CR */
|
||||
#define IGNPAR 000020 /* ignore characters with parity errors */
|
||||
#define INLCR 000100 /* map NL to CR on input */
|
||||
#define INPCK 000200 /* enable input parity check */
|
||||
#define ISTRIP 000400 /* mask off 8th bit */
|
||||
#define IXOFF 001000 /* enable start/stop input control */
|
||||
#define IXON 002000 /* enable start/stop output control */
|
||||
#define PARMRK 004000 /* mark parity errors in the input queue */
|
||||
|
||||
/* Values for termios c_oflag bit map. POSIX Sec. 7.1.2.3. */
|
||||
#define OPOST 000001 /* perform output processing */
|
||||
|
||||
/* Values for termios c_cflag bit map. POSIX Table 7-3. */
|
||||
#define CLOCAL 000001 /* ignore modem status lines */
|
||||
#define CREAD 000002 /* enable receiver */
|
||||
#define CSIZE 000014 /* number of bits per character */
|
||||
#define CSTOPB 000020 /* send 2 stop bits if set, else 1 */
|
||||
#define HUPCL 000040 /* hang up on last close */
|
||||
#define PARENB 000100 /* enable parity on output */
|
||||
#define PARODD 000200 /* use odd parity if set, else even */
|
||||
|
||||
#define CS5 000000 /* if CSIZE is CS5, characters are 5 bits */
|
||||
#define CS6 000004 /* if CSIZE is CS6, characters are 6 bits */
|
||||
#define CS7 000010 /* if CSIZE is CS7, characters are 7 bits */
|
||||
#define CS8 000014 /* if CSIZE is CS8, characters are 8 bits */
|
||||
|
||||
/* Values for termios c_lflag bit map. POSIX Table 7-4. */
|
||||
#define ECHO 000001 /* enable echoing of input characters */
|
||||
#define ECHOE 000002 /* echo ERASE as backspace */
|
||||
#define ECHOK 000004 /* echo KILL */
|
||||
#define ECHONL 000010 /* echo NL */
|
||||
#define ICANON 000020 /* canonical input (erase and kill enabled) */
|
||||
#define IEXTEN 000040 /* enable extended functions */
|
||||
#define ISIG 000100 /* enable signals */
|
||||
#define NOFLSH 000200 /* disable flush after interrupt or quit */
|
||||
#define TOSTOP 000400 /* send SIGTTOU (job control, not implemented*/
|
||||
|
||||
/* Indices into c_cc array. Default values in parentheses. POSIX Table 7-5. */
|
||||
#define VEOF 0 /* cc_c[VEOF] = EOF char (CTRL-D) */
|
||||
#define VEOL 1 /* cc_c[VEOL] = EOL char (??) */
|
||||
#define VERASE 2 /* cc_c[VERASE] = ERASE char (CTRL-H) */
|
||||
#define VINTR 3 /* cc_c[VINTR] = INTR char (DEL) */
|
||||
#define VKILL 4 /* cc_c[VKILL] = KILL char (@) */
|
||||
#define VMIN 5 /* cc_c[VMIN] = MIN value for timer */
|
||||
#define VQUIT 6 /* cc_c[VQUIT] = QUIT char (CTRL-\) */
|
||||
#define VTIME 7 /* cc_c[VTIME] = TIME value for timer */
|
||||
#define VSUSP 8 /* cc_c[VSUSP] = SUSP (job control, not impl */
|
||||
#define VSTART 9 /* cc_c[VSTART] = START char (always CTRL-S) */
|
||||
#define VSTOP 10 /* cc_c[VSTOP] = STOP char (always CTRL-Q) */
|
||||
|
||||
/* Values for the baud rate settings. POSIX Table 7-6. */
|
||||
#define B0 0000000 /* hang up the line */
|
||||
#define B50 0010000 /* 50 baud */
|
||||
#define B75 0020000 /* 75 baud */
|
||||
#define B110 0030000 /* 110 baud */
|
||||
#define B134 0040000 /* 134.5 baud */
|
||||
#define B150 0050000 /* 150 baud */
|
||||
#define B200 0060000 /* 200 baud */
|
||||
#define B300 0070000 /* 300 baud */
|
||||
#define B600 0100000 /* 600 baud */
|
||||
#define B1200 0110000 /* 1200 baud */
|
||||
#define B1800 0120000 /* 1800 baud */
|
||||
#define B2400 0130000 /* 2400 baud */
|
||||
#define B4800 0140000 /* 4800 baud */
|
||||
#define B9600 0150000 /* 9600 baud */
|
||||
#define B19200 0160000 /* 19200 baud */
|
||||
#define B38400 0170000 /* 38400 baud */
|
||||
|
||||
/* Optional actions for tcsetattr(). POSIX Sec. 7.2.1.2. */
|
||||
#define TCSANOW 1 /* changes take effect immediately */
|
||||
#define TCSADRAIN 2 /* changes take effect after output is done */
|
||||
#define TCSAFLUSH 3 /* wait for output to finish and flush input */
|
||||
|
||||
/* Queue_selector values for tcflush(). POSIX Sec. 7.2.2.2. */
|
||||
#define TCIFLUSH 1 /* flush accumulated input data */
|
||||
#define TCOFLUSH 2 /* flush accumulated output data */
|
||||
#define TCIOFLUSH 3 /* flush accumulated input and output data */
|
||||
|
||||
/* Action values for tcflow(). POSIX Sec. 7.2.2.2. */
|
||||
#define TCOOFF 1 /* suspend output */
|
||||
#define TCOON 2 /* restart suspended output */
|
||||
#define TCIOFF 3 /* transmit a STOP character on the line */
|
||||
#define TCION 4 /* transmit a START character on the line */
|
||||
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int tcsendbreak, (int _fildes, int _duration) );
|
||||
_PROTOTYPE( int tcdrain, (int _filedes) );
|
||||
_PROTOTYPE( int tcflush, (int _filedes, int _queue_selector) );
|
||||
_PROTOTYPE( int tcflow, (int _filedes, int _action) );
|
||||
_PROTOTYPE( speed_t cfgetospeed, (struct termios *_termios_p) );
|
||||
_PROTOTYPE( speed_t cfsetospeed, \
|
||||
(struct termios *_termios_p, speed_t _speed) );
|
||||
_PROTOTYPE( speed_t cfgetispeed, (struct termios *_termios_p) );
|
||||
_PROTOTYPE( speed_t cfsetispeed, \
|
||||
(struct termios *_termios_p, speed_t _speed) );
|
||||
_PROTOTYPE( int tcgetattr, (int _filedes, struct termios *_termios_p) );
|
||||
_PROTOTYPE( int tcsetattr, \
|
||||
(int _filedes, int _opt_actions, struct termios *_termios_p) );
|
||||
|
||||
#endif /* _TERMIOS_H */
|
||||
@@ -0,0 +1,67 @@
|
||||
/* The <time.h> header is used by the procedures that deal with time.
|
||||
* Handling time is surprisingly complicated, what with GMT, local time
|
||||
* and other factors. Although the Bishop of Ussher (1581-1656) once
|
||||
* calculated that based on the Bible, the world began on 12 Oct. 4004 BC
|
||||
* at 9 o'clock in the morning, in the UNIX world time begins at midnight,
|
||||
* 1 Jan. 1970 GMT. Before that, all was NULL and (void).
|
||||
*/
|
||||
|
||||
#ifndef _TIME_H
|
||||
#define _TIME_H
|
||||
|
||||
#define CLOCKS_PER_SEC 60 /* MINIX always uses 60 Hz, even in Europe */
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
#define CLK_TCK CLOCKS_PER_SEC /* obsolete name for CLOCKS_PER_SEC */
|
||||
#endif
|
||||
|
||||
#define NULL ((void *)0)
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t;
|
||||
#endif
|
||||
|
||||
#ifndef _TIME_T
|
||||
#define _TIME_T
|
||||
typedef unsigned long time_t; /* time in sec since 1 Jan 1970 0000 GMT */
|
||||
#endif
|
||||
|
||||
#ifndef _CLOCK_T
|
||||
#define _CLOCK_T
|
||||
typedef unsigned long clock_t; /* time in ticks since process started */
|
||||
#endif
|
||||
|
||||
struct tm {
|
||||
int tm_sec; /* seconds after the minute [0, 59] */
|
||||
int tm_min; /* minutes after the hour [0, 59] */
|
||||
int tm_hour; /* hours since midnight [0, 23] */
|
||||
int tm_mday; /* day of the month [1, 31] */
|
||||
int tm_mon; /* months since January [0, 11] */
|
||||
int tm_year; /* years since 1900 */
|
||||
int tm_wday; /* days since Sunday [0, 6] */
|
||||
int tm_yday; /* days since January 1 [0, 365] */
|
||||
int tm_isdst; /* Daylight Saving Time flag */
|
||||
};
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( clock_t clock, (void) );
|
||||
_PROTOTYPE( double difftime, (time_t _time1, time_t _time0) );
|
||||
_PROTOTYPE( time_t mktime, (struct tm *_timeptr) );
|
||||
_PROTOTYPE( time_t time, (time_t *_timeptr) );
|
||||
_PROTOTYPE( char *asctime, (const struct tm *_timeptr) );
|
||||
_PROTOTYPE( char *ctime, (const time_t *_timer) );
|
||||
_PROTOTYPE( struct tm *gmtime, (const time_t *_timer) );
|
||||
_PROTOTYPE( struct tm *localtime, (const time_t *_timer) );
|
||||
_PROTOTYPE( size_t strftime, (char *_s, size_t _max, const char *_fmt,
|
||||
const struct tm *_timep) );
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
_PROTOTYPE( void tzset, (void) );
|
||||
#endif
|
||||
|
||||
#endif /* _TIME_H */
|
||||
@@ -0,0 +1,67 @@
|
||||
/* The <time.h> header is used by the procedures that deal with time.
|
||||
* Handling time is surprisingly complicated, what with GMT, local time
|
||||
* and other factors. Although the Bishop of Ussher (1581-1656) once
|
||||
* calculated that based on the Bible, the world began on 12 Oct. 4004 BC
|
||||
* at 9 o'clock in the morning, in the UNIX world time begins at midnight,
|
||||
* 1 Jan. 1970 GMT. Before that, all was NULL and (void).
|
||||
*/
|
||||
|
||||
#ifndef _TIME_H
|
||||
#define _TIME_H
|
||||
|
||||
#define CLOCKS_PER_SEC 60 /* MINIX always uses 60 Hz, even in Europe */
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
#define CLK_TCK CLOCKS_PER_SEC /* obsolete name for CLOCKS_PER_SEC */
|
||||
#endif
|
||||
|
||||
#define NULL ((void *)0)
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t;
|
||||
#endif
|
||||
|
||||
#ifndef _TIME_T
|
||||
#define _TIME_T
|
||||
typedef unsigned long time_t; /* time in sec since 1 Jan 1970 0000 GMT */
|
||||
#endif
|
||||
|
||||
#ifndef _CLOCK_T
|
||||
#define _CLOCK_T
|
||||
typedef unsigned long clock_t; /* time in ticks since process started */
|
||||
#endif
|
||||
|
||||
struct tm {
|
||||
int tm_sec; /* seconds after the minute [0, 59] */
|
||||
int tm_min; /* minutes after the hour [0, 59] */
|
||||
int tm_hour; /* hours since midnight [0, 23] */
|
||||
int tm_mday; /* day of the month [1, 31] */
|
||||
int tm_mon; /* months since January [0, 11] */
|
||||
int tm_year; /* years since 1900 */
|
||||
int tm_wday; /* days since Sunday [0, 6] */
|
||||
int tm_yday; /* days since January 1 [0, 365] */
|
||||
int tm_isdst; /* Daylight Saving Time flag */
|
||||
};
|
||||
|
||||
/* Function Prototypes. */
|
||||
#ifndef _ANSI_H
|
||||
#include <ansi.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( clock_t clock, (void) );
|
||||
_PROTOTYPE( double difftime, (time_t _time1, time_t _time0) );
|
||||
_PROTOTYPE( time_t mktime, (struct tm *_timeptr) );
|
||||
_PROTOTYPE( time_t time, (time_t *_timeptr) );
|
||||
_PROTOTYPE( char *asctime, (const struct tm *_timeptr) );
|
||||
_PROTOTYPE( char *ctime, (const time_t *_timer) );
|
||||
_PROTOTYPE( struct tm *gmtime, (const time_t *_timer) );
|
||||
_PROTOTYPE( struct tm *localtime, (const time_t *_timer) );
|
||||
_PROTOTYPE( size_t strftime, (char *_s, size_t _max, const char *_fmt,
|
||||
const struct tm *_timep) );
|
||||
|
||||
#ifdef _POSIX_SOURCE
|
||||
_PROTOTYPE( void tzset, (void) );
|
||||
#endif
|
||||
|
||||
#endif /* _TIME_H */
|
||||
28
study/linux-travel/MINIX-1.5/1.5/Floppies/Readme
Normal file
28
study/linux-travel/MINIX-1.5/1.5/Floppies/Readme
Normal file
@@ -0,0 +1,28 @@
|
||||
This directory contains images of the 360K PC floppies which hold Minix 1.5.
|
||||
These are the ACTUAL Minix 1.5 distribution disks. The disks have the
|
||||
following notice:
|
||||
|
||||
MINIX 1.5 for the IBM PC, XT, AT, 386 and PS/2
|
||||
by Andrew S. Tanenbaum
|
||||
(c) 1991 Prentice-Hall, Inc., A Division of Simon & Schuster
|
||||
ISBN: 0-13-585076-2
|
||||
|
||||
The disks are labelled as follows:
|
||||
|
||||
Disk 01: PC Boot Disk
|
||||
Disk 02: AT Boot Disk
|
||||
Disk 03: Universal Boot System
|
||||
Disk 04: Root File System
|
||||
Disk 05: System Binaries #1 (/usr)
|
||||
Disk 06: System Binaries #2
|
||||
Disk 07: System Binaries #3
|
||||
Disk 08: System Binaries #4
|
||||
Disk 09: System Binaries #5
|
||||
Disk 10: System Binaries #6
|
||||
Disk 11: Operating System Sources
|
||||
Disk 12: Include, lib, tools Sources
|
||||
Disk 13: Commands Sources #1
|
||||
Disk 14: Commands Sources #2
|
||||
Disk 15: Commands Sources #3
|
||||
Disk 16: Commands Sources #4
|
||||
Disk 17: Networking Sources
|
||||
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk01
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk01
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk02
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk02
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk03
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk03
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk04
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk04
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk05
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk05
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk06
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk06
Normal file
Binary file not shown.
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk07
Normal file
BIN
study/linux-travel/MINIX-1.5/1.5/Floppies/disk07
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user