Age | Commit message (Collapse) | Author |
|
|
|
Fixes #244
|
|
Documentation for Whence.
|
|
Changed SeekData and SeekHole hardcoded values to libc ones and
added availability only to linux freebsd and dragonflybsd.
Removed impl Whence and assigned the libc values directly in the enum definition.
|
|
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
|
|
|
|
|
|
Also updates cmsg types to match structs on non-Linux OSes.
The implementation of CmsgInterator did not correctly mirror the
way the CMSG_FIRSTHDR and CMSG_NEXTHDR macros work in C. CMSG_FIRSTHDR
does not attempt to align access since the pointer is already aligned
due to being part of the msghdr struct.
CmsgInterator was always aligning access which happened to work on all
platforms except OpenBSD where the use of alignment was adding
unexpected bytes to the expected size and causing the
`cmsg_align(cmsg_len) > self.buf.len()` guard clause to return early.
|
|
There appears to be some interaction with test_pathconf_limited and
another one when they are run in parallel, causing it to return ENOENT
so the path has been changed from . to /.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
These include:
* PTRACE_TRACEME
* PTRACE_CONT
* PTRACE_ATTACH
* PTRACE_SYSCALL
|
|
Some tests were invoking non-async-signal-safe functions from the child
process after a `fork`. Since they might be invoked in parallel, this
could lead to problems.
|
|
|
|
|
|
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
|
|
On semi-recent Rust versions (I think 1.8+) this now works properly.
|
|
Instead of relying on the macro user to calculate the length in bytes
do that within the macro itself
|
|
|
|
There two different write semantics used with ioctls: one involves
passing a pointer the other involves passing an int. Previously the
ioctl! macro did not distinguish between these cases and left it up
to the user to set the proper datatype. This previous version was
not type safe and prone to errors. The solution here is to split the
"write" variant into a "write_ptr" and "write_int" variant that makes
the semantics more explicit and improves type safety by specifying
arguments better.
|
|
|
|
|
|
These were exported for some weird reason and then left in
for documentation. Also some parts of certain modules used
them and others used the libc:: prefix. This was removed to
improve the docs and also code consistency
|
|
This also means that we need to properly mask off bits to the valid range
of ioctl numbers.
|
|
These are low-level functions that shouldn't be exposed
|
|
This refactors the examples to more directly address the exact use cases
for the `ioctl!` macro that `nix` provides. Additionally other macros
that should not be used by end users are no longer discussed.
|
|
|
|
|