Age | Commit message (Collapse) | Author |
|
777: Use the real pipe2(2) on most targets r=asomers a=asomers
FreeBSD added pipe2(2) in version 10.0.
|
|
All supported non-Apple platforms now use the native syscall. Only ios
and macos lack it. Deprecate pipe2 on those platforms, because it's
impossible to guarantee atomicity with a userland implementation. It
was added in:
* DragonflyBSD 4.2
* FreeBSD 10.0
* NetBSD 6.0
* OpenBSD 5.7
|
|
cc #664 (unsure if this is everything needed)
|
|
This adds execveat() to `nix::unistd`. It uses the execveat(2) Linux
kernel syscall, which is available since 3.19.
This is a Linux-specific extension which is not covered by POSIX and
does not have any userland libc wrapper.
Ref: http://man7.org/linux/man-pages/man2/execveat.2.html
|
|
This introduces an `as_abstract()` getter to `UnixAddr` in order to
retrieve the name of an abstract unix socket.
This also adds tests around abstract addresses and clarify docs,
adding explicit semantics.
|
|
|
|
|
|
|
|
782: Fix formatting in CHANGELOG.md r=posborne a=asomers
|
|
|
|
|
|
|
|
|
|
|
|
Previously, the `AioCb`'s `in_progress` field would erroneously be set
to `true`, even if the syscall had an error
Fixes #714
|
|
Printing a warning message to stderr isn't really appropriate, because
there's no way to guarantee that stderr is even valid. Nor is
aio_suspend necessarily an appropriate action to take.
|
|
749: Moved ptrace constants into enum types plus minor additions r=Susurrus a=xd009642
Reopening of #734 hence the branch name, changelog will be updated once the pr number of this new pull request is known.
|
|
|
|
Used the libc_enum! macro to create enums for the ptrace event, request, and libc_bitflags for options constants defined in libc.
Also, replicated functionality to move from c_int to PtraceEvent enum in PR #728 as it appears to be abandoned.
Added utility function for detaching from tracee. Updated names and removed ptrace::ptrace namespace
|
|
This module merely contained FFI declarations, and only enough to
implement memfd_create() and pivot_root() wrapper functions in
nix. Since these declarations are redundant with equivalent FFI
declarations in libc, we'll remove them here. In the future, any
syscall-related wrapper function will be implemented directly and
utilize libc for FFI declarations as we cannot generically expose
a type-safe `syscall()` because of its variadic argument list.
|
|
`ptsname()` mutates global variables and mutating global variables is
always considered `unsafe` by Rust.
Reference:
https://github.com/nix-rust/nix/pull/742#issuecomment-324385919
|
|
|
|
This adds fexecve() to `nix::unistd`. It is available in libc since 0.2.29.
Ref: http://pubs.opengroup.org/onlinepubs/9699919799/functions/fexecve.html
|
|
728: Use upstream libc ptrace FFI r=Susurrus
This might fail on Mac because of how libc defines ptrace on that platform, but we'll see!
731: Use upstream libc definitions in mman module r=asomers
|
|
701: Calculate `nfds` parameter for `select` r=asomers
Doing this behind the scenes makes the API less error-prone and easier
to use. It should also fix my issue in https://github.com/nix-rust/nix/issues/679#issuecomment-316838148
|
|
|
|
Doing this behind the scenes makes the API less error-prone and easier
to use. It should also fix https://github.com/nix-rust/nix/issues/679#issuecomment-316838148
|
|
709: Mark nix::sys::ptrace::ptrace as unsafe, add safe variants of some routines r=Susurrus
These include:
* PTRACE_TRACEME
* PTRACE_CONT
* PTRACE_ATTACH
* PTRACE_SYSCALL
This is a part of #666, which is being split up into a couple smaller PRs.
|
|
* Use upstream libc FFI declarations and constants
* Use more Rust-y interface of returning entire struct versus passing it as an
argument to (f)statvfs.
* Replace field accesses with accessor methods
* Flatten vfs module into parent
* Remove all non-libc-based interfaces for working with the statvfs struct
|
|
|
|
688: Support for OpenBSD r=Susurrus
Fixes #685
These changes get nix building on OpenBSD 6.1. There is one failing test that I want a little guidance on:
```
error[E0308]: mismatched types
--> src/sys/event.rs:333:30
|
333 | assert!(expected.data == actual.data());
| ^^^^^^^^^^^^^ expected i64, found isize
```
`KEvent::data` is:
```
pub fn data(&self) -> intptr_t {
self.kevent.data as intptr_t
}
```
I assume the test should be updated to cast to the expected type but wanted to confirm that before making the change.
|
|
722: Add a convenience method .pid() for WaitStatus. r=asomers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672: add poll module in Android r=Susurrus
`poll` functions are defined in Android as well.
libc is missing some constant, but once rust-lang/libc#663 is merged, it'll be good to merge here.
Closes #711
|
|
|
|
|
|
|
|
|
|
|
|
The recommended way to trace syscalls with ptrace is to set the
PTRACE_O_TRACESYSGOOD option, to distinguish syscall stops from
receiving an actual SIGTRAP. In C, this would cause WSTOPSIG to return
SIGTRAP | 0x80, but nix wants to parse that as an actual signal.
Add another wait status type for syscall stops (in the language of the
ptrace(2) manpage, "PTRACE_EVENT stops" and "Syscall-stops" are
different things), and mask out bit 0x80 from signals before trying to
parse it.
Closes #550
|
|
|
|
|