#
5002a60f |
| 08-Sep-2001 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Round of cleanups and enhancements. These include (in random order):
o Introduce private types for use in linux syscalls for two reasons: 1. establish type independence for ease in porting and,
Round of cleanups and enhancements. These include (in random order):
o Introduce private types for use in linux syscalls for two reasons: 1. establish type independence for ease in porting and, 2. provide a visual queue as to which syscalls have proper prototypes to further cleanup the i386/alpha split. Linuxulator types are prefixed by 'l_'. void and char have not been "virtualized".
o Provide dummy functions for all syscalls and remove dummy functions or implementations of truely obsolete syscalls.
o Sanitize the shm*, sem* and msg* syscalls.
o Make a first attempt to implement the linux_sysctl syscall. At this time it only returns one MIB (KERN_VERSION), but most importantly, it tells us when we need to add additional sysctls :-)
o Bump the kenel version up to 2.4.2 (this is not the same as the KERN_VERSION MIB, BTW).
o Implement new syscalls, of which most are specific to i386. Our syscall table is now up to date with Linux 2.4.2. Some highlights: - Implement the 32-bit uid_t and gid_t bases syscalls. - Implement a couple of 64-bit file size/offset bases syscalls.
o Fix or improve numerous syscalls and prototypes.
o Reduce style(9) violations while I'm here. Especially indentation inconsistencies within the same file are addressed. Re-indenting did not obfuscate actual changes to the extend that it could not be combined.
NOTE: I spend some time testing these changes and found that if there were regressions, they were not caused by these changes AFAICT. It was observed that installing a RH 7.1 runtime environment did make matters worse. Hangs and/or reboots have been observed with and without these changes, so when it failed to make life better in cases it doesn't look like it made it worse.
show more ...
|
#
f41325db |
| 13-Jun-2001 |
Peter Wemm <peter@FreeBSD.org> |
With this commit, I hereby pronounce gensetdefs past its use-by date.
Replace the a.out emulation of 'struct linker_set' with something a little more flexible. <sys/linker_set.h> now provides macro
With this commit, I hereby pronounce gensetdefs past its use-by date.
Replace the a.out emulation of 'struct linker_set' with something a little more flexible. <sys/linker_set.h> now provides macros for accessing elements and completely hides the implementation.
The linker_set.h macros have been on the back burner in various forms since 1998 and has ideas and code from Mike Smith (SET_FOREACH()), John Polstra (ELF clue) and myself (cleaned up API and the conversion of the rest of the kernel to use it).
The macros declare a strongly typed set. They return elements with the type that you declare the set with, rather than a generic void *.
For ELF, we use the magic ld symbols (__start_<setname> and __stop_<setname>). Thanks to Richard Henderson <rth@redhat.com> for the trick about how to force ld to provide them for kld's.
For a.out, we use the old linker_set struct.
NOTE: the item lists are no longer null terminated. This is why the code impact is high in certain areas.
The runtime linker has a new method to find the linker set boundaries depending on which backend format is in use.
linker sets are still module/kld unfriendly and should never be used for anything that may be modular one day.
Reviewed by: eivind
show more ...
|
Revision tags: release/4.3.0_cvs, release/4.3.0 |
|
#
24593369 |
| 16-Feb-2001 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Allow debugging output to be controlled on a per-syscall granularity. Also clean up debugging output in a slightly more uniform fashion.
The default behavior remains the same (all debugging output i
Allow debugging output to be controlled on a per-syscall granularity. Also clean up debugging output in a slightly more uniform fashion.
The default behavior remains the same (all debugging output is turned on)
show more ...
|
#
705deb78 |
| 16-Feb-2001 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Add mount syscall to linux emulation. Also improve emulation of reboot.
|
#
d034d459 |
| 30-Nov-2000 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Don't use p->p_sigstk.ss_flags to keep state of whether the process is on the alternate stack or not. For compatibility with sigstack(2) state is being updated if such is needed.
We now determine wh
Don't use p->p_sigstk.ss_flags to keep state of whether the process is on the alternate stack or not. For compatibility with sigstack(2) state is being updated if such is needed.
We now determine whether the process is on the alternate stack by looking at its stack pointer. This allows a process to siglongjmp from a signal handler on the alternate stack to the place of the sigsetjmp on the normal stack. When maintaining state, this would have invalidated the state information and causing a subsequent signal to be delivered on the normal stack instead of the alternate stack.
PR: 22286
show more ...
|
#
cc6ca9b3 |
| 23-Nov-2000 |
Marcel Moolenaar <marcel@FreeBSD.org> |
o Change the argument of linux_sigreturn to be a pointer to a struct sigframe. We need more than only the signal context.
o Properly convert the signal mask when setting up the signal frame
o Change the argument of linux_sigreturn to be a pointer to a struct sigframe. We need more than only the signal context.
o Properly convert the signal mask when setting up the signal frame in linux_sendsig and properly convert it back in linux_sigreturn.
Do some cleanups and improve style while here.
show more ...
|
Revision tags: release/4.2.0 |
|
#
088638da |
| 16-Nov-2000 |
Andrew Gallatin <gallatin@FreeBSD.org> |
remove redundant declaration of bsd_to_linux_sigset()
reviewed by: marcel
|
#
2c4ab9dd |
| 13-Nov-2000 |
Andrew Gallatin <gallatin@FreeBSD.org> |
Make linux_sendsig and linux_sigreturn use all 64 bits of a linux_sigset_t by updating the linux_sigframe struct so as to include linux's "extramask" field. This field contains the upper 32-bits of
Make linux_sendsig and linux_sigreturn use all 64 bits of a linux_sigset_t by updating the linux_sigframe struct so as to include linux's "extramask" field. This field contains the upper 32-bits of the sigset. extramask sits behind a linux_fpstate struct, which I've defined primarily for padding purposes.
While we're here, define LINUX_NSIG in terms of LINUX_NBPW (32) and LINUX_NSIG_WORDS (2).
This fixes problems where threaded apps would accumulate a large number of zombies. This was happening because the exit signal resides in the upper 32-bits of the sigset and was never getting unmasked by the manager thread after the first child exited.
PR: misc/18530 (may be related, originator not yet contacted) Reviewed by: marcel
show more ...
|
#
ebea8660 |
| 10-Nov-2000 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Revert auto-generation. The Alpha port is broken. Syncing with it is wrong.
|
#
2da829a0 |
| 09-Nov-2000 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Sync with Alpha: Do not use sysent.c, proto.h and syscall.h in source tree; use auto-generated versions.
|
#
79363394 |
| 17-Oct-2000 |
Andrew Gallatin <gallatin@FreeBSD.org> |
A start at an implemention of linux_rt_sendsig & linux_rt_sigreturn and associated user-level signal trampoline glue.
Without this patch, an SA_SIGINFO style handler can be installed by a linux app,
A start at an implemention of linux_rt_sendsig & linux_rt_sigreturn and associated user-level signal trampoline glue.
Without this patch, an SA_SIGINFO style handler can be installed by a linux app, but if the handler accesses its sip argument, it will get a garbage pointer and likely segfault.
We currently supply a valid pointer, but its contents are mainly garbage. Filling this in properly is future work.
This is the second of 3 commits that will get IBM's JDK 1.3 working with FreeBSD ...
show more ...
|
#
931a7258 |
| 13-Oct-2000 |
Andrew Gallatin <gallatin@FreeBSD.org> |
This is the first of 3 commits that will get IBM's JDK 1.3 working with FreeBSD (not including the MINSIGSTKSZ issue, which belongs to Marcel). Due to time constraints, I'm going to space them out o
This is the first of 3 commits that will get IBM's JDK 1.3 working with FreeBSD (not including the MINSIGSTKSZ issue, which belongs to Marcel). Due to time constraints, I'm going to space them out over a few days.
This fixes two problems with linux_sigaltstack()
o ss == 0 is perfectly valid use, so do not fail in this case.
o Fix flag handling: - Our SS_DISABLE is 4, linux's is 2, so we need conversion routines. These conversion routines will be needed by linux_rt_sendsig() and linux_rt_sigreturn (forthcoming), so they are not static. - Linux's flag 0 historically meant SS_ONSTACK according to a comment in their linux/kernel/signal.c file.
Among other things, this fixes a warning from Sun's JDK 1.3: "Java HotSpot(TM) Client VM warning: cannot uninstall alt signal stack"
Reviewed by: marcel Tested by: sto@stat.duke.edu, many others on freebsd-java@
show more ...
|
Revision tags: release/4.1.1_cvs |
|
#
dee4ec33 |
| 06-Sep-2000 |
Marcel Moolenaar <marcel@FreeBSD.org> |
When sigaltstack is called with a stack size that's not smaller than LINUX_MINSIGSTKSZ but smaller than MINSIGSTKSZ, cheat and pass MINSIGSTKSZ to the kernel. This is a workaround.
Submitted through
When sigaltstack is called with a stack size that's not smaller than LINUX_MINSIGSTKSZ but smaller than MINSIGSTKSZ, cheat and pass MINSIGSTKSZ to the kernel. This is a workaround.
Submitted through: nate
show more ...
|
Revision tags: release/4.1.0, release/3.5.0_cvs |
|
#
d323ddf3 |
| 26-Apr-2000 |
Matthew Dillon <dillon@FreeBSD.org> |
Fix #! script exec under linux emulation. If a script is exec'd from a program running under linux emulation, the script binary is checked for in /compat/linux first. Without this patch the
Fix #! script exec under linux emulation. If a script is exec'd from a program running under linux emulation, the script binary is checked for in /compat/linux first. Without this patch the wrong script binary (i.e. the FreeBSD binary) will be run instead of the linux binary. For example, #!/bin/sh, thus breaking out of linux compatibility mode.
This solves a number of problems people have had installing linux software on FreeBSD boxes.
show more ...
|
Revision tags: release/4.0.0_cvs, release/3.4.0_cvs |
|
#
43bef515 |
| 04-Dec-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Implement pluggable ioctl handlers.
Other modules can register and unregister ioctl handlers to extend the ioctls known by the Linuxulator. A recent application is the vmware port. The Linuxulator i
Implement pluggable ioctl handlers.
Other modules can register and unregister ioctl handlers to extend the ioctls known by the Linuxulator. A recent application is the vmware port. The Linuxulator itself uses the new interface to register its handlers as well. Handlers for the following types of ioctls have been defined: cdrom console (=keyboard and VT handling) socket sound termio
All ioctl related defines and declarations have been moved to a new file (linux_ioctl.h), except for the pluggable ioctl handler interface definition.
While there, cleanup linux.h some more.
linux.h and linux_ioctl.[ch] have been made to conform to style(9) as much as possible.
Inspired and reviewed by: Vladimir N. Silyaev
show more ...
|
#
ec99e322 |
| 30-Nov-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Implement linux_sigaltstack.
|
#
fac9a03b |
| 30-Nov-1999 |
Alfred Perlstein <alfred@FreeBSD.org> |
add linuxulator wrapper for SNDCTL_DSP_GETODELAY
|
#
956d3333 |
| 29-Sep-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
sigset_t change (part 4 of 5) -----------------------------
The compatibility code and/or emulators have been updated:
iBCS2 now mostly uses the older syscalls. SVR4 now properly handles all signal
sigset_t change (part 4 of 5) -----------------------------
The compatibility code and/or emulators have been updated:
iBCS2 now mostly uses the older syscalls. SVR4 now properly handles all signals. This has been achieved by using the new sigset_t throughout the emulator. The Linuxulator has been severely updated. Internally the new Linux sigset_t is made the default. These are then mapped to and from the new FreeBSD sigset_t.
Also, rt_sigsuspend has been implemented in the Linuxulator. Implementing this syscall basicly caused all this sigset_t changing in the first place and the syscall has been used throughout the change as a means for testing. It basicly is too much work to undo the implementation so that it can later be added again.
A special note on the use of sv_sigtbl and sv_sigsize in struct sysentvec: Every signal larger than sv_sigsize is not translated and is passed on to the signal handler unmodified. Signals in the range 1 upto and including sv_sigsize are translated. The rationale is that only the system defined signals need to be translated.
The emulators also have been updated so that the translation tables are only indexed for valid (system defined) signals. This change also fixes the translation bug already in the SVR4 emulator.
show more ...
|
Revision tags: release/3.3.0_cvs |
|
#
86f95e6b |
| 28-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Implement the OSS_GETVERSION ioctl. The version returned can be changed through the sysctl variable `compat.linux.oss_version'.
PR: 12917 Originator: Dean Lombardo <dlombardo@excite.com>
|
#
c3aac50f |
| 28-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
2fdc82e0 |
| 25-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Change all UNIMPL syscalls to STD and add them to linux_dummy. Now we always know if and when an unimplemented or obsoleted syscall is being used. Make the message more end-user friendly.
And as lon
Change all UNIMPL syscalls to STD and add them to linux_dummy. Now we always know if and when an unimplemented or obsoleted syscall is being used. Make the message more end-user friendly.
And as long as we're here, rename some unimplemeted syscalls (linux_phys -> linux_umount2, linux_vm86 -> linux_vm86old, linux_new_vm86 -> linux_vm86).
Change prototype for linux_newuname from `struct linux_newuname_t *' into `struct linux_new_utsname *'. This change is reflected in linux.h and linux_misc.c.
show more ...
|
#
a171f5ad |
| 15-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Provide wrappers for sched_{s|g}etscheduler. We need to convert the policy argument.
PR: 12006 Originator: Jean-Claude MICHOT <jcmichot@teaser.fr>
|
#
06ebbe77 |
| 14-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Implementation of linux_rt_sigaction and linux_rt_sigprocmask syscalls. Both functions use the new sigset_t and sigaction_t which allows support for more than 32 signals. Only the lower 32 signals ar
Implementation of linux_rt_sigaction and linux_rt_sigprocmask syscalls. Both functions use the new sigset_t and sigaction_t which allows support for more than 32 signals. Only the lower 32 signals are supported for now.
linux_rt_sigaction, linux_sigaction and linux_signal use linux_do_sigaction to do the actual work. That way unnecessary redundancy is avoided. The same has been done for linux_rt_sigprocmask and linux_sigprocmask. They call linux_do_sigprocmask to do the actual work.
show more ...
|
#
7636612d |
| 13-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Implementation of the CDROMSUBCHNL ioctl.
|
#
175db64b |
| 11-Aug-1999 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Do not map {s|g}etrlimit onto FreeBSD syscalls. The arguments don't match. The linux syscalls translate the arguments first before invoking the FreeBSD native syscalls.
PR: kern/9591 Originator: Joh
Do not map {s|g}etrlimit onto FreeBSD syscalls. The arguments don't match. The linux syscalls translate the arguments first before invoking the FreeBSD native syscalls.
PR: kern/9591 Originator: John Plevyak <jplevyak@inktomi.com>
show more ...
|