Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/compat



Module Name:    src
Committed By:   manu
Date:           Sun Jun 25 16:15:40 UTC 2006

Modified Files:
        src/sys/compat/linux/arch/amd64: linux_syscall.h linux_syscallargs.h
            linux_syscalls.c linux_sysent.c syscalls.master
        src/sys/compat/linux/common: linux_emuldata.h linux_exec.c
            linux_sched.c
        src/sys/compat/linux32/arch/amd64: linux32_syscall.h
            linux32_syscallargs.h linux32_syscalls.c linux32_sysent.c
            syscalls.master
        src/sys/compat/linux32/common: linux32_exec.c linux32_resource.c
Removed Files:
        src/sys/compat/linux32/common: linux32_emuldata.h

Log Message:
- Complete exit_group() implementation. We now maintain a list of Linux
threads in a processes and kill them properly. The code is a bit too
complicated, but I could not find a simplier way of dealing with it

- Change getpid() and getppid() semantics to match what Linux does,
and implement gettid(). In the Linux kernel, threads are implemnted
as plain old processes. A thread group is just a set of processes,
with the parent called leader. Thread ID, which are returned by gettid(),
are just the PID of the plain old processes, and getpid() returns the
PID of the thread group leader.

- Remove struct linux32_emuldata. COMPAT_LINUX32 uses a lot of COMPAT_LINUX
code, where a struct linux_emuldata is assumed. By having distinct emuldata
structure with different sizes and layouts, we caused kernel memory
corruptions.

- Fix setprioriry() and getpriority()

Thanks to Nicolas Joly for tracking down the problem and providing me the
hardware to fix them.


To generate a diff of this commit:
cvs rdiff -r1.11 -r1.12 src/sys/compat/linux/arch/amd64/linux_syscall.h \
    src/sys/compat/linux/arch/amd64/linux_syscallargs.h \
    src/sys/compat/linux/arch/amd64/linux_syscalls.c \
    src/sys/compat/linux/arch/amd64/linux_sysent.c \
    src/sys/compat/linux/arch/amd64/syscalls.master
cvs rdiff -r1.10 -r1.11 src/sys/compat/linux/common/linux_emuldata.h
cvs rdiff -r1.83 -r1.84 src/sys/compat/linux/common/linux_exec.c
cvs rdiff -r1.30 -r1.31 src/sys/compat/linux/common/linux_sched.c
cvs rdiff -r1.3 -r1.4 src/sys/compat/linux32/arch/amd64/linux32_syscall.h \
    src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h \
    src/sys/compat/linux32/arch/amd64/linux32_syscalls.c \
    src/sys/compat/linux32/arch/amd64/linux32_sysent.c
cvs rdiff -r1.2 -r1.3 src/sys/compat/linux32/arch/amd64/syscalls.master
cvs rdiff -r1.1 -r0 src/sys/compat/linux32/common/linux32_emuldata.h
cvs rdiff -r1.1 -r1.2 src/sys/compat/linux32/common/linux32_exec.c \
    src/sys/compat/linux32/common/linux32_resource.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index