between creation of a file descriptor and close(2) when using kernel
assisted threads. What we do is stick descriptors in the table, but
mark them as "larval". This causes essentially everything to treat
it as a non-existent descriptor, except for fdalloc(), which sees a
filled slot so that it won't (incorrectly) allocate it again. When
a descriptor is fully constructed, the code that has constructed it
marks it as "mature" (which actually clears the "larval" flag), and
things continue to work as normal.
While here, gather all the code that gets a descriptor from the table
into a fd_getfile() function, and call it, rather than having the
same (sometimes incorrect) code copied all over the place.
*_emul_path variables
change macros CHECK_ALT_{CREAT|EXIST} to use that, 'root' doesn't need
to be passed explicitly any more and *_CHECK_ALT_{CREAT|EXIST} are removed
change explicit emul_find() calls in probe functions to get the emulation
path from the checked exec switch entry's emulation
remove no longer needed header files
add e_flags and e_syscall to struct emul; these are unsed and empty for now
NetBSD pread(2) and pwrite(2). These still require indirection because
the arguments need to be converted to the correct types.
Delete svr4_sys_pread64() and svr4_sys_pwrite64(), since the arguments
for these calls do not need conversion, and the syscall switch calls
the native NetBSD system calls directly.
pread64(), pwrite(), pwrite64():
* The `offset' argument specifies an absolute offset within the file.
* After performing the read resp. write operation, restore the original
offset within the file.
Also, change the argument structure used by svr4_sys_prwite64() to
svr4_sys_pwrite64_args, instead of the 32-bit offset version.
1. always do the stackgap_init()/CHECKALT first in syscalls that need it.
2. svr4_emul_find() uses malloc for the buf, does not use copyoutstr, but
copyout().
Removed makesyscalls.sh; it was really old and we don't need a separate copy.