326814 |
12-Dec-2017 |
pfg |
MFC r326282: (by fsu)
Remap ENOATTR to ENODATA in the linuxulator. In the linux ENOADATA is frequently #defined as ENOATTR. The change is required for an xattrs support implementation. |
321024 |
15-Jul-2017 |
dchagin |
MFC r297597 (by bapt@):
Add kern.features flags for linux and linux64 modules
kern.features.linux: 1 meaning linux 32 bits binaries are supported kern.features.linux64: 1 meaning linux 64 bits binaries are supported
The goal here is to help 3rd party applications (including ports) to determine if the host do support linux emulation
Relnotes: yes |
318164 |
10-May-2017 |
jhb |
MFC 313564: Drop the "created from" line from files generated by makesyscalls.sh.
This information is less useful when the generated files are included in source control along with the source. If needed it can be reconstructed from the $FreeBSD$ tag in the generated file. Removing this information from the generated output permits committing the generated files along with the change to the system call master list without having inconsistent metadata in the generated files.
Regenerate the affected files along with the MFC. |
315063 |
11-Mar-2017 |
dchagin |
MFC r303464 (by brooks@):
Don't create pointless backups of generated files in "make sysent".
Any sensible workflow will include a revision control system from which to restore the old files if required. In normal usage, developers just have to clean up the mess. |
304188 |
15-Aug-2016 |
jhb |
MFC 302900,302902,302921,303461,304009: Add a mask of optional ptrace() events.
302900: Add a test for user signal delivery.
This test verifies we get the correct ptrace event details when a signal is posted to a traced process from userland.
302902: Add a mask of optional ptrace() events.
ptrace() now stores a mask of optional events in p_ptevents. Currently this mask is a single integer, but it can be expanded into an array of integers in the future.
Two new ptrace requests can be used to manipulate the event mask: PT_GET_EVENT_MASK fetches the current event mask and PT_SET_EVENT_MASK sets the current event mask.
The current set of events include: - PTRACE_EXEC: trace calls to execve(). - PTRACE_SCE: trace system call entries. - PTRACE_SCX: trace syscam call exits. - PTRACE_FORK: trace forks and auto-attach to new child processes. - PTRACE_LWP: trace LWP events.
The S_PT_SCX and S_PT_SCE events in the procfs p_stops flags have been replaced by PTRACE_SCE and PTRACE_SCX. PTRACE_FORK replaces P_FOLLOW_FORK and PTRACE_LWP replaces P2_LWP_EVENTS.
The PT_FOLLOW_FORK and PT_LWP_EVENTS ptrace requests remain for compatibility but now simply toggle corresponding flags in the event mask.
While here, document that PT_SYSCALL, PT_TO_SCE, and PT_TO_SCX both modify the event mask and continue the traced process.
302921: Rename PTRACE_SYSCALL to LINUX_PTRACE_SYSCALL.
303461: Note that not all optional ptrace events use SIGTRAP.
New child processes attached due to PTRACE_FORK use SIGSTOP instead of SIGTRAP. All other ptrace events use SIGTRAP.
304009: Remove description of P_FOLLOWFORK as this flag was removed. |
302964 |
17-Jul-2016 |
dchagin |
MFC r302517:
Fix a copy/paste bug introduced during X86_64 Linuxulator work. FreeBSD support NX bit on X86_64 processors out of the box, for i386 emulation use READ_IMPLIES_EXEC flag, introduced in r302515.
While here move common part of mmap() and mprotect() code to the files in compat/linux to reduce code dupcliation between Linuxulator's.
MFC r302518, r302626:
Add linux_mmap.c to the appropriate conf/files. |
302963 |
17-Jul-2016 |
dchagin |
Regen for r302962 (Linux personality), record mergeinfo for r320516. |
302962 |
17-Jul-2016 |
dchagin |
MFC r302515:
Implement Linux personality() system call mainly due to READ_IMPLIES_EXEC flag. In Linux if this flag is set, PROT_READ implies PROT_EXEC for mmap(). Linux/i386 set this flag automatically if the binary requires executable stack.
READ_IMPLIES_EXEC flag will be used in the next Linux mmap() commit. |
301422 |
05-Jun-2016 |
dchagin |
MFC r300359, r300360:
Correct an argument param of linux_sched_* system calls as a struct l_sched_param does not defined due to it's nature. |
298653 |
26-Apr-2016 |
pfg |
MFC r298482: Cleanup redundant parenthesis from existing howmany()/roundup() macro uses.
Requested by: dchagin |
297301 |
27-Mar-2016 |
dchagin |
MFC r297062:
Regen for r297061 (fstatfs64 Linux syscall). |
297300 |
27-Mar-2016 |
dchagin |
MFC r297061;
Implement fstatfs64 system call.
PR: 181012 Submitted by: John Wehle |
294901 |
27-Jan-2016 |
delphij |
MFC r294900:
Implement AT_SECURE properly.
AT_SECURE auxv entry has been added to the Linux 2.5 kernel to pass a boolean flag indicating whether secure mode should be enabled. 1 means that the program has changes its credentials during the execution. Being exported AT_SECURE used by glibc issetugid() call.
Submitted by: imp, dchagin Security: FreeBSD-SA-16:10.linux Security: CVE-2016-1883 |
294136 |
16-Jan-2016 |
dchagin |
MFC r293613:
Implement vsyscall hack. Prior to 2.13 glibc uses vsyscall instead of vdso. An upcoming linux_base-c6 needs it. |
293897 |
14-Jan-2016 |
glebius |
o Fix SCTP ICMPv6 error message vulnerability. [SA-16:01.sctp] o Fix Linux compatibility layer incorrect futex handling. [SA-16:03.linux] o Fix Linux compatibility layer setgroups(2) system call. [SA-16:04.linux] o Fix TCP MD5 signature denial of service. [SA-16:05.tcp] o Fix insecure default bsnmpd.conf permissions. [SA-16:06.bsnmpd]
Security: FreeBSD-SA-16:01.sctp, CVE-2016-1879 Security: FreeBSD-SA-16:03.linux, CVE-2016-1880 Security: FreeBSD-SA-16:04.linux, CVE-2016-1881 Security: FreeBSD-SA-16:05.tcp, CVE-2016-1882 Security: FreeBSD-SA-16:06.bsnmpd, CVE-2015-5677 |
293609 |
09-Jan-2016 |
dchagin |
MFC r289055 (by mjg@):
linux: fix handling of out-of-bounds syscall attempts
Due to an off by one the code would read an entry past the table, as opposed to the last entry which contains the nosys handler.
This fixes my fault.
MFC r289058 (by cem@):
Fix missing semi-colon from r289055.
MFC r289768 (by jhb@):
Merge r289055 to amd64/linux32:
linux: fix handling of out-of-bounds syscall attempts
Due to an off by one the code would read an entry past the table, as opposed to the last entry which contains the nosys handler. |
293600 |
09-Jan-2016 |
dchagin |
MFC r283544:
When I merged the lemul branch I missied kib@'s r282708 commit. This is not the final fix as I need properly cleanup thread resources before other threads suicide. |
293593 |
09-Jan-2016 |
dchagin |
Regen for r293592. |
293592 |
09-Jan-2016 |
dchagin |
MFC r283492:
Implement Linux specific syncfs() system call. |
293589 |
09-Jan-2016 |
dchagin |
Regen for r293588. |
293588 |
09-Jan-2016 |
dchagin |
MFC r283488:
Implement recvmmsg() and sendmmsg() system calls. |
293587 |
09-Jan-2016 |
dchagin |
MFC r283487:
Reduce duplication between MD Linux code by moving msg related struct definitions out into the compat/linux/linux_socket.h |
293586 |
09-Jan-2016 |
dchagin |
Regen for r293585. |
293585 |
09-Jan-2016 |
dchagin |
MFC r283484:
Implement epoll_pwait() system call. |
293583 |
09-Jan-2016 |
dchagin |
Regen for r293582. |
293582 |
09-Jan-2016 |
dchagin |
MFC r283480:
Add utimensat() system call. |
293575 |
09-Jan-2016 |
dchagin |
MFC r283474:
Rework signal code to allow using it by other modules, like linprocfs:
1. Linux sigset always 64 bit on all platforms. In order to move Linux sigset code to the linux_common module define it as 64 bit int. Move Linux sigset manipulation routines to the MI path.
2. Move Linux signal number definitions to the MI path. In general, they are the same on all platforms except for a few signals.
3. Map Linux RT signals to the FreeBSD RT signals and hide signal conversion tables to avoid conversion errors.
4. Emulate Linux SIGPWR signal via FreeBSD SIGRTMIN signal which is outside of allowed on Linux signal numbers.
PR: 197216 |
293572 |
09-Jan-2016 |
dchagin |
MFC r283471:
According to Linux man sigaltstack(3) shall return EINVAL if the ss argument is not a null pointer, and the ss_flags member pointed to by ss contains flags other than SS_DISABLE. However, in fact, Linux also allows SS_ONSTACK flag which is simply ignored.
For buggy apps (at least mono) ignore other than SS_DISABLE flags as a Linux do.
While here move MI part of sigaltstack code to the appropriate place. |
293570 |
09-Jan-2016 |
dchagin |
Regen for r293569. |
293569 |
09-Jan-2016 |
dchagin |
MFC r283467:
Call nosys in case when the incorrect syscall number is specified.
Its my fault, fixed by mjg@ at r289055. |
293568 |
09-Jan-2016 |
dchagin |
Regen for r293567. |
293567 |
09-Jan-2016 |
dchagin |
MFC r283465:
Add preliminary fallocate system call implementation to emulate posix_fallocate() function. |
293556 |
09-Jan-2016 |
dchagin |
Regen for r293555. |
293555 |
09-Jan-2016 |
dchagin |
MFC r283451:
Implement ppoll() system call. |
293550 |
09-Jan-2016 |
dchagin |
Regen for r293549. |
293549 |
09-Jan-2016 |
dchagin |
MFC r283444:
Implement eventfd system call. |
293548 |
09-Jan-2016 |
dchagin |
MFC r283443:
Put the correct value for the abi_nfdbits parameter of kern_select() for all supported Linuxulators. |
293547 |
09-Jan-2016 |
dchagin |
Regen for r293546. |
293546 |
09-Jan-2016 |
dchagin |
MFC r283441:
Implement epoll family system calls. This is a tiny wrapper around kqueue() to implement epoll subset of functionality. The kqueue user data are 32bit on i386 which is not enough for epoll user data, so we keep user data in the proc emuldata.
Initial patch developed by rdivacky@ in 2007, then extended by Yuri Victorovich @ r255672 and finished by me in collaboration with mjg@ and jillies@. |
293541 |
09-Jan-2016 |
dchagin |
MFC r283437:
To avoid code duplication move open/fcntl definitions to the MI header file. |
293540 |
09-Jan-2016 |
dchagin |
MFC r283436:
Use the BSD_TO_LINUX_SIGNAL() wherever there is no need to check the ABI as it is known. |
293536 |
09-Jan-2016 |
dchagin |
MFC r283432:
Being exported through vdso the note.Linux section used by glibc to determine the kernel version (this saves one uname call). Temporarily disable the export of a note.Linux section until I figured out how to change the kernel version in the note.Linux on the fly. |
293535 |
09-Jan-2016 |
dchagin |
MFC r283431:
Add AT_RANDOM and AT_EXECFN auxiliary vector entries which are used by glibc. At list since glibc version 2.16 using AT_RANDOM is mandatory. |
293534 |
09-Jan-2016 |
dchagin |
Regen for r293533. |
293533 |
09-Jan-2016 |
dchagin |
MFC r283428:
Change linux faccessat syscall definition to match actual linux one.
The AT_EACCESS and AT_SYMLINK_NOFOLLOW flags are actually implemented within the glibc wrapper function for faccessat(). If either of these flags are specified, then the wrapper function employs fstatat() to determine access permissions. |
293527 |
09-Jan-2016 |
dchagin |
MFC r283421:
Introduce a new module linux_common.ko which is intended for the following primary purposes:
1. Remove the dependency of linsysfs and linprocfs modules from linux.ko, which will be architecture specific on amd64.
2. Incorporate into linux_common.ko general code for platforms on which we'll support two Linuxulator modules (for both instruction set - 32 & 64 bit).
3. Move malloc(9) declaration to linux_common.ko, to enable getting memory usage statistics properly.
Currently linux_common.ko incorporates a code from linux_mib.c and linux_util.c and linprocfs, linsysfs and linux kernel modules depend on linux_common.ko.
Temporarily remove dtrace garbage from linux_mib.c and linux_util.c |
293522 |
09-Jan-2016 |
dchagin |
MFC r283416:
x86_64 Linux do not use multiplexing on ipc system calls. Move struct ipc_perm definition to the MD path as it differs for 64 and 32 bit platform. |
293517 |
09-Jan-2016 |
dchagin |
MFC r283411:
Remove stale comment about a signal trampoline which is moved to the shared page at r219609. |
293516 |
09-Jan-2016 |
dchagin |
MFC r283410:
Put linux_platform into the vdso to avoid copying it onto the stack at every exec. |
293515 |
09-Jan-2016 |
dchagin |
MFC r283408:
Eliminate a now unused global declaration of elf_linux_sysvec. |
293514 |
09-Jan-2016 |
dchagin |
MFC r283407:
Implement vdso - virtual dynamic shared object. Through vdso Linux exposes functions from kernel with proper DWARF CFI information so that it becomes easier to unwind through them. Using vdso is a mandatory for a thread cancelation && cleanup on a modern glibc. |
293513 |
09-Jan-2016 |
dchagin |
Regen for r293511. |
293512 |
09-Jan-2016 |
dchagin |
MFC r283403:
Implement pselect6() system call. |
293511 |
09-Jan-2016 |
dchagin |
Regen for r293510. |
293510 |
09-Jan-2016 |
dchagin |
MFC r283401:
Implement prlimit64() system call. |
293509 |
09-Jan-2016 |
dchagin |
Regen for r293508. |
293508 |
09-Jan-2016 |
dchagin |
MFC r283399:
Implement dup3() system call. |
293506 |
09-Jan-2016 |
dchagin |
Regen for r293505. |
293505 |
09-Jan-2016 |
dchagin |
MFC r283396:
Implement rt_sigqueueinfo() system call. |
293504 |
09-Jan-2016 |
dchagin |
Regen for r293503. |
293503 |
09-Jan-2016 |
dchagin |
MFC r283394:
Implement waitid() system call. |
293502 |
09-Jan-2016 |
dchagin |
Regen for r293501. |
293501 |
09-Jan-2016 |
dchagin |
MFC r283392:
struct l_rusage does not defined for i386 Linuxulator due to it's nature. |
293500 |
09-Jan-2016 |
dchagin |
MFC r283391:
To reduce code duplication introduce linux_copyout_rusage() method. Use it in linux_wait4() system call and move linux_wait4() to the MI path. While here add a prototype for the static bsd_to_linux_rusage(). |
293495 |
09-Jan-2016 |
dchagin |
MFC r283385:
Some style(9) && whitespaces fixes. No functional changes. |
293493 |
09-Jan-2016 |
dchagin |
MFC r283383:
Switch linuxulator to use the native 1:1 threads.
The reasons: 1. Get rid of the stubs/quirks with process dethreading, process reparent when the process group leader exits and close to this problems on wait(), waitpid(), etc. 2. Reuse our kernel code instead of writing excessive thread managment routines in Linuxulator.
Implementation details:
1. The thread is created via kern_thr_new() in the clone() call with the CLONE_THREAD parameter. Thus, everything else is a process. 2. The test that the process has a threads is done via P_HADTHREADS bit p_flag of struct proc. 3. Per thread emulator state data structure is now located in the struct thread and freed in the thread_dtor() hook. Mandatory holdig of the p_mtx required when referencing emuldata from the other threads. 4. PID mangling has changed. Now Linux pid is the native tid and Linux tgid is the native pid, with the exception of the first thread in the process where tid and pid are one and the same.
Ugliness:
In case when the Linux thread is the initial thread in the thread group thread id is equal to the process id. Glibc depends on this magic (assert in pthread_getattr_np.c). So for system calls that take thread id as a parameter we should use the special method to reference struct thread. |
293488 |
09-Jan-2016 |
dchagin |
Regen fro r293487. |
293487 |
09-Jan-2016 |
dchagin |
MFC r283379:
Implement a Linux version of sched_getparam() && sched_setparam(). Temporarily use the first thread in proc. |
293484 |
09-Jan-2016 |
dchagin |
Regen for r293483. |
293483 |
09-Jan-2016 |
dchagin |
MFC r283375:
In preparation for switching linuxulator to the use the native 1:1 threads use MI linux_sched_rr_get_interval() in i386. |
293479 |
09-Jan-2016 |
dchagin |
Regen for r293478. |
293478 |
09-Jan-2016 |
dchagin |
MFC r283370:
In preparation for switching linuxulator to the use the native 1:1 threads introduce linux_exit() stub instead of sys_exit() call (which terminates process). In the new linuxulator exit() system call terminates the calling thread (not a whole process). |
293477 |
09-Jan-2016 |
dchagin |
MFC r283369:
In preparation for switching linuxulator to the use the native 1:1 threads print the thread id in addition to the pid in debug messages. |
283359 |
24-May-2015 |
kib |
MFC r282708: On exec, single-threading must be enforced before arguments space is allocated from exec_map. |
280258 |
19-Mar-2015 |
rwatson |
Merge r263233 from HEAD to stable/10:
Update kernel inclusions of capability.h to use capsicum.h instead; some further refinement is required as some device drivers intended to be portable over FreeBSD versions rely on __FreeBSD_version to decide whether to include capability.h.
Sponsored by: Google, Inc. |
276811 |
08-Jan-2015 |
dchagin |
Regen for r276810. |
276810 |
08-Jan-2015 |
dchagin |
MFC r276508, r276509: Correct an argument status of wait4 syscall for Linuxulator. |
276084 |
22-Dec-2014 |
jhb |
MFC 273988,273989,273995,274057: MFamd64: Add support for extended FPU states on i386. This includes support for AVX on i386. |
276080 |
22-Dec-2014 |
jhb |
MFC 273991: MFamd64: Move extern declaration of _ucodesel and _udatasel to <machine/md_var.h> |
272021 |
23-Sep-2014 |
bz |
This is a direct commit rather than an MFC of r271744.
Re-gen after r272020 (r271743 in head) implementing most of timer_{create,settime,gettime,getoverrun,delete}.
Approved by: re (gjb) Sponsored by: DARPA/AFRL |
272020 |
23-Sep-2014 |
bz |
MFC r271743:
Implement most of timer_{create,settime,gettime,getoverrun,delete} for amd64/linux32. Fix the entirely bogus (untested) version from r161310 for i386/linux using the same shared code in compat/linux.
It is unclear to me if we could support more clock mappings but the current set allows me to successfully run commercial 32bit linux software under linuxolator on amd64.
Reviewed by: jhb Differential Revision: D784 Sponsored by: DARPA, AFRL Approved by: re (gjb) |
267561 |
17-Jun-2014 |
dchagin |
Revert MFC r266925 because it can lead to instant panic at fexecve():
To allow to run interpreter itself add a new ELF branding type.
Pointed out by: kib, mjg |
266999 |
03-Jun-2014 |
dchagin |
MFC r266925:
To allow to run the interpreter itself add a new ELF branding type. Allow Linux ABI to run ELF interpreter. |
258559 |
25-Nov-2013 |
emaste |
MFC r258135: x86: Allow users to change PSL_RF via ptrace(PT_SETREGS...)
Debuggers may need to change PSL_RF. Note that tf_eflags is already stored in the signal context during signal handling and PSL_RF previously could be modified via sigreturn, so this change should not provide any new ability to userspace.
For background see the thread at: http://lists.freebsd.org/pipermail/freebsd-i386/2007-September/005910.html
Reviewed by: jhb, kib
Sponsored by: DARPA, AFRL Approved by: re (gjb) |
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
255676 |
18-Sep-2013 |
rdivacky |
Regen.
Approved by: re (delphij)
|
255675 |
18-Sep-2013 |
rdivacky |
Revert r255672, it has some serious flaws, leaking file references etc.
Approved by: re (delphij)
|
255673 |
18-Sep-2013 |
rdivacky |
Regen.
Approved by: re (delphij)
|
255672 |
18-Sep-2013 |
rdivacky |
Implement epoll support in Linuxulator. This is a tiny wrapper around kqueue to implement epoll subset of functionality. The kqueue user data are 32bit on i386 which is not enough for epoll user data so this patch overrides kqueue fileops to maintain enough space in struct file.
Initial patch developed by me in 2007 and then extended and finished by Yuri Victorovich.
Approved by: re (delphij) Sponsored by: Google Summer of Code Submitted by: Yuri Victorovich <yuri at rawbw dot com> Tested by: Yuri Victorovich <yuri at rawbw dot com>
|
255426 |
09-Sep-2013 |
jhb |
Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping use an address in the first 2GB of the process's address space. This flag should have the same semantics as the same flag on Linux.
To facilitate this, add a new parameter to vm_map_find() that specifies an optional maximum virtual address. While here, fix several callers of vm_map_find() to use a VMFS_* constant for the findspace argument instead of TRUE and FALSE.
Reviewed by: alc Approved by: re (kib)
|
255219 |
05-Sep-2013 |
pjd |
Change the cap_rights_t type from uint64_t to a structure that we can extend in the future in a backward compatible (API and ABI) way.
The cap_rights_t represents capability rights. We used to use one bit to represent one right, but we are running out of spare bits. Currently the new structure provides place for 114 rights (so 50 more than the previous cap_rights_t), but it is possible to grow the structure to hold at least 285 rights, although we can make it even larger if 285 rights won't be enough.
The structure definition looks like this:
struct cap_rights { uint64_t cr_rights[CAP_RIGHTS_VERSION + 2]; };
The initial CAP_RIGHTS_VERSION is 0.
The top two bits in the first element of the cr_rights[] array contain total number of elements in the array - 2. This means if those two bits are equal to 0, we have 2 array elements.
The top two bits in all remaining array elements should be 0. The next five bits in all array elements contain array index. Only one bit is used and bit position in this five-bits range defines array index. This means there can be at most five array elements in the future.
To define new right the CAPRIGHT() macro must be used. The macro takes two arguments - an array index and a bit to set, eg.
#define CAP_PDKILL CAPRIGHT(1, 0x0000000000000800ULL)
We still support aliases that combine few rights, but the rights have to belong to the same array element, eg:
#define CAP_LOOKUP CAPRIGHT(0, 0x0000000000000400ULL) #define CAP_FCHMOD CAPRIGHT(0, 0x0000000000002000ULL)
#define CAP_FCHMODAT (CAP_FCHMOD | CAP_LOOKUP)
There is new API to manage the new cap_rights_t structure:
cap_rights_t *cap_rights_init(cap_rights_t *rights, ...); void cap_rights_set(cap_rights_t *rights, ...); void cap_rights_clear(cap_rights_t *rights, ...); bool cap_rights_is_set(const cap_rights_t *rights, ...);
bool cap_rights_is_valid(const cap_rights_t *rights); void cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src); void cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src); bool cap_rights_contains(const cap_rights_t *big, const cap_rights_t *little);
Capability rights to the cap_rights_init(), cap_rights_set(), cap_rights_clear() and cap_rights_is_set() functions are provided by separating them with commas, eg:
cap_rights_t rights;
cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_FSTAT);
There is no need to terminate the list of rights, as those functions are actually macros that take care of the termination, eg:
#define cap_rights_set(rights, ...) \ __cap_rights_set((rights), __VA_ARGS__, 0ULL) void __cap_rights_set(cap_rights_t *rights, ...);
Thanks to using one bit as an array index we can assert in those functions that there are no two rights belonging to different array elements provided together. For example this is illegal and will be detected, because CAP_LOOKUP belongs to element 0 and CAP_PDKILL to element 1:
cap_rights_init(&rights, CAP_LOOKUP | CAP_PDKILL);
Providing several rights that belongs to the same array's element this way is correct, but is not advised. It should only be used for aliases definition.
This commit also breaks compatibility with some existing Capsicum system calls, but I see no other way to do that. This should be fine as Capsicum is still experimental and this change is not going to 9.x.
Sponsored by: The FreeBSD Foundation
|
246085 |
29-Jan-2013 |
jhb |
Reduce duplication between i386/linux/linux.h and amd64/linux32/linux.h by moving bits that are MI out into headers in compat/linux.
Reviewed by: Chagin Dmitry dmitry | gmail MFC after: 2 weeks
|
245849 |
23-Jan-2013 |
jhb |
Don't assume that all Linux TCP-level socket options are identical to FreeBSD TCP-level socket options (only the first two are). Instead, using a mapping function and fail unsupported options as we do for other socket option levels.
MFC after: 2 weeks
|
241394 |
10-Oct-2012 |
kevlo |
Revert previous commit...
Pointyhat to: kevlo (myself)
|
241370 |
09-Oct-2012 |
kevlo |
Prefer NULL over 0 for pointers
|
238918 |
30-Jul-2012 |
jhb |
Regen.
|
238917 |
30-Jul-2012 |
jhb |
The linux_lstat() system call accepts a pointer to a 'struct l_stat', not a 'struct ostat'.
|
235063 |
05-May-2012 |
netchild |
- >500 static DTrace probes for the linuxulator - DTrace scripts to check for errors, performance, ... they serve mostly as examples of what you can do with the static probe;s with moderate load the scripts may be overwhelmed, excessive lock-tracing may influence program behavior (see the last design decission)
Design decissions: - use "linuxulator" as the provider for the native bitsize; add the bitsize for the non-native emulation (e.g. "linuxuator32" on amd64) - Add probes only for locks which are acquired in one function and released in another function. Locks which are aquired and released in the same function should be easy to pair in the code, inter-function locking is more easy to verify in DTrace. - Probes for locks should be fired after locking and before releasing to prevent races (to provide data/function stability in DTrace, see the man-page of "dtrace -v ..." and the corresponding DTrace docs).
|
234360 |
16-Apr-2012 |
jkim |
Regen for r234359.
|
234359 |
16-Apr-2012 |
jkim |
Correct an argument type of iopl syscall for Linuxulator. This also fixes a warning from Clang, i. e., "args->level < 0 is always false".
|
234358 |
16-Apr-2012 |
jkim |
Regen for r234357.
|
234357 |
16-Apr-2012 |
jkim |
Correct arguments of stat64, fstat64 and lstat64 syscalls for Linuxulator.
|
234354 |
16-Apr-2012 |
jkim |
Regen for r234352.
|
234352 |
16-Apr-2012 |
jkim |
- Implement pipe2 syscall for Linuxulator. This syscall appeared in 2.6.27 but GNU libc used it without checking its kernel version, e. g., Fedora 10. - Move pipe(2) implementation for Linuxulator from MD files to MI file, sys/compat/linux/linux_file.c. There is no MD code for this syscall at all. - Correct an argument type for pipe() from l_ulong * to l_int *. Probably this was the source of MI/MD confusion.
Reviewed by: emulation
|
232800 |
10-Mar-2012 |
netchild |
regen
|
232799 |
10-Mar-2012 |
netchild |
- add comments to syscalls.master and linux(32)_dummy about which linux kernel version introduced the sysctl (based upon a linux man-page) - add comments to sscalls.master regarding some names of sysctls which are different than the linux-names (based upon the linux unistd.h) - add some dummy sysctls - name an unimplemented sysctl
MFC after: 1 month
|
232143 |
25-Feb-2012 |
kib |
Do not write to the user address directly, use suword().
Reported by: Bengt Ahlgren <bengta sics se> MFC after: 1 week
|
231885 |
17-Feb-2012 |
kib |
Fix misuse of the kernel map in miscellaneous image activators. Vnode-backed mappings cannot be put into the kernel map, since it is a system map.
Use exec_map for transient mappings, and remove the mappings with kmem_free_wakeup() to notify the waiters on available map space.
Do not map the whole executable into KVA at all to copy it out into usermode. Directly use vn_rdwr() for the case of not page aligned binary.
There is one place left where the potentially unbounded amount of data is mapped into exec_map, namely, in the COFF image activator enumeration of the needed shared libraries.
Reviewed by: alc MFC after: 2 weeks
|
230132 |
15-Jan-2012 |
uqs |
Convert files to UTF-8
|
228958 |
29-Dec-2011 |
jhb |
Regen.
|
228957 |
29-Dec-2011 |
jhb |
Implement linux_fadvise64() and linux_fadvise64_64() using kern_posix_fadvise().
Reviewed by: silence on emulation@ MFC after: 2 weeks
|
227776 |
21-Nov-2011 |
lstewart |
- Add the ffclock_getcounter(), ffclock_getestimate() and ffclock_setestimate() system calls to provide feed-forward clock management capabilities to userspace processes. ffclock_getcounter() returns the current value of the kernel's feed-forward clock counter. ffclock_getestimate() returns the current feed-forward clock parameter estimates and ffclock_setestimate() updates the feed-forward clock parameter estimates.
- Document the syscalls in the ffclock.2 man page.
- Regenerate the script-derived syscall related files.
Committed on behalf of Julien Ridoux and Darryl Veitch from the University of Melbourne, Australia, as part of the FreeBSD Foundation funded "Feed-Forward Clock Synchronization Algorithms" project.
For more information, see http://www.synclab.org/radclock/
Submitted by: Julien Ridoux (jridoux at unimelb edu au)
|
227694 |
19-Nov-2011 |
ed |
Regenerate system call tables.
|
227693 |
19-Nov-2011 |
ed |
Make the Linux *at() calls a bit more complete.
Properly support:
- AT_EACCESS for faccessat(), - AT_SYMLINK_FOLLOW for linkat().
|
227692 |
19-Nov-2011 |
ed |
Regenerate system call tables.
|
227691 |
19-Nov-2011 |
ed |
Improve *access*() parameter name consistency.
The current code mixes the use of `flags' and `mode'. This is a bit confusing, since the faccessat() function as a `flag' parameter to store the AT_ flag.
Make this less confusing by using the same name as used in the POSIX specification -- `amode'.
|
227441 |
11-Nov-2011 |
rstone |
Correct the types of the arguments to return probes of the syscall provider. Previously we were erroneously supplying the argument types of the corresponding entry probe.
Reviewed by: rpaulo MFC after: 1 week
|
225618 |
16-Sep-2011 |
kmacy |
Auto-generated code from sys_ prefixing makesyscalls.sh change
Approved by: re(bz)
|
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
|
220373 |
05-Apr-2011 |
trasz |
Add accounting for most of the memory-related resources.
Sponsored by: The FreeBSD Foundation Reviewed by: kib (earlier version)
|
220186 |
31-Mar-2011 |
avg |
Revert r220032:linux compat: add SO_PASSCRED option with basic handling
I have not properly thought through the commit. After r220031 (linux compat: improve and fix sendmsg/recvmsg compatibility) the basic handling for SO_PASSCRED is not sufficient as it breaks recvmsg functionality for SCM_CREDS messages because now we would need to handle sockcred data in addition to cmsgcred. And that is not implemented yet.
Pointyhat to: avg
|
220032 |
26-Mar-2011 |
avg |
linux compat: add SO_PASSCRED option with basic handling
This seems to have been a part of a bigger patch by dchagin that either haven't been committed or committed partially.
Submitted by: dchagin, nox MFC after: 2 weeks
|
220030 |
26-Mar-2011 |
avg |
linux compat: add non-dummy capget and capset system calls, regenerate
And drop dummy definitions for those system calls. This may transiently break the build.
PR: kern/149168 Submitted by: John Wehle <john@feith.com> Reviewed by: netchild MFC after: 2 weeks
|
220028 |
26-Mar-2011 |
avg |
linux compat: add non-dummy capget and capset system calls
PR: kern/149168 Submitted by: John Wehle <john@feith.com> Reviewed by: netchild MFC after: 2 weeks
|
220026 |
26-Mar-2011 |
dchagin |
Export the correct AT_PLATFORM value. Since signal trampolines are copied to the shared page do not need to leave place on the stack for it. Forgotten in the previous commit.
MFC after: 1 Week
|
219609 |
13-Mar-2011 |
dchagin |
Enable shared page use for amd64/linux32 and i386/linux binaries. Move signal trampoline code from the top of the stack to the shared page.
MFC after: 2 Weeks
|
219560 |
12-Mar-2011 |
avg |
add DTrace systrace support for linux32 and freebsd32 on amd64 syscalls
Regenerate system call and systrace support files.
PR: kern/152822 Submitted by: Artem Belevich <fbsdlist@src.cx> Reviewed by: jhb (earlier version) MFC after: 3 weeks
|
219559 |
12-Mar-2011 |
avg |
add DTrace systrace support for linux32 and freebsd32 on amd64 syscalls
This commits makes necessary changes in syscall/sysent generation infrastructure.
PR: kern/152822 Submitted by: Artem Belevich <fbsdlist@src.cx> Reviewed by: jhb (ealier version) MFC after: 3 weeks
|
219405 |
08-Mar-2011 |
dchagin |
Extend struct sysvec with new method sv_schedtail, which is used for an explicit process at fork trampoline path instead of eventhadler(schedtail) invocation for each child process.
Remove eventhandler(schedtail) code and change linux ABI to use newly added sysvec method.
While here replace explicit comparing of module sysentvec structure with the newly created process sysentvec to detect the linux ABI.
Discussed with: kib
MFC after: 2 Week
|
218720 |
15-Feb-2011 |
dchagin |
For realtime signals fill the sigval value.
|
218658 |
13-Feb-2011 |
dchagin |
Sort include files in the alphabetical order.
|
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.
|
218611 |
12-Feb-2011 |
dchagin |
Regen for r218610.
|
218610 |
12-Feb-2011 |
dchagin |
The fourth argument of linux_clone is a pointer to the TLS. Change clone syscall definition to match actual linux one.
|
218493 |
09-Feb-2011 |
alc |
Setting VV_TEXT here is redundant. It is already set by do_execve().
Reviewed by: kib
|
218103 |
30-Jan-2011 |
dchagin |
Regen for r218101.
MFC after: 1 Month.
|
218101 |
30-Jan-2011 |
dchagin |
Change linux futex syscall definition to match actual linux one.
MFC after: 1 Month.
|
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
|
213716 |
12-Oct-2010 |
kib |
Add macro DECLARE_MODULE_TIED to denote a module as requiring the kernel of exactly the same __FreeBSD_version as the headers module was compiled against.
Mark our in-tree ABI emulators with DECLARE_MODULE_TIED. The modules use kernel interfaces that the Release Engineering Team feel are not stable enough to guarantee they will not change during the life cycle of a STABLE branch. In particular, the layout of struct sysentvec is declared to be not part of the STABLE KBI.
Discussed with: bz, rwatson Approved by: re (bz, kensmith) MFC after: 2 weeks
|
210555 |
28-Jul-2010 |
alc |
The interpreter name should no longer be treated as a buffer that can be overwritten. (This change should have been included in r210545.)
Submitted by: kib
|
209581 |
28-Jun-2010 |
kib |
Regenerate
|
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
|
208833 |
05-Jun-2010 |
kib |
Introduce the x86 kernel interfaces to allow kernel code to use FPU/SSE hardware. Caller should provide a save area that is chained into the stack of the areas; pcb save_area for usermode FPU state is on top. The pcb now contains a pointer to the current FPU saved area, used during FPUDNA handling and context switches. There is also a facility to allow the kernel thread to use pcb save_area.
Change the dreaded warnings "npxdna in kernel mode!" into the panics when FPU usage is not registered.
KPI discussed with: fabient Tested by: pho, fabient Hardware provided by: Sentex Communications MFC after: 1 month
|
208453 |
23-May-2010 |
kib |
Reorganize syscall entry and leave handling.
Extend struct sysvec with three new elements: sv_fetch_syscall_args - the method to fetch syscall arguments from usermode into struct syscall_args. The structure is machine-depended (this might be reconsidered after all architectures are converted). sv_set_syscall_retval - the method to set a return value for usermode from the syscall. It is a generalization of cpu_set_syscall_retval(9) to allow ABIs to override the way to set a return value. sv_syscallnames - the table of syscall names.
Use sv_set_syscall_retval in kern_sigsuspend() instead of hardcoding the call to cpu_set_syscall_retval().
The new functions syscallenter(9) and syscallret(9) are provided that use sv_*syscall* pointers and contain the common repeated code from the syscall() implementations for the architecture-specific syscall trap handlers.
Syscallenter() fetches arguments, calls syscall implementation from ABI sysent table, and set up return frame. The end of syscall bookkeeping is done by syscallret().
Take advantage of single place for MI syscall handling code and implement ptrace_lwpinfo pl_flags PL_FLAG_SCE, PL_FLAG_SCX and PL_FLAG_EXEC. The SCE and SCX flags notify the debugger that the thread is stopped at syscall entry or return point respectively. The EXEC flag augments SCX and notifies debugger that the process address space was changed by one of exec(2)-family syscalls.
The i386, amd64, sparc64, sun4v, powerpc and ia64 syscall()s are changed to use syscallenter()/syscallret(). MIPS and arm are not converted and use the mostly unchanged syscall() implementation.
Reviewed by: jhb, marcel, marius, nwhitehorn, stas Tested by: marcel (ia64), marius (sparc64), nwhitehorn (powerpc), stas (mips) MFC after: 1 month
|
205792 |
28-Mar-2010 |
ed |
Rename st_*timespec fields to st_*tim for POSIX 2008 compliance.
A nice thing about POSIX 2008 is that it finally standardizes a way to obtain file access/modification/change times in sub-second precision, namely using struct timespec, which we already have for a very long time. Unfortunately POSIX uses different names.
This commit adds compatibility macros, so existing code should still build properly. Also change all source code in the kernel to work without any of the compatibility macros. This makes it all a less ambiguous.
I am also renaming st_birthtime to st_birthtim, even though it was a local extension anyway. It seems Cygwin also has a st_birthtim.
|
205642 |
25-Mar-2010 |
nwhitehorn |
Change the arguments of exec_setregs() so that it receives a pointer to the image_params struct instead of several members of that struct individually. This makes it easier to expand its arguments in the future without touching all platforms.
Reviewed by: jhb
|
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
|
198507 |
27-Oct-2009 |
kib |
In r197963, a race with thread being selected for signal delivery while in kernel mode, and later changing signal mask to block the signal, was fixed for sigprocmask(2) and ptread_exit(3). The same race exists for sigreturn(2), setcontext(2) and swapcontext(2) syscalls.
Use kern_sigprocmask() instead of direct manipulation of td_sigmask to reschedule newly blocked signals, closing the race.
Reviewed by: davidxu Tested by: pho MFC after: 1 month
|
197064 |
10-Sep-2009 |
des |
As jhb@ pointed out to me, r197057 was incorrect, not least because these are generated files.
|
196512 |
24-Aug-2009 |
bz |
Fix handling of .note.ABI-tag section for GNU systems [1]. Handle GNU/Linux according to LSB Core Specification 4.0, Chapter 11. Object Format, 11.8. ABI note tag.
Also check the first word of desc, not only name, according to glibc abi-tags specification to distinguish between Linux and kFreeBSD.
Add explicit handling for Debian GNU/kFreeBSD, which runs on our kernels as well [2].
In {amd64,i386}/trap.c, when checking osrel of the current process, also check the ABI to not change the signal behaviour for Linux binary processes, now that we save an osrel version for all three from the lists above in struct proc [2].
These changes make it possible to run FreeBSD, Debian GNU/kFreeBSD and Linux binaries on the same machine again for at least i386 and amd64, and no longer break kFreeBSD which was detected as GNU(/Linux).
PR: kern/135468 Submitted by: dchagin [1] (initial patch) Suggested by: kib [2] Tested by: Petr Salinger (Petr.Salinger seznam.cz) for kFreeBSD Reviewed by: kib MFC after: 3 days
|
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)
|
193264 |
01-Jun-2009 |
dchagin |
Implement accept4 syscall.
Approved by: kib (mentor) MFC after: 1 month
|
193235 |
01-Jun-2009 |
rwatson |
Regenerate generated syscall files following changes to struct sysent in r193234.
|
192206 |
16-May-2009 |
dchagin |
Somewhere between 2.6.23 and 2.6.27, Linux added SOCK_CLOEXEC and SOCK_NONBLOCK flags, that allow to save fcntl() calls.
Implement a variation of the socket() syscall which takes a flags in addition to the type argument.
Approved by: kib (mentor) MFC after: 1 month
|
191973 |
10-May-2009 |
dchagin |
Do not export AT_CLKTCK when emulating Linux kernel prior to 2.4.0, as it has appeared in the 2.4.0-rc7 first time. Being exported, AT_CLKTCK is returned by sysconf(_SC_CLK_TCK), glibc falls back to the hard-coded CLK_TCK value when aux entry is not present.
Glibc versions prior to 2.2.1 always use hard-coded CLK_TCK value.
For older applications/libc's which depends on hard-coded CLK_TCK value user should set compat.linux.osrelease less than 2.4.0.
Approved by: kib (mentor)
|
191966 |
10-May-2009 |
dchagin |
Rework r189362, r191883. The frequency of the statistics clock is given by stathz. Use stathz if it is available, otherwise use hz.
Pointed out by: bde
Approved by: kib (mentor)
|
191896 |
07-May-2009 |
jamie |
Move the per-prison Linux MIB from a private one-off pointer to the new OSD-based jail extensions. This allows the Linux MIB to accessed via jail_set and jail_get, and serves as a demonstration of adding jail support to a module.
Reviewed by: dchagin, kib Approved by: bz (mentor)
|
191876 |
07-May-2009 |
dchagin |
To avoid excessive code duplication move MI definitions to the MI header file. As it is defined in Linux.
Approved by: kib (mentor) MFC after: 1 month
|
191741 |
02-May-2009 |
dchagin |
Move extern variable definitions to the header file.
Approved by: kib (mentor) MFC after: 1 month
|
191719 |
01-May-2009 |
dchagin |
Reimplement futexes. Old implemention used Giant to protect the kernel data structures, but at the same time called malloc(M_WAITOK), that could cause the calling thread to sleep and lost Giant protection. User-visible result was the missed wakeup.
New implementation uses one sx lock per futex. The sx protects the futex structures and allows to sleep while copyin or copyout are performed.
Unlike linux, we return EINVAL when FUTEX_CMP_REQUEUE operation is requested and either caller specified futexes are equial or second futex already exists. This is acceptable since the situation can only occur from the application error, and glibc falls back to old FUTEX_WAKE operation when FUTEX_CMP_REQUEUE returns an error.
Approved by: kib (mentor) MFC after: 1 month
|
190708 |
05-Apr-2009 |
dchagin |
Fix KBI breakage by r190520 which affects older linux.ko binaries:
1) Move the new field (brand_note) to the end of the Brandinfo structure. 2) Add a new flag BI_BRAND_NOTE that indicates that the brand_note pointer is valid. 3) Use the brand_note field if the flag BI_BRAND_NOTE is set and as old modules won't have the flag set, so the new field brand_note would be ignored.
Suggested by: jhb Reviewed by: jhb Approved by: kib (mentor) MFC after: 6 days
|
189771 |
13-Mar-2009 |
dchagin |
Implement new way of branding ELF binaries by looking to a ".note.ABI-tag" section.
The search order of a brand is changed, now first of all the ".note.ABI-tag" is looked through.
Move code which fetch osreldate for ELF binary to check_note() handler.
PR: 118473 Approved by: kib (mentor)
|
189423 |
05-Mar-2009 |
jhb |
A better fix for handling different FPU initial control words for different ABIs: - Store the FPU initial control word in the pcb for each thread. - When first using the FPU, load the initial control word after restoring the clean state if it is not the standard control word. - Provide a correct control word for Linux/i386 binaries under FreeBSD/amd64. - Adjust the control word returned for fpugetregs()/npxgetregs() when a thread hasn't used the FPU yet to reflect the real initial control word for the current ABI. - The Linux/i386 ABI for FreeBSD/i386 now properly sets the right control word instead of trashing whatever the current state of the FPU is.
Reviewed by: bde
|
189362 |
04-Mar-2009 |
dchagin |
Add AT_PLATFORM, AT_HWCAP and AT_CLKTCK auxiliary vector entries which are used by glibc. This silents the message "2.4+ kernel w/o ELF notes?" from some programs at start, among them are top and pkill.
Do the assignment of the vector entries in elf_linux_fixup() as it is done in glibc.
Fix some minor style issues.
Submitted by: Marcin Cieslak <saper at SYSTEM PL> Approved by: kib (mentor) MFC after: 1 week
|
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
|
187948 |
31-Jan-2009 |
obrien |
Change some movl's to mov's. Newer GAS no longer accept 'movl' instructions for moving between a segment register and a 32-bit memory location.
Looked at by: jhb
|
186211 |
17-Dec-2008 |
imp |
Remove obsolete AT_DEBUG stuff. It never should have been committed in the first place, let alone migrated to linux emulation.
Reviewed by: peter, rdivacky
|
185442 |
29-Nov-2008 |
kib |
Make linux_sendmsg() and linux_recvmsg() work on linux32/amd64. Change types used in the linux' struct msghdr and struct cmsghdr definitions to the properly-sized architecture-specific types. Move ancillary data handler from linux_sendit() to linux_sendmsg().
Submitted by: dchagin
|
185169 |
22-Nov-2008 |
kib |
Add sv_flags field to struct sysentvec with intention to provide description of the ABI of the currently executing image. Change some places to test the flags instead of explicit comparing with address of known sysentvec structures to determine ABI features.
Discussed with: dchagin, imp, jhb, peter
|
185002 |
16-Nov-2008 |
kib |
In the robust futexes list head, futex_offset shall be signed, and glibc actually supplies negative offsets. Change l_ulong to l_long.
Submitted by: dchagin
|
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
|
184790 |
09-Nov-2008 |
ed |
Regenerate system call tables for r184789.
|
184789 |
09-Nov-2008 |
ed |
Mark uname(), getdomainname() and setdomainname() with COMPAT_FREEBSD4.
Looking at our source code history, it seems the uname(), getdomainname() and setdomainname() system calls got deprecated somewhere after FreeBSD 1.1, but they have never been phased out properly. Because we don't have a COMPAT_FREEBSD1, just use COMPAT_FREEBSD4.
Also fix the Linuxolator to build without the setdomainname() routine by just making it call userland_sysctl on kern.domainname. Also replace the setdomainname()'s implementation to use this approach, because we're duplicating code with sysctl_domainname().
I wasn't able to keep these three routines working in our COMPAT_FREEBSD32, because that would require yet another keyword for syscalls.master (COMPAT4+NOPROTO). Because this routine is probably unused already, this won't be a problem in practice. If it turns out to be a problem, we'll just restore this functionality.
Reviewed by: rdivacky, kib
|
184058 |
19-Oct-2008 |
kib |
Correctly fill siginfo for the signals delivered by linux tkill/tgkill. It is required for async cancellation to work.
Fix PROC_LOCK leak in linux_tgkill when signal delivery attempt is made to not linux process.
Do not call em_find(p, ...) with p unlocked.
Move common code for linux_tkill() and linux_tgkill() into linux_do_tkill().
Change linux siginfo_t definition to match actual linux one. Extend uid fields to 4 bytes from 2. The extension does not change structure layout and is binary compatible with previous definition, because i386 is little endian, and each uid field has 2 byte padding after it.
Reported by: Nicolas Joly <njoly pasteur fr> Submitted by: dchangin MFC after: 1 month
|
183871 |
14-Oct-2008 |
kib |
Make robust futexes work on linux32/amd64. Use PTRIN to read user-mode pointers. Change types used in the structures definitions to properly-sized architecture-specific types.
Submitted by: dchagin MFC after: 1 week
|
183322 |
24-Sep-2008 |
kib |
Change the static struct sysentvec and struct Elf_Brandinfo initializers to the C99 style. At least, it is easier to read sysent definitions that way, and search for the actual instances of sigcode etc.
Explicitely initialize sysentvec.sv_maxssiz that was missed in most sysvecs.
No objection from: jhb MFC after: 1 month
|
182849 |
07-Sep-2008 |
kib |
Segment registers are stored in the uc_mcontext member of the struct l_ucontext. To restore the registers content, trampoline needs to dereference uc_mcontext instead of taking some undefined values from l_ucontext.
Submitted by: Dmitry Chagin <dchagin@> MFC after: 1 week
|
178977 |
13-May-2008 |
rdivacky |
Regen.
Approved by: kib (mentor)
|
178976 |
13-May-2008 |
rdivacky |
Implement robust futexes. Most of the code is modelled after what Linux does. This is because robust futexes are mostly userspace thing which we cannot alter. Two syscalls maintain pointer to userspace list and when process exits a routine walks this list waking up processes sleeping on futexes from that list.
Reviewed by: kib (mentor) MFC after: 1 month
|
178439 |
23-Apr-2008 |
rdivacky |
Implement linux_truncate64() syscall.
Tested by: Aline de Freitas <aline@riseup.net> Approved by: kib (mentor)
|
178258 |
16-Apr-2008 |
jkim |
Regenerate.
|
178257 |
16-Apr-2008 |
jkim |
Add stubs for syscalls introduced in Linux 2.6.17 kernel. Some GNU libc version started using them before 2.6.17 was officially out.
MFC after: 3 days
|
177999 |
08-Apr-2008 |
kib |
Regenerate
|
177997 |
08-Apr-2008 |
kib |
Implement the linux syscalls openat, mkdirat, mknodat, fchownat, futimesat, fstatat, unlinkat, renameat, linkat, symlinkat, readlinkat, fchmodat, faccessat.
Submitted by: rdivacky Sponsored by: Google Summer of Code 2007 Tested by: pho
|
177785 |
31-Mar-2008 |
kib |
Add the support for the AT_FDCWD and fd-relative name lookups to the namei(9).
Based on the submission by rdivacky, sponsored by Google Summer of Code 2007 Reviewed by: rwatson, rdivacky Tested by: pho
|
177258 |
16-Mar-2008 |
rdivacky |
Regen.
|
177257 |
16-Mar-2008 |
rdivacky |
Implement sched_setaffinity and get_setaffinity using real cpu affinity setting primitives.
Reviewed by: jeff Approved by: kib (mentor)
|
177145 |
13-Mar-2008 |
kib |
Since version 4.3, gcc changed its behaviour concerning the i386/amd64 ABI and the direction flag, that is it now assumes that the direction flag is cleared at the entry of a function and it doesn't clear once more if needed. This new behaviour conforms to the i386/amd64 ABI.
Modify the signal handler frame setup code to clear the DF {e,r}flags bit on the amd64/i386 for the signal handlers.
jhb@ noted that it might break old apps if they assumed DF == 1 would be preserved in the signal handlers, but that such apps should be rare and that older versions of gcc would not generate such apps.
Submitted by: Aurelien Jarno <aurelien aurel32 net> PR: 121422 Reviewed by: jhb MFC after: 2 weeks
|
177091 |
12-Mar-2008 |
jeff |
Remove kernel support for M:N threading.
While the KSE project was quite successful in bringing threading to FreeBSD, the M:N approach taken by the kse library was never developed to its full potential. Backwards compatibility will be provided via libmap.conf for dynamically linked binaries and static binaries will be broken.
|
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
|
175294 |
13-Jan-2008 |
attilio |
VOP_LOCK1() (and so VOP_LOCK()) and VOP_UNLOCK() are only used in conjuction with 'thread' argument passing which is always curthread. Remove the unuseful extra-argument and pass explicitly curthread to lower layer functions, when necessary.
KPI results broken by this change, which should affect several ports, so version bumping and manpage update will be further committed.
Tested by: kris, pho, Diego Sardina <siarodx at gmail dot com>
|
175202 |
10-Jan-2008 |
attilio |
vn_lock() is currently only used with the 'curthread' passed as argument. Remove this argument and pass curthread directly to underlying VOP_LOCK1() VFS method. This modify makes the code cleaner and in particular remove an annoying dependence helping next lockmgr() cleanup. KPI results, obviously, changed.
Manpage and FreeBSD_version will be updated through further commits.
As a side note, would be valuable to say that next commits will address a similar cleanup about VFS methods, in particular vop_lock1 and vop_unlock.
Tested by: Diego Sardina <siarodx at gmail dot com>, Andrea Di Pasquale <whyx dot it at gmail dot com>
|
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
|
173361 |
05-Nov-2007 |
kib |
Fix for the panic("vm_thread_new: kstack allocation failed") and silent NULL pointer dereference in the i386 and sparc64 pmap_pinit() when the kmem_alloc_nofault() failed to allocate address space. Both functions now return error instead of panicing or dereferencing NULL.
As consequence, vmspace_exec() and vmspace_unshare() returns the errno int. struct vmspace arg was added to vm_forkproc() to avoid dealing with failed allocation when most of the fork1() job is already done.
The kernel stack for the thread is now set up in the thread_alloc(), that itself may return NULL. Also, allocation of the first process thread is performed in the fork1() to properly deal with stack allocation failure. proc_linkup() is separated into proc_linkup() called from fork1(), and proc_linkup0(), that is used to set up the kernel process (was known as swapper).
In collaboration with: Peter Holm Reviewed by: jhb
|
172255 |
20-Sep-2007 |
kib |
Fill in cr2 in the signal context from ksi->ksi_addr. Together with the sys/i386/i386/trap.c rev. 1.306 it fixes the PR.
Submitted by: rdivacky Suggested by: jhb Sponsored by: Google Summer of Code 2007 PR: kern/77710 Approved by: re (kensmith)
|
172221 |
18-Sep-2007 |
dwmalone |
regen.
Approved by: re (kensmith)
|
172220 |
18-Sep-2007 |
dwmalone |
The kernel version of Linux statfs64 is actually supposed to take 3 arguments, but we had forgotten the second argument. Also make the Linux statfs64 struct depend on the architecture because it has an extra 4 bytes padding on amd64 compared to i386.
The three argument fix is from David Taylor, the struct statfs64 stuff is my fault. With this patch I can install i386 Linux matlab on an amd64 machine.
Submitted by: David Taylor <davidt_at_yadt.co.uk> Approved by: re (kensmith)
|
172207 |
17-Sep-2007 |
jeff |
- Move all of the PS_ flags into either p_flag or td_flags. - p_sflag was mostly protected by PROC_LOCK rather than the PROC_SLOCK or previously the sched_lock. These bugs have existed for some time. - Allow swapout to try each thread in a process individually and then swapin the whole process if any of these fail. This allows us to move most scheduler related swap flags into td_flags. - Keep ki_sflag for backwards compat but change all in source tools to use the new and more correct location of P_INMEM.
Reported by: pho Reviewed by: attilio, kib Approved by: re (kensmith)
|
171999 |
28-Aug-2007 |
kib |
Regenerate.
Approved by: re (kensmith)
|
171998 |
28-Aug-2007 |
kib |
Implement fake linux sched_getaffinity() syscall to enable java to work with Linux 2.6 emulation. This shall be reimplemented once FreeBSD gets native scheduler affinity syscalls.
Submitted by: rdivacky Reviewed by: jkim Sponsored by: Google Summer of Code 2007 Approved by: re (kensmith)
|
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 |
05-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)
|
169895 |
23-May-2007 |
kib |
Move futex support code from <arch>/support.s into linux compat directory. Implement all futex atomic operations in assembler to not depend on the fuword() that does not allow to distinguish between -1 and failure return. Correctly return 0 from atomic operations on success.
In collaboration with: rdivacky Tested by: Scot Hetzel <swhetzel gmail com>, Milos Vyletel <mvyletel mzm cz> Sponsored by: Google SoC 2007
|
169458 |
11-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.
|
168275 |
02-Apr-2007 |
jkim |
MFP4: Turn emul_lock into a mutex.
Submitted by: rdivacky
|
168014 |
29-Mar-2007 |
julian |
Implement the openat() linux syscall Submitted by: Roman Divacky (rdivacky@) MFC after: 2 weeks
|
167157 |
02-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
|
166728 |
15-Feb-2007 |
jkim |
Regen.
|
166727 |
15-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.
|
166398 |
01-Feb-2007 |
kib |
Introduce some more SO_ option equivalents from Linux to FreeBSD.
The msg variable in linux_recvmsg() was not initialized. Copy it from userspace.
Submitted by: rdivacky
|
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
|
165690 |
31-Dec-2006 |
netchild |
regen after addition of linux_utimes and linux_rt_sigtimedwait
|
165689 |
31-Dec-2006 |
netchild |
MFp4 (111746, 108671, 108945, 112352): - add linux utimes syscall [1] - add linux rt_sigtimedwait syscall [2]
Submitted by: "Scot Hetzel" <swhetzel@gmail.com> [1] Submitted by: Bruce Becker <hostmaster@whois.gts.net> [2] PR: 93199 [2]
|
165413 |
20-Dec-2006 |
jkim |
Regen (just to fix 'generated from' line from the previous commit).
|
165410 |
20-Dec-2006 |
jkim |
Add linux_nanosleep() and regen.
|
165408 |
20-Dec-2006 |
jkim |
MFP4: 109655
- Move linux_nanosleep() from src/sys/amd64/linux32/linux32_machdep.c to src/sys/compat/linux/linux_time.c. - Validate timespec ranges before use as Linux kernel does. - Fix l_timespec structure. - Clean up style(9) nits.
|
164184 |
11-Nov-2006 |
trhodes |
Merge posix4/* into normal kernel hierarchy.
Reviewed by: glanced at by jhb Approved by: silence on -arch@ and -standards@
|
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>
|
163761 |
29-Oct-2006 |
netchild |
regen after linux_io_* backout
|
163760 |
29-Oct-2006 |
netchild |
Backout the linux aio stuff. Several problems where identified and the dynamic nature (if no native aio code is available, the linux part returns ENOSYS because of missing requisites) should be solved differently than it is.
All this will be done in P4.
Not included in this commit is a backout of the changes to the native aio code (removing static in some places). Those changes (and some more) will also be needed when the reworked linux aio stuff will reenter the tree.
Requested by: rwatson Discussed with: rwatson
|
163736 |
28-Oct-2006 |
netchild |
regen (prctl addition)
|
163734 |
28-Oct-2006 |
netchild |
MFP4: Implement prctl().
Submitted by: rdivacky Tested with: LTP
|
163536 |
20-Oct-2006 |
netchild |
Fix a recent regression regarding valid signals.
Submitted by: rdivacky
|
163380 |
15-Oct-2006 |
netchild |
regen (linux AIO stuff)
|
163379 |
15-Oct-2006 |
netchild |
MFP4 (with some minor changes):
Implement the linux_io_* syscalls (AIO). They are only enabled if the native AIO code is available (either compiled in to the kernel or as a module) at the time the functions are used. If the AIO stuff is not available there will be a ENOSYS.
From the submitter: ---snip--- DESIGN NOTES:
1. Linux permits a process to own multiple AIO queues (distinguished by "context"), but FreeBSD creates only one single AIO queue per process. My code maintains a request queue (STAILQ of queue(3)) per "context", and throws all AIO requests of all contexts owned by a process into the single FreeBSD per-process AIO queue.
When the process calls io_destroy(2), io_getevents(2), io_submit(2) and io_cancel(2), my code can pick out requests owned by the specified context from the single FreeBSD per-process AIO queue according to the per-context request queues maintained by my code.
2. The request queue maintained by my code stores contrast information between Linux IO control blocks (struct linux_iocb) and FreeBSD IO control blocks (struct aiocb). FreeBSD IO control block actually exists in userland memory space, required by FreeBSD native aio_XXXXXX(2).
3. It is quite troubling that the function io_getevents() of libaio-0.3.105 needs to use Linux-specific "struct aio_ring", which is a partial mirror of context in user space. I would rather take the address of context in kernel as the context ID, but the io_getevents() of libaio forces me to take the address of the "ring" in user space as the context ID.
To my surprise, one comment line in the file "io_getevents.c" of libaio-0.3.105 reads:
Ben will hate me for this
REFERENCE:
1. Linux kernel source code: http://www.kernel.org/pub/linux/kernel/v2.6/ (include/linux/aio_abi.h, fs/aio.c)
2. Linux manual pages: http://www.kernel.org/pub/linux/docs/manpages/ (io_setup(2), io_destroy(2), io_getevents(2), io_submit(2), io_cancel(2))
3. Linux Scalability Effort: http://lse.sourceforge.net/io/aio.html The design notes: http://lse.sourceforge.net/io/aionotes.txt
4. The package libaio, both source and binary: http://rpmfind.net/linux/rpm2html/search.php?query=libaio Simple transparent interface to Linux AIO system calls.
5. Libaio-oracle: http://oss.oracle.com/projects/libaio-oracle/ POSIX AIO implementation based on Linux AIO system calls (depending on libaio). ---snip---
Submitted by: Li, Xiao <intron@intron.ac>
|
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
|
162528 |
21-Sep-2006 |
rwatson |
Regenerate.
|
162527 |
21-Sep-2006 |
rwatson |
Use AUE_CREAT instead of AUE_O_CREAT for linux_creat().
Obtained from: TrustedBSD Project
|
162526 |
21-Sep-2006 |
rwatson |
Regenerate.
|
162525 |
21-Sep-2006 |
rwatson |
Use AUE_GETDIRENTRIES instead of AUE_O_GETDENTS and AUE_NULL for a number of directory reading system calls.
Respell a mis-spelled event name.
Clean up white space/line wraps in a couple of places.
Assign event numbers to some new system call entries that have turned up in the list since audit support was added.
Obtained from: TrustedBSD Project
|
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
|
162182 |
09-Sep-2006 |
netchild |
Change futex lock from mutex to sx. Make futex_get atomic (protected by the futex lock).
Sponsored by: Google SoC 2006 Submitted by: rdivacky Suggested by: jhb
|
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)
|
161666 |
27-Aug-2006 |
netchild |
regen
|
161665 |
27-Aug-2006 |
netchild |
Add the linux statfs64 call. This allows Tivoli backup to proceed a little but further on -current (still not successful, but a step into the right direction).
Sponsored by: Google SoC 2006 Submitted by: rdivacky Tested by: Paul Mather <paul@gromit.dlib.vt.edu>
|
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
|
161461 |
19-Aug-2006 |
netchild |
Get rid of some nested includes.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Noticed by: jhb
|
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
|
161330 |
15-Aug-2006 |
jhb |
Regen to propogate <prefix>_AUE_<mumble> changes as well as the earlier systrace changes.
|
161328 |
15-Aug-2006 |
jhb |
- Remove unused sysvec variables from various syscalls.conf. - Send the systrace_args files for all the compat ABIs to /dev/null for now. Right now makesyscalls.sh generates a file with a hardcoded function name, so it wouldn't work for any of the ABIs anyway. Probably the function name should be configurable via a 'systracename' variable and the functions should be stored in a function pointer in the sysvec structure.
|
161311 |
15-Aug-2006 |
netchild |
add autogenerated systrace_args stuff for dtrace
|
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
|
161309 |
15-Aug-2006 |
netchild |
regen
|
161305 |
15-Aug-2006 |
netchild |
Add new syscalls in the linuxolator (only used when the sysctl compat.linux.osrelease is changed to "2.6.16" or similar).
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.
Sponsored by: Google SoC 2006 Submitted by: rdivacky
|
161204 |
10-Aug-2006 |
netchild |
Add some more errno mappings (bsd -> linux) and a comment about the status..
Submitted by: "Intron" <mag@intron.ac>
|
160799 |
28-Jul-2006 |
jhb |
Regen for MPSAFE flag removal.
|
160798 |
28-Jul-2006 |
jhb |
Now that all system calls are MPSAFE, retire the SYF_MPSAFE flag used to mark system calls as being MPSAFE: - Stop conditionally acquiring Giant around system call invocations. - Remove all of the 'M' prefixes from the master system call files. - Remove support for the 'M' prefix from the script that generates the syscall-related files from the master system call files. - Don't explicitly set SYF_MPSAFE when registering nfssvc.
|
160797 |
28-Jul-2006 |
jhb |
Various fixes to comments in the syscall master files including removing cruft from the audit import and adding mention of COMPAT4 to freebsd32.
|
160559 |
21-Jul-2006 |
jhb |
Regen.
|
160555 |
21-Jul-2006 |
jhb |
- Pass the MPSAFE flag to namei() in linux_uselib() and handle conditional Giant VFS locking in that function. - Remove bogus code to handle the case where namei() returns success but a NULL vnode pointer. - Note that this code duplicates exec_check_permissions() and annotate where it differs. - Hold the vnode lock longer to protect the write to set VV_TEXT in v_vflag. - Mark linux_uselib() MPSAFE.
Reviewed by: rwatson
|
160277 |
11-Jul-2006 |
jhb |
Regen.
|
160276 |
11-Jul-2006 |
jhb |
- Add conditional VFS Giant locking to getdents_common() (linux ABIs), ibcs2_getdents(), ibcs2_read(), ogetdirentries(), svr4_sys_getdents(), and svr4_sys_getdents64() similar to that in getdirentries(). - Mark ibcs2_getdents(), ibcs2_read(), linux_getdents(), linux_getdents64(), linux_readdir(), ogetdirentries(), svr4_sys_getdents(), and svr4_sys_getdents64() MPSAFE.
|
160144 |
06-Jul-2006 |
jhb |
Regen.
|
160143 |
06-Jul-2006 |
jhb |
- Protect the list of linux ioctl handlers with an sx lock. - Hold Giant while calling linux ioctl handlers for now as they aren't all known to be MPSAFE yet. - Mark linux_ioctl() MPSAFE.
|
159994 |
27-Jun-2006 |
jhb |
Regen.
|
159991 |
27-Jun-2006 |
jhb |
- Add a kern_semctl() helper function for __semctl(). It accepts a pointer to a copied-in copy of the 'union semun' and a uioseg to indicate which memory space the 'buf' pointer of the union points to. This is then used in linux_semctl() and svr4_sys_semctl() to eliminate use of the stackgap. - Mark linux_ipc() and svr4_sys_semsys() MPSAFE.
|
159983 |
27-Jun-2006 |
jhb |
Regen.
|
159982 |
27-Jun-2006 |
jhb |
- Expand the scope of Giant some in mount(2) to protect the vfsp structure from going away. mount(2) is now MPSAFE. - Expand the scope of Giant some in unmount(2) to protect the mp structure (or rather, to handle concurrent unmount races) from going away. umount(2) is now MPSAFE, as well as linux_umount() and linux_oldumount(). - nmount(2) and linux_mount() were already MPSAFE.
|
159961 |
26-Jun-2006 |
jhb |
Regen.
|
159959 |
26-Jun-2006 |
jhb |
linux_brk() is MPSAFE.
|
159801 |
20-Jun-2006 |
netchild |
regen after change to syscalls.master
|
159799 |
20-Jun-2006 |
netchild |
Switch to using the DUMMY infrastructure instead of UNIMPL for the new syscalls. This way there will be a log message printed to the console (this time for real).
Note: UNIMPL should be used for syscalls we do not implement ever, e.g. syscalls to load linux kernel modules.
Submitted by: rdivacky Sponsored by: Goole SoC 2006 P4 IDs: 99600, 99602
|
159582 |
13-Jun-2006 |
netchild |
regen after MFP4 (soc2006/rdivacky_linuxolator) of syscalls.master
P4-Changes: similar to 98673 and 98675 but regenerated locally Sponsored by: Google SoC 2006 Submitted by: rdivacky
|
159581 |
13-Jun-2006 |
netchild |
MFP4 (soc2006/rdivacky_linuxolator)
Update of syscall.master: o Adding of several new dummy syscalls (268-310) o Synchronization of amd64 syscall.master with i386 one o Auditing added to amd64 syscall.master o Change auditing type for lstat syscall (bugfix). [1]
P4-Changes: 98672, 98674 Noticed by: rwatson [1] Sponsored by: Google SoC 2006 Submitted by: rdivacky
|
158407 |
10-May-2006 |
netchild |
regen (linux rt_sigpending)
|
158406 |
10-May-2006 |
netchild |
Implement rt_sigpending in the linuxolator.
PR: 92671 Submitted by: Markus Niemist"o <markus.niemisto@gmx.net>
|
158311 |
05-May-2006 |
ambrisko |
Enhance the Linux emulation layer to make MegaRAID SAS managements tool happy. Add back in a scheme to emulate old type major/minor numbers via hooks into stat, linprocfs to return major/minors that Linux app's expect. Currently only /dev/null is always registered. Drivers can register via the Linux type shim similar to the ioctl shim but by using linux_device_register_handler/linux_device_unregister_handler functions. The structure is:
struct linux_device_handler { char *bsd_driver_name; char *linux_driver_name; char *bsd_device_name; char *linux_device_name; int linux_major; int linux_minor; int linux_char_device; };
Linprocfs uses this to display the major number of the driver. The soon to be available linsysfs will use it to fill in the driver name. Linux_stat uses it to translate the major/minor into Linux type values.
Note major numbers are dynamically assigned via passing in a -1 for the major number so we don't need to keep track of them.
This is somewhat needed due to us switching to our devfs. MegaCli will not run until I add in the linsysfs and mfi Linux compat changes.
Sponsored by: IronPort Systems
|
156851 |
18-Mar-2006 |
netchild |
regen
|
156850 |
18-Mar-2006 |
netchild |
Fixup some problems in my previous commit (COMPAT_43).
Pointyhat to: netchild
|
156843 |
18-Mar-2006 |
netchild |
regen after COMPAT_43 removal
|
156842 |
18-Mar-2006 |
netchild |
Get rid of the need of COMPAT_43 in the linuxolator.
Submitted by: Divacky Roman <xdivac02@stud.fit.vutbr.cz> Obtained from: DragonFly (some parts)
|
155922 |
22-Feb-2006 |
jhb |
Close some races between procfs/ptrace and exit(2): - Reorder the events in exit(2) slightly so that we trigger the S_EXIT stop event earlier. After we have signalled that, we set P_WEXIT and then wait for any processes with a hold on the vmspace via PHOLD to release it. PHOLD now KASSERT()'s that P_WEXIT is clear when it is invoked, and PRELE now does a wakeup if P_WEXIT is set and p_lock drops to zero. - Change proc_rwmem() to require that the processing read from has its vmspace held via PHOLD by the caller and get rid of all the junk to screw around with the vmspace reference count as we no longer need it. - In ptrace() and pseudofs(), treat a process with P_WEXIT set as if it doesn't exist. - Only do one PHOLD in kern_ptrace() now, and do it earlier so it covers FIX_SSTEP() (since on alpha at least this can end up calling proc_rwmem() to clear an earlier single-step simualted via a breakpoint). We only do one to avoid races. Also, by making the EINVAL error for unknown requests be part of the default: case in the switch, the various switch cases can now just break out to return which removes a _lot_ of duplicated PRELE and proc unlocks, etc. Also, it fixes at least one bug where a LWP ptrace command could return EINVAL with the proc lock still held. - Changed the locking for ptrace_single_step(), ptrace_set_pc(), and ptrace_clear_single_step() to always be called with the proc lock held (it was a mixed bag previously). Alpha and arm have to drop the lock while the mess around with breakpoints, but other archs avoid extra lock release/acquires in ptrace(). I did have to fix a couple of other consumers in kern_kse and a few other places to hold the proc lock and PHOLD.
Tested by: ps (1 mostly, but some bits of 2-4 as well) MFC after: 1 week
|
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.
|
155375 |
06-Feb-2006 |
rwatson |
Regenerate.
|
155374 |
06-Feb-2006 |
rwatson |
Assign audit event identifiers to Linux i386 system calls.
Obtained from: TrustedBSD Project
|
153741 |
26-Dec-2005 |
sobomax |
Remove kern.elf32.can_exec_dyn sysctl. Instead extend Brandinfo structure with flags bitfield and set BI_CAN_EXEC_DYN flag for all brands that usually allow executing elf dynamic binaries (aka shared libraries). When it is requested to execute ET_DYN elf image check if this flag is on after we know the elf brand allowing execution if so.
PR: kern/87615 Submitted by: Marcin Koziej <creep@desk.pl>
|
153448 |
15-Dec-2005 |
jhb |
Remove linux_mib_destroy() (which I actually added in between 5.0 and 5.1) which existed to cleanup the linux_osname mutex. Now that MTX_SYSINIT() has grown a SYSUNINIT to destroy mutexes on unload, the extra destroy here was redundant and resulted in panics in debug kernels.
MFC after: 1 week Reported by: Goran Gajic ggajic at afrodita dot rcub dot bg dot ac dot yu
|
151343 |
14-Oct-2005 |
jhb |
The signal code is now an int rather than a long, so update debug printfs.
|
151316 |
14-Oct-2005 |
davidxu |
1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most changes in MD code are trivial, before this change, trapsignal and sendsig use discrete parameters, now they uses member fields of ksiginfo_t structure. For sendsig, this change allows us to pass POSIX realtime signal value to user code.
2. Remove cpu_thread_siginfo, it is no longer needed because we now always generate ksiginfo_t data and feed it to libpthread.
3. Add p_sigqueue to proc structure to hold shared signals which were blocked by all threads in the proc.
4. Add td_sigqueue to thread structure to hold all signals delivered to thread.
5. i386 and amd64 now return POSIX standard si_code, other arches will be fixed.
6. In this sigqueue implementation, pending signal set is kept as before, an extra siginfo list holds additional siginfo_t data for signals. kernel code uses psignal() still behavior as before, it won't be failed even under memory pressure, only exception is when deleting a signal, we should call sigqueue_delete to remove signal from sigqueue but not SIGDELSET. Current there is no kernel code will deliver a signal with additional data, so kernel should be as stable as before, a ksiginfo can carry more information, for example, allow signal to be delivered but throw away siginfo data if memory is not enough. SIGKILL and SIGSTOP have fast path in sigqueue_add, because they can not be caught or masked. The sigqueue() syscall allows user code to queue a signal to target process, if resource is unavailable, EAGAIN will be returned as specification said. Just before thread exits, signal queue memory will be freed by sigqueue_flush. Current, all signals are allowed to be queued, not only realtime signals.
Earlier patch reviewed by: jhb, deischen Tested on: i386, amd64
|
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
|
148540 |
29-Jul-2005 |
jhb |
Move MODULE_DEPEND() statements for SYSVIPC dependencies to linux_ipc.c so that they aren't duplicated 3 times and are also in the same file as the code that depends on the SYSVIPC modules.
|
147975 |
13-Jul-2005 |
jhb |
Regen.
|
147974 |
13-Jul-2005 |
jhb |
Make a pass through all the compat ABIs sychronizing the MP safe flags with the master syscall table as well as marking several ABI wrapper functions safe.
MFC after: 1 week
|
147741 |
02-Jul-2005 |
delphij |
Remove the CPU_ENABLE_SSE option from the i386 and pc98 architectures, as they are already default for I686_CPU for almost 3 years, and CPU_DISABLE_SSE always disables it. On the other hand, CPU_ENABLE_SSE does not work for I486_CPU and I586_CPU.
This commit has: - Removed the option from conf/options.* - Removed the option and comments from MD NOTES files - Simplified the CPU_ENABLE_SSE ifdef's so they don't deal with CPU_ENABLE_SSE from kernel configuration. (*)
For most users, this commit should be largely no-op. If you used to place CPU_ENABLE_SSE into your kernel configuration for some reason, it is time to remove it.
(*) The ifdef's of CPU_ENABLE_SSE are not removed at this point, since we need to change it to !defined(CPU_DISABLE_SSE) && defined(I686_CPU), not just !defined(CPU_DISABLE_SSE), if we really want to do so.
Discussed on: -arch Approved by: re (scottl)
|
147142 |
08-Jun-2005 |
sobomax |
Regen after addition of linux_getpriority wrapper.
PR: kern/81951 Submitted by: Andriy Gapon <avg@icyb.net.ua> MFC after: 1 week
|
147141 |
08-Jun-2005 |
sobomax |
Properly convert FreeBSD priority values into Linux values in the getpriority(2) syscall.
PR: kern/81951 Submitted by: Andriy Gapon <avg@icyb.net.ua>
|
146807 |
30-May-2005 |
rwatson |
Rebuild generated system call definition files following the addition of the audit event field to the syscalls.master file format.
Submitted by: wsalamon Obtained from: TrustedBSD Project
|
146806 |
30-May-2005 |
rwatson |
Introduce a new field in the syscalls.master file format to hold the audit event identifier associated with each system call, which will be stored by makesyscalls.sh in the sy_auevent field of struct sysent. For now, default the audit identifier on all system calls to AUE_NULL, but in the near future, other BSM event identifiers will be used. The mapping of system calls to event identifiers is many:one due to multiple system calls that map to the same end functionality across compatibility wrappers, ABI wrappers, etc.
Submitted by: wsalamon Obtained from: TrustedBSD Project
|
144987 |
13-Apr-2005 |
mdodd |
Add support for O_NOFOLLOW and O_DIRECT to Linux fcntl() F_GETFL/F_SETFL.
|
144501 |
01-Apr-2005 |
jhb |
- Change the vm_mmap() function to accept an objtype_t parameter specifying the type of object represented by the handle argument. - Allow vm_mmap() to map device memory via cdev objects in addition to vnodes and anonymous memory. Note that mmaping a cdev directly does not currently perform any MAC checks like mapping a vnode does. - Unbreak the DRM getbufs ioctl by having it call vm_mmap() directly on the cdev the ioctl is acting on rather than trying to find a suitable vnode to map from.
Reviewed by: alc, arch@
|
143198 |
07-Mar-2005 |
sobomax |
Regen after addition of linux_nosys handler.
|
143197 |
07-Mar-2005 |
sobomax |
Handle unimplemented syscall by instantly returning ENOSYS instead of sending signal first and only then returning ENOSYS to match what real linux does.
PR: kern/74302 Submitted by: Travis Poppe <tlp@LiquidX.org>
|
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
|
141469 |
07-Feb-2005 |
jhb |
Use linux_emul_convpath() rather than linux_emul_find() as linux_emul_find() is going away.
|
141468 |
07-Feb-2005 |
jhb |
Use the LCONVPATHEXIST() macro rather than it's exact expansion to be consistent.
|
141407 |
06-Feb-2005 |
das |
When running Linux binaries, set up the initial FPU state as Linux would.
PR: 28966
|
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
|
139790 |
06-Jan-2005 |
imp |
/* -> /*- for copyright notices, minor format tweaks as necessary
|
138126 |
27-Nov-2004 |
das |
Axe the semblance of support for PECOFF and Linux a.out core dumps.
|
137921 |
20-Nov-2004 |
das |
Maintain the broken state of backwards compatibilty for a.out (and PECOFF!) core dumps. None of the old versions of gdb I tried were able to read a.out core dumps before or after this change.
Reviewed by: arch@
|
136003 |
01-Oct-2004 |
das |
Fix the following race:
1. Process p1 is currently being swapped in. 2. Process p2 calls linux_ptrace(PTRACE_GETFPXREGS, p1_pid, ...) 3. After acquiring a reference to FIRST_THREAD_IN_PROC(p1), p2 blocks in faultin() while p1 finishes being swapped in. This means p2 won't get back the lock on p1 until after p1's threads are runnable. 4. After p1 is swapped in, the first thread in p1 exits. 5. p2 now uses its dangling reference to p1's first thread.
|
134839 |
06-Sep-2004 |
dfr |
Regen.
|
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
|
134267 |
24-Aug-2004 |
jhb |
Regenerate after fcntl() wrappers were marked MP safe.
|
134266 |
24-Aug-2004 |
jhb |
Fix the ABI wrappers to use kern_fcntl() rather than calling fcntl() directly. This removes a few more users of the stackgap and also marks the syscalls using these wrappers MP safe where appropriate.
Tested on: i386 with linux acroread5 Compiled on: i386, alpha LINT
|
133815 |
16-Aug-2004 |
tjr |
Add a new type, l_uintptr_t, which is an unsigned integer type with the same width as a pointer under Linux. Add two new macros, PTRIN and PTROUT, which convert between l_uintptr_t and native pointers.
|
132199 |
15-Jul-2004 |
phk |
Do a pass over all modules in the kernel and make them return EOPNOTSUPP for unknown events.
A number of modules return EINVAL in this instance, and I have left those alone for now and instead taught MOD_QUIESCE to accept this as "didn't do anything".
|
131575 |
04-Jul-2004 |
stefanf |
Consistently use __inline instead of __inline__ as the former is an empty macro in <sys/cdefs.h> for compilers without support for inline.
|
131014 |
24-Jun-2004 |
obrien |
Add casts so all these quantities are a constant type.
|
130101 |
05-Jun-2004 |
tjr |
Change the types of vn_rdwr_inchunks()'s len and aresid arguments to size_t and size_t *, respectively. Update callers for the new interface. This is a better fix for overflows that occurred when dumping segments larger than 2GB to core files.
|
127532 |
28-Mar-2004 |
bms |
Use the BSD madvise() syscall implementation for Linux binary emulation, instead of treating it as an unimplemented syscall. This appears to make StarOffice 7.0 Linux binaries work according to submitter; also tested with nvidia driver by submitter.
Submitted by: Matthias Schuendehuette
|
127042 |
15-Mar-2004 |
jhb |
Regenerate.
|
127041 |
15-Mar-2004 |
jhb |
- Mark ABI syscalls that call wait4() MP safe as recent changes to the kernel wait4() made these all panic() implementations otherwise. - The i386 linux_ptrace() syscall is MP safe. Alpha was already marked MP safe.
|
125457 |
04-Feb-2004 |
jhb |
Regen.
|
125455 |
04-Feb-2004 |
jhb |
The following compat syscalls are now mpsafe: linux_getrlimit(), linux_setrlimit(), linux_old_getrlimit(), osf1_getrlimit(), osf1_setrlimit(), svr4_sys_ulimit(), svr4_sys_setrlimit(), svr4_sys_getrlimit(), svr4_sys_setrlimit64(), svr4_sys_getrlimit64(), ibcs2_sysconf(), and ibcs2_ulimit().
|
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
|
124113 |
03-Jan-2004 |
davidxu |
Make sigaltstack as per-threaded, because per-process sigaltstack state is useless for threaded programs, multiple threads can not share same stack. The alternative signal stack is private for thread, no lock is needed, the orignal P_ALTSTACK is now moved into td_pflags and renamed to TDP_ALTSTACK. For single thread or Linux clone() based threaded program, there is no semantic changed, because those programs only have one kernel thread in every process.
|
124092 |
03-Jan-2004 |
davidxu |
Make sigaltstack as per-threaded, because per-process sigaltstack state is useless for threaded programs, multiple threads can not share same stack. The alternative signal stack is private for thread, no lock is needed, the orignal P_ALTSTACK is now moved into td_pflags and renamed to TDP_ALTSTACK. For single thread or Linux clone() based threaded program, there is no semantic changed, because those programs only have one kernel thread in every process.
Reviewed by: deischen, dfr
|
123956 |
29-Dec-2003 |
bde |
Sorted includes. Removed duplicates exposed by this.
|
123790 |
24-Dec-2003 |
peter |
GC unused 'syshide' override to /dev/null. This was here to disable the output of the namespc column. Its functionality was removed some time ago, but the overrides and the namespc column remained.
|
123754 |
23-Dec-2003 |
peter |
Regen (should be a NOP except for rcsid changes)
|
123753 |
23-Dec-2003 |
peter |
GC unused third namespace column.
|
123742 |
23-Dec-2003 |
peter |
Add an additional field to the elf brandinfo structure to support quicker exec-time replacement of the elf interpreter on an emulation environment where an entire /compat/* tree isn't really warranted.
|
122802 |
16-Nov-2003 |
sobomax |
Pull latest changes from OpenBSD:
- improve sysinfo(2) syscall; - add dummy fadvise64(2) syscall; - add dummy *xattr(2) family of syscalls; - add protos for the syscalls 222-225, 238-249 and 253-267; - add exit_group(2) syscall, which is currently just wired to exit(2).
Obtained from: OpenBSD MFC after: 2 weeks
|
122256 |
07-Nov-2003 |
jhb |
Regen.
|
122255 |
07-Nov-2003 |
jhb |
Sync up MP safe flags with global syscalls.master for the first time. This includes read(), write(), close(), linux_setuid16(), linux_getuid16(), linux_pause(), linux_nice(), linux_kill(), dup(), linux_pipe(), linux_setgid16(), linux_getgid16(), linux_signal(), linux_geteuid16(), linux_getegid16(), acct(), setpgid(), umask(), dup2(), getppid(), getpgrp(), setsid(), linux_sigaction(), linux_sgetmask(), linux_ssetmask(), linux_setreuid16(), linux_setregid16(), linux_sigsuspend(), getrusage(), gettimeofday(), linux_getgroups16(), linux_setgroups16(), getpriority(), setpriority(), linux_sigreturn(), linux_clone(), linux_sigprocmask(), linux_getsid(), mlock(), munlock(), mlockall(), munlockall(), sched_setparam(), sched_getparam(), linux_sched_setscheduler(), linux_sched_getscheduler(), linux_sched_get_priority_max(), linux_sched_get_priority_min(), sched_rr_get_interval(), linux_setresuid16(), linux_getresuid16(), linux_setresgid16(), linux_getresgid16(), linux_rt_sigaction(), linux_rt_sigprocmask(), linux_rt_sigsuspend(), geteuid(), getegid(), setreuid(), setregid(), linux_getgroups(), linux_setgroups(), setresuid(), getresuid(), setresgid(), getresgid(), setuid(), and setgid().
|
120422 |
25-Sep-2003 |
peter |
Add sysentvec->sv_fixlimits() hook so that we can catch cases on 64 bit systems where the data/stack/etc limits are too big for a 32 bit process.
Move the 5 or so identical instances of ELF_RTLD_ADDR() into imgact_elf.c.
Supply an ia32_fixlimits function. Export the clip/default values to sysctl under the compat.ia32 heirarchy.
Have mmap(0, ...) respect the current p->p_limits[RLIMIT_DATA].rlim_max value rather than the sysctl tweakable variable. This allows mmap to place mappings at sensible locations when limits have been reduced.
Have the imgact_elf.c ld-elf.so.1 placement algorithm use the same method as mmap(0, ...) now does.
Note that we cannot remove all references to the sysctl tweakable maxdsiz etc variables because /etc/login.conf specifies a datasize of 'unlimited'. And that causes exec etc to fail since it can no longer find space to mmap things.
|
119842 |
07-Sep-2003 |
bde |
Restored non-egregious casts so that this file compiles on i386's with 64-bit longs again.
|
116361 |
15-Jun-2003 |
davidxu |
Rename P_THREADED to P_SA. P_SA means a process is using scheduler activations.
|
115705 |
02-Jun-2003 |
obrien |
Use __FBSDID().
|
114983 |
13-May-2003 |
jhb |
- Merge struct procsig with struct sigacts. - Move struct sigacts out of the u-area and malloc() it using the M_SUBPROC malloc bucket. - Add a small sigacts_*() API for managing sigacts structures: sigacts_alloc(), sigacts_free(), sigacts_copy(), sigacts_share(), and sigacts_shared(). - Remove the p_sigignore, p_sigacts, and p_sigcatch macros. - Add a mutex to struct sigacts that protects all the members of the struct. - Add sigacts locking. - Remove Giant from nosys(), kill(), killpg(), and kern_sigaction() now that sigacts is locked. - Several in-kernel functions such as psignal(), tdsignal(), trapsignal(), and thread_stopped() are now MP safe.
Reviewed by: arch@ Approved by: re (rwatson)
|
114915 |
11-May-2003 |
mdodd |
Provide exec_linux_setregs() to override exec_setregs(). Linux initializes %gs to 0. Mimic this behavior.
Submitted by: Christian Zander <zander@minion.de> Reviewed by: jake Approved by: re
|
113868 |
22-Apr-2003 |
jhb |
Prefer the proc lock to sched_lock when testing PS_INMEM now that it is safe to do so.
|
113689 |
18-Apr-2003 |
jhb |
Synchronize the two linux_clone() implementations which includes a few minor cleanups in both.
|
113622 |
17-Apr-2003 |
jhb |
Don't drop the proc lock just to reacquire it after a few simple assignment statements. Just hold the lock the entire time.
|
113517 |
15-Apr-2003 |
jhb |
Sync up with changes to ptrace() and use P_SHOULDSTOP instead of a duplicate P_TRACED check.
Submitted by: marcel
|
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.
|
112883 |
31-Mar-2003 |
jeff |
- Change trapsignal() to accept a thread and not a proc. - Change all consumers to pass in a thread.
Right now this does not cause any functional changes but it will be important later when signals can be delivered to specific threads.
|
112716 |
27-Mar-2003 |
jhb |
Add missing includes from previous commit.
Reported by: des
|
112682 |
26-Mar-2003 |
jhb |
Add a cleanup function to destroy the osname_lock and call it on module unload.
Submitted by: gallatin Reported by: Martin Karlsson <mk-freebsd@bredband.net>
|
112630 |
25-Mar-2003 |
mdodd |
Print the return value from mmap() in the DEBUG case.
|
112470 |
21-Mar-2003 |
jhb |
Sync up linux and svr compat elf fixup functions for exec(). These functions are now all basically identical except that alpha linux uses Elf64 arguments and svr4 and i386 linux use Elf32. The fixups include changing the first argument to be a register_t ** to match the prototype for fixup functions, asserting that the process in the image_params struct is always curproc and removing unnecessary locking to read credentials as a result, and a few style fixes.
|
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.
|
111429 |
24-Feb-2003 |
kan |
Correctly map SIGSYS signal to/from Linux.
Submitted by: "Georg-W. Koltermann" <g.w.k@web.de>
|
111175 |
20-Feb-2003 |
tjr |
Regen from syscalls.master 1.50.
|
111174 |
20-Feb-2003 |
tjr |
Mark linux_getpid(), linux_getuid() and linux_getgid() as MPSAFE.
|
111119 |
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
110978 |
16-Feb-2003 |
tjr |
Mark linux_sigpending() as MPSAFE.
|
110977 |
16-Feb-2003 |
tjr |
Regen from syscalls.master 1.49.
|
110295 |
03-Feb-2003 |
ume |
Add IPv6 support for Linuxlator.
Reviewed by: dwmalone MFC after: 10 days
|
109623 |
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
106332 |
02-Nov-2002 |
marcel |
bzero() the sigframe before we fill it. This was not done at all in linux_rt_sendsig() and only done for the fpstate in linux_sendsig().
|
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
|
103886 |
24-Sep-2002 |
mini |
Back out last commit. Linux uses the old 4.3BSD sockaddr format.
|
103839 |
23-Sep-2002 |
mini |
Don't use compatability syscall wrappers in emulation code. This is needed for the COMPAT_FREEBSD3 option split.
Reviewed by: alfred, jake
|
103767 |
21-Sep-2002 |
jake |
Use the fields in the sysentvec and in the vm map header in place of the constants VM_MIN_ADDRESS, VM_MAXUSER_ADDRESS, USRSTACK and PS_STRINGS. This is mainly so that they can be variable even for the native abi, based on different machine types. Get stack protections from the sysentvec too. This makes it trivial to map the stack non-executable for certain abis, on machines that support it.
|
103352 |
15-Sep-2002 |
bde |
Removed unused includes. Sorted includes. This is part of removing includes of <sys/user.h> for its pollution only. <sys/user.h> wasn't even used for its pollution here.
|
103216 |
11-Sep-2002 |
julian |
Completely redo thread states.
Reviewed by: davidxu@freebsd.org
|
103086 |
07-Sep-2002 |
peter |
Tidy up some loose ends that bde pointed out. caddr_t bad, ok? Move fill_kinfo_proc to before we copy the results instead of after the copy and too late.
There is still more to do here.
|
103084 |
07-Sep-2002 |
peter |
The true value of how the kernel was configured for KSTACK_PAGES was not available at module compile time. Do not #include the bogus opt_kstack_pages.h at this point and instead refer to the variables that are also exported via sysctl.
|
103077 |
07-Sep-2002 |
jmallett |
Diff reduction in comments for filling the siginfo structure - refer to filling in the POSIX parts, when doing the same thing in every port of FreeBSD.
|
103073 |
07-Sep-2002 |
bde |
Include <machine/pcb.h> instead of depending on namespace pollution in <sys/user.h>.
|
103064 |
07-Sep-2002 |
peter |
Automatically enable CPU_ENABLE_SSE (detect and enable SSE instructions) if compiling with I686_CPU as a target. CPU_DISABLE_SSE will prevent this from happening and will guarantee the code is not compiled in.
I am still not happy with this, but gcc is now generating code that uses these instructions if you set CPUTYPE to p3/p4 or athlon-4/mp/xp or higher.
|
103061 |
07-Sep-2002 |
peter |
Supposedly linux has added a 6th syscall arg register (%ebp). I am not 100% sure if this is enough, but it will not harm anything.
|
103050 |
07-Sep-2002 |
peter |
Give this a self contained a.out coredump routine. XXX freebsd-aout coredumps for a linux-aout binary is a bit pointless.
|
102964 |
05-Sep-2002 |
bde |
Include <sys/systm.h> for the definition of offsetof() instead of depending on the definition being misplaced in <sys/types.h>. The definition probably belongs in <sys/stddef.h>.
|
102946 |
05-Sep-2002 |
iedowse |
Split up ptrace() into a wrapper that does the copying to and from user space and a kern_ptrace() implementation. Use the kern_*() version in the Linux emulation code to remove more stack gap uses.
Approved by: des
|
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
|
102808 |
01-Sep-2002 |
jake |
Added fields for VM_MIN_ADDRESS, PS_STRINGS and stack protections to sysentvec. Initialized all fields of all sysentvecs, which will allow them to be used instead of constants in more places. Provided stack fixup routines for emulations that previously used the default.
|
101771 |
13-Aug-2002 |
jeff |
- Hold the vnode lock throughout execve. - Set VV_TEXT in the top level execve code. - Fixup the image activators to deal with the newly locked vnode.
|
101308 |
04-Aug-2002 |
jeff |
- Replace v_flag with v_iflag and v_vflag - v_vflag is protected by the vnode lock and is used when synchronization with VOP calls is needed. - v_iflag is protected by interlock and is used for dealing with vnode management issues. These flags include X/O LOCK, FREE, DOOMED, etc. - All accesses to v_iflag and v_vflag have either been locked or marked with mp_fixme's. - Many ASSERT_VOP_LOCKED calls have been added where the locking was not clear. - Many functions in vfs_subr.c were restructured to provide for stronger locking.
Idea stolen from: BSD/OS
|
100384 |
20-Jul-2002 |
peter |
Infrastructure tweaks to allow having both an Elf32 and an Elf64 executable handler in the kernel at the same time. Also, allow for the exec_new_vmspace() code to build a different sized vmspace depending on the executable environment. This is a big help for execing i386 binaries on ia64. The ELF exec code grows the ability to map partial pages when there is a page size difference, eg: emulating 4K pages on 8K or 16K hardware pages.
Flesh out the i386 emulation support for ia64. At this point, the only binary that I know of that fails is cvsup, because the cvsup runtime tries to execute code in pages not marked executable.
Obtained from: dfr (mostly, many tweaks from me).
|
99670 |
09-Jul-2002 |
robert |
Enable emulation of the F_GETLK64, F_SETLK64, and F_SETLKW64 lock commands arguments to linux_fcntl64().
|
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..
|
97748 |
02-Jun-2002 |
schweikh |
Fix typo in the BSD copyright: s/withough/without/
Spotted and suggested by: des MFC after: 3 weeks
|
96955 |
19-May-2002 |
marcel |
o Fix race condition caused by doing ptrace() for permission checking, followed by a lookup of the process. Do not call ptrace() for permission checking, but do it inline. Spotted by: rwatson
o While here, copy-in arguments before we lock. This fixes a possible permanent lock.
Reviewed by: rwatson
|
96890 |
19-May-2002 |
marcel |
Hook up the new linux_ptrace implementation.
PR: 33299 Submitted by: Alexander N. Kabaev <ak03@gte.com>
|
96889 |
19-May-2002 |
marcel |
Regen (linux_ptrace)
PR: 33299
|
96888 |
19-May-2002 |
marcel |
Sparkling new implementation of linux_ptrace. Slight tweaking by yours truly.
PR: 33299 Submitted by: Alexander N. Kabaev <ak03@gte.com>
|
93842 |
05-Apr-2002 |
eric |
Spell "separate" correctly.
|
93793 |
04-Apr-2002 |
bde |
Moved signal handling and rescheduling from userret() to ast() so that they aren't in the usual path of execution for syscalls and traps. The main complication for this is that we have to set flags to control ast() everywhere that changes the signal mask.
Avoid locking in userret() in most of the remaining cases.
Submitted by: luoqi (first part only, long ago, reorganized by me) Reminded by: dillon
|
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@
|
93074 |
24-Mar-2002 |
bde |
Fixed some style bugs in the removal of __P(()). Continuation lines were not outdented to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting.
|
92765 |
20-Mar-2002 |
alfred |
Remove __P.
|
92642 |
19-Mar-2002 |
alc |
Eliminate unnecessary calls to grow_stack() and useracc() from linux_sendsig() and linux_rt_sendsig(). (See i386/i386/machdep.c revisions 1.503 and 1.504.)
|
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,
|
89195 |
10-Jan-2002 |
bde |
Clear the single-step flag for signal handlers. This fixes bogus trace traps on the first instruction of signal handlers.
In trap.c:syscall(), fake a trace trap if the single-step flag was set on entry to the kernel, not if it will be set on exit from the kernel. This fixes bogus trace traps after the last instruction of signal handlers.
gdb-4.18 (the version in FreeBSD) still has problems with the program in the PR. These seem to be due to bugs in gdb and not in FreeBSD, and are fixed in gdb-5.1 (the distribution version).
PR: 33262 Tested by: k Macy <kip_macy@yahoo.com> MFC after: 1 day
|
86647 |
20-Nov-2001 |
pb |
Convert BSD trap codes to i386.
Submitted by: F. Gouget <fgouget@free.fr>
|
85599 |
27-Oct-2001 |
des |
Eliminate the prefix parameter to linux_emul_find(), which was always linux_emul_path anyway. Linux_emul_find() has interesting bugs in its prefix handling (which luckily are not currently exploitable); this commit is preliminary to an attempt at cleaning it up.
Approved by: marcel
|
85022 |
16-Oct-2001 |
marcel |
Implement linux_chown and linux_lchown. The fchown syscall maps directly to the native syscall, because no filename handling needs to be done.
Tested by: Martin Blapp <mb@imp.ch>
|
85021 |
16-Oct-2001 |
marcel |
o Change prototype of linux_lchown and linux_chown so that the argument names match those on Alpha. o Map the fchown directly to FreeBSD. Since the old version of fchown is also mapped to the native fchown, give the new one type NODEF.
Tested by: Martin Blapp <mb@imp.ch>
|
85008 |
15-Oct-2001 |
des |
In FreeBSD's ifreq, ifr_ifru.ifru_flags is an array of two chars, while Linux defines it as a short. Change that to an array of one short so that FreeBSD's ifr_flags macro will work (it evaluates to ifr_ifru.ifru_flags[0]).
|
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.
|
84783 |
10-Oct-2001 |
ps |
Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader tunable.
Reviewed by: peter MFC after: 2 weeks
|
84070 |
28-Sep-2001 |
marcel |
Regen: Stop using linux_getpgid(). Use the native getpgid() instead.
PR: kern/21402
|
84069 |
28-Sep-2001 |
marcel |
Stop using linux_getpgid(). The implementation at this time is broken and fixing it only creates a duplicate of what is already in the FreeBSD kernel. Therefore, map the syscall directly to getpgid().
PR: kern/21402 Submitted by: Christian Weisgerber <naddy@mips.inka.de>
|
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
|
83587 |
17-Sep-2001 |
jhb |
Add a lock assertion to linux_sendsig() to match other sendsig functions.
|
83503 |
15-Sep-2001 |
mr |
Add a wrapper for linux_getsid -> getsid Syscall.
|
83501 |
15-Sep-2001 |
mr |
Implement LINUX_[SEM|IPC]_[STAT|INFO] to make /compat/linux/usr/bin/ipcs -s happy.
PR: kern/29698 (part) Reviewed by: audit
|
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
|
83278 |
10-Sep-2001 |
marcel |
Fix LINT breakage caused by previous commit. The linux_rt_sendsig and linux_sendsig functions guarded their debugging output with ldebug(sigreturn). This has been mistaken for a cut-n-paste bug, and was replaced by ldebug(rt_sendsig) and ldebug(sendsig) resp. Since the sendsig functions are not syscalls, this brokei any build that defines DEBUG.
The fix maps both functions to the unused syscall 0 so that they can be enabled/disabled independently from sigreturn, but not independently from each other.
|
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.
|
83219 |
08-Sep-2001 |
marcel |
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 Remove dummy functions for syscalls that are now truely unimplemented.
o Rename syscalls so they match the names used in the Linux kernel. Also, provide more accurate prototypes. This generally improves cross-referencing and reduces head-scratching.
o Provide seperate implementations for the 16-bit uid_t and gid_t based syscalls as Linux used to have. The new 32-bit uid_t and gid_t based syscalls now map to their FreeBSD equivalents.
o Fix the linux_ipc syscall so that it doesn't force the shm*, sem* and msg* syscalls to have the same syscall. The prototypes for these syscalls now match the those used on Alpha. While here, add the same kludge for MSGRCV as is present in the Linux kernel.
o Implement the following syscalls: linux_stat64, linux_lstat64 and linux_fstat64 linux_sysctl
o Added syscalls numbered 198 - 221. This include: - the 32-bit uid_t and gid_t bases syscalls - 64-bit file offset/size based syscalls
|
83163 |
06-Sep-2001 |
jhb |
Call sendsig() with the proc lock held and return with it held.
|
82753 |
01-Sep-2001 |
dillon |
Synchronize syscalls.master(s) with recent Giant pushdown work
|
82585 |
30-Aug-2001 |
dillon |
Remove the MPSAFE keyword from the parser for syscalls.master. Instead introduce the [M] prefix to existing keywords. e.g. MSTD is the MP SAFE version of STD. This is prepatory for a massive Giant lock pushdown. The old MPSAFE keyword made syscalls.master too messy.
Begin comments MP-Safe procedures with the comment: /* * MPSAFE */ This comments means that the procedure may be called without Giant held (The procedure itself may still need to obtain Giant temporarily to do its thing).
sv_prepsyscall() is now MP SAFE and assumed to be MP SAFE sv_transtrap() is now MP SAFE and assumed to be MP SAFE
ktrsyscall() and ktrsysret() are now MP SAFE (Giant Pushdown) trapsignal() is now MP SAFE (Giant Pushdown)
Places which used to do the if (mtx_owned(&Giant)) mtx_unlock(&Giant) test in syscall[2]() in */*/trap.c now do not. Instead they explicitly unlock Giant if they previously obtained it, and then assert that it is no longer held to catch broken system calls.
Rebuild syscall tables.
|
80180 |
23-Jul-2001 |
pirzyk |
Added the linux_sysinfo function to implement sysinfo(2).
PR: kern/27759 Reviewed by: marcel Approved by: marcel MFC after: 1 week
|
80179 |
23-Jul-2001 |
pirzyk |
Added the proper arguments the sysinfo system call
PR: kern/27759 Reviewed by: marcel Approved by: marcel Obtained from: Linux man page sysinfo(2) MFC after: 1 week
|
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)
|
78161 |
13-Jun-2001 |
peter |
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
|
77183 |
25-May-2001 |
rwatson |
o Merge contents of struct pcred into struct ucred. Specifically, add the real uid, saved uid, real gid, and saved gid to ucred, as well as the pcred->pc_uidinfo, which was associated with the real uid, only rename it to cr_ruidinfo so as not to conflict with cr_uidinfo, which corresponds to the effective uid. o Remove p_cred from struct proc; add p_ucred to struct proc, replacing original macro that pointed. p->p_ucred to p->p_cred->pc_ucred. o Universally update code so that it makes use of ucred instead of pcred, p->p_ucred instead of p->p_pcred, cr_ruidinfo instead of p_uidinfo, cr_{r,sv}{u,g}id instead of p_*, etc. o Remove pcred0 and its initialization from init_main.c; initialize cr_ruidinfo there. o Restruction many credential modification chunks to always crdup while we figure out locking and optimizations; generally speaking, this means moving to a structure like this: newcred = crdup(oldcred); ... p->p_ucred = newcred; crfree(oldcred); It's not race-free, but better than nothing. There are also races in sys_process.c, all inter-process authorization, fork, exec, and exit. o Remove sigio->sio_ruid since sigio->sio_ucred now contains the ruid; remove comments indicating that the old arrangement was a problem. o Restructure exec1() a little to use newcred/oldcred arrangement, and use improved uid management primitives. o Clean up exit1() so as to do less work in credential cleanup due to pcred removal. o Clean up fork1() so as to do less work in credential cleanup and allocation. o Clean up ktrcanset() to take into account changes, and move to using suser_xxx() instead of performing a direct uid==0 comparision. o Improve commenting in various kern_prot.c credential modification calls to better document current behavior. In a couple of places, current behavior is a little questionable and we need to check POSIX.1 to make sure it's "right". More commenting work still remains to be done. o Update credential management calls, such as crfree(), to take into account new ruidinfo reference. o Modify or add the following uid and gid helper routines: change_euid() change_egid() change_ruid() change_rgid() change_svuid() change_svgid() In each case, the call now acts on a credential not a process, and as such no longer requires more complicated process locking/etc. They now assume the caller will do any necessary allocation of an exclusive credential reference. Each is commented to document its reference requirements. o CANSIGIO() is simplified to require only credentials, not processes and pcreds. o Remove lots of (p_pcred==NULL) checks. o Add an XXX to authorization code in nfs_lock.c, since it's questionable, and needs to be considered carefully. o Simplify posix4 authorization code to require only credentials, not processes and pcreds. Note that this authorization, as well as CANSIGIO(), needs to be updated to use the p_cansignal() and p_cansched() centralized authorization routines, as they currently do not take into account some desirable restrictions that are handled by the centralized routines, as well as being inconsistent with other similar authorization instances. o Update libkvm to take these changes into account.
Obtained from: TrustedBSD Project Reviewed by: green, bde, jhb, freebsd-arch, freebsd-audit
|
76827 |
19-May-2001 |
alfred |
Introduce a global lock for the vm subsystem (vm_mtx).
vm_mtx does not recurse and is required for most low level vm operations.
faults can not be taken without holding Giant.
Memory subsystems can now call the base page allocators safely.
Almost all atomic ops were removed as they are covered under the vm mutex.
Alpha and ia64 now need to catch up to i386's trap handlers.
FFS and NFS have been tested, other filesystems will need minor changes (grabbing the vm lock when twiddling page properties).
Reviewed (partially) by: jake, jhb
|
76497 |
12-May-2001 |
deischen |
Preserve the state of the %gs register when setting up the signal handler in Linux emulation. According to bde, this is what Linux does.
Recent versions of linuxthreads use %gs for thread-specific data, while FreeBSD uses %fs (mostly because WINE uses %gs).
Tested by: drew
|
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)
|
75057 |
01-Apr-2001 |
alc |
Regen after adding linux_sched_get_priority_max() and linux_sched_get_priority_min().
|
75053 |
01-Apr-2001 |
alc |
Add linux_sched_get_priority_max() and linux_sched_get_priority_min(): The policy parameter requires translation.
|
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.
|
73929 |
07-Mar-2001 |
jhb |
Grab the process lock while calling psignal and before calling psignal.
|
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
|
73011 |
25-Feb-2001 |
jake |
Remove the leading underscore from all symbols defined in x86 asm and used in C or vice versa. The elf compiler uses the same names for both. Remove asnames.h with great prejudice; it has served its purpose.
Note that this does not affect the ability to generate an aout kernel due to gcc's -mno-underscores option.
moral support from: peter, jhb
|
72999 |
24-Feb-2001 |
obrien |
MFS: bring the consistent `compat_3_brand' support into -CURRENT (the work was first done in the RELENG_4 branch near a release during a MFC to make the code cleaner and more consistent)
|
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)
|
72540 |
16-Feb-2001 |
jlemon |
Re-gen auto generated files.
|
72539 |
16-Feb-2001 |
jlemon |
Remove dummy stub functions.
|
72538 |
16-Feb-2001 |
jlemon |
Add mount syscall to linux emulation. Also improve emulation of reboot.
|
71497 |
24-Jan-2001 |
jhb |
Proc locking.
|
71494 |
24-Jan-2001 |
jhb |
- Proc locking. - Use NULL instead of 0.
|
71039 |
14-Jan-2001 |
des |
The Linuxulator needs sysvipc to work.
|
69932 |
12-Dec-2000 |
des |
Remove after repo-copy to sys/compat/linprocfs.
|
69802 |
09-Dec-2000 |
des |
Add proc/<pid>/cmdline.
|
69801 |
09-Dec-2000 |
des |
Add a dependency on procfs.
|
69799 |
09-Dec-2000 |
des |
A bunch of fixes that have been rotting in my tree for a month or two waiting for procfs to get fixed:
- Use fill_eproc() to obtain correct VM stats. Attempt to compute VmLib.
- Fill some more fields in proc/<pid>/stat, and add four (unimplemented) fields after studying a recent Linux kernel.
- Compute CPU frequency only once instead of twice.
- Fix some comments that were OBE.
- Fix indentation except where it makes the code less readable.
|
69442 |
01-Dec-2000 |
jhb |
Protect access to p_stat with sched_lock.
|
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
|
69269 |
27-Nov-2000 |
des |
Add bogomips to cpuinfo (set it equal to the CPU frequency, which is bogus but not more so than Linux' definition). This should get the IBM JDK 1.3 working again.
Prompted by: sobomax
|
69148 |
25-Nov-2000 |
jlemon |
Correct a misnamed argument hidden behind a #ifdef DEBUG
Found by: LINT
|
69081 |
23-Nov-2000 |
marcel |
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.
|
69079 |
23-Nov-2000 |
marcel |
Change the argument of linux_sigreturn to be a pointer to a struct sigframe.
|
69073 |
23-Nov-2000 |
marcel |
Don't unregister the ioctl handlers before we verified we can unload. Doing so leaves the linuxulator in a crippled state (no ioctl support) when Linux binaries are run at unload time.
While here, consistently spell ELF in capitals and perform some minor style improvements.
ELF spelling submitted by: asmodai
|
68807 |
16-Nov-2000 |
gallatin |
remove redundant declaration of bsd_to_linux_sigset()
reviewed by: marcel
|
68806 |
16-Nov-2000 |
gallatin |
fix glaring bugs in rt signals -- copyout the right signal mask in linux_rt_sendsig() and restore the same signal mask linux does in rt_sigreturn(). This gets us saving/restoring all 64-bits of the linux sigset_t in rt signals.
Reviewed by: marcel
|
68689 |
13-Nov-2000 |
gallatin |
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
|
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.
|
68377 |
06-Nov-2000 |
des |
Check that p->p_pptr is not NULL - kernel processes have no parents!
|
68157 |
01-Nov-2000 |
obrien |
Make the target a little bit more generic.
|
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
|
67899 |
29-Oct-2000 |
phk |
Remove unneeded <stddef.h> #includes.
|
67589 |
25-Oct-2000 |
des |
Bring cpuinfo closer to what it looks like in Linux 2.2.
Submitted by: R Bradford Jones <brad@kazrak.com>
|
67588 |
25-Oct-2000 |
des |
Add /proc/<pid>/status and /proc/<pid>/stat (the latter being mostly zeroes for the time being).
Prompted by: Nathan Boeger <nathan@khmere.com>
|
67238 |
17-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@
|
67235 |
17-Oct-2000 |
gallatin |
regen after addition of linux_rt_sigreturn
|
67234 |
17-Oct-2000 |
gallatin |
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 ...
|
67051 |
13-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@
|
66923 |
10-Oct-2000 |
des |
Mark directories as directories, not as regular files.
|
66037 |
18-Sep-2000 |
des |
Fix cut'n'paste bogon.
Submitted by: Jim Pirzyk <Jim.Pirzyk@disney.com>
|
65635 |
09-Sep-2000 |
des |
Remove unused variables.
|
65633 |
09-Sep-2000 |
des |
Add stat, uptime and version. Note that version currently returns the first line of the version string from vers.c, which is not quite what a Linux system would return.
|
65577 |
07-Sep-2000 |
des |
Pierre Beyssac originally derived linprocfs from procfs, and I've made (and will keep making) significant modifications, so I'm adding both our copyrights to the top of these files.
|
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
|
65446 |
04-Sep-2000 |
des |
Remove obsolete comment (see rev 1.84 of procfs_vnops.c)
|
65337 |
01-Sep-2000 |
rwatson |
o Synchronize linprocfs authorization with procfs authorization improvements (better hiding of hidden processes, more access checks, use vaccess(), et al)
Approved by: des Obtained from: TrustedBSD Project
|
65258 |
30-Aug-2000 |
rwatson |
o Update linprocfs to include similar changes as those in procfs, fixing the build (oops!): replace calls to p_trespass() and PRISON_CHECK() with p_can(..., {P_CAN_SEE, P_CAN_DEBUG}, NULL) o Remove volatile usage from procfs_readdir() to remove warnings o Apply bp's CREATE fix to linprocfs, causing EROFS to be returned on CREATE calls to procfs_lookup() o Some further synchronization still needs to occur: only existing access checks were replaced, to fix the build--the new ones were not added. I'll do this later today, this is a "fix the build quickly" commit. This means that, in the interim, some information leakage can still occur via linprocfs when using jail or kern.ps_showallprocs
Submitted by: knu Approved by: des Obtained from: TrustedBSD Project
|
65067 |
25-Aug-2000 |
marcel |
Fix typo in license.
|
64931 |
22-Aug-2000 |
marcel |
Finish the Linuxulator MD/MI split.
In summary: o This file has been moved to sys/compat/linux, o Any MD syscalls in this file are moved to linux_machdep.c in sys/i386/linux, o Include directives, makefiles and config files have been updated.
|
64929 |
22-Aug-2000 |
marcel |
Update include directives for Linuxulator headers after the MD/MI split.
|
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.
|
64560 |
12-Aug-2000 |
bde |
Fixed null pointer panic for accessing "meminfo" when there is no swap.
|
64002 |
29-Jul-2000 |
peter |
Regen. (Fix SYS_exit)
|
64001 |
29-Jul-2000 |
peter |
Sigh. Fix SYS_exit problems. I misunderstood the significance of these trailing options.
|
63987 |
29-Jul-2000 |
peter |
Regenerate with makesyscalls.sh
|
63986 |
29-Jul-2000 |
peter |
Change the 'exit()' system call to 'sys_exit()'. This avoids overlapping gcc's internal exit() prototypes and the (futile) hackery that we did to try and avoid warnings. main() was renamed for similar reasons. Remove an exit related hack from makesyscalls.sh.
|
63903 |
27-Jul-2000 |
marcel |
Remove the only use of SCARG and perform dead code elimination.
|
63778 |
23-Jul-2000 |
marcel |
Add bounds checking to stackgap_alloc. Previously it was possible to construct a path that was long enough (ie longer than SPARE_USRSPACE bytes) and trash the stack.
Note that SPARE_USRSPACE is much smaller than MAXPATHLEN so that the Linuxulator will now return ENAMETOOLONG even if the path is smaller than MAXPATHLEN.
PR: 12749
|
63605 |
20-Jul-2000 |
marcel |
Revert implementation of setfsuid and setfsgid due to security issues.
Requested by: rwatson Backed by: kris
|
63285 |
17-Jul-2000 |
marcel |
Implement pread and pwrite.
PR: 17991 Submitted by: Geoffrey Speicher <geoff@caribbean.sea-incorporated.com>
|
63284 |
17-Jul-2000 |
marcel |
Add prototypes for linux_pread and linux_pwrite.
PR: 17991 Submitted by: Geoffrey Speicher <geoff@caribbean.sea-incorporated.com>
|
63280 |
16-Jul-2000 |
marcel |
Implement setfsuid and setfsgid. Implementation derived from patch in PR.
PR: 16993 Submitted by: Bjoern Groenvall <bg@sics.se>
|
63233 |
15-Jul-2000 |
marcel |
Simplify the F_GETOWN and F_SETOWN fcntl commands. The workaround is not needed since the FreeBSD native implementation switched from TIOC{G|S}PGRP to FIO{G|S}ETOWN (kern_descrip.c rev 1.55).
PR: 16946 Submitted by: Victor Salaman <salaman@teknos.com>
|
62573 |
04-Jul-2000 |
phk |
Previous commit changing SYSCTL_HANDLER_ARGS violated KNF.
Pointed out by: bde
|
62454 |
03-Jul-2000 |
phk |
Style police catches up with rev 1.26 of src/sys/sys/sysctl.h:
Sanitize SYSCTL_HANDLER_ARGS so that simplistic tools can grog our sources:
-sysctl_vm_zone SYSCTL_HANDLER_ARGS +sysctl_vm_zone (SYSCTL_HANDLER_ARGS)
|
61702 |
15-Jun-2000 |
cracauer |
Linux allows to mmap annonymous with a file descriptor passed, FreeBSD doesn't. In the Linux emulation layer, ignore the fd passed when MAP_ANON is specified.
Known application to be fixed: Xanalys/Harlequin Lispworks
Also improve debug output for mmap, now showing what the emulation layer mapped to what (-DDEBUG).
Reviewed by: marcel
|
60938 |
26-May-2000 |
jake |
Back out the previous change to the queue(3) interface. It was not discussed and should probably not happen.
Requested by: msmith and others
|
60860 |
24-May-2000 |
des |
Make exe a symlink.
|
60833 |
23-May-2000 |
jake |
Change the way that the queue(3) structures are declared; don't assume that the type argument to *_HEAD and *_ENTRY is a struct.
Suggested by: phk Reviewed by: phk Approved by: mdodd
|
60302 |
10-May-2000 |
obrien |
AT&T asm syntax requires a leading '*' in front of the operand for indirect calls and jumps.
|
60290 |
09-May-2000 |
bde |
Regenerated (fixed the calculation of sy_nargs in sysent tables).
|
60275 |
09-May-2000 |
bde |
Fixed the return type for exit() and the args struct tag several NOPROTO syscalls including exit(). These entries were unused, so the bugs had no effect, but the the args struct tag will be used to calculate sy_nargs correctly. exit() was wrong in all emulators.
|
60058 |
06-May-2000 |
peter |
Add a version tag for the rtc port to depend on.
|
59794 |
30-Apr-2000 |
phk |
Remove unneeded #include <vm/vm_zone.h>
Generated by: src/tools/tools/kerninclude
|
59663 |
26-Apr-2000 |
dillon |
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.
|
59458 |
21-Apr-2000 |
msmith |
Fix include paths so that this builds correctly.
Submitted by: Mike Pritchard <mpp@mppsystems.com>
|
59412 |
20-Apr-2000 |
msmith |
Move the linprocfs bits under the rest of the i386 linux compatibility code.
|
59368 |
18-Apr-2000 |
phk |
Remove unneeded <sys/buf.h> includes.
Due to some interesting cpp tricks in lockmgr, the LINT kernel shrinks by 924 bytes.
|
59342 |
18-Apr-2000 |
obrien |
Change our ELF binary branding to something more acceptable to the Binutils maintainers.
After we established our branding method of writing upto 8 characters of the OS name into the ELF header in the padding; the Binutils maintainers and/or SCO (as USL) decided that instead the ELF header should grow two new fields -- EI_OSABI and EI_ABIVERSION. Each of these are an 8-bit unsigned integer. SCO has assigned official values for the EI_OSABI field. In addition to this, the Binutils maintainers and NetBSD decided that a better ELF branding method was to include ABI information in a ".note" ELF section.
With this set of changes, we will now create ELF binaries branded using both "official" methods. Due to the complexity of adding a section to a binary, binaries branded with ``brandelf'' will only brand using the EI_OSABI method. Also due to the complexity of pulling a section out of an ELF file vs. poking around in the ELF header, our image activator only looks at the EI_OSABI header field.
Note that a new kernel can still properly load old binaries except for Linux static binaries branded in our old method.
* * For a short period of time, ``ld'' will also brand ELF binaries * using our old method. This is so people can still use kernel.old * with a new world. This support will be removed before 5.0-RELEASE, * and may not last anywhere upto the actual release. My expiration * time for this is about 6mo. *
|
57998 |
13-Mar-2000 |
nsayer |
Fix some style bugs. The long line is in a chunk of code that's being rewritten, though.
Submitted by: bde
|
57867 |
09-Mar-2000 |
marcel |
Fix bug in linux_wait4 and linux_waitpid where garbage in the status argument could panic the kernel.
Submitted by: Ian Dowse <iedowse@maths.tcd.ie> Prompted by: jkh, gallatin Approved by: prompters
|
57858 |
09-Mar-2000 |
nsayer |
Implement Linux BLKGETSIZE ioctl, and open the door to implementing other BLK.* ioctls should the desire arize.
Approved by: jkh (via dufault)
|
57564 |
28-Feb-2000 |
marcel |
Fix accept(2) behavior in that accepted sockets don't inherit the parents flags.
Note on the PR: The PR contains another patch that's not being committed without further background information. The PR stays open for now.
PR: 16946 (Victor A. Salaman <salaman@teknos.com>) Prompted by: msmith Indirect/implicit approval: jkh (shoot me if I'm wrong :-)
|
56940 |
01-Feb-2000 |
nsayer |
Avoid passing an uninitialized structure member to the real READSUBCHANNEL ioctl. This makes vmware work with SCSI CDROM drives.
Approved by: jkh
|
56808 |
29-Jan-2000 |
peter |
Regen after pointing to the real setres[ug]id(). Remove dummy function. (Note: getres[ug]id is still a dummy as it returns via pointers to a different sized integer and does need real wrappers.)
|
56807 |
29-Jan-2000 |
peter |
Use the real setres[ug]id(2) rather than dummy stubs. Newer glibc's call this.
|
55784 |
10-Jan-2000 |
marcel |
Update syscalls to Linux kernel 2.3.38. These syscalls are implemented as dummies to ease problem solving.
|
55783 |
10-Jan-2000 |
marcel |
Update the syscalls to Linux kernel 2.3.38.
|
55771 |
10-Jan-2000 |
marcel |
Return Linux kernel version 2.2.12 by default. This is in line with linux_base-6.1.
|
55629 |
08-Jan-2000 |
marcel |
Convert the filesystem type returned in struct statfs by syscalls linux_statfs and linux_fstatfs. Linux binaries testing this expect the filesystem's magic number and not our vnode's tag.
PR: 15425 Tested by: Vladimir N. Silyaev <vsilyaev@mindspring.com>
|
55626 |
08-Jan-2000 |
bde |
Include <stddef.h> here so that <sys/assym.h> can be unpolluted.
Include <sys/param.h> before <sys/assym.h> in case any of the magic in the former is ever needed in the latter.
|
55343 |
03-Jan-2000 |
marcel |
Make offsetof equivalent with <stddef.h>. This paves the way for further enhancements/reorganisations.
Discussed with: bde
|
55141 |
27-Dec-1999 |
bde |
Changed the type used to represent the user stack pointer from `long *' to `register_t *'. This fixes bugs like misplacement of argc and argv on the user stack on i386's with 64-bit longs. We still use longs to represent "words" like argc and argv, and assume that they are on the stack (and that there is stack). The suword() and fuword() families should also use register_t.
|
55062 |
23-Dec-1999 |
marcel |
Use genassym(1) and <sys/assym.h> to generate assembler symbols.
|
54655 |
15-Dec-1999 |
eivind |
Introduce NDFREE (and remove VOP_ABORTOP)
|
54399 |
10-Dec-1999 |
marcel |
Remove unused includes.
Found by: phk-scan
|
54152 |
05-Dec-1999 |
archie |
Fix LINT breakage.
|
54122 |
04-Dec-1999 |
marcel |
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
|
53954 |
30-Nov-1999 |
marcel |
Implement linux_sigaltstack.
|
53953 |
30-Nov-1999 |
marcel |
Implement sigaltstack.
|
53902 |
29-Nov-1999 |
alfred |
add linuxulator wrapper for SNDCTL_DSP_GETODELAY
|
53758 |
27-Nov-1999 |
marcel |
Implement linux_ustat.
Reviewed by: bde
|
53755 |
27-Nov-1999 |
marcel |
Change prototype of linux_ustat.
|
53713 |
26-Nov-1999 |
marcel |
Implement fdatasync in terms of fsync. The regeneration of proto.h, syscall.h and sysent.h was probably forgotten after the last change syscalls.master.
|
53009 |
08-Nov-1999 |
phk |
simplify check for device.
|
52986 |
08-Nov-1999 |
peter |
Use fo_stat() rather than Yet Another duplication of kern_descrip.c's stat code.
|
52644 |
30-Oct-1999 |
phk |
Change useracc() and kernacc() to use VM_PROT_{READ|WRITE|EXECUTE} for the "rw" argument, rather than hijacking B_{READ|WRITE}.
Fix two bugs (physio & cam) resulting by the confusion caused by this.
Submitted by: Tor.Egge@fast.no Reviewed by: alc, ken (partly)
|
52635 |
29-Oct-1999 |
phk |
useracc() the prequel:
Merge the contents (less some trivial bordering the silly comments) of <vm/vm_prot.h> and <vm/vm_inherit.h> into <vm/vm.h>. This puts the #defines for the vm_inherit_t and vm_prot_t types next to their typedefs.
This paves the road for the commit to follow shortly: change useracc() to use VM_PROT_{READ|WRITE} rather than B_{READ|WRITE} as argument.
|
52421 |
21-Oct-1999 |
marcel |
Fix the duplicate filenames that are the result of using getdents.
glibc2 defines struct dirent differently than the Linux kernel does. The getdents function therefore needs to read a heuristically defined number of kernel dirents to satisfy the request. In case where too many kernel dirents have been read, the function lseeks on the directory so that a next call will start with the right dirent. The offset used in lseeking is the offset-field in the last dirent passed to the application. This can only mean that the offset-field holds the offset of the next dirent and not the offset of the dirent itself.
|
52140 |
11-Oct-1999 |
luoqi |
Add a per-signal flag to mark handlers registered with osigaction, so we can provide the correct context to each signal handler.
Fix broken sigsuspend(): don't use p_oldsigmask as a flag, use SAS_OLDMASK as we did before the linuxthreads support merge (submitted by bde).
Move ps_sigstk from to p_sigacts to the main proc structure since signal stack should not be shared among threads.
Move SAS_OLDMASK and SAS_ALTSTACK flags from sigacts::ps_flags to proc::p_flag. Move PS_NOCLDSTOP and PS_NOCLDWAIT flags from proc::p_flag to procsig::ps_flag.
Reviewed by: marcel, jdp, bde
|
51969 |
06-Oct-1999 |
jhay |
Swap IOC_OUT and IOC_IN for the SETDIR macro. The linux ioctl read and write bits are swapped.
Reviewed by: luoqi, marcel
|
51793 |
29-Sep-1999 |
marcel |
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.
|
51654 |
25-Sep-1999 |
phk |
This patch clears the way for removing a number of tty related fields in struct cdevsw:
d_stop moved to struct tty. d_reset already unused. d_devtotty linkage now provided by dev_t->si_tty.
These fields will be removed from struct cdevsw together with d_params and d_maxio Real Soon Now.
The changes in this patch consist of:
initialize dev->si_tty in *_open() initialize tty->t_stop remove devtotty functions rename ttpoll to ttypoll a few adjustments to these changes in the generic code a bump of __FreeBSD_version add a couple of FreeBSD tags
|
51602 |
23-Sep-1999 |
marcel |
Linux doesn't complain if you remove a msg queue that doesn't exist (given the proper permissions).
|
51570 |
22-Sep-1999 |
luoqi |
Regeneration.
|
51569 |
22-Sep-1999 |
luoqi |
Implement linux_ioperm() syscall. Fix linux_iopl() to use the level argument. SVGAlib should now work.
Reviewed by: marcel
|
51418 |
19-Sep-1999 |
green |
This is what was "fdfix2.patch," a fix for fd sharing. It's pretty far-reaching in fd-land, so you'll want to consult the code for changes. The biggest change is that now, you don't use fp->f_ops->fo_foo(fp, bar) but instead fo_foo(fp, bar), which increments and decrements the fp refcount upon entry and exit. Two new calls, fhold() and fdrop(), are provided. Each does what it seems like it should, and if fdrop() brings the refcount to zero, the fd is freed as well.
Thanks to peter ("to hell with it, it looks ok to me.") for his review. Thanks to msmith for keeping me from putting locks everywhere :)
Reviewed by: peter
|
51348 |
17-Sep-1999 |
marcel |
Fix getcwd. It must return the length of the path including the terminating 0. While I'm here, fix style and debug printf.
Fix derived from patch by: Darryl Okahata <darrylo@sr.hp.com>
|
50903 |
04-Sep-1999 |
peter |
<machine/soundcard.h> -> <sys/soundcard.h>, since it's an exported API that's arch neutral and OSS API and Linux API compatable.
|
50833 |
03-Sep-1999 |
marcel |
I missed the namechange of field desc in struct i386_ldt_args into descs while reviewing luoqi's changes...
Pointed out by: luoqi
|
50818 |
02-Sep-1999 |
marcel |
Implementation of the modify_ldt syscall. Use the sysarch() interface to do the actual work. When USER_LDT is not defined for a kernel, sysarch returns EOPNOTSUPP. Display a message in that case and return ENOSYS to userland.
Reviewed by: luoqi
|
50558 |
29-Aug-1999 |
marcel |
Fix a braino: Linux minor device numbers are 8 bits wide and not 10.
|
50546 |
29-Aug-1999 |
marcel |
Fix a missing '-1' in the size argument of copyout in getgroups. Spotted while reviewing the MFC in -stable.
|
50500 |
28-Aug-1999 |
marcel |
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>
|
50482 |
28-Aug-1999 |
peter |
Regen after Id->FreeBSD
|
50480 |
28-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
50477 |
28-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
50465 |
27-Aug-1999 |
marcel |
Add sysctl variables for the Linuxulator. These reside under `compat.linux' as discussed on current.
The following variables are defined (for now):
osname (defaults to "Linux") Allow users to change the name of the OS as returned by uname(2), specially added for all those Linux Netscape users and statistics maniacs :-) We now have what we all wanted!
osrelease (defaults to "2.2.5") Allow users to change the version of the OS as returned by uname(2). Since -current supports glibc2.1 now, change the default to 2.2.5 (was 2.0.36).
oss_version (defaults to 198144 [0x030600]) This one will be used by the OSS_GETVERSION ioctl (PR 12917) which I can commit now that we have the MIB. The default version number is the lowest version possible with the current 'encoding'.
A note about imprisoned processes (see jail(2)): These variables are copy-on-write (as suggested by phk). This means that imprisoned processes will use the system wide value unless it is written/set by the process. From that moment on, a copy local to the prison will be used.
A note about the implementation: I choose to add a single pointer to struct prison, because I didn't like the idea of changing struct prison every time I come up with a new variable. As a side effect, the extra storage is only needed when a variable is set from within the prison. This also minimizes kernel bloat when the Linuxulator is not used; both compiled in or as a module.
Reviewed by: bde (first version only) and phk
|
50363 |
25-Aug-1999 |
marcel |
Use ALIGN_TEXT macro for alignment to avoid ambiguity.
Pointed out by: bde
|
50356 |
25-Aug-1999 |
marcel |
Fix linux_newlstat in that it doesn't return the attributes of its containing directory. Also, update arguments of NDINIT for both newstat and newlstat.
While I'm at it, fix style bugs in all {s|ls|fs}tat syscalls.
Reported by: bde
|
50350 |
25-Aug-1999 |
marcel |
Fix {g|s}etgroups semantics. We use cr_groups[0] to hold egid. This means that egid will be twice in the set and that setting cr_groups[0] will change egid. This is simply solved by ignoring cr_groups[0]. That is; linux_getgroups does not return cr_groups[0] and linux_setgroups does not touch it.
Noticed by: bde Brought to my attention by: sheldonh
|
50348 |
25-Aug-1999 |
marcel |
Fix lingo: 'is not implemented or obsoleted' is not the same as 'is obsoleted or not implemented'.
|
50345 |
25-Aug-1999 |
marcel |
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.
|
50344 |
25-Aug-1999 |
marcel |
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.
Lastly, make line-continuation and indentation more uniform.
|
50343 |
25-Aug-1999 |
marcel |
Fix stack misalignment for Linux binaries caused by `linux_sigcode' not being a multiple of 4 bytes in size. This solves the recent SIGBUS errors for glibc2.1 configurations.
Explained by: bde
|
49960 |
17-Aug-1999 |
marcel |
Fix a bug in debug-printfs of struct linux_termios fields, where I forgot to change the format specifier after changing the definition of the structure.
Submitted by: billf Commented on by: bde
|
49959 |
17-Aug-1999 |
marcel |
Fix bug in the debug-printf of the vfork syscall, where the format specifier didn't match the argument (p->p_pid).
While I'm at it, also fix the dupo in the format string and fix the annoying inconsistency in all the debug-printfs wrt p_pid arguments. Change all of them to use the %ld format specifier and cast the p_pid arguments to long.
Submitted by: billf
|
49890 |
16-Aug-1999 |
marcel |
Implement linux_vfork() syscall by calling vfork(). Analogous to the linux_fork() implementation.
|
49889 |
16-Aug-1999 |
marcel |
Implement vfork() syscall.
|
49850 |
15-Aug-1999 |
marcel |
Major rewrite.
The first reason for this rewrite is KNF conformance.
The second reason is to avoid redundancy. Each function printed the same string, with only the syscall name being different. The actual printing is now performed by a single function, which gets the syscall name as an argument.
The third reason is that of convenience. It's now very easy to add a new dummy implementation. Just add ``DUMMY(foo);'' to the file. It's also a lot easier now to see if a syscall has a dummy implementation or not.
The dummies are ordered on syscall number. Please maintain this when adding new dummies (there're 32 candidates at the time of writing :-)
Reviewed by: bde
|
49849 |
15-Aug-1999 |
marcel |
Provide wrappers for sched_{s|g}etscheduler. We need to convert the policy argument.
PR: 12006 Originator: Jean-Claude MICHOT <jcmichot@teaser.fr>
|
49848 |
15-Aug-1999 |
marcel |
Provide wrappers for sched_{s|g}etscheduler. We need to convert the policy argument.
PR: 12006
|
49845 |
15-Aug-1999 |
marcel |
Fix bug in the fcntl syscall where 'arg' was not set properly.
PR: 12147 Submitted by: Allan Saddi <asaddi@philosophysw.com>
|
49842 |
15-Aug-1999 |
marcel |
Include opt_compat.h so that COMPAT_43 is defined. This gives us the proper prototypes of o{s|g}etrlimit (from sys/sysproto.h). Update linux_{s|g}etrlimit so that the arguments to o{s|g}etrlimit are corresponding the prototypes.
Pointed out by: bde
|
49788 |
14-Aug-1999 |
marcel |
Implementation of the linux_getcwd syscall.
|
49787 |
14-Aug-1999 |
marcel |
Extend the number of syscalls to include those present in Linux 2.2.10. These are syscalls 183 to 190. Also implement syscall 183: linux_getcwd. This is needed to support a RH 6.0 environment.
|
49786 |
14-Aug-1999 |
marcel |
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.
|
49784 |
14-Aug-1999 |
marcel |
Implementation of linux_rt_sigaction and linux_rt_sigprocmask syscalls. These syscalls are needed to support a RH 6.0 environment.
|
49774 |
14-Aug-1999 |
marcel |
Fix LINUX_TIOC{S|G}SERIAL implementation. Both do not copy data in or out of kernel space. Remove the ioctl supporting functions, and move the actual code to the switch-statement. Now everybody can clearly see that the implementation is really poor.
Also fix a typo in LINUX_TIOCGETD. The underlying function was given command TIOCSETD instead op TIOCGETD...
|
49768 |
14-Aug-1999 |
marcel |
Fix the LINUX_TCSET{A|AW|AF} and LINUX_TCSET{S|SW|SF} ioctls. These all suffer from the same bug in that the argument is not first copied from user space before it is used. This is part 2 (of 2) of the termios fixes.
|
49766 |
14-Aug-1999 |
marcel |
Fix a couple of termio/termios conversion bugs/typos/dupos/brainos and other changes. This is part 1 of the complete termios ioctl fixes.
o change type of c_{i|o|c|l}flag in struct termios from unsigned long to unsigned int. The type now matches the Linux definitions. o replaced constants by the corresponding defines in sptab[] for clarity. Since there's no define for 135 baud, its mapping has been dropped.
function bsd_to_linux_termios: o Fix typo IXON -> IXANY. o Remove bogus assignment to c_cc[LINUX_VSWTC].
function linux_to_bsd_termios: o Fix dupo LINUX_IXON -> LINUX_IXANY. o Add LINUX_CREAD mapping. o Fix typo IEXTEN -> LINUX_IEXTEN.
function linux_to_bsd_termio: o Small optimization: Don't preset the complete c_cc array when we next assign to the first LINUX_NCC entries.
|
49688 |
13-Aug-1999 |
marcel |
Implementation of the CDROMSUBCHNL ioctl.
|
49676 |
13-Aug-1999 |
marcel |
In doing lock type conversion (struct flock), make sure that carbage in results in deterministic behaviour. In this case known garbage out. The fix is different than suggested in the PR.
PR: 12749 Originator: Boris Nikolaus <boris@cs.tu-berlin.de>
|
49662 |
12-Aug-1999 |
marcel |
Use a wrapper for the link syscall that does name translations.
PR: 12749 Submitted by: Boris Nikolaus <boris@cs.tu-berlin.de>
|
49626 |
11-Aug-1999 |
marcel |
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>
|
49624 |
11-Aug-1999 |
marcel |
Do not map {s|g}etrlimit onto the FreeBSD syscalls. The arguments do not match.
PR: kern/9591 Originator: John Plevyak <jplevyak@inktomi.com>
|
49523 |
08-Aug-1999 |
marcel |
Fix page fault in linux_uselib syscall.
PR: 12910 Submitted by: Peter Holm <peter@holm.cc>
|
49478 |
07-Aug-1999 |
green |
We don't end up checking for a return value of EFAULT from the copyinstr() in the pathname translation procedure. This proves fatal, and can be easily fixed. This or a similar change needs to be committed to svr4_util.h and ibcs2_util.h. I will update ibcs2_util.h, if noone else thinks of a better way to do this, in the same manner. I will leave svr4 to the respective maintainer.
This closes the problem of the only crash I've been able to produce as a user recently, except for (currently not-in-the-source tree) fd table sharing fixes. Thanks goes to pho for his stress-testers.
|
48885 |
18-Jul-1999 |
phk |
Use the vn_todev() function, rather than VOP_GETATTR
|
48851 |
17-Jul-1999 |
marcel |
Implementation of TCXONC.
Reviewed by: bde
|
48685 |
08-Jul-1999 |
marcel |
Implement VT_RELDISP ioctl
Submitted by: Kazutaka Yokota <yokota@FreeBSD.org>
|
48628 |
06-Jul-1999 |
marcel |
Trivial implementation of TIOCM{S|G}ET and TIOCMBI{S|C} ioctls. No need to convert the arguments.
|
48620 |
06-Jul-1999 |
cracauer |
Rename struct members sa_siginfo. POSIX reserves identifiers starting with sa_ when <signal.h> is included. They would conflict with the upcoming SA_SIGINFO implementation.
Reviewed by: BDE
|
48595 |
05-Jul-1999 |
marcel |
Let newuname return "Linux" as the OS name and not "FreeBSD". Also, return a more sensible (for Linux applications) release number. Hardcoding a release number has its drawbacks, but it will do for now.
|
48303 |
28-Jun-1999 |
peter |
Tweak include ordering so sys/systm.h is before sys/buf.h to keep buf.h's inlines happy.
|
47028 |
11-May-1999 |
phk |
Divorce "dev_t" from the "major|minor" bitmap, which is now called udev_t in the kernel but still called dev_t in userland.
Provide functions to manipulate both types: major() umajor() minor() uminor() makedev() umakedev() dev2udev() udev2dev()
For now they're functions, they will become in-line functions after one of the next two steps in this process.
Return major/minor/makedev to macro-hood for userland.
Register a name in cdevsw[] for the "filedescriptor" driver.
In the kernel the udev_t appears in places where we have the major/minor number combination, (ie: a potential device: we may not have the driver nor the device), like in inodes, vattr, cdevsw registration and so on, whereas the dev_t appears where we carry around a reference to a actual device.
In the future the cdevsw and the aliased-from vnode will be hung directly from the dev_t, along with up to two softc pointers for the device driver and a few houskeeping bits. This will essentially replace the current "alias" check code (same buck, bigger bang).
A little stunt has been provided to try to catch places where the wrong type is being used (dev_t vs udev_t), if you see something not working, #undef DEVT_FASCIST in kern/kern_conf.c and see if it makes a difference. If it does, please try to track it down (many hands make light work) or at least try to reproduce it as simply as possible, and describe how to do that.
Without DEVT_FASCIST I belive this patch is a no-op.
Stylistic/posixoid comments about the userland view of the <sys/*.h> files welcome now, from userland they now contain the end result.
Next planned step: make all dev_t's refer to the same devsw[] which means convert BLK's to CHR's at the perimeter of the vnodes and other places where they enter the game (bootdev, mknod, sysctl).
|
46803 |
09-May-1999 |
peter |
Fix a couple of warnings and some bitrot in comments.
|
46778 |
09-May-1999 |
phk |
Yet another place which knew too much. Still not sure how much good this does in the end.
|
46676 |
08-May-1999 |
phk |
I got tired of seeing all the cdevsw[major(foo)] all over the place.
Made a new (inline) function devsw(dev_t dev) and substituted it.
Changed to the BDEV variant to this format as well: bdevsw(dev_t dev)
DEVFS will eventually benefit from this change too.
|
46571 |
06-May-1999 |
peter |
Fix up a few easy 'assignment used as truth value' and 'suggest parens around && within ||' type warnings. I'm pretty sure I have not masked any problems here, I've committed real problem fixes seperately.
|
46163 |
29-Apr-1999 |
luoqi |
- Handle mixer read ioctls correctly. They have the same group, number and argument size as their write counterparts and were handled as write ioctls. - Emulate some cdrom ioctls.
|
46129 |
28-Apr-1999 |
luoqi |
Enable vmspace sharing on SMP. Major changes are, - %fs register is added to trapframe and saved/restored upon kernel entry/exit. - Per-cpu pages are no longer mapped at the same virtual address. - Each cpu now has a separate gdt selector table. A new segment selector is added to point to per-cpu pages, per-cpu global variables are now accessed through this new selector (%fs). The selectors in gdt table are rearranged for cache line optimization. - fask_vfork is now on as default for both UP and SMP. - Some aio code cleanup.
Reviewed by: Alan Cox <alc@cs.rice.edu> John Dyson <dyson@iquest.net> Julian Elischer <julian@whistel.com> Bruce Evans <bde@zeta.org.au> David Greenman <dg@root.com>
|
46116 |
27-Apr-1999 |
phk |
Change suser_xxx() to suser() where it applies.
|
46112 |
27-Apr-1999 |
phk |
Suser() simplification:
1: s/suser/suser_xxx/
2: Add new function: suser(struct proc *), prototyped in <sys/proc.h>.
3: s/suser_xxx(\([a-zA-Z0-9_]*\)->p_ucred, \&\1->p_acflag)/suser(\1)/
The remaining suser_xxx() calls will be scrutinized and dealt with later.
There may be some unneeded #include <sys/cred.h>, but they are left as an exercise for Bruce.
More changes to the suser() API will come along with the "jail" code.
|
45821 |
19-Apr-1999 |
peter |
unifdef -DVM_STACK - it's been on for a while for x86 and was checked and appeared to be working for the Alpha some time ago.
|
44384 |
02-Mar-1999 |
julian |
Fix thread/process tracking and differentiation for Linux threads emulation.
Submitted by: Richard Seaman, Jr." <dick@tar.com>
Also clean some compiler warnings in surrounding code.
|
43620 |
04-Feb-1999 |
newton |
Added call to elf_brand_inuse() to prevent you from cutting your own legs out from under you.
|
43208 |
26-Jan-1999 |
julian |
Enable Linux threads support by default. This takes the conditionals out of the code that has been tested by various people for a while. ps and friends (libkvm) will need a recompile as some proc structure changes are made.
Submitted by: "Richard Seaman, Jr." <dick@tar.com>
|
42766 |
17-Jan-1999 |
peter |
Minor cleanup; no more references to LKM's.
|
42509 |
11-Jan-1999 |
msmith |
Fix linux sendmsg() emulation
Submitted by: Brian Feldman <green@unixhelp.org>
|
42499 |
10-Jan-1999 |
eivind |
Use truncate() instead of otruncate() - step on the way to stopping the linulator from depending on COMPAT_43.
|
42360 |
06-Jan-1999 |
julian |
Add (but don't activate) code for a special VM option to make downward growing stacks more general. Add (but don't activate) code to use the new stack facility when running threads, (specifically the linux threads support). This allows people to use both linux compiled linuxthreads, and also the native FreeBSD linux-threads port.
The code is conditional on VM_STACK. Not using this will produce the old heavily tested system.
Submitted by: Richard Seaman <dick@tar.com>
|
42186 |
30-Dec-1998 |
sos |
Commit patch in
PR: 9232 Submitted by: marcel@scc.nl <Marcel Moolenaar>
|
42185 |
30-Dec-1998 |
sos |
Commit #2 of
PR: 9235 Submitted by: marcel@scc.nl <Marcel Moolenaar>
|
42184 |
30-Dec-1998 |
sos |
Commit #1 of:
PR: 9235
|
42054 |
24-Dec-1998 |
julian |
According to the author..
"I've been having a problem running the patches [committed to current] installed with the COMPAT_LINUX_THREADS option along with the VM_STACK patches I did. I'm not sure what the problem is, since it seemed to work before.
In any event, the attached patch fixes the problem for me. While I've had no report of problems from anyone else, possibly it would be wise to commit the patch until the problem is found.
Also, there was some left-over junk in the linux_misc.c file from some earlier work I did. The attached patch cleans that up too."
Submitted by: "Richard Seaman, Jr." <dick@tar.com>
|
41998 |
22-Dec-1998 |
sos |
The result of running make linux_sysent.c on the new syscalls.master
|
41997 |
22-Dec-1998 |
sos |
Fix NOIMPL -> NOPROTO as per bruce.
|
41988 |
21-Dec-1998 |
sos |
The result of running make linux_sysent.c on the new syscall.master file
|
41987 |
21-Dec-1998 |
sos |
Syscall 168 (poll) is not implemented in the Linux emulator. This syscall is used by Oracle.
PR: 9154 Submitted by: Marcel Moolenaar <marcel@scc.nl>
|
41986 |
21-Dec-1998 |
sos |
Kill(pid, 0) normally returns 0 on both FreeBSD and Redhat after having performed all sorts of sanity checks. The FreeBSD linux emulator returns EINVAL in such a case. Allowing signal 0 to be passed to kill will result in compatible behaviour.
PR: 9082 Submitted by: Marcel Moolenaar <marcel@scc.nl>
|
41942 |
19-Dec-1998 |
sos |
Make it compile again. I have no idea if the new stuff works though.
Broken by: Julian
|
41931 |
19-Dec-1998 |
julian |
Reviewed by: Luoqi Chen, Jordan Hubbard Submitted by: "Richard Seaman, Jr." <lists@tar.com> Obtained from: linux :-)
Code to allow Linux Threads to run under FreeBSD.
By default not enabled This code is dependent on the conditional COMPAT_LINUX_THREADS (suggested by Garret) This is not yet a 'real' option but will be within some number of hours.
|
41871 |
16-Dec-1998 |
bde |
Removed the cast to a pointer in the definition of PS_STRINGS and adjusted related casts to match (only in the kernel in this commit). The pointer was only wanted in one place in kern_exec.c. Applications should use the kern.ps_strings sysctl instead of PS_STRINGS, so they shouldn't notice this change.
|
41796 |
14-Dec-1998 |
dt |
Added 3 new errno values, requred by various standards: EOVERFLOW, ECANCELED, EILSEQ.
Fixed ibcs2 and especially linux EIDRM and ENOMSG errno mapping. Reviewed by: Dan Nelson <dnelson@emsphone.com>
|
41650 |
10-Dec-1998 |
jkh |
linux_pipe does not preserve the edx register. Linux and programs using glibc expect edx to be preserved accross syscalls. As a result, linux programs running in emulation mode can have whatever value may be represented by edx clobbered.
PR: 9038 Submitted-By: Richard Seaman, Jr. <dick@tar.com>
|
41514 |
04-Dec-1998 |
archie |
Examine all occurrences of sprintf(), strcat(), and str[n]cpy() for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc.
These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer.
Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
|
41173 |
15-Nov-1998 |
bde |
Finished updating module event handlers to be compatible with modeventhand_t.
|
41105 |
12-Nov-1998 |
jkh |
MF22: Bring in some linux sound ioctl support which I committed to 2.2 for PR 7792 but did not bring forward.
Submitted by: Avatar Liang <avatar@www.mmlab.cse.yzu.edu.tw> PR: 8656
|
40435 |
16-Oct-1998 |
peter |
*gulp*. Jordan specifically OK'ed this..
This is the bulk of the support for doing kld modules. Two linker_sets were replaced by SYSINIT()'s. VFS's and exec handlers are self registered. kld is now a superset of lkm. I have converted most of them, they will follow as a seperate commit as samples. This all still works as a static a.out kernel using LKM's.
|
40237 |
11-Oct-1998 |
alex |
Unregister the glibc2 brand at module unload time.
Change the ELF registration/unregistration scheme to be less error prone. Adding a new brand requires a single addition to linux_brandlist instead of modifying linux_load(), linux_unload(), and linux_elf_init().
Approved by: jkh Reviewed by: msmith
|
40203 |
11-Oct-1998 |
jdp |
Fix a couple of out-of-bounds array references in mapping between Linux and FreeBSD signal numbers. Also, check signal numbers passed in from application programs for validity. Without these checks, it is trivial to panic the system from a Linux program.
|
39978 |
05-Oct-1998 |
jfieber |
Make async I/O on a socket work.
Although the current Sybase license does not permit running under emulation, FreeBSD 3.0 is now "Sybase Ready" should the license change.
|
39977 |
05-Oct-1998 |
sos |
In linux_newuname bzero the right type of struct (linux_newuname_t).
|
39799 |
30-Sep-1998 |
jfieber |
Add several missing ioctl handlers. One needed by Sybase, the others found while looking for the one.
|
39620 |
24-Sep-1998 |
jkh |
MF22: revert time bogon.
|
39598 |
23-Sep-1998 |
jkh |
return time in proper format for linux.
|
39437 |
17-Sep-1998 |
msmith |
Add support for glibc consumers using the new ld-linux.so.2 linker. I can't say this was the most inspired fix, but it matches the design OK.
|
39154 |
14-Sep-1998 |
jdp |
Add provisions for variant core dump file formats, depending on the object format of the executable being dumped. This is the first step toward producing ELF core dumps in the proper format. I will commit the code to generate the ELF core dumps Real Soon Now. In the meantime, ELF executables won't dump core at all. That is probably no less useful than dumping a.out-style core dumps as they have done until now.
Submitted by: Alex <garbanzo@hooked.net> (with very minor changes by me)
|
38679 |
31-Aug-1998 |
jkh |
Argh! *Now* the correct 3.0 fix is committed.
|
38677 |
31-Aug-1998 |
jkh |
Whoops! Stamp out a 2.2-ism that snuck between branches here.
|
38672 |
31-Aug-1998 |
jkh |
Initial support for using linux X servers under emulation - to use an XFree86 server, users need to create the following links in their /compat/linux/dev directory (assuming kernel configured with 4 VTs).
lrwxrwxrwx 1 root wheel 7 Aug 30 22:59 tty0 -> console lrwxrwxrwx 1 root wheel 5 Aug 30 22:45 tty1 -> ttyv0 lrwxrwxrwx 1 root wheel 5 Aug 30 22:45 tty2 -> ttyv1 lrwxrwxrwx 1 root wheel 5 Aug 30 22:45 tty3 -> ttyv2 lrwxrwxrwx 1 root wheel 5 Aug 30 22:45 tty4 -> ttyv3
VT switching is still not yet supported. Attempting to switch VT currently will cause Xserver bus error.
Submitted by: Chain Lee <chain@110.net>
|
38354 |
16-Aug-1998 |
bde |
Use [u]intptr_t instead of [u_]long for casts between pointers and integers. Don't forget to cast to (void *) as well.
|
38344 |
15-Aug-1998 |
bde |
Oops, the previous fix confused Linux's sigset_t with a pointer type. It can be integral or a struct in POSIX, so it is difficult to print, but it is actually declared as unsigned long. Assume that it is unsigned integral.
|
38127 |
05-Aug-1998 |
bde |
Converted the second last instance of hzto() to tvtohz().
Fixed nearby bugs (in linux_alarm()): - the itimer for the alarm was relative to the epoch instead of relative to the boot time. This was harmless because the itimer's interval is 0. - the seconds arg was not checked for validity before converting it to a possibly different value. - printf format errors.
Improvements: Don't use splclock(). splsoftclock() suffices. Don't complicate things by micro-optimizing interrupt latency.
Minor improvements: Various micro-optimizations to exploit the specialness of the alarm itimer and the value 0.
|
37950 |
29-Jul-1998 |
bde |
Fixed print format errors.
|
37949 |
29-Jul-1998 |
bde |
Fixed printf format errors.
Use offsetof() instead of null pointer hacks. Use a home made offsetof() because including <stddef.h> is not permitted in LKMs.
|
37548 |
10-Jul-1998 |
jkh |
Quick and dirty support for Linux's mremap. Not used by anything but quake2 AFAIK.
Submitted by: Luoqi Chen <luoqi@watermarkgroup.com>
|
37287 |
30-Jun-1998 |
jmg |
remove option LINUX as it did nothing, add DEBUG_LINUX to debug the linux emulation...
(actually moved LINUX to opt_dontuse.h)
|
36783 |
09-Jun-1998 |
bde |
Updated generated files.
|
36781 |
09-Jun-1998 |
bde |
Include "opt_compat.h" explicitly instead of depending on makesyscalls.sh generating it as pollution.
Don't attempt to separate the includes by newlines. makesyscalls.sh just ignores newlines.
|
36771 |
08-Jun-1998 |
bde |
Updated generated files.
|
36735 |
07-Jun-1998 |
dfr |
This commit fixes various 64bit portability problems required for FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change.
The prototype FreeBSD/alpha machdep will follow in a couple of days time.
|
36587 |
02-Jun-1998 |
jkh |
".. x11amp appears to be calling shmctl(id, IPC_RMID, 0) and the emulation layer does not like the null shmid_ds buffer pointer. The emulation layer returned an error without ever calling FreeBSD's shmctl, so the segments were not being deleted when the reference count went to zero."
Submitted by: Kevin Street <street@iname.com>
|
36119 |
17-May-1998 |
phk |
s/nanoruntime/nanouptime/g s/microruntime/microuptime/g
Reviewed by: bde
|
35820 |
07-May-1998 |
eivind |
Unbotch whitespace and change switch with two cases to if.
Noticed by: bde
|
35496 |
28-Apr-1998 |
eivind |
Translate T_PROTFLT to SIGSEGV instead of SIGBUS when running under Linux emulation. This make Allegro Common Lisp 4.3 work under FreeBSD!
Submitted by: Fred Gilham <gilham@csl.sri.com> Commented on by: bde, dg, msmith, tg Hoping he got everything right: eivind
|
35178 |
13-Apr-1998 |
sos |
Added EIDRM & ENOMSG to errno translation table.
|
35058 |
06-Apr-1998 |
phk |
Make a kernel version of the timer* functions called timerval* to be more consistent.
OK'ed by: bde
|
35034 |
04-Apr-1998 |
phk |
Use microruntime() rather than doing it by hand.
|
34961 |
30-Mar-1998 |
phk |
Eradicate the variable "time" from the kernel, using various measures. "time" wasn't a atomic variable, so splfoo() protection were needed around any access to it, unless you just wanted the seconds part.
Most uses of time.tv_sec now uses the new variable time_second instead.
gettime() changed to getmicrotime(0.
Remove a couple of unneeded splfoo() protections, the new getmicrotime() is atomic, (until Bruce sets a breakpoint in it).
A couple of places needed random data, so use read_random() instead of mucking about with time which isn't random.
Add a new nfs_curusec() function.
Mark a couple of bogosities involving the now disappeard time variable.
Update ffs_update() to avoid the weird "== &time" checks, by fixing the one remaining call that passwd &time as args.
Change profiling in ncr.c to use ticks instead of time. Resolution is the same.
Add new function "tvtohz()" to avoid the bogus "splfoo(), add time, call hzto() which subtracts time" sequences.
Reviewed by: bde
|
34942 |
29-Mar-1998 |
peter |
regenerate
|
34941 |
29-Mar-1998 |
peter |
The linux chown syscall is more like lchown, a new chown syscall that follows links was added.
|
34939 |
29-Mar-1998 |
peter |
Patch up some space/tab problems. It looks like some of this came from an xterm via cut/paste. No other changes apart from whitespace.
|
34937 |
29-Mar-1998 |
peter |
Add in placeholders for the newer linux syscalls
|
34925 |
28-Mar-1998 |
dufault |
Finish _POSIX_PRIORITY_SCHEDULING. Needs P1003_1B and _KPOSIX_PRIORITY_SCHEDULING options to work. Changes:
Change all "posix4" to "p1003_1b". Misnamed files are left as "posix4" until I'm told if I can simply delete them and add new ones;
Add _POSIX_PRIORITY_SCHEDULING system calls for FreeBSD and Linux;
Add man pages for _POSIX_PRIORITY_SCHEDULING system calls;
Add options to LINT;
Minor fixes to P1003_1B code during testing.
|
34924 |
28-Mar-1998 |
bde |
Moved some #includes from <sys/param.h> nearer to where they are actually used.
|
34552 |
13-Mar-1998 |
jb |
Added a null entry for sysmk that is generated by makesyscalls.sh.
Gee, I wish there was a better way to run makesyscalls.sh so that a make world finds missing things like this. Running it manually sucks.
Pointed out by: Peter Dufault
|
33821 |
25-Feb-1998 |
bde |
Removed redundant test against MAXDSIZ (the rlimit test is stronger).
|
33313 |
13-Feb-1998 |
bde |
Staticized.
|
33233 |
11-Feb-1998 |
eivind |
De-staticize enough to make all the LKMs work again. Add comments where deemed relevant.
|
33181 |
09-Feb-1998 |
eivind |
Staticize.
|
33148 |
07-Feb-1998 |
msmith |
In the words of the submitter:
---- I've worked to enhance the connect() patches.
I've just tested this with the Linux JDK appletviewer on an applet that does a lot of connects, and it works as well as during my previous tests.
The connect() patch is now a merge between my older patch and the OpenBSD stuff. It ensures that any async error is returned by connect() instead of getsockopt(SOL_SOCKET, SO_ERROR) as reasonnable systems do.
There are also minor patches to implement IPPROTO_TCP for get/setsocktopt(). These are also tested (with Linux Apache). ----
I would appreciate any feedback regarding these changes, as they'd be very useful in 2.2.6.
Submitted by: pb@fasterix.freenix.org (Pierre Beyssac)
|
33134 |
06-Feb-1998 |
eivind |
Back out DIAGNOSTIC changes.
|
33108 |
04-Feb-1998 |
eivind |
Turn DIAGNOSTIC into a new-style option.
|
32991 |
01-Feb-1998 |
bde |
Declare printf() instead of including <stdio.h>, so that this doesn't depend on anything outside of the "sys" tree.
|
32266 |
05-Jan-1998 |
jmb |
sigh....forgot to update the DEBUG printf to show both the path and the length args to linux emulation truncate()
Submitted by: jmb
|
32265 |
05-Jan-1998 |
jmb |
length argument to truncate() in linux emulation was not being set copied to the bsd arguments.. frequently, resulting in files of over 100MB of NULs
PR: 386/5044 Reviewed by: jmb Submitted by: (Richard Winkel) rich@math.missouri.edu
|
31796 |
17-Dec-1997 |
kato |
Regenerate (fix argument of linux_nice).
|
31795 |
17-Dec-1997 |
kato |
I should not edit linux_prot.h directly. Fix the argument of linux_nice.
Pointed out by: Eivind Eklund <eivind@FreeBSD.ORG> NOPROTO LINUX { int getpgrp(void); } 66 NOPROTO LINUX { int setsid(void); } 67 STD LINUX { int linux_sigaction(int sig, \ struct linux_sigaction *nsa, \ struct linux_sigaction *osa); } 68 STD LINUX { int linux_siggetmask(void); } 69 STD LINUX { int linux_sigsetmask(linux_sigset_t mask); } 70 NOPROTO LINUX { int setreuid(int ruid, int euid); } 71 NOPROTO LINUX { int setregid(int rgid, int egid); } 72 STD LINUX { int linux_sigsuspend(int restart, \ linux_sigset_t oldmask, linux_sigset_t mask); } 73 STD LINUX { int linux_sigpending(linux_sigset_t *mask); } 74 NOPROTO LINUX { int osethostname(char *hostname, \ u_int len);} 75 NOPROTO LINUX { int osetrlimit(u_int which, \ struct ogetrlimit *rlp); } 76 NOPROTO LINUX { int ogetrlimit(u_int which, \ struct ogetrlimit *rlp); } 77 NOPROTO LINUX { int getrusage(int who, struct rusage *rusage); } 78 NOPROTO LINUX { int gettimeofday(struct timeval *tp, \ struct timezone *tzp); } 79 NOPROTO LINUX { int settimeofday(struct timeval *tp, \ struct timezone *tzp); } 80 NOPROTO LINUX { int getgroups(u_int gidsetsize, gid_t *gidset); } 81 NOPROTO LINUX { int setgroups(u_int gidsetsize, gid_t *gidset); } 82 STD LINUX { int linux_select(struct linux_select_argv *ptr); } 83 STD LINUX { int linux_symlink(char *path, char *to); } 84 NOPROTO LINUX { int ostat(char *path, struct ostat *up); } 85 STD LINUX { int linux_readlink(char *name, char *buf, \ int count); } 86 STD LINUX { int linux_uselib(char *library); } 87 NOPROTO LINUX { int swapon(char *name); } 88 NOPROTO LINUX { int reboot(int opt); } 89 STD LINUX { int linux_readdir(int fd, struct linux_dirent *dent, \ unsigned int count); } 90 STD LINUX { int linux_mmap(struct linux_mmap_argv *ptr); } 91 NOPROTO LINUX { int munmap(caddr_t addr, int len); } 92 STD LINUX { int linux_truncate(char *path, long length); } 93 NOPROTO LINUX { int oftruncate(int fd, long length); } 94 NOPROTO LINUX { int fchmod(int fd, int mode); } 95 NOPROTO LINUX { int fchown(int fd, int uid, int gid); } 96 NOPROTO LINUX { int getpriority(int which, int who); } 97 NOPROTO LINUX { int setpriority(int which, int who, int prio); } 98 NOPROTO LINUX { int profil(caddr_t samples, u_int size, \ u_int offset, u_int scale); } 99 STD LINUX { int linux_statfs(char *path, \ struct linux_statfs_buf *buf); } 100 STD LINUX { int linux_fstatfs(int fd, \ struct linux_statfs_buf *buf); } 101 STD LINUX { int linux_ioperm(unsigned int lo, \ unsigned int hi, int val); } 102 STD LINUX { int linux_socketcall(int what, void *args); } 103 STD LINUX { int linux_ksyslog(int what); } 104 STD LINUX { int linux_setitimer(u_int which, \ struct itimerval *itv, struct itimerval *oitv); } 105 STD LINUX { int linux_getitimer(u_int which, \ struct itimerval *itv); } 106 STD LINUX { int linux_newstat(char *path, \ struct linux_newstat *buf); } 107 STD LINUX { int linux_newlstat(char *path, \ struct linux_newstat *buf); } 108 STD LINUX { int linux_newfstat(int fd, struct linux_newstat *buf); } 109 STD LINUX { int linux_uname(struct linux_old_utsname *up); } 110 STD LINUX { int linux_iopl(int level); } 111 STD LINUX { int linux_vhangup(void); } 112 STD LINUX { int linux_idle(void); } 113 STD LINUX { int linux_vm86(void); } 114 STD LINUX { int linux_wait4(int pid, int *status, \ int options, struct rusage *rusage); } 115 STD LINUX { int linux_swapoff(void); } 116 STD LINUX { int linux_sysinfo(void); } 117 STD LINUX { int linux_ipc(int what, int arg1, int arg2, int arg3, \ caddr_t ptr); } 118 NOPROTO LINUX { int fsync(int fd); } 119 STD LINUX { int linux_sigreturn(struct linux_sigcontext *scp); } access
|
31784 |
16-Dec-1997 |
eivind |
Make hidden COMPAT_43 dependencies explict. Options in headers is a pain in the backside.
|
31778 |
16-Dec-1997 |
eivind |
Make COMPAT_43 and COMPAT_SUNOS new-style options.
|
31730 |
15-Dec-1997 |
msmith |
As described by the submitter:
These patches enables us to play quake2 .
Support linux keyboard ioctl for setting RAW, MEDIUMRAW and XLATE.
Support linux virtual terminal operations: OPENQRY, GETMODE, SETMODE, GETSTATE, ACTIVATE, and WAITACTIVE.
Submitted by: Amancio Hasty <hasty@rah.star-gate.com>
|
31711 |
14-Dec-1997 |
msmith |
As described by the submitter:
- emulate Linux IP_HDRINCL behaviour in sendto(): byte order fixed Note that we do an extra getsockopt() on every sendto() to check if the option is set because we don't keep state in the emulator code. Is there a better way to implement this? - correct a bug (value of "name" not passed) with getsockopt()
Submitted by: pb@fasterix.freenix.org (Pierre Beyssac)
|
31561 |
05-Dec-1997 |
bde |
Don't include <sys/lock.h> in headers when only `struct simplelock' is required. Fixed everything that depended on the pollution.
|
31198 |
17-Nov-1997 |
ahasty |
Added support for linux sound ioctls: LINUX_SNDCTL_DSP_GETOPTR LINUX_SNDCTL_DSP_GETIPTR LINUX_SNDCTL_DSP_SETTRIGGER LINUX_SNDCTL_DSP_GETCAPS
With this rev level the linux realaudio player 5 and xquake should work.
|
30994 |
06-Nov-1997 |
phk |
Move the "retval" (3rd) parameter from all syscall functions and put it in struct proc instead.
This fixes a boatload of compiler warning, and removes a lot of cruft from the sources.
I have not removed the /*ARGSUSED*/, they will require some looking at.
libkvm, ps and other userland struct proc frobbing programs will need recompiled.
|
30855 |
30-Oct-1997 |
kato |
Securelevel and formatting fixes, and trapframe simplification.
Reviewed by: sos Submitted by: bde
|
30837 |
29-Oct-1997 |
kato |
Implement linux_iopl and linux_nice.
|
30804 |
28-Oct-1997 |
kato |
Implement linux_semop, linux_semget and linux_semctl.
PR: 4355
|
29679 |
21-Sep-1997 |
gibbs |
Update for changes in the callout interface.
|
28988 |
01-Sep-1997 |
bde |
Removed unused #includes (<machine/cpu.h> now gives more pollution).
|
28763 |
25-Aug-1997 |
bde |
Fixed misplaced declaration.
|
28762 |
25-Aug-1997 |
bde |
Minor formatting and style fixes.
|
28496 |
21-Aug-1997 |
charnier |
Revert my previous commit about using CS_SECURE macro. Requested by: Bruce.
|
28359 |
18-Aug-1997 |
charnier |
Use CS_SECURE macro. Reviewed by: John Dyson
|
28039 |
10-Aug-1997 |
sos |
Ops the arguments to copyin was in the wrong order.. This has survived since the first version, sigh.
|
27557 |
20-Jul-1997 |
bde |
Removed unused #includes.
|
27556 |
20-Jul-1997 |
bde |
Fixed data+bss limit (use the current rlimit instead of MAXDSIZ).
|
26378 |
02-Jun-1997 |
dfr |
Make this thing actually compile.
|
26369 |
02-Jun-1997 |
msmith |
Grr. Remove not-ready LDT modification fluff that also crept in with the last commit.
|
26366 |
02-Jun-1997 |
msmith |
Oops, remove some bogus debugging code that crept in with the last commit.
|
26364 |
02-Jun-1997 |
msmith |
Add support for the SIOCGIFHWADDR ioctl, commonly used by license managers to obtain the host's ethernet address as a key.
Note that this implementation takes the first hardware address for the first ethernet interface found, and disregards the interface name that may be passed in, as linux ethernet devices are all "ethX".
|
25553 |
07-May-1997 |
peter |
md_regs is a struct trapframe * now, not int []
|
25219 |
28-Apr-1997 |
msmith |
Always include PROT_READ for Linux mmap operations. Submitted by: Hannu Savolainen <hannu@voxware.pp.fi> via jkh
|
24848 |
13-Apr-1997 |
dyson |
Fully implement vfork. Vfork is now much much faster than even our fork. (On my machine, fork is about 240usecs, vfork is 78usecs.)
Implement rfork(!RFPROC !RFMEM), which allows a thread to divorce its memory from the other threads of a group.
Implement rfork(!RFPROC RFCFDG), which closes all file descriptors, eliminating possible existing shares with other threads/processes.
Implement rfork(!RFPROC RFFDG), which divorces the file descriptors for a thread from the rest of the group.
Fix the case where a thread does an exec. It is almost nonsense for a thread to modify the other threads address space by an exec, so we now automatically divorce the address space before modifying it.
|
24746 |
09-Apr-1997 |
bde |
Regenerate (removed unused #includes in linux_sysent.c).
|
24745 |
09-Apr-1997 |
bde |
Removed unused #includes.
|
24672 |
06-Apr-1997 |
dfr |
Remove dependancy on UFS' DIRBLKSIZ definition.
2.2 candidate.
Submitted by: bde
|
24654 |
05-Apr-1997 |
dfr |
Fix linux_getdents so that it can cope with filesystems which translate the directory format (ext2fs, cd9660). For these filesystems, it must use cookies to find the correct offset to use for subsequent reads. Without it, linux /bin/ls tends to loop re-reading the same block over and over again.
2.2 candidate.
|
24478 |
01-Apr-1997 |
bde |
Removed potentially harmful garbage <vm/lock.h> and fixed bogus use of it. It was actually harmless because the use was null due to fortuitous include orders and identical (wrong) idempotency macros.
|
24383 |
29-Mar-1997 |
peter |
Renerate (some include files were changed)
|
24375 |
29-Mar-1997 |
peter |
Be consistant with the other syscall makefile's handling of the default target (ie: don't do anything accidently)
|
24370 |
29-Mar-1997 |
peter |
Fix the warning when compiling the SYSINIT hook due to function types.
|
24369 |
29-Mar-1997 |
peter |
Forgot $Id$, break a long line
|
24368 |
29-Mar-1997 |
peter |
Add a Makefile for regenerating the syscall tables
|
24205 |
24-Mar-1997 |
bde |
Don't include <sys/ioctl.h> in the kernel. Stage 3: include <sys/filio.h> instead of <sys/ioctl.h> in non-network non-tty files.
|
24203 |
24-Mar-1997 |
bde |
Don't include <sys/ioctl.h> in the kernel. Stage 1: don't include it when it is not used. In most cases, the reasons for including it went away when the special ioctl headers became self-sufficient.
|
24131 |
23-Mar-1997 |
bde |
Don't #include <sys/fcntl.h> in <sys/file.h> if KERNEL is defined. Fixed everything that depended on getting fcntl.h stuff from the wrong place. Most things don't depend on file.h stuff at all.
|
22975 |
22-Feb-1997 |
peter |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
22543 |
10-Feb-1997 |
mpp |
Make this compile again after the Lite2 merge.
VOP_UNLOCK was being called with the wrong mumber of arguments.
Also silenced a -Wall warning.
|
22521 |
10-Feb-1997 |
dyson |
This is the kernel Lite/2 commit. There are some requisite userland changes, so don't expect to be able to run the kernel as-is (very well) without the appropriate Lite/2 userland changes.
The system boots and can mount UFS filesystems.
Untested: ext2fs, msdosfs, NFS Known problems: Incorrect Berkeley ID strings in some files. Mount_std mounts will not work until the getfsent library routine is changed.
Reviewed by: various people Submitted by: Jeffery Hsu <hsu@freebsd.org>
|
21673 |
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
20852 |
23-Dec-1996 |
jkh |
*Ahem* - opt_rlimit.h does not exist in the LKM case. This was another 2.2 build-breaker.. :(
|
20821 |
22-Dec-1996 |
joerg |
Make DFLDSIZ and MAXDSIZ fully-supported options.
"Don't forget to do a ``make depend''" :-)
|
20691 |
19-Dec-1996 |
bde |
Fixed lseek() on named pipes. It always succeeded but should always fail. Broke locking on named pipes in the same way as locking on non-vnodes (wrong errno). This will be fixed later.
The fix involves negative logic. Named pipes are now distinguished from other types of files with vnodes, and there is additional code to handle vnodes and named pipes in the same way only where that makes sense (not for lseek, locking or TIOCSCTTY).
|
20101 |
03-Dec-1996 |
fenner |
Add IP_OPTIONS and the multicast-related setsockopts to the list of IP setsockopts the Linux emulator recognizes.
Explicitly disallow IP_HDRINCL since Linux's handling of raw output is different than BSD's.
Closes PR#kern/2111.
Submitted by: y-nakaga@ccs.mt.nec.co.jp (Yoshihisa NAKAGAWA)
|
19414 |
05-Nov-1996 |
smpatel |
Add audio mixer ioctls. Only writing to the mixer is implemented.
|
19182 |
25-Oct-1996 |
bde |
Declare pointers to signal handling functions in full instead of as sig_t's so that <sys/signal.h> isn't a prerequisite.
|
18959 |
16-Oct-1996 |
sos |
Prepare kernel to take advantage of "branded" ELF binaries.
|
18946 |
15-Oct-1996 |
bde |
Updated #includes to 4.4lite style.
|
18942 |
15-Oct-1996 |
bde |
Removed nested include of <sys/proc.h> from <vm/vm_object.h> and fixed the one place that depended on it. wakeup() is now prototyped in <sys/systm.h> so that it is normally visible.
Added nested include of <sys/queue.h> in <vm/vm_object.h>. The queue macros are a more fundamental prerequisite for <vm/vm_object.h> than the wakeup prototype and previously happened to be included by namespace pollution from <sys/proc.h> or elsewhere.
|
18027 |
03-Sep-1996 |
bde |
Changed type of ni_dirp in `struct namei' from caddr_t to `const char *' so that the compiler can see that it is OK to use const strings in NDINIT(). Some emulators want to use paths of the form "/compat/foo". Removed the casts that hid the non-problem. Didn't fix the missing consts in syscalls.master that hid the non-problem.
|
18024 |
03-Sep-1996 |
bde |
Fixed some more easy cases of const poisoning in the kernel. Cosmetic.
|
17450 |
05-Aug-1996 |
nate |
Fix memory leak bug in the path parsing code which never released it's buffer in certain error conditions. Sync up the code to that in NetBSD where applicable.
Reviewed by: Gary Jennejohn <garyj@munich.netsurf.de> Submitted by: Michael Smith <msmith@atrad.adelaide.edu.au> Obtained from: NetBSD sources
|
16632 |
23-Jun-1996 |
bde |
Removed unused #include. Linux doesn't support SCO consoles.
|
16474 |
18-Jun-1996 |
dyson |
Clean-up the new VM map procfs code, and also add support for executable format file "etype". It contains a description of the binary type for a process.
|
16322 |
12-Jun-1996 |
gpalmer |
Clean up -Wunused warnings.
Reviewed by: bde
|
15538 |
02-May-1996 |
phk |
First pass at cleaning up macros relating to pages, clusters and all that.
|
15506 |
01-May-1996 |
jkh |
Include <sys/buf.h> so that this does't blow up with B_WRITE undefined. I fully updated my src tree and did a `make includes' in /usr/src before trying this fix, so I can only presume that Bruce missed something.
|
15494 |
01-May-1996 |
bde |
Removed unnecessary #includes from <sys/imgact.h> so that it is self-sufficient and added explicit #includes where required.
|
15117 |
07-Apr-1996 |
bde |
Removed never-used #includes of <machine/cpu.h>. Many were apparently copied from bad examples.
|
14703 |
19-Mar-1996 |
bde |
Fixed unsigned longs that should have been vm_offset_t.
vm_offset_t is currently unsigned long but should probably be plain unsigned for i386's to match the choice of minimal types to represent for fixed-width types in Lite2. Anyway, it shouldn't be assumed to be unsigned long.
I only fixed the type mismatches that were detected when I changed vm_offset_t to unsigned. Only pointer type mismatches were detected.
|
14655 |
17-Mar-1996 |
peter |
Update the linux_sendsig() handler to the new type of the 4th arg, now unsigned long. This was (harmlessly on i386) conflicting with the recent 4.4Lite2 changes.
|
14584 |
12-Mar-1996 |
peter |
Remove references to MAP_FILE.. That is now "default" and is only a "#define MAP_FILE 0" that is still there for net-2 source compatability.
|
14471 |
10-Mar-1996 |
peter |
Fix the vm_map_remove and vm_map_protect calls.. Somewhere along the line, these had got (start, length) arguments instead of (start, end) args. This could be the cause of Robert Sanders lockups with ZMAGIC binaries.
|
14468 |
10-Mar-1996 |
peter |
Move the elf linux_interp structure from the lkm stub to here so that it can be referenced when the linux emulator is statically compiled into the kernel.
|
14466 |
10-Mar-1996 |
peter |
Implement rudumentry support for the linux TIOC[SG]ETSERIAL ioctl's. To complete this, some extra state has to be kept somewhere so that the B38400 flag in Linux can be correctly translated to/from either 38400, 57600 or 115200.
Submitted by: Robert Sanders <rsanders@mindspring.com>
|
14465 |
10-Mar-1996 |
peter |
Fix the getdents() emulation, the Linux ELF libraries use this, and this code was not quite right (linux has a readdir and getdents syscall, with the same args. readdir only returns one entry and uses a mutant dirent structure. This code was also returning the mutant form for getdents as well. My fault for missing this before.)
|
14463 |
10-Mar-1996 |
peter |
Fix a (mostly harmless) bogon when allocating space above the stack in the stack gap..
|
14456 |
10-Mar-1996 |
sos |
First attempt at FreeBSD & Linux ELF support.
Compile and link a new kernel, that will give native ELF support, and provide the hooks for other ELF interpreters as well.
To make native ELF binaries use John Polstras elf-kit-1.0.1.. For the time being also use his ld-elf.so.1 and put it in /usr/libexec.
The Linux emulator has been enhanced to also run ELF binaries, it is however in its very first incarnation. Just get some Linux ELF libs (Slackware-3.0) and put them in the prober place (/compat/linux/...). I've ben able to run all the Slackware-3.0 binaries I've tried so far. (No it won't run quake yet :)
|
14381 |
04-Mar-1996 |
peter |
update linux_times() and linux_utime() emulation, fix sigsuspend() (actually back out my recent change there) and regen the syscall tables..
|
14380 |
04-Mar-1996 |
peter |
Oops.. I was wrong about the change to sigsuspend. The library interface is different to the syscall under Linux, back this out.
Use correct arg type for linux_utime()
|
14371 |
04-Mar-1996 |
peter |
Add support for LINUX_TCSETAW and LINUX_TCSETAF, which Linux-pine uses.
Submitted by: Robert Sanders <rsanders@mindspring.com>
|
14361 |
03-Mar-1996 |
peter |
Add support for the old-style Linux termio (not termios) TCGETA etc.
Also, LINUX_POSIX_VDISABLE is \0, FreeBSD's is 0xff. Convert between them.
This enables some more programs to run, including the Livingston Portmaster utilities (PMtools).
Submitted by: Robert Sanders <rsanders@mindspring.com>
|
14342 |
02-Mar-1996 |
peter |
Minor touch-up... make two functions static, and add missing $Id$
|
14331 |
02-Mar-1996 |
peter |
Mega-commit for Linux emulator update.. This has been stress tested under netscape-2.0 for Linux running all the Java stuff. The scrollbars are now working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386 machine dependent section into the linux emulator itself. The int 0x80 syscall code was almost identical to the lcall 7,0 code and a minor tweak allows them to both be used with the same C code. All kernels can now just modload the lkm and it'll DTRT without having to rebuild the kernel first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(), readv(), writev(), msync(), personality(). The Linux-ELF libraries want to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in syscalls.. eg: mixups between passing the sigset as an int, vs passing it as a pointer and doing a copyin(), missing return values, unhandled cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately below the top of the stack (below PS_STRINGS). This allows the different binary emulations to have their own signal trampoline code (which gets rid of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so that the emulator can provide the exact "struct sigcontext *" argument to the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which have the same values as the re-used SA_DISABLE and SA_ONSTACK which are intended for sigaction only. This enables the support of a SA_RESETHAND flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the generated init_sysent.c code. It's a lot saner to have it in a seperate file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied to the top of the user's stack, rather than obtaining the trampoline code the old way by getting a clone of the parent's user area. This allows Linux and native binaries to freely exec each other without getting trampolines mixed up.
|
14330 |
02-Mar-1996 |
peter |
A new syscalls table for the Linux emulator. This is processed by makesyscalls.sh to generate the rest of the tables.
|
14114 |
16-Feb-1996 |
peter |
This is an extract of changes from what I am currently running... - Optimise the linux a.out loading and uselib system calls so they take advantage of some of John's recent interface improvements. Basically, this means they make far less map changes than before. - Attempt to plug some potentially nasty kernel_map memory leaks.. - Improve support for QMAGIC libs (I only use QMAGIC (ie: a.out libraries from the slackware 3.0 dist) but this depends on other changes to enhance the /compat/linux support) - uselib goes out through a single exit as part of the resource tracking that I did when closing the resource leaks on errors. This could be cleaner than what I did, but making a 30-deep nested if/else was not my idea of fun, neither did I want to repeat the same code 30 times over for each failure possibility. I guess this function needs to be split into smaller functions to solve this.
I've been running the Linux Netscape-2.0 (with Java) to test this, and apart from the long-standing problem with the missing scrollbars, it appears to still work as before with ZMAGIC libs (and the leaks).. However, I've been using it with mods for the signal trampoline code for native linux stack frames on signals and exterminated the blasted sigreturn printf() problem, so I can't be certain that there is not a dependency on something else.
|
13765 |
30-Jan-1996 |
mpp |
Fix a bunch of spelling errors in the comment fields of a bunch of system include files.
|
13739 |
30-Jan-1996 |
peter |
Call pipe_stat() when presented with a DTYPE_PIPE file in the linux fstat() syscall, rather than panic("linux newfstat").
(Note: I've extracted this from a larger set of diffs, I'm confident I've not missed any dependencies but can't modload it to test it on my system)
|
13503 |
19-Jan-1996 |
dyson |
Fixed vm_map_find for new vm updates.
|
13420 |
14-Jan-1996 |
sos |
Add linux_mknod so that it will do mkfifo if needed...
|
13334 |
08-Jan-1996 |
peter |
reran makesyscalls
Always call the SYSV ipc functions, stubs will take their place if necessary.
|
13264 |
05-Jan-1996 |
wollman |
The Linux emulator depends on SYSV IPC but doesn't actually reference the options.
|
13113 |
30-Dec-1995 |
sos |
Oops, forgot a little difference between my src-tree and ours...
|
13111 |
29-Dec-1995 |
sos |
My first shot at get sound to work on the emulator. Inspired by the work Amancio Hasty has done, but implemented somewhat differently.
|
12867 |
15-Dec-1995 |
peter |
Update linux_ipc.c to use the now generated prototypes for the shm* calls it makes while emulating the linux equivalents.
|
12860 |
15-Dec-1995 |
peter |
Initial attempt at getting Linux QMAGIC shared lib support. I have successfully run linux netscape 2.0b3 with a QMAGIC ld.so and libc/libm that I found on some linux machine that I _think_ is running slackware 3.0.
There are still problems.. ld.so claims the libraries are the wrong format, but it still runs anyway.. :-/ The QMAGIC ld.so also screams about needing ld.so.cache, and running a linux ldconfig is quite educational. You soon learn to run "chroot /compat/linux /bin/ldconfig" where ldconfig is living in /compat/linux/bin. :-]
(Lets just say that it puts loads of symlinks in /usr/lib otherwise :-)
|
12858 |
15-Dec-1995 |
peter |
Clean up some warnings by using the generated structures in <sys/sysproto.h> for passing to the bsd system calls, rather than inveninting our own equivalent structures.
|
12842 |
14-Dec-1995 |
bde |
Restored a vm #include.
|
12689 |
09-Dec-1995 |
peter |
Attempt to make the Linux LKM compile again after the recent VM include de-nesting changes... (I figured this might be usefulif it actually built, since I've told everybody to rebuild it or die.. :-)
|
12680 |
09-Dec-1995 |
peter |
Update the Linux LKM to use the new ps_strings and stack gap arrangements. (note you should recompile the linux and ibcs2 lkms after this)
|
12652 |
06-Dec-1995 |
bde |
Include <vm/vm.h> explicitly to avoid breaking when vnode_if.h doesn't include vm stuff.
|
12458 |
22-Nov-1995 |
bde |
Completed function declarations and added prototypes.
Removed some unnecessary #includes.
Fixed warnings about nested externs.
|
12130 |
06-Nov-1995 |
dg |
All: Changed vnodep -> vp for consistency with the rest of the kernel, and changed iparams -> imgp for brevity.
kern_exec.c: Explicitly initialized some additional parts of the image_params struct to avoid bzeroing it. Rewrote the set-id code to reduce the number of logical tests. The rewrite exposed a mostly benign bug in the algorithm: traced set-id images would get ktracing disabled even if the set-id didn't happen for other reasons.
|
11418 |
10-Oct-1995 |
swallace |
Fix the getdirentries of ibcs2 to handle uneven DIRBLKSIZ offsets. Slight modification from previous fix.
Also, fix problem where an entry would be skipped next call if not enough room in buffer current call.
|
11163 |
04-Oct-1995 |
julian |
Submitted by: Juergen Lock <nox@jelal.hb.north.de> Obtained from: other people on the net ?
1. stepping over syscalls (gdb ni) sends you to DDB, and returned to the wrong address afterwards, with or without DDB. patch in i386/i386/trap.c below.
2. the linux emulator (modload'ed) still causes panics with DIAGNOSTIC, re-applied a patch posted to one of the lists...
|
10358 |
28-Aug-1995 |
julian |
Reviewed by: julian with quick glances by bruce and others Submitted by: terry (terry lambert) This is a composite of 3 patch sets submitted by terry. they are: New low-level init code that supports loadbal modules better some cleanups in the namei code to help terry in 16-bit character support some changes to the mount-root code to make it a little more modular..
NOTE: mounting root off cdrom or NFS MIGHT be broken as I haven't been able to test those cases..
certainly mounting root of disk still works just fine.. mfs should work but is untested. (tomorrows task)
The low level init stuff includes a total rewrite of init_main.c to make it possible for new modules to have an init phase by simply adding an entry to a TEXT_SET (or is it DATA_SET) list. thus a new module can be added to the kernel without editing any other files other than the 'files' file.
|
10355 |
28-Aug-1995 |
swallace |
Modified linux_readdir() function to properly handle Linux readdir() calls with a byte size of 1. This special case was not correctly emulated. Now programs such as a simple 'ls' to a commercial Macintosh emulator called 'executor' will work correctly.
|
10221 |
24-Aug-1995 |
dg |
Moved setting of VTEXT flag into the appropriate image activators. This fixes a bug where linux binaries would get the flag set inappropriately.
|
9313 |
25-Jun-1995 |
sos |
First incarnation of our Linux emulator or rather compatibility code. This first shot only incorporaties so much functionality that DOOM can run (the X version), signal handling is VERY weak, so is many other things. But it meets my milestone number one (you guessed it - running DOOM).
Uses /compat/linux as prefix for loading shared libs, so it won't conflict with our own libs.
Kernel must be compiled with "options COMPAT_LINUX" for this to work.
|