History log of /freebsd-current/sys/amd64/linux32/syscalls.master
Revision Date Author Comments
# 427db2c4 15-May-2024 Ricardo Branco <rbranco@suse.de>

linux: Fix linux_mq_notify_args & linux_timer_create_args

Reviewed by: imp, kib
Pull Request: https://github.com/freebsd/freebsd-src/pull/1248


# 5b31cc94 23-Nov-2023 Warner Losh <imp@FreeBSD.org>

sccs: Manual changes

For the uncommon items: Go through the tree and remove sccs tags that
didn't fit any nice pattern. If in the neighborhood, other SCM tags were
removed when they were detritis of long-ago CVS somehow in the early
mists of the project. Some adjacent copyrights stringswere removed (they
duplicated the copyright notices in the file). This also removed
non-standard formations of omission of SCCS tags (usually by adding an
extra #if 0 somewhere.

After this commit, a number of strings tagged with the 'what' @(#)
prefix remain, but they are primarily copyright notices.

Sponsored by: Netflix


# 8e523be5 03-Oct-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Deorbit linux_nosys from syscalls.master

Differential Revision: https://reviews.freebsd.org/D41902
MFC after: 1 week


# 0a16d3d1 24-Sep-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Update syscalls.master to 6.5

MFC after: 1 week


# 5585afe6 20-Aug-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Prepare to retire linux32_copyinuio

MFC after: 1 month


# aad4b799 20-Aug-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Add a writev syscall wrapper

Adding a writev syscall wrapper is needed due to Linux family of write
syscalls doesn't distinguish between in kernel blocking operations
and always returns EAGAIN while FreeBSD can return ENOBUFS.

MFC after: 1 month


# 510f5c88 20-Aug-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Modify write syscall to match Linux

Adding a write syscall wrapper is needed due to Linux family of write
syscalls doesn't distinguish between in kernel blocking operations
and always returns EAGAIN while FreeBSD can return ENOBUFS.

MFC after: 1 month


# 5068387f 17-Aug-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Use l_off_t type for offset argument in sendfile syscall

The off_t on Linux is a long, so it's non-functional change, just to
avoid confusing future readers.

MFC after: 1 month


# 78d14616 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line bare tag

Remove /^\s*\$FreeBSD\$$\n/


# 1c83154e 04-Aug-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Modify ioprio syscalls to match Linux

MFC after: 1 month


# 41f2c69e 22-Jul-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Modify xattr syscalls to match Linux

MFC after: 1 month


# 8340b034 28-May-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Add a dedicated linux_exec_copyin_args()

Because Linux allows to exec binaries with 0 argc.

Reviewed by: brooks
Differential Revision: https://reviews.freebsd.org/D40148
MFC after: 2 month


# ca3333dd 28-Apr-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Use Linux dev_t type for mknod syscalls dev argument

As of version 2.6.0 of the Linux kernel, dev_t is a 32-bit unsigned integer
on all platforms. Prior the 2.6 kernel dev_t type was an unsigned short.
However, since the firs commit of the Linuxulator, mknod syscall get int dev
argument.
Also, there is some confusion here, while the kernel declares a dev_t type
as a 32-bit sized, the user-space dev_t type can be size of 64 bits, e.g.,
in the Glibc library.
To avoid confusion and to help porting of the Linuxulator to other platforms
use explicit l_dev_t for dev argument of mknod syscalls.


# 2370c732 28-Apr-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Update syscalls.master to reflect struct l_old_stat


# 559b94a1 20-Apr-2023 Warner Losh <imp@FreeBSD.org>

syscall.master: Fix comments

Have more accruate comments. While #if, #else, etc are copied to the
header files, lines that don't start with # are not. And #include files
are only output to sysinc (which winds up at the front of init_sysent.c
which seems a bit odd). This is all radically undocumented, and likely
has drifted somewhat from 4.4BSD and what other systems do (they've
drifted too, fwiw).

Sponsored by: Netflix


# 1c27dce1 04-Apr-2023 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Modify close_range syscall to match Linux

MFC after: 2 weeks


# bfae7fba 09-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Fix 039e98e6.

The patch was about an year in my local queue and I still screwed up...

MFC after: 2 weeks


# 039e98e6 09-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change prctl syscall definition to match Linux actual one.

Otherwise argX conversion leads to an unexpected behaviour.

MFC after: 2 weeks


# 94f5f150 08-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Fix ppoll_time64 syscall definition.

Fixed my typo in ed61e0ce1d. Here tsp is a pointer to the 64-bit timespec.

MFC after: 2 weeks


# f19c4e23 06-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change semtimedop syscall definition to match Linux actual one.

MFC after: 2 weeks


# 17ccda00 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change recvmmsg_time64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# 16aefe5b 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change timerfd_gettime64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# 8545bcff 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change timerfd_settime64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# 1508b1b6 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change timer_settime64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# ccec9603 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change timer_gettime64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# 7b520c0b 04-May-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change sched_rr_get_interval_time64 syscall definition to match Linux actual one.

MFC after: 2 weeks


# 81b0b7dc 26-Apr-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change epoll_pwait2 syscall definition to match Linux actual one.

MFC after: 2 weeks


# f202f35d 26-Apr-2022 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change rseq syscall definition to match Linux actual one.

MFC after: 2 weeks


# 17913b0b 12-Aug-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement clone3 system call.

clone3 system call is used by glibc-2.34.

Differential revision: https://reviews.freebsd.org/D31475
MFC after: 2 weeks


# f1c45049 12-Aug-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change clone syscall definition to match Linux actual one.

Differential revision: https://reviews.freebsd.org/D31473
MFC after: 2 weeks


# 13d79be9 12-Aug-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement faccessat2 system call.

It's used by bash on arm64 with glibc-2.32.

Reviewed by: trasz
Differential Revision: https://reviews.freebsd.org/D31345
MFC after: 2 weeks


# 2eff670f 21-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement poll system call via linux_common_ppol()
for the sake of converting events to/from native.

MFC after: 2 weeks


# ed61e0ce 10-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement ppoll_time64 system call.

MFC after: 2 weeks


# f6d075ec 10-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement pselect6_time64 system call.

MFC after: 2 weeks


# db4a1f33 10-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement rt_sigtimedwait_time64 system call.

It still does not work as intended, awaits D30675.

MFC after: 2 weeks


# 2e46d0c3 10-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement futex_time64 system call.

MFC after: 2 weeks


# 3c1de151 10-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Change Linux futex syscall definition to match Linux actual one.

MFC after: 2 weeks


# 0f8dab45 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Fix timeout parameter of rt_sigtimedwait syscall, which is
timespec not a timeval.

MFC after: 2 weeks


# 6501370a 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement clock_nanosleep_time64 system call.

MFC after: 2 weeks


# 187715a4 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement clock_getres_time64 system call.

MFC after: 2 weeks


# 19f9a0e4 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement clock_settime64 system call.

MFC after: 2 weeks


# 99b6f430 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement clock_gettime64 system call.

MFC after: 2 weeks


# e4bffb80 06-Jun-2021 Dmitry Chagin <dchagin@FreeBSD.org>

linux(4): Implement utimensat_time64 system call.

MFC after: 2 weeks


# 6d926e85 28-May-2021 Edward Tomasz Napierala <trasz@FreeBSD.org>

linux: add new syscall numbers

Sponsored By: EPSRC
Differential Revision: https://reviews.freebsd.org/D30193


# de774e42 17-Nov-2020 Conrad Meyer <cem@FreeBSD.org>

linux(4): Implement name_to_handle_at(), open_by_handle_at()

They are similar to our getfhat(2) and fhopen(2) syscalls.

Differential Revision: https://reviews.freebsd.org/D27111


# 8d1d0171 18-Jul-2020 Edward Tomasz Napierala <trasz@FreeBSD.org>

Add a trivial linux(4) splice(2) implementation, which simply
returns EINVAL. Fixes grep (grep-3.1-2build1).

PR: kern/218699
Reported by: avos
Reviewed by: emaste
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25636


# 308e194c 27-Jun-2020 Edward Tomasz Napierala <trasz@FreeBSD.org>

Add proper types for linux message queue syscalls; mostly taken
from 32-bit Linuxulator.

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25386


# 36507f85 27-Jun-2020 Edward Tomasz Napierala <trasz@FreeBSD.org>

Add syscall definitions for linux xattr syscalls.

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25387


# 5ac26742 21-Jun-2020 Edward Tomasz Napierala <trasz@FreeBSD.org>

Adapt linuxulator syscalls.master files to the new layout.
No functional changes.

Reviewed by: brooks
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25381


# 52c81be1 20-Jun-2020 Edward Tomasz Napierala <trasz@FreeBSD.org>

Add linux_madvise(2) instead of having Linux apps call the native
FreeBSD madvise(2) directly. While some of the flag values match,
most don't.

PR: kern/230160
Reported by: markj
Reviewed by: markj
Discussed with: brooks, kib
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25272


# fc7510ae 05-Feb-2020 Ed Maste <emaste@FreeBSD.org>

linuxulator: implement sendfile

Submitted by: Bora Özarslan <borako.ozarslan@gmail.com>
Submitted by: Yang Wang <2333@outlook.jp>
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D19917


# 149afbf3 21-Jan-2020 Mark Johnston <markj@FreeBSD.org>

Fix 64-bit syscall argument fetching in 32-bit Linux syscall handlers.

The Linux32 system call argument fetcher places each argument (passed in
registers in the Linux x86 system call convention) into an entry in the
generic system call args array. Each member of this array is 8 bytes
wide, so this approach is broken for system calls that take off_t
arguments.

Fix the problem by splitting l_loff_t arguments in the 32-bit system
call descriptions, the same as we do for FreeBSD32. Change entry points
to handle this using the PAIR32TO64 macro.

Move linux_ftruncate64() into compat/linux.

PR: 243155
Reported by: Alex S <iwtcex@gmail.com>
Reviewed by: kib (previous version)
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D23210


# a8bfc7a8 31-Dec-2019 Edward Tomasz Napierala <trasz@FreeBSD.org>

Fix definitions for Linux getcpu(2).

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation


# 0610f417 14-Dec-2019 Edward Tomasz Napierala <trasz@FreeBSD.org>

Fix definitions for linuxulator's sync_file_range(2).

Reviewed by: brooks, emaste
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D22371


# 427b1bae 10-Sep-2019 Ed Maste <emaste@FreeBSD.org>

make linux_renameat2 args consistent with linux_renameat

Use 'dfd' consistently for a directory fd.


# c034ecf3 23-Apr-2019 Dmitry Chagin <dchagin@FreeBSD.org>

Since r339624 HEAD does not need for backslashes in syscalls.master,
however to make a merge r345471 to the stable add backslashes
to the syscalls.master.

MFC after: 3 days


# f730d606 24-Mar-2019 Dmitry Chagin <dchagin@FreeBSD.org>

Update syscall.master to 5.0.

For 32-bit Linuxulator, ipc() syscall was historically
the entry point for the IPC API. Starting in Linux 4.18, direct
syscalls are provided for the IPC. Enable it.

MFC after: 1 month


# 7dabf89b 24-Mar-2019 Dmitry Chagin <dchagin@FreeBSD.org>

Linux between 4.18 and 5.0 split IPC system calls.
In preparation for doing this in the Linuxulator modify our linux_shmat()
to match actual Linux shmat() system call.

MFC after: 1 month


# 6469bdcd 06-Apr-2018 Brooks Davis <brooks@FreeBSD.org>

Move most of the contents of opt_compat.h to opt_global.h.

opt_compat.h is mentioned in nearly 180 files. In-progress network
driver compabibility improvements may add over 100 more so this is
closer to "just about everywhere" than "only some files" per the
guidance in sys/conf/options.

Keep COMPAT_LINUX32 in opt_compat.h as it is confined to a subset of
sys/compat/linux/*.c. A fake _COMPAT_LINUX option ensure opt_compat.h
is created on all architectures.

Move COMPAT_LINUXKPI to opt_dontuse.h as it is only used to control the
set of compiled files.

Reviewed by: kib, cem, jhb, jtl
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D14941


# 315fbaec 23-Feb-2018 Ed Maste <emaste@FreeBSD.org>

Correct pseudo misspelling in sys/ comments

contrib code and #define in intel_ata.h unchanged.


# eae594f7 21-Feb-2018 Ed Maste <emaste@FreeBSD.org>

Correct proper nouns in the Linuxulator

- Capitalize Linux
- Spell FreeBSD out in full
- Address some style(9) on changed lines

Sponsored by: Turing Robotic Industries Inc.


# 132f90c6 05-Feb-2018 Ed Maste <emaste@FreeBSD.org>

Linuxolator whitespace cleanup

A version of each of the MD files by necessity exists for each CPU
architecture supported by the Linuxolator. Clean these up so that new
architectures do not inherit whitespace issues.

Clean up shared Linuxolator files while here.

Sponsored by: Turing Robotic Industries Inc.


# 5cd667e6 28-Nov-2017 Brooks Davis <brooks@FreeBSD.org>

Disable vim syntax highlighting.

Vim's default pick doesn't understand that ';' is a comment character
and the result looks horrible.

Reviewed by: emaste


# 8049c6bf 06-Mar-2017 Mahdi Mokhtari <mmokhi@FreeBSD.org>

Add UNIMPLEMENTED() placeholder macro for
the syscalls that are not implemented in Linux kernel itself.
Cleanup DUMMY() macros.

Reviewed by: dchagin, trasz
Approved by: dchagin
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D9804


# f8ae1bb6 26-Feb-2017 Dmitry Chagin <dchagin@FreeBSD.org>

Change Linux epoll_pwait syscall definition to match Linux actual one.

MFC after: 1 month


# 1064d53f 26-Feb-2017 Dmitry Chagin <dchagin@FreeBSD.org>

Change Linuxulator timerfd syscalls definition to match actual Linux one.

MFC after: 1 month


# 8b756d40 05-Feb-2017 Dmitry Chagin <dchagin@FreeBSD.org>

Update syscall.master to 4.10-rc6. Also fix comments, a typo,
and wrong numbering for a few unimplemented syscalls.

For 32-bit Linuxulator, socketcall() syscall was historically
the entry point for the sockets API. Starting in Linux 4.3, direct
syscalls are provided for the sockets API. Enable it.

The initial version of patch was provided by trasz@ and extended by me.

Submitted by: trasz
MFC after: 2 week
Differential Revision: https://reviews.freebsd.org/D9381


# 23e8912c 10-Jul-2016 Dmitry Chagin <dchagin@FreeBSD.org>

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.


# 8cc96fb4 21-May-2016 Dmitry Chagin <dchagin@FreeBSD.org>

Correct an argument param of linux_sched_* system calls as a struct l_sched_param
does not defined due to it's nature.

MFC after: 1 week


# 99546279 20-Mar-2016 Dmitry Chagin <dchagin@FreeBSD.org>

Implement fstatfs64 system call.

PR: 181012
Submitted by: John Wehle
MFC after: 1 week


# 037f7508 14-Jan-2016 Gleb Smirnoff <glebius@FreeBSD.org>

Change linux get_robust_list system call to match actual linux one.

The set_robust_list system call request the kernel to record the head
of the list of robust futexes owned by the calling thread. The head
argument is the list head to record.
The get_robust_list system call should return the head of the robust
list of the thread whose thread id is specified in pid argument.
The list head should be stored in the location pointed to by head
argument.

In contrast, our implemenattion of get_robust_list system call copies
the known portion of memory pointed by recorded in set_robust_list
system call pointer to the head of the robust list to the location
pointed by head argument.

So, it is possible for a local attacker to read portions of kernel
memory, which may result in a privilege escalation.

Submitted by: mjg
Security: SA-16:03.linux


# 2f99bcce 22-Oct-2015 John Baldwin <jhb@FreeBSD.org>

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.

Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D3954


# 9802eb9e 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement Linux specific syncfs() system call.


# e1ff74c0 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement recvmmsg() and sendmmsg() system calls.


# 6e4c8004 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement epoll_pwait() system call.


# 19d8b461 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Add utimensat() system call.

The patch developed by Jilles Tjoelker and Andrew Wilcox and
adopted for lemul branch by me.


# fcdffc03 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Call nosys in case when the incorrect syscall number is specified.

Reported by: trinity


# b6aeb7d5 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Add preliminary fallocate system call implementation
to emulate posix_fallocate() function.

Differential Revision: https://reviews.freebsd.org/D1523
Reviewed by: emaste


# a6b40812 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement ppoll() system call.

Differential Revision: https://reviews.freebsd.org/D1105
Reviewed by: trasz


# a31d7686 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement eventfd system call.

Differential Revision: https://reviews.freebsd.org/D1094
In collaboration with: Jilles Tjoelker


# e16fe1c7 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

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@.

Differential Revision: https://reviews.freebsd.org/D1092


# baa232bb 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

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.

Differential Revision: https://reviews.freebsd.org/D1078
Reviewed by: trasz


# ae50b4d7 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement pselect6() system call.

Differential Revision: https://reviews.freebsd.org/D1051
Reviewed by: trasz


# c3978c7b 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement prlimit64() system call.

Differential Revision: https://reviews.freebsd.org/D1050
Reviewed by: emaste, trasz


# 254a937e 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement dup3() system call.

Differential Revision: https://reviews.freebsd.org/D1049
Reviewed by: emaste


# 7ac9766d 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement rt_sigqueueinfo() system call.

Differential Revision: https://reviews.freebsd.org/D1047
Reviewed by: trasz


# e5fe4ccf 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement waitid() system call.

Differential Revision: https://reviews.freebsd.org/D1046


# 2003907d 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Implement a Linux version of sched_getparam() && sched_setparam().
Temporarily use the first thread in proc.

Differential Revision: https://reviews.freebsd.org/D1036
Reviewed by: trasz


# 161acbb6 24-May-2015 Dmitry Chagin <dchagin@FreeBSD.org>

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).

Differential Revision: https://reviews.freebsd.org/D1027
Reviewed by: trasz


# 01610383 01-Jan-2015 Dmitry Chagin <dchagin@FreeBSD.org>

Correct an argument status of wait4 syscall for Linuxulator.

MFC after: 1 week


# 0a041f3b 18-Sep-2014 Bjoern A. Zeeb <bz@FreeBSD.org>

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
MFC after: 3 days
Sponsored by: DARPA, AFRL


# b12698e1 18-Sep-2013 Roman Divacky <rdivacky@FreeBSD.org>

Revert r255672, it has some serious flaws, leaking file references etc.

Approved by: re (delphij)


# 253c75c0 18-Sep-2013 Roman Divacky <rdivacky@FreeBSD.org>

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>


# 520b6a84 25-May-2012 Ed Schouten <ed@FreeBSD.org>

Remove use of non-ISO-C integer types from system call tables.

These files already use ISO-C-style integer types, so make them less
inconsistent by preferring the standard types.


# f69f4d86 16-Apr-2012 Jung-uk Kim <jkim@FreeBSD.org>

Correct an argument type of iopl syscall for Linuxulator. This also fixes
a warning from Clang, i. e., "args->level < 0 is always false".


# db8eb180 16-Apr-2012 Jung-uk Kim <jkim@FreeBSD.org>

Correct arguments of stat64, fstat64 and lstat64 syscalls for Linuxulator.


# d69a426f 16-Apr-2012 Jung-uk Kim <jkim@FreeBSD.org>

- 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


# 048e874f 10-Mar-2012 Alexander Leidinger <netchild@FreeBSD.org>

- 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


# dd01579c 29-Dec-2011 John Baldwin <jhb@FreeBSD.org>

Implement linux_fadvise64() and linux_fadvise64_64() using
kern_posix_fadvise().

Reviewed by: silence on emulation@
MFC after: 2 weeks


# 767a3264 19-Nov-2011 Ed Schouten <ed@FreeBSD.org>

Make the Linux *at() calls a bit more complete.

Properly support:

- AT_EACCESS for faccessat(),
- AT_SYMLINK_FOLLOW for linkat().


# d3a993d4 18-Nov-2011 Ed Schouten <ed@FreeBSD.org>

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'.


# 1f4ec5a3 26-Mar-2011 Andriy Gapon <avg@FreeBSD.org>

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


# 56ede107 12-Mar-2011 Andriy Gapon <avg@FreeBSD.org>

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


# f91ea251 12-Feb-2011 Dmitry Chagin <dchagin@FreeBSD.org>

The fourth argument of linux_clone is a pointer to the TLS. Change clone syscall definition to match actual linux one.


# 8d73c2bf 30-Jan-2011 Dmitry Chagin <dchagin@FreeBSD.org>

Change linux futex syscall definition to match actual linux one.

MFC after: 1 Month.


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# 5d2a6a61 08-Oct-2010 Konstantin Belousov <kib@FreeBSD.org>

Fix typo.

Submitted by: arundel
MFC after: 3 days


# 0b53d156 23-Jul-2010 Konstantin Belousov <kib@FreeBSD.org>

Remove the linux_exec_copyin_args(), freebsd32_exec_copyin_args() may
server as well. COMPAT_FREEBSD32 is a prerequisite for COMPAT_LINUX32.

Reviewed by: alc
MFC after: 3 weeks


# 41f53a36 29-Nov-2008 Konstantin Belousov <kib@FreeBSD.org>

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


# a1b5a895 09-Nov-2008 Ed Schouten <ed@FreeBSD.org>

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


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 4732e446 13-May-2008 Roman Divacky <rdivacky@FreeBSD.org>

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


# 26833f3f 16-Apr-2008 Jung-uk Kim <jkim@FreeBSD.org>

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


# 48b05c3f 08-Apr-2008 Konstantin Belousov <kib@FreeBSD.org>

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


# 5dfb6881 16-Mar-2008 Roman Divacky <rdivacky@FreeBSD.org>

Implement sched_setaffinity and get_setaffinity using
real cpu affinity setting primitives.

Reviewed by: jeff
Approved by: kib (mentor)


# 3ab85269 18-Sep-2007 David Malone <dwmalone@FreeBSD.org>

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)


# b6e645c9 27-Aug-2007 Konstantin Belousov <kib@FreeBSD.org>

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)


# 9c5b213e 29-Mar-2007 Jung-uk Kim <jkim@FreeBSD.org>

MFP4: Linux set_thread_area syscall (aka TLS) support for amd64.

Initial version was submitted by Divacky Roman and mostly rewritten by me.

Tested by: emulation


# 6734f35e 28-Mar-2007 Julian Elischer <julian@FreeBSD.org>

Implement the openat() linux syscall
Submitted by: Roman Divacky (rdivacky@)
MFC after: 2 weeks


# 1e5ed8c1 14-Feb-2007 Jung-uk Kim <jkim@FreeBSD.org>

MFP4: 113033

Port iopl(2) from i386. This fixes LTP iopl01 and iopl02 on amd64.


# c9447c75 31-Dec-2006 Alexander Leidinger <netchild@FreeBSD.org>

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]


# a46b391d 28-Dec-2006 Robert Watson <rwatson@FreeBSD.org>

Assign or clean up audit identifiers for a number of additional Linux
system calls on the amd64 architecture.

Some minor white space tweaks for consistency with other syscalls.master
files.

Obtained from: TrustedBSD Project


# 3680a419 29-Oct-2006 Alexander Leidinger <netchild@FreeBSD.org>

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


# 955d762a 28-Oct-2006 Alexander Leidinger <netchild@FreeBSD.org>

MFP4:
Implement prctl().

Submitted by: rdivacky
Tested with: LTP


# 6a1162d4 15-Oct-2006 Alexander Leidinger <netchild@FreeBSD.org>

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>


# 835e5061 27-Aug-2006 Alexander Leidinger <netchild@FreeBSD.org>

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>


# b4359bd8 14-Aug-2006 Alexander Leidinger <netchild@FreeBSD.org>

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


# af5bf122 28-Jul-2006 John Baldwin <jhb@FreeBSD.org>

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.


# e0b4add8 28-Jul-2006 John Baldwin <jhb@FreeBSD.org>

Various fixes to comments in the syscall master files including removing
cruft from the audit import and adding mention of COMPAT4 to freebsd32.


# be5747d5 11-Jul-2006 John Baldwin <jhb@FreeBSD.org>

- 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.


# ad6d226d 06-Jul-2006 John Baldwin <jhb@FreeBSD.org>

- 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.


# 49d409a1 27-Jun-2006 John Baldwin <jhb@FreeBSD.org>

- 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.


# 597d608f 27-Jun-2006 John Baldwin <jhb@FreeBSD.org>

- 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.


# cf837b89 26-Jun-2006 John Baldwin <jhb@FreeBSD.org>

linux_brk() is MPSAFE.


# 502195ac 20-Jun-2006 Alexander Leidinger <netchild@FreeBSD.org>

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


# c8b579c1 13-Jun-2006 Alexander Leidinger <netchild@FreeBSD.org>

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


# 17138b61 10-May-2006 Alexander Leidinger <netchild@FreeBSD.org>

Implement rt_sigpending in the linuxolator.

PR: 92671
Submitted by: Markus Niemist"o <markus.niemisto@gmx.net>


# 3a192a20 20-Mar-2006 Alexander Leidinger <netchild@FreeBSD.org>

Fix the linuxolator on amd64 (cross-build).


# aefce619 19-Mar-2006 Ruslan Ermilov <ru@FreeBSD.org>

Unbreak COMPAT_LINUX32 option support on amd64.

Broken by: netchild


# 5c8919ad 18-Mar-2006 Alexander Leidinger <netchild@FreeBSD.org>

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)


# 8683e7fd 13-Jul-2005 John Baldwin <jhb@FreeBSD.org>

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


# bc165ab0 08-Jun-2005 Maxim Sobolev <sobomax@FreeBSD.org>

Properly convert FreeBSD priority values into Linux values in the
getpriority(2) syscall.

PR: kern/81951
Submitted by: Andriy Gapon <avg@icyb.net.ua>


# f3596e33 30-May-2005 Robert Watson <rwatson@FreeBSD.org>

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


# e3478fe0 06-Mar-2005 Maxim Sobolev <sobomax@FreeBSD.org>

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>


# ea0fabbc 16-Aug-2004 Tim J. Robbins <tjr@FreeBSD.org>

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.