Skip to content

Commit 7b338f9

Browse files
committed
adding a handful of linux fanotify data types.
close #3688
1 parent 2899529 commit 7b338f9

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

libc-test/build.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -3700,6 +3700,9 @@ fn test_linux(target: &str) {
37003700
if musl && ty == "fanout_args" {
37013701
return true;
37023702
}
3703+
if sparc64 && ty == "fanotify_event_info_error" {
3704+
return true;
3705+
}
37033706

37043707
match ty {
37053708
// These cannot be tested when "resolv.h" is included and are tested
@@ -4449,7 +4452,11 @@ fn test_linux(target: &str) {
44494452
// the `tcpi_delivery_rate_app_limited` field is a bitfield on musl
44504453
(musl && struct_ == "tcp_info" && field == "tcpi_delivery_rate_app_limited") ||
44514454
// the `tcpi_fast_open_client_fail` field is a bitfield on musl
4452-
(musl && struct_ == "tcp_info" && field == "tcpi_fast_open_client_fail")
4455+
(musl && struct_ == "tcp_info" && field == "tcpi_fast_open_client_fail") ||
4456+
// either fsid_t or int[2] type
4457+
(struct_ == "fanotify_event_info_fid" && field == "fsid") ||
4458+
// `handle` is a VLA
4459+
(struct_ == "fanotify_event_info_fid" && field == "handle")
44534460
});
44544461

44554462
cfg.skip_roundtrip(move |s| match s {

libc-test/semver/linux-gnu.txt

+3
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,9 @@ dlinfo
628628
dlmopen
629629
endutxent
630630
explicit_bzero
631+
fanotify_event_info_error
632+
fanotify_event_info_header
633+
fanotify_event_info_pidfd
631634
fgetgrent_r
632635
fgetspent_r
633636
futimes

libc-test/semver/linux.txt

+1
Original file line numberDiff line numberDiff line change
@@ -3540,6 +3540,7 @@ execvpe
35403540
faccessat
35413541
fallocate
35423542
fallocate64
3543+
fanotify_event_info_fid
35433544
fanotify_event_metadata
35443545
fanotify_init
35453546
fanotify_mark

src/unix/linux_like/linux/gnu/mod.rs

+11
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,17 @@ s! {
491491
pub tcpi_rcv_space: u32,
492492
pub tcpi_total_retrans: u32,
493493
}
494+
495+
pub struct fanotify_event_info_pidfd {
496+
pub hdr: ::fanotify_event_info_header,
497+
pub pidfd: ::__s32,
498+
}
499+
500+
pub struct fanotify_event_info_error {
501+
pub hdr: ::fanotify_event_info_header,
502+
pub error: ::__s32,
503+
pub error_count: ::__u32,
504+
}
494505
}
495506

496507
impl siginfo_t {

src/unix/linux_like/linux/mod.rs

+17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub type loff_t = ::c_longlong;
1616
pub type pthread_key_t = ::c_uint;
1717
pub type pthread_once_t = ::c_int;
1818
pub type pthread_spinlock_t = ::c_int;
19+
pub type __kernel_fsid_t = __c_anonymous__kernel_fsid_t;
1920

2021
pub type __u8 = ::c_uchar;
2122
pub type __u16 = ::c_ushort;
@@ -590,6 +591,10 @@ s! {
590591
pub r_info: Elf64_Xword,
591592
}
592593

594+
pub struct __c_anonymous__kernel_fsid_t {
595+
pub val: [::c_int; 2],
596+
}
597+
593598
pub struct ucred {
594599
pub pid: ::pid_t,
595600
pub uid: ::uid_t,
@@ -657,6 +662,18 @@ s! {
657662
pub response: __u32,
658663
}
659664

665+
pub struct fanotify_event_info_header {
666+
pub info_type: __u8,
667+
pub pad: __u8,
668+
pub len: __u16,
669+
}
670+
671+
pub struct fanotify_event_info_fid {
672+
pub hdr: fanotify_event_info_header,
673+
pub fsid: ::__kernel_fsid_t,
674+
pub handle: [::c_uchar; 0],
675+
}
676+
660677
pub struct sockaddr_vm {
661678
pub svm_family: ::sa_family_t,
662679
pub svm_reserved1: ::c_ushort,

0 commit comments

Comments
 (0)