From 77a08f29f57913391109c013b099c20dcf22322d Mon Sep 17 00:00:00 2001 From: Per Larsen Date: Thu, 13 Jul 2023 19:54:45 -0700 Subject: [PATCH] Remove some uses of types provided by libc --- c2rust-lib.rs | 1 - include/time.rs | 12 ------- tests/seek_stress.rs | 80 +++++++++++--------------------------------- tools/dav1d.rs | 21 +++++------- 4 files changed, 27 insertions(+), 87 deletions(-) delete mode 100644 include/time.rs diff --git a/c2rust-lib.rs b/c2rust-lib.rs index f86d4749e..6b6e0439b 100644 --- a/c2rust-lib.rs +++ b/c2rust-lib.rs @@ -36,7 +36,6 @@ pub mod include { pub mod stddef; pub mod stdint; pub mod stdio; - pub mod time; } // mod include pub mod src { pub mod align; diff --git a/include/time.rs b/include/time.rs deleted file mode 100644 index bfdf0e5ac..000000000 --- a/include/time.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub type __time_t = libc::c_long; -pub type __clockid_t = libc::c_int; -pub type __syscall_slong_t = libc::c_long; -pub type clockid_t = __clockid_t; -pub type time_t = __time_t; - -#[derive(Copy, Clone)] -#[repr(C)] -pub struct timespec { - pub tv_sec: __time_t, - pub tv_nsec: __syscall_slong_t, -} diff --git a/tests/seek_stress.rs b/tests/seek_stress.rs index 34a221009..c2088e2ae 100644 --- a/tests/seek_stress.rs +++ b/tests/seek_stress.rs @@ -13,9 +13,25 @@ extern crate c2rust_out; use c2rust_out::include::dav1d::common::Dav1dDataProps; use c2rust_out::include::dav1d::common::Dav1dUserData; use c2rust_out::include::dav1d::data::Dav1dData; +use c2rust_out::include::dav1d::headers::Dav1dFilterMode; +use c2rust_out::include::dav1d::headers::Dav1dRestorationType; use c2rust_out::include::dav1d::headers::Dav1dSequenceHeader; use c2rust_out::include::dav1d::headers::Dav1dSequenceHeaderOperatingParameterInfo; use c2rust_out::include::dav1d::headers::Dav1dSequenceHeaderOperatingPoint; +use c2rust_out::include::dav1d::headers::Dav1dTxfmMode; +use c2rust_out::include::dav1d::headers::Dav1dWarpedMotionType; +use c2rust_out::include::dav1d::headers::DAV1D_OFF; +use c2rust_out::include::stddef::ptrdiff_t; +use c2rust_out::include::stddef::size_t; +use c2rust_out::include::stdint::int16_t; +use c2rust_out::include::stdint::int32_t; +use c2rust_out::include::stdint::int64_t; +use c2rust_out::include::stdint::int8_t; +use c2rust_out::include::stdint::uint16_t; +use c2rust_out::include::stdint::uint32_t; +use c2rust_out::include::stdint::uint64_t; +use c2rust_out::include::stdint::uint8_t; +use c2rust_out::include::stdint::uintptr_t; use c2rust_out::src::r#ref::Dav1dRef; use c2rust_out::stderr; extern "C" { @@ -32,7 +48,7 @@ extern "C" { fn dav1d_parse_sequence_header( out: *mut Dav1dSequenceHeader, buf: *const uint8_t, - sz: size_t, + sz: libc::size_t, ) -> libc::c_int; fn dav1d_send_data(c: *mut Dav1dContext, in_0: *mut Dav1dData) -> libc::c_int; fn dav1d_get_picture(c: *mut Dav1dContext, out: *mut Dav1dPicture) -> libc::c_int; @@ -56,7 +72,6 @@ extern "C" { cli_settings: *mut CLISettings, lib_settings: *mut Dav1dSettings, ); - fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> libc::c_int; } #[derive(Copy, Clone)] #[repr(C)] @@ -66,63 +81,6 @@ pub struct __va_list_tag { pub overflow_arg_area: *mut libc::c_void, pub reg_save_area: *mut libc::c_void, } -pub type __int8_t = i8; -pub type __uint8_t = u8; -pub type __int16_t = i16; -pub type __uint16_t = u16; -pub type __int32_t = i32; -pub type __uint32_t = u32; -pub type __int64_t = i64; -pub type __uint64_t = u64; -pub type __off_t = libc::off_t; -pub type __time_t = libc::time_t; -pub type __clockid_t = libc::clockid_t; -pub type __syscall_slong_t = libc::c_long; -pub type size_t = libc::size_t; -pub type clockid_t = __clockid_t; -pub type int8_t = __int8_t; -pub type int16_t = __int16_t; -pub type int32_t = __int32_t; -pub type int64_t = __int64_t; -#[derive(Copy, Clone)] -#[repr(C)] -pub struct timespec { - pub tv_sec: __time_t, - pub tv_nsec: __syscall_slong_t, -} -pub type ptrdiff_t = libc::ptrdiff_t; -pub type uint8_t = __uint8_t; -pub type uint16_t = __uint16_t; -pub type uint32_t = __uint32_t; -pub type uint64_t = __uint64_t; -pub type uintptr_t = libc::uintptr_t; -pub type Dav1dTxfmMode = libc::c_uint; -pub const DAV1D_N_TX_MODES: Dav1dTxfmMode = 3; -pub const DAV1D_TX_SWITCHABLE: Dav1dTxfmMode = 2; -pub const DAV1D_TX_LARGEST: Dav1dTxfmMode = 1; -pub const DAV1D_TX_4X4_ONLY: Dav1dTxfmMode = 0; -pub type Dav1dFilterMode = libc::c_uint; -pub const DAV1D_FILTER_SWITCHABLE: Dav1dFilterMode = 4; -pub const DAV1D_N_FILTERS: Dav1dFilterMode = 4; -pub const DAV1D_FILTER_BILINEAR: Dav1dFilterMode = 3; -pub const DAV1D_N_SWITCHABLE_FILTERS: Dav1dFilterMode = 3; -pub const DAV1D_FILTER_8TAP_SHARP: Dav1dFilterMode = 2; -pub const DAV1D_FILTER_8TAP_SMOOTH: Dav1dFilterMode = 1; -pub const DAV1D_FILTER_8TAP_REGULAR: Dav1dFilterMode = 0; -pub type Dav1dAdaptiveBoolean = libc::c_uint; -pub const DAV1D_ADAPTIVE: Dav1dAdaptiveBoolean = 2; -pub const DAV1D_ON: Dav1dAdaptiveBoolean = 1; -pub const DAV1D_OFF: Dav1dAdaptiveBoolean = 0; -pub type Dav1dRestorationType = libc::c_uint; -pub const DAV1D_RESTORATION_SGRPROJ: Dav1dRestorationType = 3; -pub const DAV1D_RESTORATION_WIENER: Dav1dRestorationType = 2; -pub const DAV1D_RESTORATION_SWITCHABLE: Dav1dRestorationType = 1; -pub const DAV1D_RESTORATION_NONE: Dav1dRestorationType = 0; -pub type Dav1dWarpedMotionType = libc::c_uint; -pub const DAV1D_WM_TYPE_AFFINE: Dav1dWarpedMotionType = 3; -pub const DAV1D_WM_TYPE_ROT_ZOOM: Dav1dWarpedMotionType = 2; -pub const DAV1D_WM_TYPE_TRANSLATION: Dav1dWarpedMotionType = 1; -pub const DAV1D_WM_TYPE_IDENTITY: Dav1dWarpedMotionType = 0; #[derive(Copy, Clone)] #[repr(C)] pub struct Dav1dWarpedMotionParams { @@ -550,11 +508,11 @@ pub const REALTIME_CUSTOM: CLISettings_realtime = 2; pub const REALTIME_INPUT: CLISettings_realtime = 1; pub const REALTIME_DISABLE: CLISettings_realtime = 0; unsafe extern "C" fn get_seed() -> libc::c_uint { - let mut ts: timespec = timespec { + let mut ts: libc::timespec = libc::timespec { tv_sec: 0, tv_nsec: 0, }; - clock_gettime(1, &mut ts); + libc::clock_gettime(1, &mut ts); return (1000000000 as libc::c_ulonglong) .wrapping_mul(ts.tv_sec as libc::c_ulonglong) .wrapping_add(ts.tv_nsec as libc::c_ulonglong) as libc::c_uint; diff --git a/tools/dav1d.rs b/tools/dav1d.rs index 882997801..f2c937908 100644 --- a/tools/dav1d.rs +++ b/tools/dav1d.rs @@ -35,8 +35,6 @@ extern "C" { fn strcmp(_: *const libc::c_char, _: *const libc::c_char) -> libc::c_int; fn strerror(_: libc::c_int) -> *mut libc::c_char; fn strcpy(_: *mut libc::c_char, _: *const libc::c_char) -> *mut libc::c_char; - fn nanosleep(__requested_time: *const timespec, __remaining: *mut timespec) -> libc::c_int; - fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> libc::c_int; fn isatty(__fd: libc::c_int) -> libc::c_int; fn dav1d_data_unref(data: *mut Dav1dData); fn dav1d_close(c_out: *mut *mut Dav1dContext); @@ -76,10 +74,6 @@ extern "C" { lib_settings: *mut Dav1dSettings, ); } -use crate::include::time::__syscall_slong_t; -use crate::include::time::clockid_t; -use crate::include::time::time_t; -use crate::include::time::timespec; use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::common::Dav1dUserData; @@ -152,24 +146,25 @@ pub const REALTIME_CUSTOM: CLISettings_realtime = 2; pub const REALTIME_INPUT: CLISettings_realtime = 1; pub const REALTIME_DISABLE: CLISettings_realtime = 0; unsafe extern "C" fn get_time_nanos() -> uint64_t { - let mut ts: timespec = timespec { + let mut ts: libc::timespec = libc::timespec { tv_sec: 0, tv_nsec: 0, }; - clock_gettime(1 as libc::c_int, &mut ts); + libc::clock_gettime(1 as libc::c_int, &mut ts); return (1000000000 as libc::c_ulonglong) .wrapping_mul(ts.tv_sec as libc::c_ulonglong) .wrapping_add(ts.tv_nsec as libc::c_ulonglong) as uint64_t; } unsafe extern "C" fn sleep_nanos(mut d: uint64_t) { - let ts: timespec = { - let mut init = timespec { - tv_sec: d.wrapping_div(1000000000 as uint64_t) as time_t, - tv_nsec: d.wrapping_rem(1000000000 as uint64_t) as __syscall_slong_t, + // TODO: C version has Windows specific code path + let ts: libc::timespec = { + let mut init = libc::timespec { + tv_sec: d as libc::time_t / 1000000000, + tv_nsec: d as libc::time_t % 1000000000, }; init }; - nanosleep(&ts, 0 as *mut timespec); + libc::nanosleep(&ts, std::ptr::null_mut::()); } unsafe extern "C" fn synchronize( realtime: libc::c_int,