Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 29 additions & 4 deletions src/unix/linux_like/l4re/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ pub type pthread_t = *mut c_void;
pub type dev_t = u64;
pub type socklen_t = u32;
pub type mode_t = u32;
pub type ino64_t = u64;
pub type off64_t = i64;
pub type blkcnt64_t = i64;
pub type rlim64_t = u64;
pub type nfds_t = c_ulong;
pub type nl_item = c_int;
pub type idtype_t = c_uint;
Expand All @@ -22,6 +18,35 @@ pub type pthread_key_t = c_uint;
pub type pthread_once_t = c_int;
pub type pthread_spinlock_t = c_int;

#[deprecated(
since = "0.2.187",
note = "Use `ino_t` instead. This type is defined as either one of an alias to the unsuffixed \
type (musl) or is the source of the unsuffixed type (uClibc). The `libc` crate is \
phasing out support for suffixed variants of types."
)]
pub type ino64_t = u64;
#[deprecated(
since = "0.2.187",
note = "Use `off_t` instead. This type is defined as either one of an alias to the unsuffixed \
type (musl) or is the source of the unsuffixed type (uClibc). The `libc` crate is \
phasing out support for suffixed variants of types."
)]
pub type off64_t = i64;
#[deprecated(
since = "0.2.187",
note = "Use `blkcnt_t` instead. This type is defined as either one of an alias to the \
unsuffixed type (musl) or is the source of the unsuffixed type (uClibc). The `libc` \
crate is phasing out support for suffixed variants of types."
)]
pub type blkcnt64_t = i64;
#[deprecated(
since = "0.2.187",
note = "Use `rlim_t` instead. This type is defined as either one of an alias to the unsuffixed \
type (musl) or is the source of the unsuffixed type (uClibc). The `libc` crate is \
phasing out support for suffixed variants of types."
)]
pub type rlim64_t = u64;

s! {
/// CPU sets.
pub struct l4_sched_cpu_set_t {
Expand Down
50 changes: 22 additions & 28 deletions src/unix/linux_like/l4re/uclibc/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,48 +15,42 @@ pub type suseconds_t = c_long;
pub type blksize_t = c_long;
pub type blkcnt_t = c_long;

#[deprecated(
since = "0.2.187",
note = "Use `fsblkcnt_t` instead. The unsuffixed type is defined in terms of the suffixed type \
upstream under the current target architecture (x86_64,) and support for suffixed \
types is phasing out in the `libc` crate."
)]
pub type fsblkcnt64_t = c_ulong;
#[deprecated(
since = "0.2.187",
note = "Use `fsfilcnt_t` instead. The unsuffixed type is defined in terms of the suffixed type \
upstream under the current target architecture (x86_64,) and support for suffixed \
types is phasing out in the `libc` crate."
)]
pub type fsfilcnt64_t = c_ulong;
pub type __u64 = c_ulong;

pub type flock64 = flock;
pub type stat64 = stat;

