summaryrefslogtreecommitdiffstats
path: root/sys/compat
Commit message (Collapse)AuthorAgeFilesLines
* MFC 264164: Convert while copying in control messages.marcel2014-08-031-32/+75
| | | | Obtained from: Juniper Networks, Inc.
* MFC r267051:mav2014-07-041-0/+3
| | | | | | - Add support for SG_GET_SG_TABLESIZE IOCTL to report that we don't support scatter/gather lists. - Return error for still unsupported SG 3.x API read/write calls.
* MFC r266981:mav2014-07-023-5/+196
| | | | | | | | | | | | | | | | Overhaul CAM SG driver IOCTL interfaces. Make it really work for native FreeBSD programs. Before this it was broken for years due to different number of pointer dereferences in Linux and FreeBSD IOCTL paths, permanently returning errors to FreeBSD programs. This change breaks the driver FreeBSD IOCTL ABI, making it more strict, but since it was not working any way -- who bother. Add shims for 32-bit programs on 64-bit host, translating the argument of the SG_IO IOCTL for both FreeBSD and Linux ABIs. With this change I was able to run 32-bit Linux sg3_utils tools and simple 32 and 64-bit FreeBSD test tools on both 32 and 64-bit FreeBSD systems.
* MFC r266924:dchagin2014-06-031-31/+40
| | | | | | | | | | | | | | | | | Glibc was switched to the FUTEX_WAIT_BITSET op and CLOCK_REALTIME flag has been added instead of FUTEX_WAIT to replace the FUTEX_WAIT logic which needs to do gettimeofday() calls before the futex syscall to convert the absolute timeout to a relative timeout. Before this the CLOCK_MONOTONIC used by the FUTEX_WAIT_BITSET op. When the FUTEX_CLOCK_REALTIME is specified the timeout is an absolute time, not a relative time. Rework futex_wait to handle this. On the side fix the futex leak in error case and remove useless parentheses. Properly calculate the timeout for the CLOCK_MONOTONIC case. Tested by: Hans Petter Selasky
* MFC r266782:dchagin2014-05-311-13/+16
| | | | | | | | | | | In r218101 I have not changed properly the futex syscall definition. Some Linux futex ops atomically verifies that the futex address uaddr (uval) contains the value val. Comparing signed uval and unsigned val may lead to an unexpected result, mostly to a deadlock. So copyin uaddr to an unsigned int to compare the parameters correctly. While here change ktr records to print parameters in more readable format.
* MFC r263349:kib2014-03-261-22/+27
| | | | Make the array pointed to by AT_PAGESIZES auxv properly aligned.
* MFC r263289: Update NetBSD Foundation copyrights to 2-clause BSDemaste2014-03-244-28/+0
| | | | | | | | | | | The NetBSD Foundation states "Third parties are encouraged to change the license on any files which have a 4-clause license contributed to the NetBSD Foundation to a 2-clause license." This change removes clauses 3 and 4 from copyright / license blocks that list The NetBSD Foundation as the only copyright holder. Sponsored by: The FreeBSD Foundation
* MFC r262539:eadler2014-03-131-0/+22
| | | | | | linprocfs: add support for /sys/kernel/random/uuid PR: kern/186187
* MFC r261080:kib2014-02-061-4/+7
| | | | | | | | | The posix_fallocate(2) syscall should return error number on error, without modifying errno. MFC r261290: The posix_madvise(3) and posix_fadvise(2) should return error on failure, same as posix_fallocate(2).
* MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINEavg2014-01-171-6/+6
|
* MFC: r258718: fix emulated jail_v0 byte orderpeter2013-12-041-1/+1
| | | | Approved by: re (gjb)
* MFC r258661:kib2013-12-031-0/+6
| | | | | | | Add sysctl KERN_PROC_SIGTRAMP to retrieve signal trampoline location for the given process. Approved by: re (gjb)
* Add padding to match the compat32 struct stat32 definition to the realkib2013-10-041-0/+1
| | | | | | | | | struct stat on 32bit architectures. Debugged and tested by: bsam Sponsored by: The FreeBSD Foundation MFC after: 1 week Approved by: re (marius)
* Fix some typos that were causing probe argument types to show up as unknown.markj2013-10-012-2/+2
| | | | | | Reviewed by: rwatson (mac provider) Approved by: re (glebius) MFC after: 1 week
* Regenerate syscall argument strings after r255777.markj2013-09-211-4/+4
| | | | | Approved by: re (gjb) MFC after: 1 week
* Regen.jhb2013-09-195-5/+143
| | | | Approved by: re (delphij)
* Extend the support for exempting processes from being killed when swap isjhb2013-09-193-0/+31
| | | | | | | | | | | | | | | | | | | | | | exhausted. - Add a new protect(1) command that can be used to set or revoke protection from arbitrary processes. Similar to ktrace it can apply a change to all existing descendants of a process as well as future descendants. - Add a new procctl(2) system call that provides a generic interface for control operations on processes (as opposed to the debugger-specific operations provided by ptrace(2)). procctl(2) uses a combination of idtype_t and an id to identify the set of processes on which to operate similar to wait6(). - Add a PROC_SPROTECT control operation to manage the protection status of a set of processes. MADV_PROTECT still works for backwards compatability. - Add a p_flag2 to struct proc (and a corresponding ki_flag2 to kinfo_proc) the first bit of which is used to track if P_PROTECT should be inherited by new child processes. Reviewed by: kib, jilles (earlier version) Approved by: re (delphij) MFC after: 1 month
* Revert r255672, it has some serious flaws, leaking file references etc.rdivacky2013-09-182-622/+0
| | | | Approved by: re (delphij)
* Implement epoll support in Linuxulator. This is a tiny wrapper around kqueuerdivacky2013-09-182-0/+622
| | | | | | | | | | | | | | 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>
* Regenerate for freebsd32_cap_enter().jilles2013-09-175-10/+16
| | | | Approved by: re (hrs)
* Disallow cap_enter() in freebsd32 compatibility mode.jilles2013-09-172-1/+21
| | | | | | | | | | | | | | | | | | | | | | The freebsd32 compatibility mode (for running 32-bit binaries on 64-bit kernels) does not currently allow any system calls in capability mode, but still permits cap_enter(). As a result, 32-bit binaries on 64-bit kernels that use capability mode do not work (they crash after being disallowed to call sys_exit()). Affected binaries include dhclient and uniq. The latter's crashes cause obscure build failures. This commit makes freebsd32 cap_enter() fail with [ENOSYS], as if capability mode was not compiled in. Applications deal with this by doing their work without capability mode. This commit does not fix the uncommon situation where a 64-bit process enters capability mode and then executes a 32-bit binary using fexecve(). This commit should be reverted when allowing the necessary freebsd32 system calls in capability mode. Reviewed by: pjd Approved by: re (hrs)
* Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping usejhb2013-09-093-12/+11
| | | | | | | | | | | | | 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)
* Regenerate after r255219.pjd2013-09-055-112/+34
| | | | Sponsored by: The FreeBSD Foundation
* Change the cap_rights_t type from uint64_t to a structure that we can extendpjd2013-09-0512-70/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add the ability to display the default FIB number for a process to thewill2013-08-261-0/+1
| | | | | | | | | | | | | | | | | | ps(1) utility, e.g. "ps -O fib". bin/ps/keyword.c: Add the "fib" keyword and default its column name to "FIB". bin/ps/ps.1: Add "fib" as a supported keyword. sys/compat/freebsd32/freebsd32.h: sys/kern/kern_proc.c: sys/sys/user.h: Add the default fib number for a process (p->p_fibnum) to the user land accessible process data of struct kinfo_proc. Submitted by: Oliver Fromme <olli@fromme.com>, gibbs
* Give (*ext_free) an int return value allowing for very sophisticatedandre2013-08-252-7/+7
| | | | | | | | external mbuf buffer management capabilities in the future. For now only EXT_FREE_OK is defined with current legacy behavior. Sponsored by: The FreeBSD Foundation
* Regenerate after r254491.pjd2013-08-185-17/+73
|
* The cap_rights_limit(2) system calls needs a wrapper for 32bit binariespjd2013-08-182-2/+28
| | | | | | | | running under 64bit kernels as the 'rights' argument has to be split into two registers or the half of the rights will disappear. Reported by: jilles Sponsored by: The FreeBSD Foundation
* Move the PAIR32TO64() macro and the RETVAL_HI/RETVAL_LO defines to apjd2013-08-182-10/+48
| | | | | | header file for use by other .c files. Sponsored by: The FreeBSD Foundation
* Regenerate after r254481.pjd2013-08-185-22/+36
|
* Implement 32bit versions of the cap_ioctls_limit(2) and cap_ioctls_get(2)pjd2013-08-182-4/+159
| | | | | | | system calls as unsigned longs have different size on i386 and amd64. Reported by: jilles Sponsored by: The FreeBSD Foundation
* Remove a couple of unused macros.markj2013-08-171-5/+0
| | | | MFC after: 3 days
* Regenerate after r254447.pjd2013-08-175-12/+93
| | | | Sponsored by: The FreeBSD Foundation
* Make pdfork(2), pdkill(2) and pdgetpid(2) syscalls available for 32bitpjd2013-08-171-4/+4
| | | | | | binaries running under 64bit kernel. Sponsored by: The FreeBSD Foundation
* Make sendfile() a method in the struct fileops. Currently onlyglebius2013-08-151-10/+16
| | | | | | | | vnode backed file descriptors have this method implemented. Reviewed by: kib Sponsored by: Nginx, Inc. Sponsored by: Netflix
* Replace kernel virtual address space allocation with vmem. This providesjeff2013-08-072-2/+2
| | | | | | | | | | | | | transparent layering and better fragmentation. - Normalize functions that allocate memory to use kmem_* - Those that allocate address space are named kva_* - Those that operate on maps are named kmap_* - Implement recursive allocation handling for kmem_arena in vmem. Reviewed by: alc Tested by: pho Sponsored by: EMC / Isilon Storage Division
* Regenerate.kib2013-07-215-26/+192
|
* Implement compat32 wrappers for the ktimer_* syscalls.kib2013-07-213-5/+84
| | | | | | Reported, reviewed and tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Wrap kmq_notify(2) for compat32 to properly consume struct sigevent32kib2013-07-211-2/+2
| | | | | | | | argument. Reviewed and tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
* The freebsd32_lio_listio() compat syscall takes the struct sigevent32.kib2013-07-211-1/+1
| | | | | Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Move the convert_sigevent32() utility function into freebsd32_misc.ckib2013-07-212-0/+28
| | | | | | | | | | | | for consumption outside the vfs_aio.c. For SIGEV_THREAD_ID and SIGEV_SIGNAL notification delivery methods, also copy in the sigev_value, since librt event pumping loop compares note generation number with the value passed through sigev_value. Tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Cosmetic change, use the same union name on the left and right sideskib2013-07-211-1/+1
| | | | | | | | of the conversion. Tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Regeneratekib2013-07-205-17/+29
|
* id_t is 64bit, provide the compat32 wrapper for clock_getcpuclockid2(2).kib2013-07-202-2/+17
| | | | | | Reported and tested by: Petr Salinger <Petr.Salinger@seznam.cz> PR: threads/180652 Sponsored by: The FreeBSD Foundation
* Add some missing LIBUSB IOCTL conversion codes.hselasky2013-07-142-1/+13
|
* - Move videodev headers from compat/linux to contrib/v4l (cp from vendor andnetchild2013-07-063-1548/+2
| | | | | | | | | | apply diff to compat/linux versions). - The cp implies an update of videodev2.h to the linux kernel 2.6.34.14 one. The update makes video in skype v4 work on FreeBSD. Tested by: Artyom Mirgorodskiy <artyom.mirgorodsky@gmail.com> (update of header only)
* aio_mlock() added:glebius2013-06-085-5/+35
| | | | | - Regen for r251526. - Bump __FreeBSD_version.
* Add new system call - aio_mlock(). The name speaks for itself. It allowsglebius2013-06-081-0/+2
| | | | | | | | to perform the mlock(2) operation, which can consume a lot of time, under control of aio(4). Reviewed by: kib, jilles Sponsored by: Nginx, Inc.
* Relax the vm object locking. Use a read lock.alc2013-06-051-4/+4
| | | | Sponsored by: EMC / Isilon Storage Division
* Add a "kern.features" MIB for 32bit support under a 64bit kernel.obrien2013-05-311-0/+2
|
OpenPOWER on IntegriCloud