Commit Graph

2381 Commits

Author SHA1 Message Date
eeh cfa7e7d168 Support chroot-ing to a 32-bit installation. 2002-05-31 00:49:42 +00:00
thorpej 8bf2751b15 Statements must follow labels. 2002-05-30 18:44:30 +00:00
manu 0d78304995 Improved support for polling semaphores: when a polling semaphore is unblocked,
poll will return true until the semaphore is blocked again, but before the
semaphore is blocked, poll returns false.

We do this by maintaining another queue of "released" processes in
struct irix_usema_rec. Unblocking causes the waiting process record to be
moved to the released queue, and poll check for the process in this released
queue.
2002-05-30 05:16:10 +00:00
manu f4e81e0cfb - the signal trampoline address is now copied during a fork(). This avoids
a SIGSEGV when sigaction(2) is used before a fork(2) and a signal is received
in the child.
- we now nearly correctly emulate PR_TERMCHILD in prctl(2). (the perfect
emulation would not send a SIGHUP if the parent is killed)
2002-05-28 21:15:41 +00:00
manu e8f2e051a3 - When requested a semamphore count, the userlands expects the kernel to
return the number of processes waiting on the semaphore. We now maintiain
a count of waiting processes.
- Blocked processes are unblocked "first in, first out". We now have a
queue of waiting processes on a asemaphores, so that we can wakeup the
first blocked process.

Problems:
- We now have a lot of dynamic memory allocation, it may be a bit slow.
- Nothing is SMP safe for now. We need to add locks.
- On close, we forget about a semaphore, which is incorrect. One process
  can close its fd attached on a semaphore, but other processes  would carry
  on using it. Since any process can join a shared arena, this is not an
  easy thing to solve.
- A lot of usema/usync functionnalities are still to be discovered.
2002-05-26 21:37:12 +00:00
manu d72c924447 First implementation of a few usync_cntl commands. 2002-05-22 21:32:21 +00:00
manu 381f22f4de File forgotten in the previous commit. 2002-05-22 05:14:51 +00:00
manu 23f31f2a3a First implementation of IRIX /dev/usemaclone functionnalities. This
successfully emulates a few test program that use poll semaphores,
including the attach-to-file-descriptor-and-select feature.

There are a few issues:
1) at least one ioctl need to set retval. We handle this in irix_sys_ioctl()
by replacing the data argument by a pointer to a strucutre in the stackgap
that carries the real data and retval. The underlying ioctl methods can
therefore retreive both data and retval.

2) usemaclone is a cloning device: each time it is open, it creates a new
context, and ioctl operation on each open file descriptor will lead to
different behavior. This functionnality is available in NetBSD through the
devvp branch. This first implementation does not use devvp yet, but this
should be done later. Currently, we create a new vnode, and we provide our
own vnode operations. Some operation are applied to the cloned vnode, others
are applied to the original vnode. The v_data field is used to hold a
reference to the original vnode so that we can work on it.

3) at least the setattr vnode operation needs some customisation: IRIX
libc relies on the fact that fchmod on /dev/usema will return 0 in case
of failure.
2002-05-22 05:14:00 +00:00
jdolecek ee7012d13e linux_sys_getdents64(): remove the oldcall bug workaround cruft,
it's not needed for this call, and update comment accordingly
2002-05-20 06:45:11 +00:00
jdolecek c118cb14c0 linux_sys_getdents64(): make the d_off member point to next entry, rather
than current one; this is expected (even documented) behaviour of the
new system call
This fixes the endless loop when reading directories on NFS, though
applications won't see all directory entries due to different problem.
Fix by Matthias Scheler and Charles Hannum.
2002-05-20 06:40:37 +00:00
jdolecek aae43707d7 whitespace fixes 2002-05-20 06:26:46 +00:00
jdolecek def25b45fa Fix bug introduced in rev. 1.69 - linux_fakedev() returned always
zero for nontranslated raw devices.
This fixes recently discovered jdb /dev/dsp stdin problem, reported
on current-users by Mark Davies.
2002-05-20 06:22:43 +00:00
jdolecek bfbe50611b On archs with broken linux struct stat64 st_ino, rename linux_stat64's
lst_ino to __lst_ino and lst_ino64 to lst_ino, and define
LINUX_STAT64_HAS_BROKEN_ST_INO. Only assign __lst_ino if this define
is present.

This fixes compile on powerpc archs, and hence port-powerpc/16893.
2002-05-19 18:03:15 +00:00
jdolecek 98a5f2b671 hook in truncate64(2) and ftruncate64(2) 2002-05-19 17:55:42 +00:00
jdolecek 973744c531 add missing linux_file64.c, which is needed now 2002-05-19 17:55:08 +00:00
matt 6456f8fa92 Make COMPAT_LINUX compile again on Alpha. linux_getdents64 moved but
files.linux_alpha wasn't updated.  common/linux_file64.c contains a lot
of syscalls which aren't on Linux/alpha so #ifdef them for alpha.
2002-05-13 05:41:26 +00:00
simonb 75119b46c5 Remove an unreachable "return error;". 2002-05-13 05:37:58 +00:00
simonb 7a0dcaf565 Remove an unreachable "return 0;". 2002-05-13 05:35:47 +00:00
simonb f6efa04293 Remove an unreachable "break" after a return statement. 2002-05-13 05:31:42 +00:00
jschauma 839f90b6f7 Linux does not implement SO_REUSEPORT, but allows reuse of a
host:port pair through SO_REUSEADDR even if the address is not a
multicast-address.  Effectively, this means that we should use
SO_REUSEPORT when SO_REUSEADDR is set (from the linux process)
to allow Linux applications to not exit with EADDRINUSE.

