Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: eventfd_read/write for Android/FreeBSD/Linux #3437

Merged
merged 1 commit into from Nov 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions libc-test/build.rs
Expand Up @@ -2417,6 +2417,8 @@ fn test_freebsd(target: &str) {
// the struct "__kvm" is quite tricky to bind so since we only use a pointer to it
// for now, it doesn't matter too much...
"kvm_t" => true,
// `eventfd(2)` and things come with it are added in FreeBSD 13
"eventfd_t" if Some(13) > freebsd_ver => true,

_ => false,
}
Expand Down Expand Up @@ -2494,6 +2496,8 @@ fn test_freebsd(target: &str) {
| "aio_readv"
| "aio_writev"
| "copy_file_range"
| "eventfd_read"
| "eventfd_write"
if Some(13) > freebsd_ver =>
{
true
Expand Down
2 changes: 2 additions & 0 deletions libc-test/semver/android.txt
Expand Up @@ -3756,3 +3756,5 @@ write
writev
dirname
basename
eventfd_read
eventfd_write
2 changes: 2 additions & 0 deletions libc-test/semver/freebsd.txt
Expand Up @@ -2245,3 +2245,5 @@ dirname
basename
closefrom
close_range
eventfd_read
eventfd_write
2 changes: 2 additions & 0 deletions libc-test/semver/linux.txt
Expand Up @@ -3611,3 +3611,5 @@ vhangup
vmsplice
wait4
waitid
eventfd_read
eventfd_write
4 changes: 4 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/mod.rs
Expand Up @@ -48,6 +48,8 @@ pub type cpusetid_t = ::c_int;

pub type sctp_assoc_t = u32;

pub type eventfd_t = u64;

#[cfg_attr(feature = "extra_traits", derive(Debug, Hash, PartialEq, Eq))]
#[repr(u32)]
pub enum devstat_support_flags {
Expand Down Expand Up @@ -5383,6 +5385,8 @@ extern "C" {
pub fn setaudit(auditinfo: *const auditinfo_t) -> ::c_int;

pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
pub fn eventfd_read(fd: ::c_int, value: *mut eventfd_t) -> ::c_int;
pub fn eventfd_write(fd: ::c_int, value: eventfd_t) -> ::c_int;

pub fn fdatasync(fd: ::c_int) -> ::c_int;

Expand Down
4 changes: 4 additions & 0 deletions src/unix/linux_like/android/mod.rs
Expand Up @@ -46,6 +46,8 @@ pub type Elf64_Off = u64;
pub type Elf64_Word = u32;
pub type Elf64_Xword = u64;

pub type eventfd_t = u64;

s! {
pub struct stack_t {
pub ss_sp: *mut ::c_void,
Expand Down Expand Up @@ -3566,6 +3568,8 @@ extern "C" {
flags: ::c_uint,
) -> ::ssize_t;
pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
pub fn eventfd_read(fd: ::c_int, value: *mut eventfd_t) -> ::c_int;
pub fn eventfd_write(fd: ::c_int, value: eventfd_t) -> ::c_int;
pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;
pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;
pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;
Expand Down
4 changes: 4 additions & 0 deletions src/unix/linux_like/linux/mod.rs
Expand Up @@ -52,6 +52,7 @@ pub type iconv_t = *mut ::c_void;
// linux/sctp.h
pub type sctp_assoc_t = ::__s32;

pub type eventfd_t = u64;
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos64_t {} // FIXME: fill this out with a struct
impl ::Copy for fpos64_t {}
Expand Down Expand Up @@ -4805,6 +4806,9 @@ extern "C" {
flags: ::c_uint,
) -> ::ssize_t;
pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
pub fn eventfd_read(fd: ::c_int, value: *mut eventfd_t) -> ::c_int;
pub fn eventfd_write(fd: ::c_int, value: eventfd_t) -> ::c_int;

pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;
pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;
pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;
Expand Down