Age | Commit message (Collapse) | Author |
|
|
|
The officially documented type, and the type in sched.h, for this
argument is pid_t.
|
|
Some ptrace functions return structures through the data argument. This commit adds utilities to return data through this mechanism and function specialisations for a few of these functions (getting event messages or the siginfo_t struct). Once the next version of libc is released these utilities will be expanded to include the fpregs and user_regs structs.
Ptrace requests that are now satisfied by a more specific public function will return an unsupported operation error. This has involved adding an UnsupportedOperation to the nix::Error enum and removed the mapping from Error to Errno and from Error to std::io::Error.
|
|
|
|
|
|
* SigAction::flags()
* SigAction::mask()
* SigAction::handler()
|
|
* grantpt
* ptsname/ptsname_r
* posix_openpt
* unlockpt
|
|
|
|
|
|
The existing AioCb constructors work for simple programs where
everything is stored on the stack. But in more complicated programs the
borrow checker can't prove that a buffer will outlive the AioCb that
references it. Fix this problem by introducting
AioCb::from_boxed_slice, which takes a reference-counted buffer.
Fixes #575
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The nix::sys::mman::mmap documentation says
> Calls to mmap are inherently unsafe, so they must be made in an unsafe
block.
however, the function was not actually marked unsafe.
* `munmap` should also be `unsafe` for obvious reasons.
* `madvise` should be `unsafe` because of the MADV_DONTNEED flag.
* `mlock` was already marked `unsafe`
* `munlock` and `msync` don't strictly need to be `unsafe` despite
taking pointers AFAICT, but are marked `unsafe` for consistency and in
case they add additional flags in the future.
|
|
revents is an output field so regardless of what value it is set to it
will be overwritten by many of the function calls that take a PollFd.
The only value that makes sense for the caller to pass in in
`EventFlags::empty()` so we just hardcode that instead of making the
caller do it.
|
|
This allows importing them directly from `nix::fcntl` which is more
ergonomic than needing to use them via `FcntlArg`.
|
|
|
|
Improve AIO API
- Turn most `aio_*` functions into `AioCb` methods
- Add runtime checks to `AioCb` methods
- Implement `Drop` for `AioCb`
|
|
Add ppoll()
This will currently fail CI, as the necessary changes haven't hit libc yet. That is tracked in rust-lang/libc#537. This does build on my computer using the changes tracked on that PR, so I'd appreciate any visual review of this code as it should be "done".
I also wanted to get this submitted so hopefully it'd be in the queue for the 0.8 release.
|
|
Remove EPOLLWAKEUP and SIGEV_THREAD_ID when cross-compiling to MIPS.
With this nix builds for mipsel-unknown-linux-gnu.
|
|
Added BaudRate enum for termios
Issue #514
Does not provide `BaudRate::EXTA` or `BaudRate::EXTB` constants. These seem to alias to `B19200` and `B38400` respectively and so break the 1:1 mapping needed by `From`. I don't know their historic use.
|
|
|
|
|
|
This is possible now that EPOLLEXCLUSIVE was added to libc in
https://github.com/rust-lang/libc/pull/526
|
|
Also, fix style bug in AIO tests
|
|
New baud constants landed in rust-lang/libc#530, we'll use them.
|
|
|
|
Issue #514
|
|
Fix the style for bitflags!
Prefer `libc_bitflags!` over `bitflags!`. Prefer `libc::CONSTANTS` over
writing the constant manually.
This makes #501 unnecessary, since upstream now contains the `O_TMPFILE` constant.
|
|
|
|
Fix unresolved name error when building with musl.
See: https://git.musl-libc.org/cgit/musl/tree/src/time/timer_create.c#n126
|
|
Prefer libc_bitflags! over bitflags!. Prefer libc::CONSTANTS over
writing the constant manually.
|
|
Implement major/minor macros, correct mkdev
It appears that the previous `mkdev` was based on the kernel headers (https://github.com/torvalds/linux/blob/v4.7/include/linux/kdev_t.h#L6) which (I guess) is the internal kernel dev_t. Scrolling down the file you can see some bitshifting operations to do conversions.
The new implementation(s) are based on [musl](http://git.musl-libc.org/cgit/musl/tree/include/sys/sysmacros.h?id=dbbb3734d8c0176feabd6c46e2e85bbc3b8a60af) and [glibc](https://github.molgen.mpg.de/git-mirror/glibc/blob/20003c49884422da7ffbc459cdeee768a6fee07b/sysdeps/unix/sysv/linux/sys/sysmacros.h#L38), which are in agreement about how dev_t should be handled.
(as it happens I suspect we could omit the shift by 32 since I don't see that in the kernel headers, but doesn't hurt to take the conservative route and mimic the libcs)
|
|
|
|
|
|
|
|
|
|
wait: Support ptrace events for Linux
Adds new WaitStatus value `PtraceEvent`. Implementation of #273 that only affects Linux/Android.
|
|
If an AioCb has any in-kernel state, AioCb.drop will print a warning and
wait for it to complete.
|
|
Prevent immutable buffers from being used with aio_read or lio_listio
with LIO_READ. AioCb.from_slice no longer needs to be unsafe.
|
|
|