IoctlFlags
accepts unknown flags (e.g. due to future kernel changes).Error::UnrecognizedIoctls
is removed.
-
Added
Uffd::read_events
that can read multiple events from the userfaultfd file descriptor. -
Updated
bitflags
dependency to2.2.1
. -
Use
/dev/userfaultfd
as the default API for creating userfaultfd file descriptors.Since Linux 5.11 a process can select if it wants to handle page faults triggered in kernel space or not. Under this mechanism, processes that wish to handle those, need to have
CAP_SYS_PTRACE
capability.CAP_SYS_PTRACE
allows a process to do much more than create userfault fds, so with 6.1 Linux introduces/dev/userfaultfd
, a special character device that allows creating userfault file descriptors using theUSERFAULTFD_IOC_NEW
ioctl
. Access to this device is granted via file system permissions and does not requireCAP_SYS_PTRACE
to handle kernel triggered page faults.We now default to using
/dev/userfaultfd
for creating the descriptors and only if that file is not present, we fall back to using the syscall.
- Added support for the
UFFD_FEATURE_THREAD_ID
flag when compiled with thelinux4_14
Cargo feature.
- Update
bindgen
dependency ofuserfaultfd-sys
to0.57
. Thank you @jgowans
- Make
ReadWrite
public. Thank you @electroCutie
-
Removed the compile-time Linux version check, and replaced it with a Cargo feature.
The Linux version check was overly restrictive, even on systems that did have the right kernel version installed but had older headers in
/usr/include/linux
. Beyond that, this check made it more difficult to compile on a different host than what's targeted.There is now a
linux4_14
feature flag onuserfaultfd-sys
, which turns on and tests the extra constants available in that version. Sinceuserfaultfd
did not make use of any of those newer features, it doesn't have a feature flag yet.Applications should take care when initializing with
UffdBuilder
to specify the features and ioctls they require, so that an unsupported version will be detected at runtime.
- Initial public release of userfaultfd-rs.