Skip to content

Commit d0bd7e2

Browse files
antoncxxJohnTitor
authored andcommitted
NetBSD: add kinfo_file, kinfo_pcb structures and related constants
(backport <#4985>) (cherry picked from commit 56caa81)
1 parent 17f5cce commit d0bd7e2

File tree

7 files changed

+115
-1
lines changed

7 files changed

+115
-1
lines changed

libc-test/build.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,6 +1521,8 @@ fn test_netbsd(target: &str) {
15211521
("ifreq", "ifr_ifru") => true,
15221522
("utmpx", "ut_exit") => true,
15231523
("posix_spawn_file_actions_entry_t", "fae_data") => true,
1524+
("kinfo_pcb", "ki_s") => true,
1525+
("kinfo_pcb", "ki_d") => true,
15241526

15251527
_ => false,
15261528
}

libc-test/semver/netbsd.txt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,16 @@ DCCP_TYPE_RESET
235235
DCCP_TYPE_RESPONSE
236236
DEAD_PROCESS
237237
DOWN_TIME
238+
DTYPE_CRYPTO
239+
DTYPE_EVENTFD
240+
DTYPE_KQUEUE
241+
DTYPE_MISC
242+
DTYPE_MQUEUE
243+
DTYPE_PIPE
244+
DTYPE_SEM
245+
DTYPE_SOCKET
246+
DTYPE_TIMERFD
247+
DTYPE_VNODE
238248
DT_UNKNOWN
239249
D_FMT
240250
D_T_FMT
@@ -499,6 +509,9 @@ KERN_DUMP_ON_PANIC
499509
KERN_EVCNT
500510
KERN_FILE
501511
KERN_FILE2
512+
KERN_FILESLOP
513+
KERN_FILE_BYFILE
514+
KERN_FILE_BYPID
502515
KERN_FORKFSLEEP
503516
KERN_FSCALE
504517
KERN_FSYNC
@@ -767,6 +780,8 @@ O_RSYNC
767780
O_SEARCH
768781
O_SHLOCK
769782
O_SYNC
783+
PCB_ALL
784+
PCB_SLOP
770785
PENDIN
771786
PF_APPLETALK
772787
PF_ARP
@@ -1381,8 +1396,10 @@ jrand48
13811396
kevent
13821397
key_t
13831398
killpg
1399+
kinfo_file
13841400
kinfo_getvmmap
13851401
kinfo_lwp
1402+
kinfo_pcb
13861403
kinfo_proc2
13871404
kinfo_vmentry
13881405
kqueue
@@ -1629,4 +1646,4 @@ utmpxname
16291646
utrace
16301647
uucred
16311648
wait4
1632-
waitid
1649+
waitid

src/new/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ cfg_if! {
195195
pub use signal::*;
196196
} else if #[cfg(target_os = "netbsd")] {
197197
pub use net::if_::*;
198+
pub use sys::file::*;
198199
pub use sys::ipc::*;
200+
pub use sys::socket::*;
199201
pub use sys::statvfs::*;
200202
pub use sys::time::*;
201203
pub use sys::timex::*;

src/new/netbsd/sys/file.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//! Header: `sys/file.h`
2+
//!
3+
//! <https://github.com/NetBSD/src/blob/trunk/sys/sys/file.h>
4+
5+
use crate::prelude::*;
6+
7+
pub const DTYPE_VNODE: c_int = 1;
8+
pub const DTYPE_SOCKET: c_int = 2;
9+
pub const DTYPE_PIPE: c_int = 3;
10+
pub const DTYPE_KQUEUE: c_int = 4;
11+
pub const DTYPE_MISC: c_int = 5;
12+
pub const DTYPE_CRYPTO: c_int = 6;
13+
pub const DTYPE_MQUEUE: c_int = 7;
14+
pub const DTYPE_SEM: c_int = 8;
15+
pub const DTYPE_EVENTFD: c_int = 9;
16+
pub const DTYPE_TIMERFD: c_int = 10;

src/new/netbsd/sys/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
//!
33
//! https://github.com/NetBSD/src/tree/trunk/sys/sys
44
5+
pub(crate) mod file;
56
pub(crate) mod ipc;
7+
pub(crate) mod socket;
68
pub(crate) mod statvfs;
79
pub(crate) mod time;
810
pub(crate) mod timex;

src/new/netbsd/sys/socket.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//! Header: `sys/socket.h`
2+
//!
3+
//! <https://github.com/NetBSD/src/blob/trunk/sys/sys/socket.h>
4+
//!
5+
6+
use crate::prelude::*;
7+
8+
s_no_extra_traits! {
9+
pub union __c_anonymous_pcb_sockaddr_src {
10+
pub _kis_src: crate::sockaddr,
11+
_kis_pad: Padding<[c_char; 256 + 8]>,
12+
}
13+
14+
pub union __c_anonymous_pcb_sockaddr_dst {
15+
pub _kid_dst: crate::sockaddr,
16+
_kid_pad: Padding<[c_char; 256 + 8]>,
17+
}
18+
19+
pub struct kinfo_pcb {
20+
pub ki_pcbaddr: u64,
21+
pub ki_ppcbaddr: u64,
22+
pub ki_sockaddr: u64,
23+
pub ki_family: u32,
24+
pub ki_type: u32,
25+
pub ki_protocol: u32,
26+
pub ki_pflags: u32,
27+
pub ki_sostate: u32,
28+
pub ki_prstate: u32,
29+
pub ki_tstate: i32,
30+
pub ki_tflags: u32,
31+
pub ki_rcvq: u64,
32+
pub ki_sndq: u64,
33+
pub ki_s: __c_anonymous_pcb_sockaddr_src,
34+
pub ki_d: __c_anonymous_pcb_sockaddr_dst,
35+
pub ki_inode: u64,
36+
pub ki_vnode: u64,
37+
pub ki_conn: u64,
38+
pub ki_refs: u64,
39+
pub ki_nextref: u64,
40+
}
41+
}
42+
43+
pub const PCB_SLOP: c_int = 20;
44+
pub const PCB_ALL: c_int = 0;

src/unix/bsd/netbsdlike/netbsd/mod.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,33 @@ s! {
443443
pub a_v: Elf64_Xword,
444444
}
445445

446+
// sys/sysctl.h
447+
448+
pub struct kinfo_file {
449+
pub ki_fileaddr: u64,
450+
pub ki_flag: u32,
451+
pub ki_iflags: u32,
452+
pub ki_ftype: u32,
453+
pub ki_count: u32,
454+
pub ki_msgcount: u32,
455+
pub ki_usecount: u32,
456+
pub ki_fucred: u64,
457+
pub ki_fuid: u32,
458+
pub ki_fgid: u32,
459+
pub ki_fops: u64,
460+
pub ki_foffset: u64,
461+
pub ki_fdata: u64,
462+
pub ki_vun: u64,
463+
pub ki_vsize: u64,
464+
pub ki_vtype: u32,
465+
pub ki_vtag: u32,
466+
pub ki_vdata: u64,
467+
pub ki_pid: u32,
468+
pub ki_fd: i32,
469+
pub ki_ofileflags: u32,
470+
_ki_padto64bits: Padding<u32>,
471+
}
472+
446473
// link.h
447474

448475
pub struct dl_phdr_info {
@@ -1698,6 +1725,10 @@ pub const KI_MAXLOGNAME: c_int = 24;
16981725
pub const KI_MAXEMULLEN: c_int = 16;
16991726
pub const KI_LNAMELEN: c_int = 20;
17001727

1728+
pub const KERN_FILE_BYFILE: c_int = 1;
1729+
pub const KERN_FILE_BYPID: c_int = 2;
1730+
pub const KERN_FILESLOP: c_int = 10;
1731+
17011732
// sys/lwp.h
17021733
pub const LSIDL: c_int = 1;
17031734
pub const LSRUN: c_int = 2;

0 commit comments

Comments
 (0)