#
303975 |
|
11-Aug-2016 |
gjb |
Copy stable/11@r303970 to releng/11.0 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, and rename it to RC1.
Update __FreeBSD_version.
Use the quarterly branch for the default FreeBSD.conf pkg(8) repo and the dvd1.iso packages population.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
302408 |
|
08-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
302094 |
|
22-Jun-2016 |
brooks |
Mark the pipe() system call as COMPAT10.
As of r302092 libc uses pipe2() with a zero flags value instead of pipe().
Commit with regenerated files and implementation to follow.
Approved by: re (gjb) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D6816
|
#
296572 |
|
09-Mar-2016 |
jhb |
Simplify AIO initialization now that it is standard.
- Mark AIO system calls as STD and remove the helpers to dynamically register them. - Use COMPAT6 for the old system calls with the older sigevent instead of an 'o' prefix. - Simplify the POSIX configuration to note that AIO is always available. - Handle AIO in the default VOP_PATHCONF instead of special casing it in the pathconf() system call. fpathconf() is still hackish. - Remove freebsd32_aio_cancel() as it just called the native one directly.
Reviewed by: kib Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D5589
|
#
285388 |
|
11-Jul-2015 |
adrian |
Regenerate syscalls.
|
#
277610 |
|
23-Jan-2015 |
jilles |
Add futimens and utimensat system calls.
The core kernel part is patch file utimes.2008.4.diff from pluknet@FreeBSD.org. I updated the code for API changes, added the manual page and added compatibility code for old kernels. There is also audit and Capsicum support.
A new UTIME_* constant might allow setting birthtimes in future.
Differential Revision: https://reviews.freebsd.org/D1426 Submitted by: pluknet (partially) Reviewed by: delphij, pluknet, rwatson Relnotes: yes
|
#
276654 |
|
04-Jan-2015 |
dchagin |
Indeed, instead of hiding the kern___getcwd() bug by bogus cast in r276564, change path type to char * (pathnames are always char *). And remove bogus casts of malloc(). kern___getcwd() internally doesn't actually use or support u_char * paths, except to copy them to a normal char * path.
These changes are not visible to libc as libc/gen/getcwd.c misdeclares __getcwd() as taking a plain char * path.
While here remove _SYS_SYSPROTO_H_ for __getcwd() syscall as we always have sysproto.h.
Pointed out by: bde
MFC after: 1 week
|
#
274462 |
|
13-Nov-2014 |
dchagin |
Add the ppoll() system call. Export kern_poll() needed by an upcoming Linuxulator change.
Differential Revision: https://reviews.freebsd.org/D1133 Reviewed by: kib, wblock MFC after: 1 month
|
#
272823 |
|
09-Oct-2014 |
marcel |
Move the SCTP syscalls to netinet with the rest of the SCTP code. The syscalls themselves are tightly coupled with the network stack and therefore should not be in the generic socket code.
The following four syscalls have been marked as NOSTD so they can be dynamically registered in sctp_syscalls_init() function: sys_sctp_peeloff sys_sctp_generic_sendmsg sys_sctp_generic_sendmsg_iov sys_sctp_generic_recvmsg
The syscalls are also set up to be dynamically registered when COMPAT32 option is configured.
As a side effect of moving the SCTP syscalls, getsock_cap needs to be made available outside of the uipc_syscalls.c source file. A proper prototype has been added to the sys/socketvar.h header file.
API tests from the SCTP reference implementation have been run to ensure compatibility. (http://code.google.com/p/sctp-refimpl/source/checkout)
Submitted by: Steve Kiernan <stevek@juniper.net> Reviewed by: tuexen, rrs Obtained from: Juniper Networks, Inc.
|
#
270691 |
|
27-Aug-2014 |
kib |
Fix handling of the third argument for fcntl(2). The native syscall uses long for arg, which needs translation.
Discussed with and tested by: mjg Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
263318 |
|
18-Mar-2014 |
attilio |
Remove dead code from umtx support: - Retire long time unused (basically always unused) sys__umtx_lock() and sys__umtx_unlock() syscalls - struct umtx and their supporting definitions - UMUTEX_ERROR_CHECK flag - Retire UMTX_OP_LOCK/UMTX_OP_UNLOCK from _umtx_op() syscall
__FreeBSD_version is not bumped yet because it is expected that further breakages to the umtx interface will follow up in the next days. However there will be a final bump when necessary.
Sponsored by: EMC / Isilon storage division Reviewed by: jhb
|
#
255708 |
|
19-Sep-2013 |
jhb |
Extend the support for exempting processes from being killed when swap is 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
|
#
255657 |
|
17-Sep-2013 |
jilles |
Disallow cap_enter() in freebsd32 compatibility mode.
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)
|
#
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
|
#
254491 |
|
18-Aug-2013 |
pjd |
The cap_rights_limit(2) system calls needs a wrapper for 32bit binaries 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
|
#
254481 |
|
18-Aug-2013 |
pjd |
Implement 32bit versions of the cap_ioctls_limit(2) and cap_ioctls_get(2) system calls as unsigned longs have different size on i386 and amd64.
Reported by: jilles Sponsored by: The FreeBSD Foundation
|
#
254447 |
|
17-Aug-2013 |
pjd |
Make pdfork(2), pdkill(2) and pdgetpid(2) syscalls available for 32bit binaries running under 64bit kernel.
Sponsored by: The FreeBSD Foundation
|
#
253530 |
|
21-Jul-2013 |
kib |
Implement compat32 wrappers for the ktimer_* syscalls.
Reported, reviewed and tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
253529 |
|
21-Jul-2013 |
kib |
Wrap kmq_notify(2) for compat32 to properly consume struct sigevent32 argument.
Reviewed and tested by: Petr Salinger <Petr.Salinger@seznam.cz> Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
253528 |
|
21-Jul-2013 |
kib |
The freebsd32_lio_listio() compat syscall takes the struct sigevent32.
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
253494 |
|
20-Jul-2013 |
kib |
id_t is 64bit, provide the compat32 wrapper for clock_getcpuclockid2(2).
Reported and tested by: Petr Salinger <Petr.Salinger@seznam.cz> PR: threads/180652 Sponsored by: The FreeBSD Foundation
|
#
251526 |
|
08-Jun-2013 |
glebius |
Add new system call - aio_mlock(). The name speaks for itself. It allows 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.
|
#
250853 |
|
21-May-2013 |
kib |
Fix the wait6(2) on 32bit architectures and for the compat32, by using the right type for the argument in syscalls.master. Also fix the posix_fallocate(2) and posix_fadvise(2) compat32 syscalls on the architectures which require padding of the 64bit argument.
Noted and reviewed by: jhb Pointy hat to: kib MFC after: 1 week
|
#
250159 |
|
01-May-2013 |
jilles |
Add pipe2() system call.
The pipe2() function is similar to pipe() but allows setting FD_CLOEXEC and O_NONBLOCK (on both sides) as part of the function.
If p points to two writable ints, pipe2(p, 0) is equivalent to pipe(p).
If the pointer is not valid, behaviour differs: pipe2() writes into the array from the kernel like socketpair() does, while pipe() writes into the array from an architecture-specific assembler wrapper.
Reviewed by: kan, kib
|
#
250154 |
|
01-May-2013 |
jilles |
Add accept4() system call.
The accept4() function, compared to accept(), allows setting the new file descriptor atomically close-on-exec and explicitly controlling the non-blocking status on the new socket. (Note that the latter point means that accept() is not equivalent to any form of accept4().)
The linuxulator's accept4 implementation leaves a race window where the new file descriptor is not close-on-exec because it calls sys_accept(). This implementation leaves no such race window (by using falloc() flags). The linuxulator could be fixed and simplified by using the new code.
Like accept(), accept4() is async-signal-safe, a cancellation point and permitted in capability mode.
|
#
248995 |
|
02-Apr-2013 |
mdf |
Fix return type of extattr_set_* and fix rmextattr(8) utility.
extattr_set_{fd,file,link} is logically a write(2)-like operation and should return ssize_t, just like extattr_get_*. Also, the user-space utility was using an int for the return value of extattr_get_* and extattr_list_*, both of which return an ssize_t.
MFC after: 1 week
|
#
248599 |
|
21-Mar-2013 |
pjd |
Implement chflagsat(2) system call, similar to fchmodat(2), but operates on file flags.
Reviewed by: kib, jilles Sponsored by: The FreeBSD Foundation
|
#
248597 |
|
21-Mar-2013 |
pjd |
- Make 'flags' argument to chflags(2), fchflags(2) and lchflags(2) of type u_long. Before this change it was of type int for syscalls, but prototypes in sys/stat.h and documentation for chflags(2) and fchflags(2) (but not for lchflags(2)) stated that it was u_long. Now some related functions use u_long type for flags (strtofflags(3), fflagstostr(3)). - Make path argument of type 'const char *' for consistency.
Discussed on: arch Sponsored by: The FreeBSD Foundation
|
#
247667 |
|
02-Mar-2013 |
pjd |
- Implement two new system calls:
int bindat(int fd, int s, const struct sockaddr *addr, socklen_t addrlen); int connectat(int fd, int s, const struct sockaddr *name, socklen_t namelen);
which allow to bind and connect respectively to a UNIX domain socket with a path relative to the directory associated with the given file descriptor 'fd'.
- Add manual pages for the new syscalls.
- Make the new syscalls available for processes in capability mode sandbox.
- Add capability rights CAP_BINDAT and CAP_CONNECTAT that has to be present on the directory descriptor for the syscalls to work.
- Update audit(4) to support those two new syscalls and to handle path in sockaddr_un structure relative to the given directory descriptor.
- Update procstat(1) to recognize the new capability rights.
- Document the new capability rights in cap_rights_limit(2).
Sponsored by: The FreeBSD Foundation Discussed with: rwatson, jilles, kib, des
|
#
247602 |
|
02-Mar-2013 |
pjd |
Merge Capsicum overhaul:
- Capability is no longer separate descriptor type. Now every descriptor has set of its own capability rights.
- The cap_new(2) system call is left, but it is no longer documented and should not be used in new code.
- The new syscall cap_rights_limit(2) should be used instead of cap_new(2), which limits capability rights of the given descriptor without creating a new one.
- The cap_getrights(2) syscall is renamed to cap_rights_get(2).
- If CAP_IOCTL capability right is present we can further reduce allowed ioctls list with the new cap_ioctls_limit(2) syscall. List of allowed ioctls can be retrived with cap_ioctls_get(2) syscall.
- If CAP_FCNTL capability right is present we can further reduce fcntls that can be used with the new cap_fcntls_limit(2) syscall and retrive them with cap_fcntls_get(2).
- To support ioctl and fcntl white-listing the filedesc structure was heavly modified.
- The audit subsystem, kdump and procstat tools were updated to recognize new syscalls.
- Capability rights were revised and eventhough I tried hard to provide backward API and ABI compatibility there are some incompatible changes that are described in detail below:
CAP_CREATE old behaviour: - Allow for openat(2)+O_CREAT. - Allow for linkat(2). - Allow for symlinkat(2). CAP_CREATE new behaviour: - Allow for openat(2)+O_CREAT.
Added CAP_LINKAT: - Allow for linkat(2). ABI: Reuses CAP_RMDIR bit. - Allow to be target for renameat(2).
Added CAP_SYMLINKAT: - Allow for symlinkat(2).
Removed CAP_DELETE. Old behaviour: - Allow for unlinkat(2) when removing non-directory object. - Allow to be source for renameat(2).
Removed CAP_RMDIR. Old behaviour: - Allow for unlinkat(2) when removing directory.
Added CAP_RENAMEAT: - Required for source directory for the renameat(2) syscall.
Added CAP_UNLINKAT (effectively it replaces CAP_DELETE and CAP_RMDIR): - Allow for unlinkat(2) on any object. - Required if target of renameat(2) exists and will be removed by this call.
Removed CAP_MAPEXEC.
CAP_MMAP old behaviour: - Allow for mmap(2) with any combination of PROT_NONE, PROT_READ and PROT_WRITE. CAP_MMAP new behaviour: - Allow for mmap(2)+PROT_NONE.
Added CAP_MMAP_R: - Allow for mmap(PROT_READ). Added CAP_MMAP_W: - Allow for mmap(PROT_WRITE). Added CAP_MMAP_X: - Allow for mmap(PROT_EXEC). Added CAP_MMAP_RW: - Allow for mmap(PROT_READ | PROT_WRITE). Added CAP_MMAP_RX: - Allow for mmap(PROT_READ | PROT_EXEC). Added CAP_MMAP_WX: - Allow for mmap(PROT_WRITE | PROT_EXEC). Added CAP_MMAP_RWX: - Allow for mmap(PROT_READ | PROT_WRITE | PROT_EXEC).
Renamed CAP_MKDIR to CAP_MKDIRAT. Renamed CAP_MKFIFO to CAP_MKFIFOAT. Renamed CAP_MKNODE to CAP_MKNODEAT.
CAP_READ old behaviour: - Allow pread(2). - Disallow read(2), readv(2) (if there is no CAP_SEEK). CAP_READ new behaviour: - Allow read(2), readv(2). - Disallow pread(2) (CAP_SEEK was also required).
CAP_WRITE old behaviour: - Allow pwrite(2). - Disallow write(2), writev(2) (if there is no CAP_SEEK). CAP_WRITE new behaviour: - Allow write(2), writev(2). - Disallow pwrite(2) (CAP_SEEK was also required).
Added convinient defines:
#define CAP_PREAD (CAP_SEEK | CAP_READ) #define CAP_PWRITE (CAP_SEEK | CAP_WRITE) #define CAP_MMAP_R (CAP_MMAP | CAP_SEEK | CAP_READ) #define CAP_MMAP_W (CAP_MMAP | CAP_SEEK | CAP_WRITE) #define CAP_MMAP_X (CAP_MMAP | CAP_SEEK | 0x0000000000000008ULL) #define CAP_MMAP_RW (CAP_MMAP_R | CAP_MMAP_W) #define CAP_MMAP_RX (CAP_MMAP_R | CAP_MMAP_X) #define CAP_MMAP_WX (CAP_MMAP_W | CAP_MMAP_X) #define CAP_MMAP_RWX (CAP_MMAP_R | CAP_MMAP_W | CAP_MMAP_X) #define CAP_RECV CAP_READ #define CAP_SEND CAP_WRITE
#define CAP_SOCK_CLIENT \ (CAP_CONNECT | CAP_GETPEERNAME | CAP_GETSOCKNAME | CAP_GETSOCKOPT | \ CAP_PEELOFF | CAP_RECV | CAP_SEND | CAP_SETSOCKOPT | CAP_SHUTDOWN) #define CAP_SOCK_SERVER \ (CAP_ACCEPT | CAP_BIND | CAP_GETPEERNAME | CAP_GETSOCKNAME | \ CAP_GETSOCKOPT | CAP_LISTEN | CAP_PEELOFF | CAP_RECV | CAP_SEND | \ CAP_SETSOCKOPT | CAP_SHUTDOWN)
Added defines for backward API compatibility:
#define CAP_MAPEXEC CAP_MMAP_X #define CAP_DELETE CAP_UNLINKAT #define CAP_MKDIR CAP_MKDIRAT #define CAP_RMDIR CAP_UNLINKAT #define CAP_MKFIFO CAP_MKFIFOAT #define CAP_MKNOD CAP_MKNODAT #define CAP_SOCK_ALL (CAP_SOCK_CLIENT | CAP_SOCK_SERVER)
Sponsored by: The FreeBSD Foundation Reviewed by: Christoph Mallon <christoph.mallon@gmx.de> Many aspects discussed with: rwatson, benl, jonathan ABI compatibility discussed with: kib
|
#
242958 |
|
13-Nov-2012 |
kib |
Add the wait6(2) system call. It takes POSIX waitid()-like process designator to select a process which is waited for. The system call optionally returns siginfo_t which would be otherwise provided to SIGCHLD handler, as well as extended structure accounting for child and cumulative grandchild resource usage.
Allow to get the current rusage information for non-exited processes as well, similar to Solaris.
The explicit WEXITED flag is required to wait for exited processes, allowing for more fine-grained control of the events the waiter is interested in.
Fix the handling of siginfo for WNOWAIT option for all wait*(2) family, by not removing the queued signal state.
PR: standards/170346 Submitted by: "Jukka A. Ukkonen" <jau@iki.fi> MFC after: 1 month
|
#
239347 |
|
17-Aug-2012 |
davidxu |
Implement syscall clock_getcpuclockid2, so we can get a clock id for process, thread or others we want to support. Use the syscall to implement POSIX API clock_getcpuclock and pthread_getcpuclockid.
PR: 168417
|
#
239296 |
|
15-Aug-2012 |
kib |
Provide 32bit compat for truncate(2) and ftruncate(2).
MFC after: 1 week
|
#
239248 |
|
14-Aug-2012 |
kib |
Implement the old mmap syscall for compat32, when COMPAT_43 option is enabled. The syscall is used by FreeBSD 1.1.5.1 dynamic linker.
MFC after: 1 week
|
#
236026 |
|
25-May-2012 |
ed |
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.
|
#
232449 |
|
03-Mar-2012 |
jmallett |
o) Add COMPAT_FREEBSD32 support for MIPS kernels using the n64 ABI with userlands using the o32 ABI. This mostly follows nwhitehorn's lead in implementing COMPAT_FREEBSD32 on powerpc64. o) Add a new type to the freebsd32 compat layer, time32_t, which is time_t in the 32-bit ABI being used. Since the MIPS port is relatively-new, even the 32-bit ABIs use a 64-bit time_t. o) Because time{spec,val}32 has the same size and layout as time{spec,val} on MIPS with 32-bit compatibility, then, disable some code which assumes otherwise wrongly when built for MIPS. A more general macro to check in this case would seem like a good idea eventually. If someone adds support for using n32 userland with n64 kernels on MIPS, then they will have to add a variety of flags related to each piece of the ABI that can vary. That's probably the right time to generalize further. o) Add MIPS to the list of architectures which use PAD64_REQUIRED in the freebsd32 compat code. Probably this should be generalized at some point.
Reviewed by: gonzo
|
#
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)
|
#
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'.
|
#
227070 |
|
04-Nov-2011 |
jhb |
Add the posix_fadvise(2) system call. It is somewhat similar to madvise(2) except that it operates on a file descriptor instead of a memory region. It is currently only supported on regular files.
Just as with madvise(2), the advice given to posix_fadvise(2) can be divided into two types. The first type provide hints about data access patterns and are used in the file read and write routines to modify the I/O flags passed down to VOP_READ() and VOP_WRITE(). These modes are thus filesystem independent. Note that to ease implementation (and since this API is only advisory anyway), only a single non-normal range is allowed per file descriptor.
The second type of hints are used to hint to the OS that data will or will not be used. These hints are implemented via a new VOP_ADVISE(). A default implementation is provided which does nothing for the WILLNEED request and attempts to move any clean pages to the cache page queue for the DONTNEED request. This latter case required two other changes. First, a new V_CLEANONLY flag was added to vinvalbuf(). This requests vinvalbuf() to only flush clean buffers for the vnode from the buffer cache and to not remove any backing pages from the vnode. This is used to ensure clean pages are not wired into the buffer cache before attempting to move them to the cache page queue. The second change adds a new vm_object_page_cache() method. This method is somewhat similar to vm_object_page_remove() except that instead of freeing each page in the specified range, it attempts to move clean pages to the cache queue if possible.
To preserve the ABI of struct file, the f_cdevpriv pointer is now reused in a union to point to the currently active advice region if one is present for regular files.
Reviewed by: jilles, kib, arch@ Approved by: re (kib) MFC after: 1 month
|
#
226364 |
|
14-Oct-2011 |
jhb |
Use PAIR32TO64() for the offset and length parameters to freebsd32_posix_fallocate() to properly handle big-endian platforms.
Reviewed by: mdf MFC after: 1 week
|
#
226348 |
|
13-Oct-2011 |
marcel |
Wrap mprotect(2)
|
#
224066 |
|
15-Jul-2011 |
jonathan |
Add cap_new() and cap_getrights() system calls.
Implement two previously-reserved Capsicum system calls: - cap_new() creates a capability to wrap an existing file descriptor - cap_getrights() queries the rights mask of a capability.
Approved by: mentor (rwatson), re (Capsicum blanket) Sponsored by: Google Inc
|
#
223166 |
|
16-Jun-2011 |
kib |
Implement compat32 for old lseek, for the a.out binaries on amd64.
|
#
220791 |
|
18-Apr-2011 |
mdf |
Add the posix_fallocate(2) syscall. The default implementation in vop_stdallocate() is filesystem agnostic and will run as slow as a read/write loop in userspace; however, it serves to correctly implement the functionality for filesystems that do not implement a VOP_ALLOCATE.
Note that __FreeBSD_version was already bumped today to 900036 for any ports which would like to use this function.
Also reserve space in the syscall table for posix_fadvise(2).
Reviewed by: -arch (previous version)
|
#
220238 |
|
01-Apr-2011 |
kib |
Add support for executing the FreeBSD 1/i386 a.out binaries on amd64.
In particular: - implement compat shims for old stat(2) variants and ogetdirentries(2); - implement delivery of signals with ancient stack frame layout and corresponding sigreturn(2); - implement old getpagesize(2); - provide a user-mode trampoline and LDT call gate for lcall $7,$0; - port a.out image activator and connect it to the build as a module on amd64.
The changes are hidden under COMPAT_43.
MFC after: 1 month
|
#
220163 |
|
30-Mar-2011 |
trasz |
Add rctl. It's used by racct to take user-configurable actions based on the set of rules it maintains and the current resource usage. It also privides userland API to manage that ruleset.
Sponsored by: The FreeBSD Foundation Reviewed by: kib (earlier version)
|
#
220158 |
|
30-Mar-2011 |
kib |
Provide compat32 shims for kldstat(2).
Requested and tested by: jpaetzel MFC after: 1 week
|
#
219304 |
|
05-Mar-2011 |
trasz |
Add two new system calls, setloginclass(2) and getloginclass(2). This makes it possible for the kernel to track login class the process is assigned to, which is required for RCTL. This change also make setusercontext(3) call setloginclass(2) and makes it possible to retrieve current login class using id(1).
Reviewed by: kib (as part of a larger patch)
|
#
219129 |
|
01-Mar-2011 |
rwatson |
Add initial support for Capsicum's Capability Mode to the FreeBSD kernel, compiled conditionally on options CAPABILITIES:
Add a new credential flag, CRED_FLAG_CAPMODE, which indicates that a subject (typically a process) is in capability mode.
Add two new system calls, cap_enter(2) and cap_getmode(2), which allow setting and querying (but never clearing) the flag.
Export the capability mode flag via process information sysctls.
Sponsored by: Google, Inc. Reviewed by: anderson Discussed with: benl, kris, pjd Obtained from: Capsicum Project MFC after: 3 months
|
#
209579 |
|
28-Jun-2010 |
kib |
Count number of threads that enter and leave dynamically registered syscalls. On the dynamic syscall deregistration, wait until all threads leave the syscall code. This somewhat increases the safety of the loadable modules unloading.
Reviewed by: jhb Tested by: pho MFC after: 1 month
|
#
205325 |
|
19-Mar-2010 |
kib |
Implement compat32 shims for mqueuefs.
Reviewed by: jhb MFC after: 2 weeks
|
#
205324 |
|
19-Mar-2010 |
kib |
Implement compat32 shims for ksem syscalls.
Reviewed by: jhb MFC after: 2 weeks
|
#
205323 |
|
19-Mar-2010 |
kib |
Move SysV IPC freebsd32 compat shims from freebsd32_misc.c to corresponding sysv_{msg,sem,shm}.c files.
Mark SysV IPC freebsd32 syscalls as NOSTD and add required SYSCALL_INIT_HELPER/SYSCALL32_INIT_HELPERs to provide auto register/unregister on module load.
This makes COMPAT_FREEBSD32 functional with SysV IPC compiled and loaded as modules.
Reviewed by: jhb MFC after: 2 weeks
|
#
205014 |
|
11-Mar-2010 |
nwhitehorn |
Provide groundwork for 32-bit binary compatibility on non-x86 platforms, for upcoming 64-bit PowerPC and MIPS support. This renames the COMPAT_IA32 option to COMPAT_FREEBSD32, removes some IA32-specific code from MI parts of the kernel and enhances the freebsd32 compatibility code to support big-endian platforms.
Reviewed by: kib, jhb
|
#
203660 |
|
08-Feb-2010 |
ed |
Remove unused LIBCOMPAT keyword from syscalls.master.
|
#
200111 |
|
04-Dec-2009 |
kib |
Add several syscall compat32 entries for acl manipulation. They do not require translation of the arguments.
Tested by: bsam MFC after: 1 week
|
#
198508 |
|
27-Oct-2009 |
kib |
Current pselect(3) is implemented in usermode and thus vulnerable to well-known race condition, which elimination was the reason for the function appearance in first place. If sigmask supplied as argument to pselect() enables a signal, the signal might be delivered before thread called select(2), causing lost wakeup. Reimplement pselect() in kernel, making change of sigmask and sleep atomic.
Since signal shall be delivered to the usermode, but sigmask restored, set TDP_OLDMASK and save old mask in td_oldsigmask. The TDP_OLDMASK should be cleared by ast() in case signal was not gelivered during syscall execution.
Reviewed by: davidxu Tested by: pho MFC after: 1 month
|
#
197636 |
|
30-Sep-2009 |
rwatson |
Reserve system call numbers for Capsicum security framework capabilities, capability mode, and process descriptors: cap_new, cap_getrights, cap_enter, cap_getmode, pdfork, pdkill, pdgetpid, and pdwait.
Obtained from: TrustedBSD Project Sponsored by: Google MFC after: 3 weeks
|
#
195468 |
|
08-Jul-2009 |
trasz |
Fix freebsd32 version of lpathconf(2).
Approved by: re (kib)
|
#
195458 |
|
08-Jul-2009 |
trasz |
There is an optimization in chmod(1), that makes it not to call chmod(2) if the new file mode is the same as it was before; however, this optimization must be disabled for filesystems that support NFSv4 ACLs. Chmod uses pathconf(2) to determine whether this is the case - however, pathconf(2) always follows symbolic links, while the 'chmod -h' doesn't.
This change adds lpathconf(3) to make it possible to solve that problem in a clean way.
Reviewed by: rwatson (earlier version) Approved by: re (kib)
|
#
194910 |
|
24-Jun-2009 |
jhb |
Change the ABI of some of the structures used by the SYSV IPC API: - The uid/cuid members of struct ipc_perm are now uid_t instead of unsigned short. - The gid/cgid members of struct ipc_perm are now gid_t instead of unsigned short. - The mode member of struct ipc_perm is now mode_t instead of unsigned short (this is merely a style bug). - The rather dubious padding fields for ABI compat with SV/I386 have been removed from struct msqid_ds and struct semid_ds. - The shm_segsz member of struct shmid_ds is now a size_t instead of an int. This removes the need for the shm_bsegsz member in struct shmid_kernel and should allow for complete support of SYSV SHM regions >= 2GB. - The shm_nattch member of struct shmid_ds is now an int instead of a short. - The shm_internal member of struct shmid_ds is now gone. The internal VM object pointer for SHM regions has been moved into struct shmid_kernel. - The existing __semctl(), msgctl(), and shmctl() system call entries are now marked COMPAT7 and new versions of those system calls which support the new ABI are now present. - The new system calls are assigned to the FBSD-1.1 version in libc. The FBSD-1.0 symbols in libc now refer to the old COMPAT7 system calls. - A simplistic framework for tagging system calls with compatibility symbol versions has been added to libc. Version tags are added to system calls by adding an appropriate __sym_compat() entry to src/lib/libc/incldue/compat.h. [1]
PR: kern/16195 kern/113218 bin/129855 Reviewed by: arch@, rwatson Discussed with: kan, kib [1]
|
#
194833 |
|
24-Jun-2009 |
jhb |
Add a new COMPAT7 flag for FreeBSD 7.x compatibility system calls.
|
#
194645 |
|
22-Jun-2009 |
jhb |
Fix a typo in a comment.
|
#
194390 |
|
17-Jun-2009 |
jhb |
- Add the ability to mix multiple flags seperated by pipe ('|') characters in the type field of system call tables. Specifically, one can now use the 'NO*' types as flags in addition to the 'COMPAT*' types. For example, to tag 'COMPAT*' system calls as living in a KLD via NOSTD. The COMPAT* type is required to be listed first in this case. - Add new functions 'type()' and 'flag()' to the embedded awk script in makesyscalls.sh that return true if a requested flag is found in the type field ($3). The flag() function checks all of the flags in the field, but type() only checks the first flag. type() is meant to be used in the top-level "switch" statement and flag() should be used otherwise. - Retire the CPT_NOA type, it is now replaced with "COMPAT|NOARGS" using the flags approach. - Tweak the comment descriptions of COMPAT[46] system calls so that they say "freebsd[46] foo" rather than "old foo". - Document the COMPAT6 type. - Sync comments in compat32 syscall table with the master table.
|
#
194262 |
|
15-Jun-2009 |
jhb |
Add a new 'void closefrom(int lowfd)' system call. When called, it closes any open file descriptors >= 'lowfd'. It is largely identical to the same function on other operating systems such as Solaris, DFly, NetBSD, and OpenBSD. One difference from other *BSD is that this closefrom() does not fail with any errors. In practice, while the manpages for NetBSD and OpenBSD claim that they return EINTR, they ignore internal errors from close() and never return EINTR. DFly does return EINTR, but for the common use case (closing fd's prior to execve()), the caller really wants all fd's closed and returning EINTR just forces callers to call closefrom() in a loop until it stops failing.
Note that this implementation of closefrom(2) does not make any effort to resolve userland races with open(2) in other threads. As such, it is not multithread safe.
Submitted by: rwatson (initial version) Reviewed by: rwatson MFC after: 2 weeks
|
#
193916 |
|
10-Jun-2009 |
kib |
Add several syscall compat32 entries for extattr manipulation syscalls, that do not require translation of the arguments.
Requested by: kientzle Reviewed by: jhb (previous wrong version) MFC after: 1 week
|
#
191673 |
|
29-Apr-2009 |
jamie |
Introduce the extensible jail framework, using the same "name=value" interface as nmount(2). Three new system calls are added: * jail_set, to create jails and change the parameters of existing jails. This replaces jail(2). * jail_get, to read the parameters of existing jails. This replaces the security.jail.list sysctl. * jail_remove to kill off a jail's processes and remove the jail. Most jail parameters may now be changed after creation, and jails may be set to exist without any attached processes. The current jail(2) system call still exists, though it is now a stub to jail_set(2).
Approved by: bz (mentor)
|
#
190621 |
|
01-Apr-2009 |
kib |
Rename implementation function for freebsd32 sysarch(2) to allow for the arguments translations. Provide ABI-compatible definition of the struct i386_ldt_args for freebsd32 compat layer.
In collaboration with: pho Reviewed by: jhb
|
#
185878 |
|
10-Dec-2008 |
jhb |
- Add 32-bit compat system calls for VFS_AIO. The system calls live in the aio code and are registered via the recently added SYSCALL32_*() helpers. - Since the aio code likes to invoke fuword and suword a lot down in the "bowels" of system calls, add a structure holding a set of operations for things like storing errors, copying in the aiocb structure, storing status, etc. The 32-bit system calls use a separate operations vector to handle fuword32 vs fuword, etc. Also, the oldsigevent handling is now done by having seperate operation vectors with different aiocb copyin routines. - Split out kern_foo() functions for the various AIO system calls so the 32-bit front ends can manage things like copying in and converting timespec structures, etc. - For both the native and 32-bit aio_suspend() and lio_listio() calls, just use copyin() to read the array of aiocb pointers instead of using a for loop that iterated over fuword/fuword32. The error handling in the old case was incomplete (lio_listio() just ignored any aiocb's that it got an EFAULT trying to read rather than reporting an error), and possibly slower.
MFC after: 1 month
|
#
185435 |
|
29-Nov-2008 |
bz |
MFp4: Bring in updated jail support from bz_jail branch.
This enhances the current jail implementation to permit multiple addresses per jail. In addtion to IPv4, IPv6 is supported as well. Due to updated checks it is even possible to have jails without an IP address at all, which basically gives one a chroot with restricted process view, no networking,..
SCTP support was updated and supports IPv6 in jails as well.
Cpuset support permits jails to be bound to specific processor sets after creation.
Jails can have an unrestricted (no duplicate protection, etc.) name in addition to the hostname. The jail name cannot be changed from within a jail and is considered to be used for management purposes or as audit-token in the future.
DDB 'show jails' command was added to aid debugging.
Proper compat support permits 32bit jail binaries to be used on 64bit systems to manage jails. Also backward compatibility was preserved where possible: for jail v1 syscalls, as well as with user space management utilities.
Both jail as well as prison version were updated for the new features. A gap was intentionally left as the intermediate versions had been used by various patches floating around the last years.
Bump __FreeBSD_version for the afore mentioned and in kernel changes.
Special thanks to: - Pawel Jakub Dawidek (pjd) for his multi-IPv4 patches and Olivier Houchard (cognet) for initial single-IPv6 patches. - Jeff Roberson (jeff) and Randall Stewart (rrs) for their help, ideas and review on cpuset and SCTP support. - Robert Watson (rwatson) for lots and lots of help, discussions, suggestions and review of most of the patch at various stages. - John Baldwin (jhb) for his help. - Simon L. Nielsen (simon) as early adopter testing changes on cluster machines as well as all the testers and people who provided feedback the last months on freebsd-jail and other channels. - My employer, CK Software GmbH, for the support so I could work on this.
Reviewed by: (see above) MFC after: 3 months (this is just so that I get the mail) X-MFC Before: 7.2-RELEASE if possible
|
#
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
|
#
184588 |
|
03-Nov-2008 |
dfr |
Implement support for RPCSEC_GSS authentication to both the NFS client and server. This replaces the RPC implementation of the NFS client and server with the newer RPC implementation originally developed (actually ported from the userland sunrpc code) to support the NFS Lock Manager. I have tested this code extensively and I believe it is stable and that performance is at least equal to the legacy RPC implementation.
The NFS code currently contains support for both the new RPC implementation and the older legacy implementation inherited from the original NFS codebase. The default is to use the new implementation - add the NFS_LEGACYRPC option to fall back to the old code. When I merge this support back to RELENG_7, I will probably change this so that users have to 'opt in' to get the new code.
To use RPCSEC_GSS on either client or server, you must build a kernel which includes the KGSSAPI option and the crypto device. On the userland side, you must build at least a new libc, mountd, mount_nfs and gssd. You must install new versions of /etc/rc.d/gssd and /etc/rc.d/nfsd and add 'gssd_enable=YES' to /etc/rc.conf.
As long as gssd is running, you should be able to mount an NFS filesystem from a server that requires RPCSEC_GSS authentication. The mount itself can happen without any kerberos credentials but all access to the filesystem will be denied unless the accessing user has a valid ticket file in the standard place (/tmp/krb5cc_<uid>). There is currently no support for situations where the ticket file is in a different place, such as when the user logged in via SSH and has delegated credentials from that login. This restriction is also present in Solaris and Linux. In theory, we could improve this in future, possibly using Brooks Davis' implementation of variant symlinks.
Supporting RPCSEC_GSS on a server is nearly as simple. You must create service creds for the server in the form 'nfs/<fqdn>@<REALM>' and install them in /etc/krb5.keytab. The standard heimdal utility ktutil makes this fairly easy. After the service creds have been created, you can add a '-sec=krb5' option to /etc/exports and restart both mountd and nfsd.
The only other difference an administrator should notice is that nfsd doesn't fork to create service threads any more. In normal operation, there will be two nfsd processes, one in userland waiting for TCP connections and one in the kernel handling requests. The latter process will create as many kthreads as required - these should be visible via 'top -H'. The code has some support for varying the number of service threads according to load but initially at least, nfsd uses a fixed number of threads according to the value supplied to its '-n' option.
Sponsored by: Isilon Systems MFC after: 1 month
|
#
184183 |
|
22-Oct-2008 |
jhb |
Split the copyout of *base at the end of getdirentries() out leaving the rest in kern_getdirentries(). Use kern_getdirentries() to implement freebsd32_getdirentries(). This fixes a bug where calls to getdirentries() in 32-bit binaries would trash the 4 bytes after the 'long base' in userland.
Submitted by: ups MFC after: 1 week
|
#
183361 |
|
25-Sep-2008 |
jhb |
Tidy up a few things with syscall generation: - Instead of using a syscall slot (370) just to get a function prototype for lkmressys(), add an explicit function prototype to <sys/sysent.h>. This also removes unused special case checks for 'lkmressys' from makesyscalls.sh. - Instead of having magic logic in makesyscalls.sh to only generate a function prototype the first time 'lkmnosys' is seen, make 'NODEF' always not generate a function prototype and include an explicit prototype for 'lkmnosys' in <sys/sysent.h>. - As a result of the fix in (2), update the LKM syscall entries in the freebsd32 syscall table to use 'lkmnosys' rather than 'nosys'. - Use NOPROTO for the __syscall() entry (198) in the native ABI. This avoids the need for magic logic in makesyscalls.h to only generate a function prototype the first time 'nosys' is encountered.
|
#
183270 |
|
22-Sep-2008 |
obrien |
Add freebsd32 compat shims for ioctl(2) MDIOCATTACH, MDIOCDETACH, MDIOCQUERY, and MDIOCLIST requests.
|
#
183188 |
|
19-Sep-2008 |
obrien |
Add freebsd32 compat shim for nmount(2). (and quiet some compiler warnings for vfs_donmount)
|
#
183042 |
|
15-Sep-2008 |
obrien |
Fix bug in r100384 (rev 1.2) in which the 32-bit swapon(2) was made "obsolete, not included in system", where as the system call does exist.
|
#
182123 |
|
24-Aug-2008 |
rwatson |
When MPSAFE ttys were merged, a new BSM audit event identifier was allocated for posix_openpt(2). Unfortunately, that identifier conflicts with other events already allocated to other systems in OpenBSM. Assign a new globally unique identifier and conform better to the AUE_ event naming scheme.
This is a stopgap until a new OpenBSM import is done with the correct identifier, so we'll maintain this as a local diff in svn until then.
Discussed with: ed Obtained from: TrustedBSD Project
|
#
181972 |
|
21-Aug-2008 |
obrien |
Add comments on NOARGS, NODEF, and NOPROTO.
|
#
181905 |
|
20-Aug-2008 |
ed |
Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following:
- Improved driver model:
The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers.
If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver.
- Improved hotplugging:
With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc).
The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly.
- Improved performance:
One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters.
Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING.
Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
|
#
180433 |
|
10-Jul-2008 |
brooks |
id_t is a 64-bit integer and thus is passed as two arguments like off_t is. As a result, those arguments must be recombined before calling the real syscal implementation. This change fixes 32-bit compatibility for cpuset_getid(), cpuset_setid(), cpuset_getaffinity(), and cpuset_setaffinity().
|
#
177789 |
|
31-Mar-2008 |
kib |
Add the freebsd32 compatibility shims for the *at() syscalls.
Reviewed by: rwatson, rdivacky Tested by: pho
|
#
177633 |
|
26-Mar-2008 |
dfr |
Add the new kernel-mode NFS Lock Manager. To use it instead of the user-mode lock manager, build a kernel with the NFSLOCKD option and add '-k' to 'rpc_lockd_flags' in rc.conf.
Highlights include:
* Thread-safe kernel RPC client - many threads can use the same RPC client handle safely with replies being de-multiplexed at the socket upcall (typically driven directly by the NIC interrupt) and handed off to whichever thread matches the reply. For UDP sockets, many RPC clients can share the same socket. This allows the use of a single privileged UDP port number to talk to an arbitrary number of remote hosts.
* Single-threaded kernel RPC server. Adding support for multi-threaded server would be relatively straightforward and would follow approximately the Solaris KPI. A single thread should be sufficient for the NLM since it should rarely block in normal operation.
* Kernel mode NLM server supporting cancel requests and granted callbacks. I've tested the NLM server reasonably extensively - it passes both my own tests and the NFS Connectathon locking tests running on Solaris, Mac OS X and Ubuntu Linux.
* Userland NLM client supported. While the NLM server doesn't have support for the local NFS client's locking needs, it does have to field async replies and granted callbacks from remote NLMs that the local client has contacted. We relay these replies to the userland rpc.lockd over a local domain RPC socket.
* Robust deadlock detection for the local lock manager. In particular it will detect deadlocks caused by a lock request that covers more than one blocking request. As required by the NLM protocol, all deadlock detection happens synchronously - a user is guaranteed that if a lock request isn't rejected immediately, the lock will eventually be granted. The old system allowed for a 'deferred deadlock' condition where a blocked lock request could wake up and find that some other deadlock-causing lock owner had beaten them to the lock.
* Since both local and remote locks are managed by the same kernel locking code, local and remote processes can safely use file locks for mutual exclusion. Local processes have no fairness advantage compared to remote processes when contending to lock a region that has just been unlocked - the local lock manager enforces a strict first-come first-served model for both local and remote lockers.
Sponsored by: Isilon Systems PR: 95247 107555 115524 116679 MFC after: 2 weeks
|
#
177612 |
|
25-Mar-2008 |
jhb |
Add entries for the cpuset-related system calls. The existing system calls can be used on little endian systems.
Pointy hat to: jeff
|
#
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.
|
#
176215 |
|
12-Feb-2008 |
ru |
Change readlink(2)'s return type and type of the last argument to match POSIX.
Prodded by: Alexey Lyashkov
|
#
175517 |
|
20-Jan-2008 |
rwatson |
Use audit events AUE_SHMOPEN and AUE_SHMUNLINK with new system calls shm_open() and shm_unlink(). More auditing will need to be done for these calls to capture arguments properly.
|
#
175164 |
|
08-Jan-2008 |
jhb |
Add a new file descriptor type for IPC shared memory objects and use it to implement shm_open(2) and shm_unlink(2) in the kernel: - Each shared memory file descriptor is associated with a swap-backed vm object which provides the backing store. Each descriptor starts off with a size of zero, but the size can be altered via ftruncate(2). The shared memory file descriptors also support fstat(2). read(2), write(2), ioctl(2), select(2), poll(2), and kevent(2) are not supported on shared memory file descriptors. - shm_open(2) and shm_unlink(2) are now implemented as system calls that manage shared memory file descriptors. The virtual namespace that maps pathnames to shared memory file descriptors is implemented as a hash table where the hash key is generated via the 32-bit Fowler/Noll/Vo hash of the pathname. - As an extension, the constant 'SHM_ANON' may be specified in place of the path argument to shm_open(2). In this case, an unnamed shared memory file descriptor will be created similar to the IPC_PRIVATE key for shmget(2). Note that the shared memory object can still be shared among processes by sharing the file descriptor via fork(2) or sendmsg(2), but it is unnamed. This effectively serves to implement the getmemfd() idea bandied about the lists several times over the years. - The backing store for shared memory file descriptors are garbage collected when they are not referenced by any open file descriptors or the shm_open(2) virtual namespace.
Submitted by: dillon, peter (previous versions) Submitted by: rwatson (I based this on his version) Reviewed by: alc (suggested converting getmemfd() to shm_open())
|
#
174382 |
|
06-Dec-2007 |
jhb |
Add freebsd32 compat wrappers for msgctl() and __semctl() using kern_msgctl() and kern_semctl().
MFC after: 1 week
|
#
174377 |
|
06-Dec-2007 |
jhb |
Move several data structure definitions out of freebsd32_misc.c and into freebsd32.h instead.
MFC after: 1 week
|
#
171860 |
|
16-Aug-2007 |
davidxu |
Add thr_kill2 compat32 syscall.
Submitted by: Tijl Coosemans tijl at ulyssis dot org Approved by: re (kensmith)
|
#
171213 |
|
04-Jul-2007 |
peter |
Add i386 emulation wrappers for mmap/lseek/etc. These use COMPAT6, so you must use the already existing, already in generic, COMPAT_FREEBSD6 kernel option for running old 32 bit binaries.
Approved by: re (kensmith)
|
#
170795 |
|
15-Jun-2007 |
emaste |
Remove stale 'XXX implement' comments for syscalls which have since been implemented.
|
#
165405 |
|
20-Dec-2006 |
jkim |
MFP4: (part of) 110058
Fix 32-bit msgsnd(3) and msgrcv(3) emulations for amd64.
|
#
163960 |
|
03-Nov-2006 |
ru |
Fix build breakage introduced in previous commit (redeclatation of sctp functions).
|
#
163953 |
|
03-Nov-2006 |
rrs |
Ok, here it is, we finally add SCTP to current. Note that this work is not just mine, but it is also the works of Peter Lei and Michael Tuexen. They both are my two key other developers working on the project.. and they need ata-boy's too: **** peterlei@cisco.com tuexen@fh-muenster.de **** I did do a make sysent which updated the syscall's and sysproto.. I hope that is correct... without it you don't build since we have new syscalls for SCTP :-0
So go out and look at the NOTES, add option SCTP (make sure inet and inet6 are present too) and play with SCTP.
I will see about comitting some test tools I have after I figure out where I should place them. I also have a lib (libsctp.a) that adds some of the missing socketapi functions that I need to put into lib's.. I will talk to George about this :-)
There may still be some 64 bit issues in here, none of us have a 64 bit processor to test with yet.. Michael may have a MAC but thats another beast too..
If you have a mac and want to use SCTP contact Michael he maintains a web site with a loadable module with this code :-)
Reviewed by: gnn Approved by: gnn
|
#
163663 |
|
24-Oct-2006 |
sobomax |
Fix kernel breakage introduced in the previous commit (redeclatation of the audit functions).
|
#
163657 |
|
24-Oct-2006 |
rwatson |
Hook up audit functions in the freebsd32 compatibility code. It is believed these likely don't require wrappers.
Reported by: sobomax MFC after: 3 days
|
#
163450 |
|
17-Oct-2006 |
davidxu |
Sync with master.
|
#
163046 |
|
06-Oct-2006 |
davidxu |
Implement 32bit umtx_lock and umtx_unlock system calls, these two system calls are not used by libthr in RELENG_6 and HEAD, it is only used by the libthr in RELENG-5, the _umtx_op system call can do more incremental dirty works than these two system calls without having to introduce new system calls or throw away old system calls when things are going on.
|
#
163018 |
|
05-Oct-2006 |
davidxu |
Move some declaration of 32-bit signal structures into file freebsd32-signal.h, implement sigtimedwait and sigwaitinfo system calls.
|
#
162992 |
|
03-Oct-2006 |
rwatson |
Change getpagesize() system call audit event to more clearly indicate that we don't audit it.
MFC after: 3 days Obtained from: TrustedBSD Project
|
#
162565 |
|
23-Sep-2006 |
davidxu |
Enable sigwait.
|
#
162551 |
|
22-Sep-2006 |
davidxu |
Add compatible code to let 32bit libthr work on 64bit kernel.
|
#
162536 |
|
22-Sep-2006 |
davidxu |
Add umtx support for 32bit process on AMD64 machine.
|
#
162501 |
|
21-Sep-2006 |
davidxu |
sync with master.
|
#
162373 |
|
17-Sep-2006 |
rwatson |
AUE_SIGALTSTACK instead of AUE_SIGPENDING for sigaltstack().
Obtained from: TrustedBSD Project MFC after: 3 days
|
#
162167 |
|
09-Sep-2006 |
davidxu |
The following functions need not to be reimplemented, reuse 64bit syscalls instead: sigqueue, thr_set_name, thr_setscheduler, thr_getscheduler, thr_setschedparam.
|
#
161958 |
|
03-Sep-2006 |
rwatson |
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate - old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg. - old quota, getsockname, getdirentries. - lgetfh - old getdomainname, setdomainname - sysarch, rtprio, __getcwd, jail, sigtimedwait - extattrctl, extattr_{get,set,delete,list}_{file,fd,link} - getresgid, getresuid, kqueue, eaccess, nmount, sendfile - fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam Obtained from: TrustedBSD Project
|
#
161947 |
|
03-Sep-2006 |
rwatson |
Use AUE_NTP_ADJTIME instead of AUE_ADJTIME for ntp_adjtime().
Obtained from: TrustedBSD Project
|
#
161367 |
|
16-Aug-2006 |
peter |
Grab two syscall numbers. One is used to emulate functionality that linux has in its procfs (do a readlink of /proc/self/fd/<nn> to find the pathname that corresponds to a given file descriptor). Valgrind-3.x needs this functionality. This is a placeholder only at this time.
|
#
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.
|
#
160333 |
|
14-Jul-2006 |
davidxu |
sync with master.
|
#
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.
|
#
159958 |
|
26-Jun-2006 |
jhb |
- Sync with master: rmdir(), mkdir(), and extattr_*() are all MPSAFE. - freebsd32_utimes() is MPSAFE.
|
#
157285 |
|
30-Mar-2006 |
ps |
Properly support for FreeBSD 4 32bit System V shared memory.
Submitted by: peter Obtained from: Yahoo! MFC after: 3 weeks
|
#
156114 |
|
28-Feb-2006 |
ps |
Fix 32bit sendfile by implementing kern_sendfile so that it takes the header and trailers as iovec arguments instead of copying them in inside of sendfile.
Reviewed by: jhb MFC after: 3 weeks
|
#
155294 |
|
04-Feb-2006 |
rwatson |
Audit FreeBSD 32-bit system calls on 64-bit FreeBSD systems.
Obtained from: TrustedBSD Project
|
#
154586 |
|
20-Jan-2006 |
ambrisko |
Add 32bit version of lutimes so untar doesn't mess up sym-links on amd64.
|
#
153691 |
|
23-Dec-2005 |
ru |
Fix build.
|
#
153680 |
|
23-Dec-2005 |
phk |
Add missing 455-462 syscalls as unimplemented
|
#
153679 |
|
23-Dec-2005 |
phk |
Add abort2() systemcall.
|
#
153247 |
|
08-Dec-2005 |
ambrisko |
Add 32bit version of futimes so untar doesn't result in bad dates (Jan 1, 1970) when run on amd64.
Reviewed by: ps
|
#
151720 |
|
26-Oct-2005 |
peter |
There is no 'freebsd3_' prefix for COMPAT_43 syscalls. Those are all bundled under MCOMPAT and have an 'o' prefix. Adjust as appropriate. This re-enables compiling without COMPAT_43 again.
|
#
151582 |
|
23-Oct-2005 |
ps |
Implement for FreeBSD 3 32 binaries: sigaction, sigprocmask, sigpending, sigvec, sigblock, sigsetmask, sigsuspend, sigstack
|
#
151359 |
|
15-Oct-2005 |
ps |
Implement the 32bit versions of recvmsg, recvfrom, sendmsg
Partially obtained from: jhb
|
#
151357 |
|
15-Oct-2005 |
ps |
Implement 32bit wrappers for clock_gettime, clock_settime, and clock_getres.
|
#
151355 |
|
15-Oct-2005 |
ps |
Correct the prototype for freebsd32_nanosleep and use the proper size when copying struct timespec32 in and out.
|
#
150631 |
|
27-Sep-2005 |
peter |
Implement 32 bit getcontext/setcontext/swapcontext on amd64. I've added stubs for ia64 to keep it compiling. These are used by 32 bit apps such as gdb.
|
#
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
|
#
147813 |
|
07-Jul-2005 |
jhb |
- Add two new system calls: preadv() and pwritev() which are like readv() and writev() except that they take an additional offset argument and do not change the current file position. In SAT speak: preadv:readv::pread:read and pwritev:writev::pwrite:write. - Try to reduce code duplication some by merging most of the old kern_foov() and dofilefoo() functions into new dofilefoo() functions that are called by kern_foov() and kern_pfoov(). The non-v functions now all generate a simple uio on the stack from the passed in arguments and then call kern_foov(). For example, read() now just builds a uio and calls kern_readv() and pwrite() just builds a uio and calls kern_pwritev().
PR: kern/80362 Submitted by: Marc Olzheim marcolz at stack dot nl (1) Approved by: re (scottl) MFC after: 1 week
|
#
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
|
#
142874 |
|
01-Mar-2005 |
ps |
Correct the freebsd32_kevent prototype.
|
#
142389 |
|
24-Feb-2005 |
jhb |
Use msync() to implement msync() for freebsd32 emulation. This isn't quite right for certain MAP_FIXED mappings on ia64 but it will work fine for all other mappings and works fine on amd64.
Requested by: ps, Christian Zander MFC after: 1 week
|
#
140482 |
|
19-Jan-2005 |
ps |
Add a 32bit syscall wrapper for modstat
Obtained from: Yahoo!
|
#
140481 |
|
19-Jan-2005 |
ps |
- rename nanosleep1 to kern_nanosleep - Add a 32bit syscall entry for nanosleep
Reviewed by: peter Obtained from: Yahoo!
|
#
139681 |
|
04-Jan-2005 |
jhb |
Partial sync up to the master syscalls.master file: - Mark mount, unmount and nmount MPSAFE. - Add a stub for _umtx_op(). - Mark open(), link(), unlink(), and freebsd32_sigaction() MPSAFE.
Pointy hats to: several
|
#
137876 |
|
18-Nov-2004 |
marks |
32-bit FreeBSD ABI compatibility stubs from syscalls.master:1.179
Reviewed by: imp, phk, njl, peter Approved by: njl
|
#
136833 |
|
23-Oct-2004 |
rwatson |
32-bit FreeBSD ABI compatibility stubs from syscalls.master:1.178.
|
#
136192 |
|
06-Oct-2004 |
mtm |
Close a race between a thread exiting and the freeing of it's stack. After some discussion the best option seems to be to signal the thread's death from within the kernel. This requires that thr_exit() take an argument.
Discussed with: davidxu, deischen, marcel MFC after: 3 days
|
#
132126 |
|
14-Jul-2004 |
peter |
Unmapped syscalls should be NOPROTO so that we don't get a duplicate prototype. (kldunloadf in this case)
|
#
132116 |
|
13-Jul-2004 |
phk |
Add kldunloadf() system call. Stay tuned for follwing commit messages.
|
#
131431 |
|
02-Jul-2004 |
marcel |
Change the thread ID (thr_id_t) used for 1:1 threading from being a pointer to the corresponding struct thread to the thread ID (lwpid_t) assigned to that thread. The primary reason for this change is that libthr now internally uses the same ID as the debugger and the kernel when referencing to a kernel thread. This allows us to implement the support for debugging without additional translations and/or mappings.
To preserve the ABI, the 1:1 threading syscalls, including the umtx locking API have not been changed to work on a lwpid_t. Instead the 1:1 threading syscalls operate on long and the umtx locking API has not been changed except for the contested bit. Previously this was the least significant bit. Now it's the most significant bit. Since the contested bit should not be tested by userland, this change is not expected to be visible. Just to be sure, UMTX_CONTESTED has been removed from <sys/umtx.h>.
Reviewed by: mtm@ ABI preservation tested on: i386, ia64
|
#
128260 |
|
14-Apr-2004 |
peter |
Catch up to the not-so-recent statfs(2) changes.
|
#
127482 |
|
27-Mar-2004 |
mtm |
Separate thread synchronization from signals in libthr. Instead use msleep() and wakeup_one().
Discussed with: jhb, peter, tjr
|
#
126092 |
|
21-Feb-2004 |
peter |
Try and make the compat sigreturn prototypes closer to reality.
|
#
125370 |
|
03-Feb-2004 |
deischen |
Sync with kern/syscalls.master.
|
#
125170 |
|
28-Jan-2004 |
peter |
Add getitimer swab stub
|
#
123755 |
|
23-Dec-2003 |
peter |
GC unused namespc column.
|
#
123747 |
|
23-Dec-2003 |
peter |
freebsd32_fstat(2) is now MPSAFE
|
#
123744 |
|
23-Dec-2003 |
peter |
Eliminate stackgap usage for the (woefully incomplete) path translations since it isn't needed here anymore. Use standard open(2)/access(2) and chflags(2) syscalls now.
|
#
123426 |
|
11-Dec-2003 |
peter |
Mark freebsd32_gettimeofday() as mpsafe
|
#
123416 |
|
10-Dec-2003 |
peter |
Add missing extattr_list_fd(), extattr_list_file(), extattr_list_link() and kse_switchin() syscall slots.
|
#
123415 |
|
10-Dec-2003 |
peter |
The osigpending, oaccept, orecvfrom and ogetdirentries entries were accidently being compiled in as standard. These are part of the set of unimplemented COMPAT_43 syscall set.
|
#
122301 |
|
08-Nov-2003 |
peter |
"implement" vfork(). Add comments next to the other syscalls that need to be implemented. This is enough to run i386 /bin/tcsh. /bin/sh is still not happy because of some strange job control problem.
|
#
122244 |
|
07-Nov-2003 |
jhb |
Sync with global syscalls.master by marking ptrace(), dup(), pipe(), ktrace(), freebsd32_sigaltstack(), sysarch(), issetugid(), utrace(), and freebsd32_sigaction() as MP safe.
|
#
119331 |
|
22-Aug-2003 |
peter |
Begin attempting to consolidate the two different i386 emulations on ia64 and amd64. I'm attempting to keep the generic 32bit-on-64bit binary support seperate from the i386 support and the MD backend support.
|
#
119193 |
|
21-Aug-2003 |
peter |
This is too funny for words. Swap syscalls 416 and 417 around. It works better that way when sigaction() and sigreturn() do the right thing.
|
#
114987 |
|
14-May-2003 |
peter |
Add BASIC i386 binary support for the amd64 kernel. This is largely stolen from the ia64/ia32 code (indeed there was a repocopy), but I've redone the MD parts and added and fixed a few essential syscalls. It is sufficient to run i386 binaries like /bin/ls, /usr/bin/id (dynamic) and p4. The ia64 code has not implemented signal delivery, so I had to do that.
Before you say it, yes, this does need to go in a common place. But we're in a freeze at the moment and I didn't want to risk breaking ia64. I will sort this out after the freeze so that the common code is in a common place.
On the AMD64 side, this required adding segment selector context switch support and some other support infrastructure. The %fs/%gs etc code is hairy because loading %gs will clobber the kernel's current MSR_GSBASE setting. The segment selectors are not used by the kernel, so they're only changed at context switch time or when changing modes. This still needs to be optimized.
Approved by: re (amd64/* blanket)
|
#
114016 |
|
25-Apr-2003 |
jhb |
Oops, the thr_* and jail_attach() syscall entries should be NOPROTO rather than STD.
|
#
113987 |
|
24-Apr-2003 |
jhb |
Fix the thr_create() entry by adding a trailing \. Also, sync up the MP safe flag for thr_* with the main table.
|
#
113275 |
|
09-Apr-2003 |
mike |
o In struct prison, add an allprison linked list of prisons (protected by allprison_mtx), a unique prison/jail identifier field, two path fields (pr_path for reporting and pr_root vnode instance) to store the chroot() point of each jail. o Add jail_attach(2) to allow a process to bind to an existing jail. o Add change_root() to perform the chroot operation on a specified vnode. o Generalize change_dir() to accept a vnode, and move namei() calls to callers of change_dir(). o Add a new sysctl (security.jail.list) which is a group of struct xprison instances that represent a snapshot of active jails.
Reviewed by: rwatson, tjr
|
#
112908 |
|
01-Apr-2003 |
jeff |
- Add thr and umtx system calls.
|
#
112896 |
|
31-Mar-2003 |
jeff |
- Add a placeholder for sigwait
|
#
108409 |
|
29-Dec-2002 |
rwatson |
Synchronize to kern/syscalls.master:1.139.
Obtained from: TrustedBSD Project
|
#
107922 |
|
16-Dec-2002 |
marcel |
Change swapoff from MNOPROTO to UNIMPL. The former doesn't work.
|
#
107913 |
|
15-Dec-2002 |
dillon |
This is David Schultz's swapoff code which I am finally able to commit. This should be considered highly experimental for the moment.
Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU> MFC after: 3 weeks
|
#
106989 |
|
16-Nov-2002 |
deischen |
Add *context() syscalls to ia64 32-bit compatability table as requested in kern/syscalls.master.
|
#
106364 |
|
02-Nov-2002 |
rwatson |
Sync to src/sys/kern/syscalls.master
|
#
105490 |
|
19-Oct-2002 |
peter |
Stake a claim on 418 (__xstat), 419 (__xfstat), 420 (__xlstat)
|
#
105486 |
|
19-Oct-2002 |
peter |
Grab 416/417 real estate before I get burned while testing again. This is for the not-quite-ready signal/fpu abi stuff. It may not see the light of day, but I'm certainly not going to be able to validate it when getting shot in the foot due to syscall number conflicts.
|
#
105476 |
|
19-Oct-2002 |
rwatson |
Add a placeholder for the execve_mac() system call, similar to SELinux's execve_secure() system call, which permits a process to pass in a label for a label change during exec. This permits SELinux to change the label for the resulting exec without a race following a manual label change on the process. Because this interface uses our general purpose MAC label abstraction, we call it execve_mac(), and wrap our port of SELinux's execve_secure() around it with appropriate sid mappings.
Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
|
#
104740 |
|
09-Oct-2002 |
peter |
Sigh. Fix fat-fingering of diff. I knew this was going to happen.
|
#
104738 |
|
09-Oct-2002 |
peter |
Try and deal with the #ifdef COMPAT_FREEBSD4 sendfile stuff. This would have been a lot easier if do_sendfile() was usable externally.
|
#
104736 |
|
09-Oct-2002 |
peter |
Try and patch up some tab-to-space spammage.
|
#
104735 |
|
09-Oct-2002 |
peter |
Add placeholder stubs for nsendfile, mac_syscall, ksem_close, ksem_post, ksem_wait, ksem_trywait, ksem_init, ksem_open, ksem_unlink, ksem_getvalue, ksem_destroy, __mac_get_pid, __mac_get_link, __mac_set_link, extattr_set_link, extattr_get_link, extattr_delete_link.
|
#
104379 |
|
02-Oct-2002 |
archie |
Let kse_wakeup() take a KSE mailbox pointer argument.
Reviewed by: julian
|
#
103972 |
|
25-Sep-2002 |
archie |
Make the following name changes to KSE related functions, etc., to better represent their purpose and minimize namespace conflicts:
kse_fn_t -> kse_func_t struct thread_mailbox -> struct kse_thr_mailbox thread_interrupt() -> kse_thr_interrupt() kse_yield() -> kse_release() kse_new() -> kse_create()
Add missing declaration of kse_thr_interrupt() to <sys/kse.h>. Regenerate the various generated syscall files. Minor style fixes.
Reviewed by: julian
|
#
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).
|
#
94380 |
|
10-Apr-2002 |
dfr |
Initial support for executing IA-32 binaries. This will not compile without a few patches for the rest of the kernel to allow the image activator to override exec_copyout_strings and setregs.
None of the syscall argument translation has been done. Possibly, this translation layer can be shared with any platform that wants to support running ILP32 binaries on an LP64 host (e.g. sparc32 binaries?)
|