#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
248532 |
|
19-Mar-2013 |
jkim |
MFC: r234352
Implement pipe2 syscall for Linuxulator.
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
225617 |
|
16-Sep-2011 |
kmacy |
In order to maximize the re-usability of kernel code in user space this patch modifies makesyscalls.sh to prefix all of the non-compatibility calls (e.g. not linux_, freebsd32_) with sys_ and updates the kernel entry points and all places in the code that use them. It also fixes an additional name space collision between the kernel function psignal and the libc function of the same name by renaming the kernel psignal kern_psignal(). By introducing this change now we will ease future MFCs that change syscalls.
Reviewed by: rwatson Approved by: re (bz)
|
#
224778 |
|
11-Aug-2011 |
rwatson |
Second-to-last commit implementing Capsicum capabilities in the FreeBSD kernel for FreeBSD 9.0:
Add a new capability mask argument to fget(9) and friends, allowing system call code to declare what capabilities are required when an integer file descriptor is converted into an in-kernel struct file *. With options CAPABILITIES compiled into the kernel, this enforces capability protection; without, this change is effectively a no-op.
Some cases require special handling, such as mmap(2), which must preserve information about the maximum rights at the time of mapping in the memory map so that they can later be enforced in mprotect(2) -- this is done by narrowing the rights in the existing max_protection field used for similar purposes with file permissions.
In namei(9), we assert that the code is not reached from within capability mode, as we're not yet ready to enforce namespace capabilities there. This will follow in a later commit.
Update two capability names: CAP_EVENT and CAP_KEVENT become CAP_POST_KEVENT and CAP_POLL_KEVENT to more accurately indicate what they represent.
Approved by: re (bz) Submitted by: jonathan Sponsored by: Google Inc
|
#
218616 |
|
12-Feb-2011 |
dchagin |
Move linux_clone(), linux_fork(), linux_vfork() to a MI path.
|
#
218613 |
|
12-Feb-2011 |
dchagin |
In preparation for moving linux_clone() to a MI path introduce linux_set_upcall_kse().
|
#
218612 |
|
12-Feb-2011 |
dchagin |
In preparation for moving linux_clone () to a MI path move the TLS code in a separate function.
Use function parameter instead of direct using register.
|
#
218100 |
|
30-Jan-2011 |
dchagin |
The kern_wait() code already removes the SIGCHLD signal for the waited process. Removing other SIGCHLD signals is not needed and may cause problems.
Pointed out by: jilles
MFC after: 1 Month.
|
#
218030 |
|
28-Jan-2011 |
dchagin |
Implement a variation of the linux_common_wait() which should be used by linuxolator itself.
Move linux_wait4() to MD path as it requires native struct rusage translation to struct l_rusage on linux32/amd64.
MFC after: 1 Month.
|
#
217896 |
|
26-Jan-2011 |
dchagin |
Add macro to test the sv_flags of any process. Change some places to test the flags instead of explicit comparing with address of known sysentvec structures.
MFC after: 1 month
|
#
208994 |
|
10-Jun-2010 |
kan |
Do not require pos parameter to be zero in MAP_ANONYMOUS mmap requests in Linux emulation layer. Linux seems to only require that pos is page-aligned, but otherwise ignores it. Default FreeBSD mmap parameter checking is too strict to allow some Linux binaries to run. tsMuxeR is one example of such a binary.
Discussed with: jhb MFC after: 1 week
|
#
198554 |
|
28-Oct-2009 |
jhb |
Fix some problems with effective mmap() offsets > 32 bits. This was partially fixed on amd64 earlier. Rather than forcing linux_mmap_common() to use a 32-bit offset, have it accept a 64-bit file offset. This offset is then passed to the real mmap() call. Rather than inventing a structure to hold the normal linux_mmap args that has a 64-bit offset, just pass each of the arguments individually to linux_mmap_common() since that more closes matches the existing style of various kern_foo() functions.
Submitted by: Christian Zander @ Nvidia MFC after: 1 week
|
#
195074 |
|
26-Jun-2009 |
jhb |
Return ENOSYS instead of EINVAL for invalid function codes to match the behavior of Linux.
Reported by: Alexander Best alexbestms of math.uni-muenster.de Approved by: re (kib)
|
#
188750 |
|
18-Feb-2009 |
kib |
Adapt linux emulation to use cv for vfork wait.
Submitted by: Takahiro Kurosawa <takahiro.kurosawa gmail com> PR: kern/131506
|
#
184849 |
|
11-Nov-2008 |
ed |
Several cleanups related to pipe(2).
- Use `fildes[2]' instead of `*fildes' to make more clear that pipe(2) fills an array with two descriptors.
- Remove EFAULT from the manual page. Because of the current calling convention, pipe(2) raises a segmentation fault when an invalid address is passed.
- Introduce kern_pipe() to make it easier for binary emulations to implement pipe(2).
- Make Linux binary emulation use kern_pipe(), which means we don't have to recover td_retval after calling the FreeBSD system call.
Approved by: rdivacky Discussed on: arch
|
#
176193 |
|
11-Feb-2008 |
jkim |
Fix Linux mmap with MAP_GROWSDOWN flag.
Reported by: Andriy Gapon (avg at icyb dot net dot ua) Tested by: Andriy Gapon (avg at icyb dot net dot ua) Pointyhat: me MFC after: 3 days
|
#
173937 |
|
26-Nov-2007 |
kib |
Implement read_default_ldt in linux_modify_ldt(). It copies out zeroed descriptor, like real Linux does.
Tested by: Yuriy Tsibizov <yuriy.tsibizov at gmail com> Submitted by: rdivacky MFC after: 1 week
|
#
171515 |
|
20-Jul-2007 |
attilio |
i386_set_ioperm, i386_get_ldt and i386_set_ldt are now MPSAFE (Giant/sched_lock free) so remove unuseful Giant cruft.
Approved by: jeff Approved by: re Sponsorized by: NGX Italy (http://www.ngx.it)
|
#
171216 |
|
04-Jul-2007 |
peter |
Don't add the 'pad' argument to the mmap/truncate/etc syscalls.
Submitted by: kensmith Approved by: re (kensmith)
|
#
170307 |
|
04-Jun-2007 |
jeff |
Commit 14/14 of sched_lock decomposition. - Use thread_lock() rather than sched_lock for per-thread scheduling sychronization. - Use the per-process spinlock rather than the sched_lock for per-process scheduling synchronization.
Tested by: kris, current@ Tested on: i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc. Discussed with: kris, attilio, kmacy, jhb, julian, bde (small parts each)
|
#
169458 |
|
10-May-2007 |
kan |
Do not dereference linux_to_bsd_signal[-1] if userland has passed zero as exit signal.
GCC 4.2 changes the kernel data segment layout not to have 0 in that memory location. This code ran by luck before and now the luck has run out.
|
#
167157 |
|
01-Mar-2007 |
jkim |
MFP4: 115220, 115222
- Fix style(9) and reduce diff between amd64 and i386. - Prefix Linuxulator macros with LINUX_ to prevent future collision.
|
#
167048 |
|
27-Feb-2007 |
jkim |
MFP4: 115094
Linux does not check file descriptor when MAP_ANONYMOUS is set. This should fix recent LTP test regressions.
Reported by: Scot Hetzel (swhetzel at gmail dot com) netchild
|
#
166944 |
|
24-Feb-2007 |
netchild |
Partial MFp4 of 114977: Whitespace commit: Fix grammar, spelling and punctuation.
Submitted by: "Scot Hetzel" <swhetzel@gmail.com>
|
#
166931 |
|
23-Feb-2007 |
netchild |
MFp4 (114193 (i386 part), 114194, 114195, 114200): - Dont "return" in linux_clone() after we forked the new process in a case of problems. - Move the copyout of p2->p_pid outside the emul_lock coverage in linux_clone(). - Cache the em->pdeath_signal in a local variable and move the copyout out of the emul_lock coverage. - Move the free() out of the emul_shared_lock coverage in a preparation to switch emul_lock to non-sleepable lock (mutex).
Submitted by: rdivacky
|
#
166727 |
|
14-Feb-2007 |
jkim |
MFP4: 113025, 113146, 113177, 113203, 113500, 113546, 113570
- PROT_READ, PROT_WRITE, or PROT_EXEC implies PROT_READ and PROT_EXEC. Linux/ia64's i386 emulation layer does this and it complies with Linux header files. This fixes mmap05 LTP test case on amd64. - Do not adjust stack size when failure has occurred. - Synchronize i386 mmap/mprotect with amd64.
|
#
166395 |
|
01-Feb-2007 |
kib |
Fix LOR that occurs because proctree_lock was acquired while holding emuldata lock by moving the code upwards outside the emul_lock coverage.
Submitted by: rdivacky
|
#
166188 |
|
23-Jan-2007 |
jeff |
- Remove setrunqueue and replace it with direct calls to sched_add(). setrunqueue() was mostly empty. The few asserts and thread state setting were moved to the individual schedulers. sched_add() was chosen to displace it for naming consistency reasons. - Remove adjustrunqueue, it was 4 lines of code that was ifdef'd to be different on all three schedulers where it was only called in one place each. - Remove the long ifdef'd out remrunqueue code. - Remove the now redundant ts_state. Inspect the thread state directly. - Don't set TSF_* flags from kern_switch.c, we were only doing this to support a feature in one scheduler. - Change sched_choose() to return a thread rather than a td_sched. Also, rely on the schedulers to return the idlethread. This simplifies the logic in choosethread(). Aside from the run queue links kern_switch.c mostly does not care about the contents of td_sched.
Discussed with: julian
- Move the idle thread loop into the per scheduler area. ULE wants to do something different from the other schedulers.
Suggested by: jhb
Tested on: x86/amd64 sched_{4BSD, ULE, CORE}.
|
#
166150 |
|
20-Jan-2007 |
netchild |
MFp4 (113077, 113083, 113103, 113124, 113097):
Dont expose em->shared to the outside world before its properly initialized. Might not affect anything but its at least a better coding style.
Dont expose em via p->p_emuldata until its properly initialized. This also enables us to get rid of some locking and simplify the code because we are workin on a local copy.
In linux_fork and linux_vfork create the process in stopped state to be sure that the new process runs with fully initialized emuldata structure [1]. Also fix the vfork (both in linux_clone and linux_vfork) race that could result in never woken up process [2].
Reported by: Scot Hetzel [1] Suggested by: jhb [2] Reviewed by: jhb (at least some important parts) Submitted by: rdivacky Tested by: Scot Hetzel (on amd64)
Change 2 comments (in the new code) to comply to style(9).
Suggested by: jhb
|
#
166007 |
|
14-Jan-2007 |
netchild |
MFp4 (112893): Make linux_vfork() actually work. This enables make to work again with 2.6. It also fixes the LTP vfork tests.
Submitted by: rdivacky
|
#
165867 |
|
07-Jan-2007 |
netchild |
MFp4 (112498): Rename the locking flags to EMUL_DOLOCK and EMUL_DONTLOCK to prevent confusion.
Submitted by: rdivacky
|
#
164033 |
|
06-Nov-2006 |
rwatson |
Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking.
Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
|
#
163536 |
|
20-Oct-2006 |
netchild |
Fix a recent regression regarding valid signals.
Submitted by: rdivacky
|
#
163374 |
|
15-Oct-2006 |
netchild |
MFP4 (106538 + 106541): Implement CLONE_VFORK. This fixes the clone05 LTP test.
Submitted by: rdivacky
|
#
163373 |
|
15-Oct-2006 |
netchild |
Revert my previous commit, I mismerged this to the wrong place.
Pointy hat to: netchild
|
#
163372 |
|
15-Oct-2006 |
netchild |
MFP4 (106541): Fix the clone05 test in the LTP.
Submitted by: rdivacky
|
#
163371 |
|
15-Oct-2006 |
netchild |
MFP4 (107144[1]): Implement CLONE_FS on i386[1] and amd64.
Submitted by: rdivacky [1]
|
#
163369 |
|
15-Oct-2006 |
netchild |
MFP4 (107868 - 107870): Use a macro to test for a valid signal instead of doing it my hand everywhere.
Submitted by: rdivacky
|
#
162479 |
|
20-Sep-2006 |
netchild |
style(9)
While I'm here add a MFC reminder, I forgot it in the previous commit.
Noticed by: ssouhlal MFC after: 1 week
|
#
162472 |
|
20-Sep-2006 |
netchild |
Bring the i386 linux mmap code more into line with how linux (2.4.x) behaves. This fixes a lot of test which failed before. For amd64 there are still some problems, but without any testers which apply patches and run some predefines tests we can't do more ATM.
Submitted by: Marcin Cieslak <saper@SYSTEM.PL> (minor fixups by myself) Tested with: LTP
|
#
161673 |
|
27-Aug-2006 |
netchild |
Fix video playing and network connections in realplayer (and most likely other stuff) in the osrelease=2.6.16 case: - implement CLONE_PARENT semantic - fix TLS loading in clone CLONE_SETTLS - lock proc in the currently disabled part of CLONE_THREAD
I suggest to not unload the linux module after testing this, there are some "<defunct>" processes hanging around after exiting (they aren't with osrelease=2.4.2) and they may panic your kernel when unloading the linux module. They are in state Z and some of them consume CPU according to ps. But I don't trust the CPU part, the idle threads gets too much CPU that this may be possible (accumulating idle, X and 2 defunct processes results in 104.7%, this looks to much to be a rounding error).
Noticed by: Intron <mag@intron.ac> Submitted by: rdivacky (in collaboration with Intron) Tested by: Intron, netchild Reviewed by: jhb (previous version)
|
#
161611 |
|
25-Aug-2006 |
netchild |
Emulate what vfork does instead of using it in linux_vfork. This way we can do the stuff we need to do with linux processes at fork and don't panic the kernel at exit of the child.
Submitted by: rdivacky Tested with: tst-vfork* (glibc regression tests) Tested by: netchild
|
#
161419 |
|
17-Aug-2006 |
netchild |
Move some stuff into headers where they belong.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Noticed by: jhb, ssouhlal
|
#
161365 |
|
16-Aug-2006 |
netchild |
Style fixes to comments.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Noticed by: jhb, ssouhlal
|
#
161310 |
|
15-Aug-2006 |
netchild |
Add the linux 2.6.x stuff (not used by default!): - TLS - complete - pid/tid mangling - complete - thread area - complete - futexes - complete with issues - clone() extension - complete with some possible minor issues - mq*/timer*/clock* stuff - complete but untested and the mq* stuff is disabled when not build as part of the kernel with native FreeBSD mq* support (module support for this will come later)
Tested with: - linux-firefox - works, tested - linux-opera - works, tested - linux-realplay - doesnt work, issue with futexes - linux-skype - doesnt work, issue with futexes - linux-rt2-demo - works, tested - linux-acroread - doesnt work, unknown reason (coredump) and sometimes issue with futexes - various unix utilities in linux-base-gentoo3 and linux-base-fc4: everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run sysctl compat.linux.osrelease=2.6.16 to switch back use sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not happen.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
|
#
155402 |
|
06-Feb-2006 |
jhb |
- Always call exec_free_args() in kern_execve() instead of doing it in all the callers if the exec either succeeds or fails early. - Move the code to call exit1() if the exec fails after the vmspace is gone to the bottom of kern_execve() to cut down on some code duplication.
|
#
148623 |
|
01-Aug-2005 |
sobomax |
Propagate error code of kern_execve() to the caller properly.
PR: 81670 Submitted by: Andrew Bliznak <andriko.b@gmail.com> Pointy hat to: sobomax
|
#
143108 |
|
03-Mar-2005 |
sobomax |
In linux emulation layer try to detect attempt to use linux_clone() to create kernel threads and call rfork(2) with RFTHREAD flag set in this case, which puts parent and child into the same threading group. As a result all threads that belong to the same program end up in the same threading group.
This is similar to what linuxthreads port does, though in this case we don't have a luxury of having access to the source code and there is no definite way to differentiate linux_clone() called for threading purposes from other uses, so that we have to resort to heuristics.
Allow SIGTHR to be delivered between all processes in the same threading group previously it has been blocked for s[ug]id processes.
This also should improve locking of the same file descriptor from different threads in programs running under linux compat layer.
PR: kern/72922 Reported by: Andriy Gapon <avg@icyb.net.ua> Idea suggested by: rwatson
|
#
141468 |
|
07-Feb-2005 |
jhb |
Use the LCONVPATHEXIST() macro rather than it's exact expansion to be consistent.
|
#
140992 |
|
29-Jan-2005 |
sobomax |
o Split out kernel part of execve(2) syscall into two parts: one that copies arguments into the kernel space and one that operates completely in the kernel space;
o use kernel-only version of execve(2) to kill another stackgap in linuxlator/i386.
Obtained from: DragonFlyBSD (partially) MFC after: 2 weeks
|
#
140862 |
|
26-Jan-2005 |
sobomax |
o Move copyin()/copyout() out of i386_{get,set}_ldt() and i386_{get,set}_ioperm() and make those APIs visible in the kernel namespace;
o use i386_{get,set}_ldt() and i386_{get,set}_ioperm() instead of sysarch() in the linuxlator, which allows to kill another two stackgaps.
MFC after: 2 weeks
|
#
134838 |
|
06-Sep-2004 |
dfr |
Add a few stub syscalls to get TransGaming's winex a bit closer to working.
|
#
134586 |
|
01-Sep-2004 |
julian |
Give setrunqueue() and sched_add() more of a clue as to where they are coming from and what is expected from them.
MFC after: 2 days
|
#
134269 |
|
24-Aug-2004 |
jhb |
Correct the arguments to kern_sigaltstack() as they were reversed.
PR: kern/68079 Submitted by: Georg-W. Koltermann gwk at rahn-koltermann dot de
|
#
125454 |
|
04-Feb-2004 |
jhb |
Locking for the per-process resource limits structure. - struct plimit includes a mutex to protect a reference count. The plimit structure is treated similarly to struct ucred in that is is always copy on write, so having a reference to a structure is sufficient to read from it without needing a further lock. - The proc lock protects the p_limit pointer and must be held while reading limits from a process to keep the limit structure from changing out from under you while reading from it. - Various global limits that are ints are not protected by a lock since int writes are atomic on all the archs we support and thus a lock wouldn't buy us anything. - All accesses to individual resource limits from a process are abstracted behind a simple lim_rlimit(), lim_max(), and lim_cur() API that return either an rlimit, or the current or max individual limit of the specified resource from a process. - dosetrlimit() was renamed to kern_setrlimit() to match existing style of other similar syscall helper functions. - The alpha OSF/1 compat layer no longer calls getrlimit() and setrlimit() (it didn't used the stackgap when it should have) but uses lim_rlimit() and kern_setrlimit() instead. - The svr4 compat no longer uses the stackgap for resource limits calls, but uses lim_rlimit() and kern_setrlimit() instead. - The ibcs2 compat no longer uses the stackgap for resource limits. It also no longer uses the stackgap for accessing sysctl's for the ibcs2_sysconf() syscall but uses kernel_sysctl() instead. As a result, ibcs2_sysconf() no longer needs Giant. - The p_rlimit macro no longer exists.
Submitted by: mtm (mostly, I only did a few cleanups and catchups) Tested on: i386 Compiled on: alpha, amd64
|
#
115705 |
|
02-Jun-2003 |
obrien |
Use __FBSDID().
|
#
113689 |
|
18-Apr-2003 |
jhb |
Synchronize the two linux_clone() implementations which includes a few minor cleanups in both.
|
#
112888 |
|
31-Mar-2003 |
jeff |
- Move p->p_sigmask to td->td_sigmask. Signal masks will be per thread with a follow on commit to kern_sig.c - signotify() now operates on a thread since unmasked pending signals are stored in the thread. - PS_NEEDSIGCHK moves to TDF_NEEDSIGCHK.
|
#
112630 |
|
25-Mar-2003 |
mdodd |
Print the return value from mmap() in the DEBUG case.
|
#
112367 |
|
18-Mar-2003 |
phk |
Including <sys/stdint.h> is (almost?) universally only to be able to use %j in printfs, so put a newsted include in <sys/systm.h> where the printf prototype lives and save everybody else the trouble.
|
#
111798 |
|
03-Mar-2003 |
des |
Clean up whitespace and remove register keyword.
|
#
111797 |
|
03-Mar-2003 |
des |
More caddr_t removal, in conjunction with copy{in,out}(9) this time. Also clean up some egregious casts and incorrect use of sizeof.
|
#
105441 |
|
19-Oct-2002 |
markm |
Style(9). Make some function declarations consistent with the rest, and remove some nearby extraneous {}'s.
|
#
104984 |
|
12-Oct-2002 |
bde |
Fixed syntax errors and printf format errors.
|
#
104893 |
|
11-Oct-2002 |
sobomax |
- Add support for IPC_64 extensions into shmctl(2), semctl(2) and msgctl(2); - add wrappers for mmap2(2) and ftruncate64(2) system calls; - don't spam console with printf's when VFAT_READDIR_BOTH ioctl(2) is invoked; - add support for SOUND_MIXER_READ_STEREODEVS ioctl(2); - make msgctl(IPC_STAT) and IPC_SET actually working by converting from BSD msqid_ds to Linux and vice versa; - properly return EINVAL if semget(2) is called with nsems being negative.
Reviewed by: marcel Approved by: marcel Tested with: LSB runtime test
|
#
104354 |
|
02-Oct-2002 |
scottl |
Some kernel threads try to do significant work, and the default KSTACK_PAGES doesn't give them enough stack to do much before blowing away the pcb. This adds MI and MD code to allow the allocation of an alternate kstack who's size can be speficied when calling kthread_create. Passing the value 0 prevents the alternate kstack from being created. Note that the ia64 MD code is missing for now, and PowerPC was only partially written due to the pmap.c being incomplete there. Though this patch does not modify anything to make use of the alternate kstack, acpi and usb are good candidates.
Reviewed by: jake, peter, jhb
|
#
103216 |
|
11-Sep-2002 |
julian |
Completely redo thread states.
Reviewed by: davidxu@freebsd.org
|
#
102814 |
|
01-Sep-2002 |
iedowse |
Use the new kern_* functions to avoid the need to store arguments in the stack gap. This converts most VFS and signal related system calls, as well as select().
Discussed on: -arch Approved by: marcel
|
#
99072 |
|
29-Jun-2002 |
julian |
Part 1 of KSE-III
The ability to schedule multiple threads per process (one one cpu) by making ALL system calls optionally asynchronous. to come: ia64 and power-pc patches, patches for gdb, test program (in tools)
Reviewed by: Almost everyone who counts (at various times, peter, jhb, matt, alfred, mini, bernd, and a cast of thousands)
NOTE: this is still Beta code, and contains lots of debugging stuff. expect slight instability in signals..
|
#
93593 |
|
01-Apr-2002 |
jhb |
Change the suser() API to take advantage of td_ucred as well as do a general cleanup of the API. The entire API now consists of two functions similar to the pre-KSE API. The suser() function takes a thread pointer as its only argument. The td_ucred member of this thread must be valid so the only valid thread pointers are curthread and a few kernel threads such as thread0. The suser_cred() function takes a pointer to a struct ucred as its first argument and an integer flag as its second argument. The flag is currently only used for the PRISON_ROOT flag.
Discussed on: smp@
|
#
91437 |
|
27-Feb-2002 |
peter |
Fix format warning.
Submitted by: LINT, -Werror
|
#
91406 |
|
27-Feb-2002 |
jhb |
Simple p_ucred -> td_ucred changes to start using the per-thread ucred reference.
|
#
90361 |
|
07-Feb-2002 |
julian |
Pre-KSE/M3 commit. this is a low-functionality change that changes the kernel to access the main thread of a process via the linked list of threads rather than assuming that it is embedded in the process. It IS still embeded there but remove all teh code that assumes that in preparation for the next commit which will actually move it out.
Reviewed by: peter@freebsd.org, gallatin@cs.duke.edu, benno rice,
|
#
84815 |
|
11-Oct-2001 |
jhb |
Oops, these already included sys/lock.h, they just did so after sys/mutex.h which is too late.
|
#
84811 |
|
11-Oct-2001 |
jhb |
Add missing includes of sys/lock.h.
|
#
83981 |
|
26-Sep-2001 |
rwatson |
o Modify access control checks in linux_iopl() to use securelevel_gt() rather than direct variable checks. (Yet another API to perform direct hardware I/O.)
Obtained from: TrustedBSD Project
|
#
83366 |
|
12-Sep-2001 |
julian |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
|
#
83221 |
|
08-Sep-2001 |
marcel |
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.
|
#
78962 |
|
29-Jun-2001 |
jhb |
Add a new MI pointer to the process' trapframe p_frame instead of using various differently named pointers buried under p_md.
Reviewed by: jake (in principle)
|
#
76166 |
|
01-May-2001 |
markm |
Undo part of the tangle of having sys/lock.h and sys/mutex.h included in other "system" header files.
Also help the deprecation of lockmgr.h by making it a sub-include of sys/lock.h and removing sys/lockmgr.h form kernel .c files.
Sort sys/*.h includes where possible in affected files.
OK'ed by: bde (with reservations)
|
#
74112 |
|
11-Mar-2001 |
des |
rfork() masks RFSTOPPED out of the flags it passes to fork1(), so we have to call fork1() directly if we don't want out process queued right away. This has the serendipitous side effect of saving us a call to pfind().
This makes threaded Linux apps (such as Opera) work again.
|
#
73856 |
|
06-Mar-2001 |
jhb |
Create clone'd linux processes as stopped processes at first and don't actually make them runnable until after the emulator layer has had a chance to perform fixups.
|
#
73213 |
|
28-Feb-2001 |
dillon |
Linux does not filesystem-sync file-backed writable mmap pages on a regular basis. Adjust our linux emulation to conform. This will cause more dirty pages to be left for the pagedaemon to deal with, but our new low-memory handling code can deal with it. The linux way appears to be a trend, and we may very well make MAP_NOSYNC the default for FreeBSD as well (once we have reasonable sequential write-behind heuristics for random faults). (will be MFC'd prior to 4.3 freeze)
Suggested by: Andrew Gallatin
|
#
72543 |
|
16-Feb-2001 |
jlemon |
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)
|
#
71494 |
|
23-Jan-2001 |
jhb |
- Proc locking. - Use NULL instead of 0.
|
#
69379 |
|
30-Nov-2000 |
marcel |
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
|
#
68583 |
|
10-Nov-2000 |
marcel |
Revert auto-generation. The Alpha port is broken. Syncing with it is wrong.
|
#
68520 |
|
09-Nov-2000 |
marcel |
Make MINSIGSTKSZ machine dependent, and have the sigaltstack syscall compare against a variable sv_minsigstksz in struct sysentvec as to properly take the size of the machine- and ABI dependent struct sigframe into account.
The SVR4 and iBCS2 modules continue to have a minsigstksz of 8192 to preserve behavior. The real values (if different) are not known at this time. Other ABI modules use the real values.
The native MINSIGSTKSZ is now defined as follows:
Arch MINSIGSTKSZ ---- ----------- alpha 4096 i386 2048 ia64 12288
Reviewed by: mjacob Suggested by: bde
|
#
68519 |
|
09-Nov-2000 |
marcel |
Sync with Alpha: Do not use sysent.c, proto.h and syscall.h in source tree; use auto-generated versions.
|
#
68034 |
|
31-Oct-2000 |
gallatin |
fix the sigaltstack hack by lowering the stack size to the original value if the request was for less than MINSIGSTKSZ (in which case we "round up"). discussed with: marcel
|
#
67238 |
|
16-Oct-2000 |
gallatin |
Some linux apps, such as IBM's JDK 1.3, will attempt to mmap thread stacks near the top of their address space. If their TOS is greater than vm_maxsaddr, vm_map_growstack() will confuse the thread stack with the process stack and deliver a SEGV if they attempt to grow the thread stack past their current stacksize rlimit. To avoid this, adjust vm_maxsaddr upwards to reflect the current stacksize rlimit rather than the maximum possible stacksize. It would be better to adjust the mmap'ed region, but some apps (again, IBM's JDK 1.3) do not check mmap's return value..
This commit (in conjunction with setting MINSIGSTKSZ to 2048 & rebuilding your kernel and modules) will get IBM's JDK 1.3 working with FreeBSD at least well enough to run many of the example applets.
Reviewed by: marcel Tested by: sto@stat.duke.edu, many others on freebsd-java@
|
#
67051 |
|
12-Oct-2000 |
gallatin |
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@
|
#
65506 |
|
06-Sep-2000 |
marcel |
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
|
#
65067 |
|
25-Aug-2000 |
marcel |
Fix typo in license.
|
#
64921 |
|
22-Aug-2000 |
marcel |
Collect the MD syscalls from /sys/compat/linux here. Since this is a new file, fix most of the style bugs at the same time.
|