Commit Graph

708 Commits

Author SHA1 Message Date
manu 5a6b8191b5 Added two flags to emulation packages:
EMUL_BSD_ASYNCIO_PIPE notes that the emulated binaries expect the original
BSD pipe behavior for asynchronous I/O, which is to fire SIGIO on read() and
write(). OSes without this flag do not expect any SIGIO to be fired on
read() and write() for pipes, even when async I/O was requested. As far as
we know, the OSes that need EMUL_BSD_ASYNCIO_PIPE are NetBSD, OSF/1 and
Darwin.

EMUL_NO_SIGIO_ON_READ notes that the emulated binaries that requested
asynchrnous I/O expect the reader process to be notified by a SIGIO, but
not the writer process. OSes without this flag expect the reader and the
writer to be notified when some data has arrived or when some data have been
read. As far as we know, the OSes that need EMUL_NO_SIGIO_ON_READ are Linux
and SunOS.
2001-05-06 19:09:52 +00:00
ross 2df695b1e4 o IEEE 754 floating-point completion code.
o Implement the architected FP_C "Floating Point Control Quadword"
2001-04-26 03:10:44 +00:00
manu bc237413cb Fixed an error in a comment 2001-04-12 19:32:35 +00:00
manu bb1594b20b Integrated security review for signal delivery by Wolfgang Solfrank 2001-04-11 19:41:02 +00:00
jdolecek 9f531a91bb regen - use linux_sys_nosys() instead sys_nosys() 2001-03-30 18:33:22 +00:00
jdolecek bbe1ee69af Use linux_sys_nosys() instead sys_nosys() here too. 2001-03-30 18:31:28 +00:00
jdolecek 02281ec1f5 regen 2001-03-30 18:02:28 +00:00
jdolecek c51fe2a452 use UNIMPL instead of NODEF for the dummy syscalls 218, 219 2001-03-30 18:01:20 +00:00
jdolecek 36a42f0ce8 Add new syscalls from Linux 2.4.3 to the lists. Not implemented ATM. 2001-03-30 17:59:46 +00:00
jdolecek e07a93ab5a regen 2001-03-30 17:18:47 +00:00
jdolecek 890850dddf Implement linux_sys_nosys() and use it instead of sys_nosys() for
unimplemented syscalls. Difference is that linux_sys_nosys() doesn't
post SIGSYS to the process. Linux doesn't do that and thus glibc (and
probably other Linux code) doesn't deal with SIGSYS, even through it
generally contains fallback code for ENOSYS case.

This also addresses port-i386/12503, though the issue was already discussed
earlier.
2001-03-30 17:16:33 +00:00
fvdl 879b34ea8c Don't do the ioctl call for the get hw addr case, all the work has
been done already.
2001-03-29 10:37:37 +00:00
jdolecek 569cf4b764 Use parent's vmspace in linux_e_proc_fork() hook, the child does not
have vmspace setup yet. This fixes lossage discussed on current-users,
thread "hard lockups with -current and Netscape", and should fix
kern/12433 by <kawamoto@tenjin.org>, maybe also kern/12455.

