#DESCRIPTION:A small subset of the syscalls
access01 access01
# Basic test for access(2) using F_OK, R_OK, W_OK and X_OK arguments.
access03 access03
# EFAULT error testing for access(2)
alarm01 alarm01
# Basic test for alarm(2)
alarm02 alarm02
# Boundary Value Test for alarm(2)
#    TEST CASES
#      Test Case One - A call to alarm() shall not return an error if
#       seconds is a -1.
#       Test FAILS if a non-zero value is returned.
#      Test Case Two - A call to alarm() shall not return an error if
#       seconds is the maximum unsigned integer (2**63).
#       Test FAILS if a non-zero value is returned.
#      Test Case Three - A call to alarm() shall not return an error if
#       seconds is the maximum unsigned integer plus 1 ((2**63)+1).
#       Test FAILS if a non-zero value is returned.
alarm03 alarm03
# alarm(2) cleared by a fork
#    TEST CASES
# 	1.) alarm(100), fork, child's alarm(0) shall return 0;
#	2.) alarm(100), fork, parent's alarm(0) shall return non-zero.
asyncio02 asyncio02
# 	Attempt to get some memory to work with.
# 	Call testrun writing (BUFSIZ + 1) bytes
# 	Call testrun writing BUFSIZ bytes
# 	Repeated call to testrun() with decreasing write sizes
# 		less than BUFSIZ
# 	End
#
# 	Start testrun()
# 	Attempt to open a temporary file.
# 	Write the memory to the file.
# 	Attempt to close the file which also flushes the buffers.
# 	Now check to see if the number of bytes written is the
# 		same as the number of bytes in the file.
# 	Cleanup
brk01 brk01
# Basic test for brk()
#    TEST CASES
# 	1.) brk(2) returns...
chdir02 chdir02
# Basic test for chdir(2)
#    TEST CASES
# 	1.) chdir(2) returns...
chmod02 chmod02
# Basic test for chmod(2)
#    TEST CASES
# 	1.) chmod(2) returns...
chown01 chown01
# Basic test for chown(2)
#    TEST CASES
# 	1.) chown(2) returns...
close08 close08
# Basic test for close(2)
#    TEST CASES
# 	1.) close(2) returns...
dup01 dup01
# Basic test for dup(2)
#    TEST CASES
# 	1.) dup(2) returns...(See Description)
dup02 dup02
#  Negative test for dup(2) with bad fd
#    TEST CASES
# 	1-?.) dup(2) returns -1 with errno set to EBADF...(See Description)
dup03 dup03
# Negative test for dup(2) (too many fds)
dup04 dup04
# Basic test for dup(2) of a system pipe descriptor
dup05 dup05
# Basic test for dup(2) of a named pipe descriptor
execl01 execl01
# Basic test for execl(2)
execle01 execle01
# Basic test for execle(2)
execlp01 execlp01
# Basic test for execlp(2
execv01 execv01
# Basic test for execv(2)
execve01 execve01
# Basic test for execve(2)
execvp01 execvp01
# Basic test for execvp(2)
f00f f00f
# This is a simple test for handling of the pentium f00f bug.
# It is an example of a catistrophic test case.  If the system
# doesn't correctly handle this test, it will likely lockup.
fchmod01 fchmod01
# Basic test for fchmod(2) using 0700 argument.
fchown01 fchown01
# Basic test for fchown(2)
fcntl02 fcntl02
# Basic test for fcntl(2) using F_DUPFD argument
fcntl03 fcntl03
# Basic test for fcntl(2) using F_GETFD argument
fcntl04 fcntl04
# Basic test for fcntl(2) using F_GETFL argument
fcntl05 fcntl05
# Basic test for fcntl(2) using F_GETLK argument
fcntl07 fcntl07
# Close-On-Exec of named pipe functional test
fcntl08 fcntl08
# Basic test for fcntl(2) using F_SETFL argument
fcntl09 fcntl09
# Basic test for fcntl(2) using F_SETLK argument
fcntl10 fcntl10
# Basic test for fcntl(2) using F_SETLKW argument
fork01 fork01
# Basic test for fork(2)
#    TEST CASES
# 	1.) fork returns without error
# 	2.) fork returns the pid of the child
fork04 fork04
# Child inheritance of Environment Variables after fork()
#    TEST CASES
#       Test these environment variables correctly inherited by child:
#       1. TERM
#       2. NoTSetzWq
#       3. TESTPROG
fork05 fork05
# This is a test sent in my Ulrich Drepper to test for a bug in fork() where
# %gs is not handled correctly.  See fork05.c for a copy of Ulrich's email
fpathconf01 fpathconf01
# Basic test for fpathconf(2)
fstat01 fstat01
# Basic test for fstat(2)
fstatfs01 fstatfs01
# Basic test for fstatfs(2)
fsync01 fsync01
# Basic test for fsync(2)
getegid01 getegid01
# Basic test for getegid(2)
geteuid01 geteuid01
# Basic test for geteuid(2)
getgid01 getgid01
# Basic test for getgid(2)
getgroups01 getgroups01
# Getgroups system call critical test
#    TEST CASES
# 	1. Check to see if getgroups(-1, gidset) fails and sets errno to EINVAL
# 	2. Check to see if getgroups(0, gidset) does not return -1 and gidset is
# 	not modified.
# 	3. Check to see if getgroups(x, gigset) fails and sets errno to EINVAL,
# 	where x is one less then what is returned by getgroups(0, gidset).
# 	4. Check to see if getgroups() succeeds and gidset contains
# 	group id returned from getgid().
gethostid01 gethostid01
# Basic test for gethostid(2)
gethostname01 gethostname01
# Basic test for gethostname(2)
getpgrp01 getpgrp01
# Basic test for getpgrp(2)
getpid01 getpid01
# Basic test for getpid(2)
getppid01 getppid01
# Basic test for getppid(2)
getuid01 getuid01
# Basic test for getuid(2)
kill02 kill02
# Sending a signal to processes with the same process group ID.
kill09 kill09
# Basic test for kill(2)
link02 link02
# Basic test for link(2)
link03 link03
# multi links tests
link04 link04
# Negative test cases for link(2)
link05 link05
# multi links (EMLINK) negative test
lseek01 lseek01
# Basic test for lseek(2)
lseek02 lseek02
# Negative test for lseek(2)
lseek03 lseek03
# Negative test for lseek(2) whence
lseek04 lseek04
# Negative test for lseek(2) of a fifo
lseek05 lseek05
# Negative test for lseek(2) of a pipe
lstat02 lstat02
# Basic test for lstat(2)
mkdir01 mkdir01
# Basic errno test for mkdir(2)
mkdir08 mkdir08
# Basic test for mkdir(2)
qmm01 mmap001 -m 1
# Basic mmap() test.
open03 open03
# Basic test for open(2)
pathconf01 pathconf01
# Basic test for pathconf(2)
pause01 pause01
# Basic test for pause(2)
read01 read01
# Basic test for read(2)
readdir01 readdir01
# write multiple files and try to find them with readdir
#    TEST CASES
# 	1.) Create n files and check that readdir() finds n files
readlink02 readlink02
# Basic test for readlink(2)
rename02 rename02
# Basic test for rename(2)
rmdir04 rmdir04
# Basic test for rmdir(2)
rmdir05 rmdir05
# rmdir(2) test for errno(s) EINVAL, EMLINK, EFAULT
sbrk01 sbrk01
# Basic test for sbrk(2)
select01 select01
# select to a file
#    TEST CASES
#      1.) select(2) to a fd of regular file with no I/O and small timeout
select02 select02
# select of system pipe fds
select03 select03
select04 select04
# select of fd of a named-pipe (FIFO)
setgid01 setgid01
# Basic test for setgid(2)
setpgid01 setpgid01
# Basic test for setpgid(2)
setpgrp01 setpgrp01
# Basic test for setpgrp(2)
setregid01 setregid01
# Basic test for setregid(2)
setreuid01 setreuid01
# Basic test for setreuid(2)
setuid01 setuid01
# Basic test for setuid(2)
sighold02 sighold02
# Holding all signals
signal03 signal03
# Boundary value and other invalid value checking of signal setup
# and signal sending.
sigrelse01 sigrelse01
# Releasing held signals
stat05 stat05
# Basic test for stat(2)
stat06 stat06
# Negative tests for stat(2)
statfs01 statfs01
# Basic test for statfs(2) mounted filesys
statvfs01 statvfs01
# Basic test for statvfs(2) mounted filesys
sync01 sync01
# Basic test for sync(2)
time01 time01
# Basic test for time(2)
times01 times01
# Basic test for times(2)
ulimit01 ulimit01
# Basic test for ulimit(2)
umask01 umask01
# Basic test for umask(2)
uname01 uname01
# Basic test for uname(2)
unlink05 unlink05
# Basic test for unlink(2)
unlink06 unlink06
# unlink(2) of a FIFO
unlink07 unlink07
# unlink(2) negative testcases
unlink08 unlink08
# unlink(2) negative testcases
wait02 wait02
# Basic test for wait(2)
write01 write01
# Basic test for write(2)
symlink01 symlink01
# Make a Symbolic Link to a File
#    TEST CASES
# 	1. Create symbolic link with abnormal object name path
# 	2. Create symbolic link with normal object name path
# 	3. Create symbolic link with path to an existing object file
# 	4. Receive EEXIST error when creating an already existing symbolic link file.
# 	5. Receive ENAMETOOLONG error when creating symbolic link which exceeds PATH_MAX in length
symlink02 symlink02
# Basic test for symlink(2)
readlink01A symlink01 -T readlink01
# Reads Value of a Symbolic Link
#    TEST CASES
# 	1. Read a symbolic link file which points at no object file
# 	2. Read a symbolic link file which points at an object file
# 	3. Receive ENAMETOOLONG error when reading symbolic link which exceeds PATH_MAX in length
# 	4. Receive an EINVAL error when reading a file which is not a symbolic
# link file.
stat04 symlink01 -T stat04
# Gets File Status Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Get object file status through symbolic link file
# 	2. Receive ENOENT error when accessing non-existent object file through symbolic link file
# 	3. Receive ELOOP error when nesting of symbolic links exceed maximum
lstat01A symlink01 -T lstat01
# Get file Status About a Symbolic Link File
#    TEST CASES
# 	1. Get symbolic link file status when pointing at no object file
# 	2. Get symbolic link file status when pointing at an object file
# 	3. Get object file status when argument is not a symbolic link
# file.
mkdir05A symlink01 -T mkdir05
# Fail When Making a Directory File Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Receive EEXIST error when creating a directory through a symbolic link file
rmdir03A symlink01 -T rmdir03
# Fail When Removing a Directory File Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Receive ENOTDIR error when removing an existing directory through a symbolic link file
chdir01A symlink01 -T chdir01
# Changes Current Working DIrectory Location Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Change current working directory through a symbolic link file
# 	2. Receive ENOENT error when accessing non-existent directory through symbolic link file
# 	3. Receive ELOOP error when nesting of symbolic links exceed maximum
link01 symlink01 -T link01
# Creates a Link To a File Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Link an object file to a new file through symbolic link file
# 	2. Receive ENOENT error when accessing non-existent object file through symbolic link file
# 	3. Receive ELOOP error when nesting of symbolic links exceed maximum
unlink01 symlink01 -T unlink01
# Removes a Link To a File And Not Any Object File Which Maybe Pointed At
#    TEST CASES
# 	1. Delete a symbolic link file and not the object file which it points at
chmod01A symlink01 -T chmod01
# Change Object File Permissions Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Change file permissions of object file through a symbolic link file
# 	2. Receive ENOENT error when accessing non-existent directory through symbolic link file
# 	3. Receive ELOOP error when nesting of symbolic links exceed maximum
utime01A symlink01 -T utime01
# Set File Access And Modify Object File Times Indirectly From a Symbolic Link File
#    TEST CASES
# 	1. Change inode times of object file through a symbolic link file
# 	2. Receive ENOENT error when accessing non-existent directory through symbolic link file
# 	3. Receive ELOOP error when nesting of symbolic links exceed maximum
rename01A symlink01 -T rename01
# Rename a Symbolic Link File And Not Any Object File
#    TEST CASES
# 	1. Rename a symbolic link file which points at no object file
# 	2. Rename a symbolic link file which points at an object file without any object file alterations.
# 	3. Receive EXDEV when trying to rename a symbolic link file to an address outside of current file system
open01A symlink01 -T open01
# Create/Open a File For Reading Or Writing Indirectly From a Symbolic Link File
#    TEST CASES
#  	1. Create an object file through a symbolic link file
#  	2. Open an object file through a symbolic link file
#  	3. Receive EEXIST error when exclusively creating an object file through a symbolic link file
#  	4. Receive ENOENT error when accessing non-existent object file through symbolic link file
#  	5. Receive ELOOP error when nesting of symbolic links exceed maximum

