syscalls::raw::*
now take ausize
instead ofSysno
for the syscall number. This allows bypassingSysno
if you need to invoke a syscall that is not in theSysno
enum. To migrate existing code, you can cast anySysno
type to ausize
(e.g.,Sysno::openat as usize
).
- Fixed build for ARMv4t and ARMv5te thumb mode.
- Updated syscall lists to Linux 6.8.
Fixed build for ARMv4t and ARMv5te thumb mode.(Actually fixed in v0.6.18)
- Added
SysnoMap::into_iter
. - Added
SysnoSet::into_iter
. - Removed unnecessary build dependency on
cc
. - aarch64: Fixed a doc test
- Updated to syscalls from Linux v6.5.
- armv7: Added support for armv7-linux-androideabi targets.
- riscv: Added the
riscv_flush_icache
syscall - powerpc64: Fixed a typo preventing the
asm_experimental_arch
feature from being enabled.
- Added riscv32 and riscv64 support.
- Added
SysnoMap::init_all
. - Added support for ARM thumb mode. Compilation would fail in this case.
Requires the use of
build.rs
(or using a nightly compiler).
- Added
SysnoMap
for mapping syscall numbers to a typeT
.
- aarch64: Removed bogus
arch_specific_syscall
. - x86: Fixed
int 0x80
syntax for non-LLVM rustc backends. - Added
SysnoSet::is_empty
. - Minor documentation fixes.
- Fixed missing aarch64 syscalls
- Added aarch64 support.
- Renamed
with-serde
feature to justserde
. Thewith-serde
feature will be removed in the next major release. - Implemented
Serialize
andDeserialize
forSysnoSet
.
- Implemented
Default
,BitOr
, andBitOrAssign
forSysnoSet
.
- Added features to expose the syscall tables of other architectures besides
the target architecture. There is one feature per architecture and have the
same name. For example, if the target architecture is
x86-64
and we also want the syscall table forx86
, thex86
feature can be enabled. Then,syscalls::x86::Sysno
will be exposed. - Added the
all
feature, which enables the syscall tables for all architectures. - Added the
full
feature, which enables all current and future features for the crate. - Added man page links for all syscalls. Since these are generated, some links may be broken.
- Added
SysnoSet
for constructing sets of syscalls. It uses a bitset under the hood and provides constant-time lookup and insertion ofSysno
s. - Fixed
Sysno::len()
returning the wrong value for architectures with large syscall offsets. - Deprecated
Sysno::len()
. UseSysno::table_size()
instead. This will be removed in the next major version.
- Exposed
syscalls::raw::*
to allow avoidance of theResult
return type. This makes it cleaner to call syscalls likegettid
that are guaranteed to never fail.
- Removed
build.rs
and switched to Rust's inline assembly syntax. This should enable better codegen, including the ability to have syscalls get inlined. - Breaking: Architectures besides
arm
,x86
, andx86-64
now require nightly. - Breaking: Removed top-level
SYS_
constants. Just use theSysno
enum instead.
This is a major breaking change from v0.4.
- Changed all syscalls to take and return
usize
instead ofi64
oru64
. This fixes calling syscalls on 32-bit architectures. - Fixed syscall offsets for mips and mips64.
- Added CI tests for more than just
x86_64
.
- Made
ErrnoSentinel
public.
- Added the ability to invoke syscalls for all architectures except
aarch64
,sparc
, andsparc64
. - Fixed std-dependent Errno trait impls not getting compiled.
- Made
syscalls::arch::{x86, x86_64, ...}
private.
This is a major breaking change from v0.3. You can fix most compilation errors
by simply doing s/SyscallNo::SYS_/Sysno::/g
.
- Created this changelog.
- Renamed
SyscallNo::SYS_*
toSysno::*
. - Added
Errno
for more Rustic error handling. - Changed the
syscalls-gen
script to grab Linux headers from GitHub. - Added more architecture support for the syscall table. Issuing syscalls is still limited to x86-64, however.