s! {
pub struct stat {
pub st_dev: c_ulong,
pub __pad1: c_ushort,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: c_ulong,
pub __pad2: c_ushort,
pub st_size: crate::off64_t,
pub st_blksize: blksize_t,
pub st_blocks: crate::blkcnt64_t,
pub st_atim: crate::timespec,
pub st_mtim: crate::timespec,
pub st_ctim: crate::timespec,
pub __uclibc_unused4: c_ulong,
pub __uclibc_unused5: c_ulong,
}

pub struct stat64 {
pub st_dev: c_ulong,
pub __pad1: c_uint,
pub __st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: c_ulong,
pub __pad2: c_uint,
pub st_size: crate::off64_t,
pub st_blksize: blksize_t,
pub st_blocks: crate::blkcnt64_t,
__pad0: c_int,
pub st_rdev: crate::dev_t,
pub st_size: crate::off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt_t,
pub st_atim: crate::timespec,
pub st_mtim: crate::timespec,
pub st_ctim: crate::timespec,
pub st_ino: crate::ino64_t,
__uclibc_unused: [c_long; 3],
}

pub struct shmid_ds {
Expand Down
67 changes: 25 additions & 42 deletions src/unix/linux_like/l4re/uclibc/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use crate::off64_t;
use crate::prelude::*;

pub type shmatt_t = c_ulong;
Expand All @@ -10,6 +9,9 @@ pub type __priority_which_t = c_uint;
pub type _pthread_descr = *mut c_void;
pub type __pthread_cond_align_t = c_long;

pub type statfs64 = statfs;
pub type statvfs64 = statvfs;

cfg_if! {
if #[cfg(doc)] {
// Used in `linux::arch` to define ioctl constants.
Expand Down Expand Up @@ -44,48 +46,18 @@ s! {
}

pub struct statfs {
pub f_type: fsword_t,
pub f_bsize: fsword_t,
pub f_type: c_long,
pub f_bsize: c_long,
pub f_blocks: crate::fsblkcnt_t,
pub f_bfree: crate::fsblkcnt_t,
pub f_bavail: crate::fsblkcnt_t,
pub f_files: crate::fsfilcnt_t,
pub f_ffree: crate::fsfilcnt_t,
pub f_fsid: crate::fsid_t,
pub f_namelen: fsword_t,
pub f_frsize: fsword_t,
pub f_flags: fsword_t,
pub f_spare: [fsword_t; 4],
}

pub struct statfs64 {
pub f_type: fsword_t,
pub f_bsize: fsword_t,
pub f_blocks: crate::fsblkcnt64_t,
pub f_bfree: crate::fsblkcnt64_t,
pub f_bavail: crate::fsblkcnt64_t,
pub f_files: crate::fsfilcnt64_t,
pub f_ffree: crate::fsfilcnt64_t,
pub f_fsid: crate::fsid_t,
pub f_namelen: fsword_t,
pub f_frsize: fsword_t,
pub f_flags: fsword_t,
pub f_spare: [fsword_t; 4],
}

pub struct statvfs64 {
pub f_bsize: c_ulong,
pub f_frsize: c_ulong,
pub f_blocks: crate::fsfilcnt64_t,
pub f_bfree: crate::fsfilcnt64_t,
pub f_bavail: crate::fsfilcnt64_t,
pub f_files: crate::fsfilcnt64_t,
pub f_ffree: crate::fsfilcnt64_t,
pub f_favail: crate::fsfilcnt64_t,
pub f_fsid: c_ulong,
pub f_flag: c_ulong,
pub f_namemax: c_ulong,
pub __f_spare: [c_int; 6],
pub f_namelen: c_long,
pub f_frsize: c_long,
pub f_flags: c_long,
pub f_spare: [c_long; 4],
}

pub struct ipc_perm {
Expand Down Expand Up @@ -116,12 +88,9 @@ s! {
pub f_files: crate::fsfilcnt_t,
pub f_ffree: crate::fsfilcnt_t,
pub f_favail: crate::fsfilcnt_t,
#[cfg(target_endian = "little")]
pub f_fsid: c_ulong,
#[cfg(target_pointer_width = "32")]
__f_unused: c_int,
#[cfg(target_endian = "big")]
pub f_fsid: c_ulong,
pub f_flag: c_ulong,
pub f_namemax: c_ulong,
__f_spare: [c_int; 6],
Expand Down Expand Up @@ -513,10 +482,24 @@ extern "C" {
flags: c_int,
) -> c_int;

pub fn pwritev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off64_t) -> ssize_t;
pub fn preadv(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off64_t) -> ssize_t;
pub fn pwritev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off_t) -> ssize_t;
pub fn preadv(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off_t) -> ssize_t;

#[deprecated(
since = "0.2.187",
note = "Use `getrlimit` instead. Upstream `#define`s the unsuffixed variants in terms of \
the suffixed variants under builds that use the default configurations. Support for \
suffixed symbols is being phased out in the `libc` crate."
)]
#[allow(deprecated)]
pub fn getrlimit64(resource: crate::__rlimit_resource_t, rlim: *mut crate::rlimit64) -> c_int;
#[deprecated(
since = "0.2.187",
note = "Use `setrlimit` instead. Upstream `#define`s the unsuffixed variants in terms of \
the suffixed variants under builds that use the default configurations. Support for \
suffixed symbols is being phased out in the `libc` crate."
)]
#[allow(deprecated)]
pub fn setrlimit64(resource: crate::__rlimit_resource_t, rlim: *const crate::rlimit64)
-> c_int;
pub fn getrlimit(resource: crate::__rlimit_resource_t, rlim: *mut crate::rlimit) -> c_int;
Expand Down
41 changes: 18 additions & 23 deletions src/unix/linux_like/l4re/uclibc/x86_64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,51 +17,46 @@ pub type suseconds_t = c_long;
pub type blksize_t = c_long;
pub type blkcnt_t = c_long;

#[deprecated(
since = "0.2.187",
note = "Use `fsblkcnt_t` instead. The unsuffixed type is defined in terms of the suffixed type \
upstream under the current target architecture (x86_64,) and support for suffixed \
types is phasing out in the `libc` crate."
)]
pub type fsblkcnt64_t = c_ulong;
#[deprecated(
since = "0.2.187",
note = "Use `fsfilcnt_t` instead. The unsuffixed type is defined in terms of the suffixed type \
upstream under the current target architecture (x86_64,) and support for suffixed \
types is phasing out in the `libc` crate."
)]
pub type fsfilcnt64_t = c_ulong;

pub type __u32 = c_uint;
pub type __u64 = c_ulong;

pub type stat64 = stat;
pub type flock64 = flock;

