Skip to content

Commit

Permalink
adding KERNEL_VERSION macro for linux.
Browse files Browse the repository at this point in the history
  • Loading branch information
devnexen committed Dec 21, 2022
1 parent 6a5c07f commit 88d6a1f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
1 change: 1 addition & 0 deletions libc-test/semver/linux.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,7 @@ J1939_PGN_ADDRESS_COMMANDED
J1939_PGN_MAX
J1939_PGN_PDU1_MAX
J1939_PGN_REQUEST
KERNEL_VERSION
KEYCTL_ASSUME_AUTHORITY
KEYCTL_CHOWN
KEYCTL_CLEAR
Expand Down
17 changes: 17 additions & 0 deletions libc-test/test/linux_kernel_version.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//! Compare libc's KERNEL_VERSION macro against a specific kernel version.

extern crate libc;

#[cfg(
target_os = "linux",
)]
mod t {
use libc;

#[test]
fn test_kernel_version() {
unsafe {
assert_eq!(libc::KERNEL_VERSION(6, 0, 0), 393216);
}
}
}
8 changes: 8 additions & 0 deletions src/unix/linux_like/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1615,6 +1615,14 @@ safe_f! {
pub {const} fn IPTOS_ECN(x: u8) -> u8 {
x & ::IPTOS_ECN_MASK
}

#[allow(ellipsis_inclusive_range_patterns)]
pub {const} fn KERNEL_VERSION(a: u32, b: u32, c: u32) -> u32 {
((a << 16) + (b << 8)) + match c {
0 ... 255 => c,
_ => 255,
}
}
}

extern "C" {
Expand Down

0 comments on commit 88d6a1f

Please sign in to comment.