#
296373 |
|
04-Mar-2016 |
marius |
- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1 builds. - Update newvers.sh to reflect RC1. - Update __FreeBSD_version to reflect 10.3. - Update default pkg(8) configuration to use the quarterly branch.
Approved by: re (implicit) |
#
294368 |
|
20-Jan-2016 |
jhb |
MFC 289769,289822,290143,290144: Rename remaining linux32 symbols from linux_* to linux32_*.
289769: Rename remaining linux32 symbols such as linux_sysent[] and linux_syscallnames[] from linux_* to linux32_* to avoid conflicts with linux64.ko. While here, add support for linux64 binaries to systrace. - Update NOPROTO entries in amd64/linux/syscalls.master to match the main table to fix systrace build. - Add a special case for union l_semun arguments to the systrace generation. - The systrace_linux32 module now only builds the systrace_linux32.ko. module on amd64. - Add a new systrace_linux module that builds on both i386 and amd64. For i386 it builds the existing systrace_linux.ko. For amd64 it builds a systrace_linux.ko for 64-bit binaries.
289822: Fix build for the KTR-enabled kernels.
290143: Fix build with DEBUG defined.
290144: Update for LINUX32 rename. The assembler didn't complain about undefined symbols but just used 0 after the rename.
|
#
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
|
#
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.
|
#
293548 |
|
09-Jan-2016 |
dchagin |
MFC r283443:
Put the correct value for the abi_nfdbits parameter of kern_select() for all supported Linuxulators.
|
#
293541 |
|
09-Jan-2016 |
dchagin |
MFC r283437:
To avoid code duplication move open/fcntl definitions to the MI header file.
|
#
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.
|
#
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.
|
#
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.
|
#
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().
|
#
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.
|
#
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)
|
#
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
|
#
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
|
#
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).
|
#
230132 |
|
15-Jan-2012 |
uqs |
Convert files to UTF-8
|
#
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
|
#
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
|
#
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
|
#
218720 |
|
15-Feb-2011 |
dchagin |
For realtime signals fill the sigval value.
|
#
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().
|
#
217991 |
|
27-Jan-2011 |
kib |
linux_sigreturn() loads the struct trapframe from l_sigcontext members, thus making a signed extension of 32 bit register context. If the register is not touched in usermode between return from signal and next syscall entry, the sign-extension part of 64bit register is not cleared, causing linux32_fetch_syscall_args() to read wrong values.
Use unsigned type for the registers in the linux sigcontext.
Reported by: Jacob Frelinger <jacob.frelinger duke edu>, arundel In collaboration with: dchagin MFC after: 1 week
|
#
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.
|
#
193264 |
|
01-Jun-2009 |
dchagin |
Implement accept4 syscall.
Approved by: kib (mentor) MFC after: 1 month
|
#
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
|
#
191989 |
|
11-May-2009 |
dchagin |
Translate l_timeval arg to native struct timeval in linux_setsockopt()/linux_getsockopt() for SO_RCVTIMEO, SO_SNDTIMEO opts as l_timeval has MD members.
Remove bogus __packed attribute from l_timeval struct on __amd64__.
PR: kern/134276 Submitted by: Thomas Mueller <tmueller sysgo com> Approved by: kib (mentor) MFC after: 2 weeks
|
#
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
|
#
190472 |
|
27-Mar-2009 |
ambrisko |
Revert 190445 change to this file restoring: typedef l_long l_off_t; Change l_mmap_argv's to l_ulong for pgoff. This restores prior behaviour to consumers of l_off_t but allows mmap to mmap a 32bit position which a Linux application requires to access SMBIOS data via /dev/mem.
Reviewed by: dchagin Prompted by: rdivacky
|
#
190445 |
|
26-Mar-2009 |
ambrisko |
Add stuff to support upcoming BMC/IPMI flashing of newer Dell machine via the Linux tool. - Add Linux shim to ipmi(4) - Create a partitions file to linprocfs to make Linux fdisk see disks. This file is dynamic so we can see disks come and go. - Convert msdosfs to vfat in mtab since Linux uses that for msdosfs. - In the Linux mount path convert vfat passed in to msdosfs so Linux mount works on FreeBSD. Note that tasting works so that if da0 is a msdos file system /compat/linux/bin/mount /dev/da0 /mnt works. - fix a 64it bug for l_off_t. Grabing sh, mount, fdisk, df from Linux, creating a symlink of mtab to /compat/linux/etc/mtab and then some careful unpacking of the Linux bmc update tool and hacking makes it work on newer Dell boxes. Note, probably if you can't figure out how to do this, then you probably shouldn't be doing it :-)
|
#
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
|
#
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
|
#
185438 |
|
29-Nov-2008 |
kib |
Fix iovec32 for linux32/amd64.
Add a custom version of copyiniov() to deal with the 32-bit iovec pointers from userland (to be used later).
Adjust prototypes for linux_readv() and linux_writev() to use new l_iovec32 definition and to match actual linux code. In particular, use ulong for fd (why ?).
Submitted by: dchagin
|
#
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
|
#
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
|
#
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
|
#
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)
|
#
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.
|
#
166944 |
|
24-Feb-2007 |
netchild |
Partial MFp4 of 114977: Whitespace commit: Fix grammar, spelling and punctuation.
Submitted by: "Scot Hetzel" <swhetzel@gmail.com>
|
#
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
|
#
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.
|
#
164066 |
|
07-Nov-2006 |
jhb |
Add a new 'union l_sigval' to use in place of 'union sigval' in the linux siginfo structure. l_sigval uses a l_uintptr_t for sival_ptr so that sival_ptr is the right size for linux32 on amd64. Since no code currently uses 'lsi_ptr' this is just a cosmetic nit rather than a bug fix.
|
#
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
|
#
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
|
#
161461 |
|
19-Aug-2006 |
netchild |
Get rid of some nested includes.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Noticed by: jhb
|
#
161365 |
|
16-Aug-2006 |
netchild |
Style fixes to comments.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Noticed by: jhb, ssouhlal
|
#
161310 |
|
15-Aug-2006 |
netchild |
Add the linux 2.6.x stuff (not used by default!): - TLS - complete - pid/tid mangling - complete - thread area - complete - futexes - complete with issues - clone() extension - complete with some possible minor issues - mq*/timer*/clock* stuff - complete but untested and the mq* stuff is disabled when not build as part of the kernel with native FreeBSD mq* support (module support for this will come later)
Tested with: - linux-firefox - works, tested - linux-opera - works, tested - linux-realplay - doesnt work, issue with futexes - linux-skype - doesnt work, issue with futexes - linux-rt2-demo - works, tested - linux-acroread - doesnt work, unknown reason (coredump) and sometimes issue with futexes - various unix utilities in linux-base-gentoo3 and linux-base-fc4: everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run sysctl compat.linux.osrelease=2.6.16 to switch back use sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not happen.
Sponsored by: Google SoC 2006 Submitted by: rdivacky Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
|
#
156843 |
|
18-Mar-2006 |
netchild |
regen after COMPAT_43 removal
|
#
133819 |
|
16-Aug-2004 |
tjr |
Add preliminary support for running 32-bit Linux binaries on amd64, enabled with the COMPAT_LINUX32 option. This is largely based on the i386 MD Linux emulations bits, but also builds on the 32-bit FreeBSD and generic IA-32 binary emulation work.
Some of this is still a little rough around the edges, and will need to be revisited before 32-bit and 64-bit Linux emulation support can coexist in the same kernel.
|