s! {
pub struct stat {
pub st_dev: c_ulong,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
// According to uclibc/libc/sysdeps/linux/x86_64/bits/stat.h, order of
// nlink and mode are swapped on 64 bit systems.
pub st_nlink: nlink_t,
pub st_mode: crate::mode_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
__pad0: c_int,
pub st_rdev: c_ulong,
pub st_rdev: crate::dev_t,
pub st_size: crate::off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt64_t,
pub st_blocks: crate::blkcnt_t,
pub st_atim: crate::timespec,
pub st_mtim: crate::timespec,
pub st_ctim: crate::timespec,
__uclibc_unused: [c_long; 3],
}

pub struct stat64 {
pub st_dev: c_ulong,
pub st_ino: crate::ino_t,
pub st_nlink: nlink_t,
pub st_mode: crate::mode_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
__pad0: c_int,
pub st_rdev: c_ulong,
pub st_size: crate::off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt64_t,
pub st_atim: crate::timespec,
pub st_mtim: crate::timespec,
pub st_ctim: crate::timespec,
st_pad4: [c_long; 3],
}

pub struct shmid_ds {
pub shm_perm: crate::ipc_perm,
pub shm_segsz: crate::size_t,
Expand Down
2 changes: 2 additions & 0 deletions src/unix/linux_like/linux/musl/lfs64.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![allow(deprecated)]

use crate::off64_t;
use crate::prelude::*;

Expand Down
61 changes: 60 additions & 1 deletion src/unix/linux_like/linux_l4re_shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,17 @@ s! {
pub val: c_int,
}

#[cfg_attr(
any(target_env = "uclibc", target_env = "musl", target_env = "ohos"),
deprecated(
since = "0.2.187",
note = "Use `rlimit` instead. The unsuffixed type is defined as an alias to this type, \
and their memory layout is effectively equivalent. The `libc` crate is phasing \
out support for suffixed variants in favor of a single, unsuffixed, fixed \
bitwidth symbol."
),
allow(deprecated)
)]
pub struct rlimit64 {
pub rlim_cur: crate::rlim64_t,
pub rlim_max: crate::rlim64_t,
Expand All @@ -312,6 +323,17 @@ s! {
pub d_name: [c_char; 256],
}

#[cfg_attr(
any(target_env = "uclibc", target_env = "musl", target_env = "ohos"),
deprecated(
since = "0.2.187",
note = "Use `dirent` instead. The unsuffixed type is defined as an alias to this type, \
and their memory layout is effectively equivalent. The `libc` crate is phasing \
out support for suffixed variants in favor of a single, unsuffixed, fixed \
bitwidth symbol."
),
allow(deprecated)
)]
pub struct dirent64 {
pub d_ino: crate::ino64_t,
pub d_off: crate::off64_t,
Expand Down Expand Up @@ -1978,18 +2000,55 @@ extern "C" {
cfg_if! {
if #[cfg(not(any(target_env = "musl", target_env = "ohos")))] {
extern "C" {
#[cfg_attr(
target_env = "uclibc",
deprecated(
since = "0.2.187",
note = "Use `freopen` instead. The unsuffixed routine is `#define`d as an \
alias to the suffixed routine in default builds of uClibc. Support for \
suffixed variants is phasing out in the `libc` crate."
)
)]
pub fn freopen64(
filename: *const c_char,
mode: *const c_char,
file: *mut crate::FILE,
) -> *mut crate::FILE;
#[cfg_attr(
target_env = "uclibc",
deprecated(
since = "0.2.187",
note = "Use `fseeko` instead. The unsuffixed routine is `#define`d as an alias \
to the suffixed routine in default builds of uClibc. Support for \
suffixed variants is phasing out in the `libc` crate."
)
)]
pub fn fseeko64(
stream: *mut crate::FILE,
offset: crate::off64_t,
#[cfg(not(target_env = "uclibc"))] offset: crate::off64_t,
#[cfg(target_env = "uclibc")] offset: crate::off_t,
whence: c_int,
) -> c_int;
#[cfg_attr(
target_env = "uclibc",
deprecated(
since = "0.2.187",
note = "Use `fsetpos` instead. The unsuffixed routine is `#define`d as an \
alias to the suffixed routine in default builds of uClibc. Support for \
suffixed variants is phasing out in the `libc` crate."
)
)]
pub fn fsetpos64(stream: *mut crate::FILE, ptr: *const crate::fpos64_t) -> c_int;
#[cfg(not(target_env = "uclibc"))]
pub fn ftello64(stream: *mut crate::FILE) -> crate::off64_t;
#[cfg(target_env = "uclibc")]
#[deprecated(
since = "0.2.187",
note = "Use `ftello` instead. The unsuffixed routine is `#define`d as an alias \
to the suffixed routine in default builds of uClibc. Support for \
suffixed variants is phasing out in the `libc` crate."
)]
pub fn ftello64(stream: *mut crate::FILE) -> crate::off_t;
}
}
}
Loading