(Previously erraneously applied to 1.5 branch; approved for
proper location by thorpej)
2002-05-12 18:30:32 +00:00
jdolecek 9e0898063f regen - hook linux_sys_fcntl64() 2002-05-12 15:05:56 +00:00
jdolecek b6168e0ca7 regen - 64 fs syscalls 2002-05-12 15:04:59 +00:00
jdolecek 0197718567 hook in remaining 64bit fs syscalls
make most of stuff in linux_file64.c available unconditionally,
  with exception of fcntl64, which is not present on Linux m68k
2002-05-12 15:04:27 +00:00
jdolecek a757d39f99 regen 2002-05-12 13:57:08 +00:00
jdolecek 187c2394f1 update for newer syscalls (from 2.5.15)
Linux m68k doesn't seem to have fcntl64 syscall - oversight?
2002-05-12 13:55:54 +00:00
tron 1e891c870b Add missing bracket arround macro argument reference. 2002-05-10 17:27:23 +00:00
tron d45825cf63 Remove check for size of field "d_off" in Linux "dirent" structure because
this problem cannot happen with the 64Bit version of the getdents().
2002-05-10 14:51:26 +00:00
tron 352c1fa967 Fix off by one error in check for size of field "d_off" in Linux
"dirent" structure.
2002-05-10 14:49:38 +00:00
tron add83289ca Move implementation of linux_sys_getdents64() to source file for
Linux 64bit filesystem calls.
2002-05-10 14:38:08 +00:00
thorpej 27f38656ef Add missing const. 2002-05-05 08:23:03 +00:00
martin 8ff591e85d Add missing prototype for compat_43_netbsd32_sigsetmask. 2002-05-04 12:54:03 +00:00
manu 83c4aab4e2 bug for bug emulation of IRIX: on some device, including
/dev/usemaclone, fchmod returns 0 on faillure, and libc
depends on that behavior.
2002-05-04 07:45:05 +00:00
eeh 8da818b968 __LP64__ -> _LP64 2002-05-03 01:34:48 +00:00
eeh 89e107d917 Regen. 2002-05-03 00:22:16 +00:00
eeh 9bd29db83b Use #if defined(_LP64) to determine if we're generating 64-bit binaries,
not #if defined(alpha).
2002-05-03 00:20:56 +00:00
manu 494d226a5d Added GETSHMASK command to prctl(). This is incomplete, we do not really
keep track of the shmask yet. (It could go in p->p_emuldata)
2002-05-02 17:17:29 +00:00
manu 27cb16e028 sproc: Correctly interpret NULL stack and stacklen when shared vm space is not
requested
2002-04-29 16:01:12 +00:00
manu 36b681f651 Added a void framework for usync_cntl(), which is another undocumented IRIX
system call.
2002-04-29 14:40:23 +00:00
mrg 86477819ce regenerate. 2002-04-29 09:55:11 +00:00
mrg 0ce90a9fef build the netbsd32_compat* objects into libcompat.a, so they are available
to emulations not just netbsd itself.  rename the compat_10 functions to
match everything else.  fixes a problem reported by julian coleman.
2002-04-29 09:53:39 +00:00
manu adc1ff6c40 Added pread() and pwrite() 2002-04-28 20:23:21 +00:00
manu fc1efb9ee8 Use stack rlimit for the stack size, and not the current stack size. This
avoids requestion 2*rlimit on second sproc call.
2002-04-28 19:42:13 +00:00
manu c2f72d8d1c Updated PR_GETNSHARE and added PR_TERMCHILD 2002-04-28 17:56:53 +00:00
manu 3568060679 Implements IRIX sproc(2) and friends.
There may be a problem with stack size overflow in this implementation
2002-04-28 17:21:58 +00:00
manu ee5b3b3977 Added a void IRIX /dev/usema and /dev/usemaclone pseudodevice driver.
IRIX uses this for implementing atomics operation on semaphores

This will be filled later.
2002-04-23 05:51:14 +00:00
manu f599dce291 Added fchdir, fchown and fchmod system calls 2002-04-23 05:47:38 +00:00
manu 0e9a3e0d43 - We now use irix_sys_mmap instead of svr4_sys_mmap
- initial support for MAP_AUTOGROW flag. When mapping beyond the end of file is
requested with MAP_AUTOGROW, if pages beyond the end of file are touched, the
file should be resized. We are not able to emulate this yet, so we immediatly
resize the file to fit the whole mapping.
- implements mmap64
2002-04-22 05:58:46 +00:00
manu 4678e0b326 Fixed functions to get the number of CPU in sysmp() and systeminfo(). The
problam was that when hw_sysctl() is used, the result is supposed to be
in userland
2002-04-20 21:25:01 +00:00
manu ded3c31a9c On IRIX, fcntl F_FREESP, F_ALLOCSP, F_FREESP64 and F_ALLOCSP64 commands
ignore the len argument. We now correctly emulate the behavior of these
commands.
2002-04-20 20:38:21 +00:00
manu e67d46d7af Added one more system call: msync 2002-04-20 16:56:28 +00:00