XXX Threads forked via linux_sys_clone() should share the brk value
XXX if they share vmspace. This needs to be implemented.
2001-03-24 11:13:04 +00:00
manu ea545137cc Added a missing native to linux signal number translation in linux_sendsig(),
when building the trap frape
2001-03-22 22:10:04 +00:00
itojun c35e5ed1b2 do not dereference p_vmspace, if it is not initialized yet (NULL). 2001-03-22 08:26:14 +00:00
manu bfaa81d0e1 Fixed typos in comments 2001-03-18 11:31:44 +00:00
manu 802ed4d55c Removed an unused oldbrk variable in linux_sys_brk() 2001-03-16 07:46:57 +00:00
manu 27a41174dd Made linux_sys_brk() cleaner (no functionnality change) 2001-03-15 23:23:26 +00:00
manu 1208df7bdf Fixed brk() emulation. We now keep track of the processes' idea of the
break value. See http://mail-index.netbsd.org/tech-kern/2001/03/15/0000.html
for more details.
2001-03-15 19:18:20 +00:00
jdolecek 522f569810 make some more constant arrays 'const' 2001-02-21 21:39:52 +00:00
manu ad16681a92 Clarified comments about the LINUX_SCERR_SIGN macro 2001-02-12 21:25:08 +00:00
manu 16bc5b4004 Moved the fix for negative errno returned to userland on the PowerPC to a
more machine independent fashion
2001-02-11 20:24:49 +00:00
manu 82b165a23b Modified a cast so that it builds again 2001-02-05 19:44:32 +00:00
chs 09cb38f22b expose the definitions of MIN() and MAX() in sys/param.h to the kernel
and use those in favor of a dozen copies scattered around the source tree.
2001-02-05 10:42:40 +00:00
itojun 30b4221720 make it compile on alpha. cast pointer to u_long, not int 2001-02-05 04:33:41 +00:00
jmc ece49e13a9 Back out last change. m68k.h is now in cpu.h (which got updated in between
my noticing this problem here on a sun3).
2001-02-04 23:53:31 +00:00
christos ff4eeac9d3 cosmetic fixes. 2001-02-04 22:59:26 +00:00
manu 0bf34ec725 Fixed a bug in Linux/powerpc ktrace support (it's still broken, anyway) 2001-02-04 14:24:38 +00:00
jmc 5a272e431a Add m68k/m68k.h to pickup fputype definitions. 2001-02-04 10:16:43 +00:00
ross 69e20722b9 Emulate LINUX_TCFLSH with our TIOCFLUSH. Do some CSE. 2001-02-03 19:01:29 +00:00
fvdl 92bf89da0b Oops, remove debugging printf. 2001-02-03 01:23:08 +00:00
fvdl 3d66a69335 For the read subchannel ioctl, don't mix up the data and address formats,
and always set the track to 0, like Linux does.
2001-02-03 01:17:38 +00:00
thorpej cf30c31b4d Regen; getpid(2) is MP-safe. 2001-01-27 07:56:54 +00:00
thorpej bca5b90ff2 getpid(2) is MP-safe. 2001-01-27 07:56:30 +00:00
thorpej e385ddef5e Regen; getpid(2) is MP-safe. 2001-01-27 07:55:44 +00:00
thorpej f979b01e55 getpid(2) is MP-safe. 2001-01-27 07:55:23 +00:00
thorpej c1bdc2ed00 Regen; getpid(2) is MP-safe. 2001-01-27 07:54:43 +00:00
thorpej 3853970b15 getpid(2) is MP-safe. 2001-01-27 07:54:24 +00:00
thorpej 1b6a66420e Regen; add sy_flags. 2001-01-27 07:23:06 +00:00
manu de8918d969 Moved include <sys/ioctl.h> so that we can build without WSCONS enabled. 2001-01-26 19:41:52 +00:00
manu 86651a757f Fixed wrong signal handler argument setup. The emulated sigcontext still has some problems. 2001-01-25 19:36:53 +00:00
jdolecek 1b91de887e use CHECK_ALT_SYMLINK() for lstat(2)
don't call stackgap_init() for pwrite(2) and pread(2), it's not necessary
2001-01-22 21:31:37 +00:00
jdolecek 13ca559d39 Use CHECK_ALT_SYMLINK() instead CHECK_ALT_EXISTS() where appropriate.
This addresses kern/11757.
2001-01-22 20:08:03 +00:00
manu 9c111b5a93 Fixed wrong open() Linux flags definition (octal instead of hexadecimal) 2001-01-21 22:19:26 +00:00
manu 167ec91e4b Fix the "created from" field of files generated from syscalls.master (this
master file did not have a RCS Id at generation time, hence the problem)
2001-01-20 19:03:01 +00:00
manu 0d6749fdd9 Fixed wrong ioctl definitions that caused Linux ioctl TCGETS and many other to
fail
2001-01-20 18:59:55 +00:00
manu fe95c9c3de Moved architecure dependent part of struct linux_termio to architecture
dependent header files.
2001-01-20 18:56:41 +00:00
manu 94785018b1 Fixed a typo 2001-01-20 10:36:05 +00:00
manu d932075a0e Fixed a typo (two instructions dupliated at the end of code that were not reached) 2001-01-19 12:49:22 +00:00
manu d5329fdce7 Cosmetic fix to move powerpc from "guesses" to "know values" 2001-01-19 12:35:47 +00:00
manu e20b81421d Added Linux errno mapping for powerpc 2001-01-19 12:27:13 +00:00
manu 3c98a504b9 Added previously created files for powerpc Linux compatibility to the kernel
config system
2001-01-19 01:51:16 +00:00
manu 083ffa3b67 Added support for powerpc Linux compatibility 2001-01-19 01:44:46 +00:00
manu ac10cf6946 Added a linux_atexit_signature to match Linux statically linked ELF binaries. It
searches for a __libc_atexit ELF section, which is specific to Linux
2001-01-19 01:43:31 +00:00
manu cac0b39302 Added Linux compatibility support for powerpc ports 2001-01-19 01:40:38 +00:00
manu 5472427809 Added powerpc specific code for Linux compatibility on powerpc ports 2001-01-19 01:36:47 +00:00
manu 3ec1257260 Added various header files for initial Linux compatibility on powerpc ports 2001-01-19 01:31:23 +00:00
jdolecek 34c8ae80da constify 2001-01-18 20:28:15 +00:00
jdolecek e912e655e1 kill local declaration of native_to_linux_errno[], one in common/linux_errno.h suffices 2001-01-18 18:41:20 +00:00
tv e58532a4bf No-op commit to force update to a non-"-kk" revision. 2001-01-18 17:47:58 +00:00
fvdl 6784825249 EINVAL -> ENOTTY 2001-01-18 13:56:32 +00:00
fvdl 07ca2a03bf Correct copyright year. 2001-01-10 02:33:47 +00:00
fvdl 8c4bd70cda Add linux_blkio.c 2001-01-10 02:29:29 +00:00
fvdl d772be168f Declare linux_ioctl_blkio and call it from the main routine. 2001-01-10 02:28:38 +00:00
fvdl da9e8a988d Add some BLK* ioctl calls. Currently only the easy and useful ones
are implemented.
2001-01-10 02:28:01 +00:00
fvdl c99aee0084 Add emulation of KIOCSOUND. 2001-01-09 13:01:03 +00:00
fvdl 3950869204 Set Linux version to 2.0.38 for now, until the clone + "real time signal"
problems are fixed.
2001-01-05 15:31:15 +00:00
fvdl bcac62574c Implement KDGETMODE ioctl. 2000-12-29 22:06:58 +00:00
fvdl 2d53941bd4 Hardcode what the linux uname() calls return (Linux 2.2.5 is the current
value). A few major applications check for this (like VMware), and
there is no other way to trick them. Needs a more generic solution
eventually.
2000-12-29 21:07:16 +00:00
fvdl 1b9256990d Regen. 2000-12-29 20:11:52 +00:00
fvdl 17f991c744 Don't pass through link(2) directly, as we need to do altpath checks. 2000-12-29 20:11:32 +00:00
fvdl 1575b3e35a Regen. 2000-12-29 20:10:46 +00:00
fvdl cc449a70ed Don't pass through link(2) directly, as we need to do altpath checks. 2000-12-29 20:10:17 +00:00
fvdl e8e363d309 Regen. 2000-12-29 20:09:57 +00:00
fvdl 54450b21c0 Don't pass through link(2) directly, as we need to do altpath checks. 2000-12-29 20:09:39 +00:00
fvdl f90b2fc517 Avoid sign extension problem in offset. 2000-12-29 20:08:54 +00:00
fvdl 77765cf28f Do alternate path checks for link(2). 2000-12-29 20:08:31 +00:00
fvdl 6f552a029f Allow the EJUSTRETURN hack for PTIOCLINUX-passed through ioctl calls. 2000-12-29 20:07:53 +00:00
fvdl b930296d07 Under Linux it's possible to return values through the ioctl system
call directly (i.e. not a reference argument, but a direct return
value). So far I have only seen this with binaries that talk
to their own device modules, using non-standard ioctl calls.
Hence, allow for a pass-through ioctl call using PTIOCLINUX to
return EJUSTRETURN, signalling that the return value is in
the 'data' field of the structure, which can then be put in 'retval'.
2000-12-29 20:07:25 +00:00
sommerfeld 5217f6335b Let COMPAT_LINUX build with DEBUG 2000-12-27 23:47:58 +00:00
fvdl 7fbbc11d9c Regen. 2000-12-27 22:04:35 +00:00
fvdl 7cd004ead8 Add all uid and gid calls, and do the right thing for the older 16 bit
ones.
2000-12-27 22:04:05 +00:00
fvdl 41e840d9c7 Regen. 2000-12-27 22:03:10 +00:00
fvdl 11156e7e47 Add all uid and gid calls, and do the right thing for the older 16 bit
ones.
2000-12-27 22:02:41 +00:00
fvdl 62af6738b1 Use CHECK_ALT_* for chown and lchown, missed in my previous commit.
Get *id16 calls right; most can be passed through directly, but
some need the 16->32 check for -1 values.
2000-12-27 22:01:42 +00:00
itohy 811fede455 Regen. 2000-12-26 01:57:57 +00:00
itohy 4aee4579ba Declare linux_sys_setgid16() (NOARGS -> STD).
Change syscall #182 from linux_sys_lchown() to linux_sys_lchown16().
2000-12-26 01:57:10 +00:00
fvdl e60e785474 Don't do the syscall with modified ioctl command if we've successfully
done a 'passthrough' ioctl.
2000-12-22 23:41:16 +00:00
jdolecek e9e91a0fb5 split off thread specific stuff from struct sigacts to struct sigctx, leaving
only signal handler array sharable between threads
move other random signal stuff from struct proc to struct sigctx

This addresses kern/10981 by Matthew Orgass.
2000-12-22 22:58:52 +00:00
fvdl 1a09a359eb Add SIOCGIFBR and SIOCSIFBR (more for reference than anything, currently). 2000-12-22 11:24:43 +00:00
thorpej 7027166972 Regen. 2000-12-21 20:42:42 +00:00
thorpej c0b556f767 Make an Alpha kernel with COMPAT_LINUX compile again. 2000-12-21 20:42:15 +00:00
thorpej f7a4dd48fd Only include the 16-bit uid/gid stuff if on i386 or m68k. This is a
little ugly, but hey, so is Linux.
2000-12-21 20:19:22 +00:00
thorpej e57273c82e Only include the 16-bit chown/fchown/lchown stuff if on i386 or m68k.
This is a little ugly, but hey, so is Linux.
2000-12-21 20:15:53 +00:00
fvdl b542c20c5b Fix yet another typo. 2000-12-21 13:37:02 +00:00
fvdl b76b718303 Fix another pasto. 2000-12-19 22:24:03 +00:00
fvdl b7ffc98bf8 Fix pasto in previous. 2000-12-18 16:27:20 +00:00
fvdl 3259cebc4c For unknown ioctls, pass them through to a device using PTIOCLINUX,
so that it may deal with them if it knows them (i.e. LKMs which
deal with Linux binaries).
2000-12-18 14:47:38 +00:00
fvdl 865e7b1375 Pass SIOC* calls that are done on devices (not sockets) through
without trying to interpret done, as is done on Linux. The device
will get them as PTIOCLINUX, with command and arg in the structure
passed in.
2000-12-18 14:46:36 +00:00
fvdl 8578d458e5 Define LINUX_SIOCDEVPRIVATE (currently not emulated for sockets). 2000-12-18 14:44:44 +00:00
fvdl 4d193ccde8 Add seperate entries for 16 bit uid/gid calls, so that border cases
like 0xffff can be handled better (not done yet).
2000-12-18 14:40:02 +00:00
fvdl 0bda0568cf Regen. 2000-12-18 14:37:36 +00:00
fvdl 41623d32a2 Update for Linux calls with 32 bit uids/gids. 2000-12-18 14:37:17 +00:00
fvdl 8839755950 Update for 32 bit Linux uid/gid calls. 2000-12-18 14:36:35 +00:00
jdolecek 29fd738f28 make LKM safe 2000-12-17 16:15:54 +00:00
scw 7fb03460dc Sprinkle some register prefixes in the asm() statements. 2000-12-16 22:59:32 +00:00
mycroft b29180b2ff Tighten up the ELF signature checks, and actually look for the ABI tag added
in newer glibc versions.
2000-12-15 06:14:21 +00:00
jdolecek 5f0114a837 regen 2000-12-14 20:39:36 +00:00
jdolecek 14b2acc126 add sysinfo() 2000-12-14 20:37:57 +00:00
mycroft bdf4af93a3 Some namespace hiding I forgot before. 2000-12-14 18:10:35 +00:00
mycroft ccaa88d980 Declare linux_syscall_intern(). 2000-12-14 18:10:14 +00:00
mycroft b8d0fc574a Regen. 2000-12-14 18:08:09 +00:00
mycroft 52e8ecc51c Round up sysent[] table size. 2000-12-14 18:07:54 +00:00
augustss 8dab2a36e1 Regen. 2000-12-13 21:42:21 +00:00
augustss b907acd3fd Add sysinfo. 2000-12-13 21:41:46 +00:00
augustss ccf2c891cc Implement sysinfo. 2000-12-13 21:41:23 +00:00
itohy 3e9f9f8abf sync with i386, so that exec_conf.c compiles again 2000-12-13 03:49:51 +00:00
jdolecek 638d27777e add linux_sys_truncate64() 2000-12-12 22:24:56 +00:00
jdolecek e60b4a518d regen 2000-12-12 22:23:47 +00:00
jdolecek 405a6ce62f actually, we need to wrap sys_truncate() call so that the /emul/linux/...
path is tried first
fix ftruncate64 entry - first arg to ftruncate is int fd, not path
2000-12-12 22:23:02 +00:00
jdolecek 621dac5bc2 define struct linux_stat64 used by linux_sys_*stat64() 2000-12-12 19:07:59 +00:00
jdolecek c3dd514d84 regen 2000-12-12 19:03:10 +00:00
jdolecek daff00c255 add emulation of Linux truncate64(2), ftruncate64(2), *stat64(2) 2000-12-12 19:01:59 +00:00
jdolecek f8d1770316 define EXEC_AOUT (if not defined) before including linux_syscallargs.h,
to get linux_sys_uselib() prototype
2000-12-12 17:52:56 +00:00
fvdl 0b7398458a Allow for passing through of certain ranges of ioctl command values
directly to a device. The device has to be aware of how to handle
with these special ioctls. Useful for LKMs that deal with Linux
binaries.
2000-12-12 15:11:56 +00:00
mycroft f495cd9dc6 Introduce 2 new flags in types.h:
* __HAVE_SYSCALL_INTERN.  If this is defined, e_syscall is replaced by
  e_syscall_intern, which is called at key places in the kernel.  This can be
  used to set a MD syscall handler pointer.  This obsoletes and replaces the
  *_HAS_SEPARATED_SYSCALL flags.
* __HAVE_MINIMAL_EMUL.  If this is defined, certain (deprecated) elements in
  struct emul are omitted.
2000-12-11 05:28:59 +00:00
mycroft fef5184d84 Regen. 2000-12-11 04:56:01 +00:00
mycroft fc774b14ce getuid -> getuid_with_euid
getgid -> getgid_with_egid
2000-12-11 04:55:50 +00:00
mycroft 75fbdc005e Nuke LINUX_MACHDEP_PASS_PPID. 2000-12-11 04:55:09 +00:00
mycroft cfe0002fc5 Regen. 2000-12-11 04:54:29 +00:00
mycroft 6d0c28a87c getpid -> getpid_with_ppid 2000-12-11 04:54:13 +00:00
mycroft e99a608974 Regen. 2000-12-11 03:09:10 +00:00
mycroft c0341b165d Round up sysent table size. 2000-12-11 03:09:02 +00:00
thorpej a1479e118c Fix previous:
- EBADF, not NULL when a file descriptor can't be found.
- Check FIF_WANTCLOSE properly.
2000-12-10 17:34:25 +00:00
fvdl a499e56944 Add some ioctls for harddisk, floppy disk and console handling.
Implement a few extra cdrom ioctl calls.
Make sure to correctly use FILE_USE and FILE_UNUSE.
2000-12-10 14:12:16 +00:00
fvdl e772d7a6d5 Add i386-specific code for a few ioctl calls. 2000-12-10 14:09:59 +00:00
fvdl ec9b1e3f5e The gist of the Linux _IOX definitions was the same for all platforms;
move it to the MI linux_ioctl.h and only leave the MD bits in the MD
header files.

Add defintions for linux_ioctl_hdio and linux_ioctl_fdio.
2000-12-10 14:08:48 +00:00
fvdl 8488f3e039 The gist of the Linux _IOX definitions was the same for all platforms;
move it to the MI linux_ioctl.h and only leave the MD bits in the MD
header files.
2000-12-10 14:07:22 +00:00
fvdl f86f1f091f Add linux_hdio.c and linux_fdio.c 2000-12-10 14:05:54 +00:00
christos 835b5d35c5 how many different prototypes does linux_syscall() need finally? sheesh! 2000-12-09 19:51:44 +00:00
jdolecek a6ca890142 always fill in e_syscall in respective emul_*; if the emulation doesn't
have it's own separated *_syscall() function, use syscall()
2000-12-09 12:38:23 +00:00
jdolecek 415500a28f regen 2000-12-09 12:27:00 +00:00
jdolecek c557c9f0f9 add more unimplemented syscalls to list 2000-12-09 12:23:35 +00:00
mycroft f348afacb9 Regen. 2000-12-09 05:37:01 +00:00
mycroft d47448bce6 Add the %% separators. 2000-12-09 05:31:10 +00:00
mycroft 9682cf0b09 Add the %% separators. 2000-12-09 05:27:28 +00:00
jdolecek 6f4041b981 regen after addition of linux_sys_swapoff() 2000-12-02 16:45:51 +00:00
jdolecek 1acf11b550 add emulation of linux swapoff(2) 2000-12-02 16:43:50 +00:00
jdolecek da1aefe9bf if machdep define LINUX_MACHDEP_HAS_SEPARATED_SYSCALL is defined, put
linux_syscall() to emul_linux
define LINUX_MACHDEP_HAS_SEPARATED_SYSCALL for i386
2000-12-02 16:05:04 +00:00
jdolecek 445c16b759 implement linux_sys_setdomainname()/linux_sys_swapon(), using code
from compat_09_sys_setdomainname()/compat_12_sys_swapon().
2000-12-01 21:14:42 +00:00