summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-09-17 14:57:52 +0000
committerbors <bors@rust-lang.org>2019-09-17 14:57:52 +0000
commitb17f22d62f4cc6993f5dcfc568e981f23f13a2a7 (patch)
tree3ee84bb8eb75b58f1c6ebb499d0be43cb487debf
parent49c1d138e3b4719e21ee7cbce7dd903543cda80d (diff)
parent676d9fb4201877f90875c8943defc23146c926e2 (diff)
downloadrust-libc-b17f22d62f4cc6993f5dcfc568e981f23f13a2a7.tar.gz
Auto merge of #1517 - Wind-River:master_rebase, r=gnzlbg
updates for vxworks fix problems found in testing VxWorks socket and epoll definitions needed by mio and related crates; epoll only supported in VxWorks kernel; just provide stub definitions for user mode for now Fixed usage of isize libc VxWorks cleanups and additions remove copyright notice
-rw-r--r--src/vxworks/aarch64.rs1
-rw-r--r--src/vxworks/arm.rs1
-rw-r--r--src/vxworks/armv7.rs2
-rwxr-xr-xsrc/vxworks/mod.rs557
-rw-r--r--src/vxworks/powerpc.rs1
-rw-r--r--src/vxworks/powerpc64.rs1
-rw-r--r--src/vxworks/x86.rs1
-rw-r--r--src/vxworks/x86_64.rs3
8 files changed, 328 insertions, 239 deletions
diff --git a/src/vxworks/aarch64.rs b/src/vxworks/aarch64.rs
index 577c8bef16..4032488b6c 100644
--- a/src/vxworks/aarch64.rs
+++ b/src/vxworks/aarch64.rs
@@ -1,3 +1,4 @@
pub type c_char = u8;
+pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;
diff --git a/src/vxworks/arm.rs b/src/vxworks/arm.rs
index cfdce825a0..55240068aa 100644
--- a/src/vxworks/arm.rs
+++ b/src/vxworks/arm.rs
@@ -1,3 +1,4 @@
pub type c_char = u8;
+pub type wchar_t = u32;
pub type c_long = i32;
pub type c_ulong = u32;
diff --git a/src/vxworks/armv7.rs b/src/vxworks/armv7.rs
deleted file mode 100644
index 9b0b338b91..0000000000
--- a/src/vxworks/armv7.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub type c_long = i32;
-pub type c_ulong = u32;
diff --git a/src/vxworks/mod.rs b/src/vxworks/mod.rs
index 37a8c2c56f..0cc107b14a 100755
--- a/src/vxworks/mod.rs
+++ b/src/vxworks/mod.rs
@@ -25,33 +25,43 @@ pub type c_ulonglong = u64;
pub type intmax_t = i64;
pub type uintmax_t = u64;
-pub type size_t = usize;
-pub type ptrdiff_t = isize;
-pub type intptr_t = isize;
-pub type uintptr_t = usize;
-pub type ssize_t = isize;
+cfg_if! {
+ if #[cfg(target_pointer_width = "32")] {
+ pub type size_t = c_uint;
+ pub type ssize_t = c_int;
+ pub type ptrdiff_t = c_int;
+ pub type intptr_t = c_int;
+ pub type uintptr_t = c_uint;
+ } else if #[cfg(target_pointer_width = "64")] {
+ pub type size_t = c_ulonglong;
+ pub type ssize_t = c_longlong;
+ pub type ptrdiff_t = c_longlong;
+ pub type intptr_t = c_longlong;
+ pub type uintptr_t = c_ulonglong;
+ } else {
+ // Unknown target_pointer_width
+ }
+}
pub type pid_t = i32;
pub type in_addr_t = u32;
-pub type in_port_t = u16;
pub type sighandler_t = ::size_t;
-pub type cc_t = ::c_uchar;
+pub type cpuset_t = u32;
pub type blkcnt_t = ::c_long;
pub type blksize_t = ::c_long;
pub type ino_t = ::c_ulong;
-pub type ino32_t = u32;
pub type off_t = ::c_longlong;
-pub type rlim_t = ::c_ulonglong;
+pub type rlim_t = ::c_ulong;
pub type suseconds_t = ::c_long;
pub type time_t = ::c_long;
-pub type wchar_t = ::c_int;
+
pub type errno_t = ::c_int;
pub type useconds_t = ::c_ulong;
-pub type socklen_t = ::c_int;
+pub type socklen_t = ::c_uint;
pub type pthread_t = ::c_ulong;
@@ -65,24 +75,19 @@ pub type uid_t = ::c_ushort;
pub type gid_t = ::c_ushort;
pub type sigset_t = ::c_ulonglong;
pub type key_t = ::c_long;
-pub type shmatt_t = ::c_ulong;
-
-pub type mqd_t = ::c_int;
pub type nfds_t = ::c_uint;
-pub type nl_item = ::c_int;
pub type stat64 = ::stat;
pub type pthread_key_t = ::c_ulong;
// From b_off_t.h
pub type off64_t = ::c_longlong;
-pub type off_t64 = ::c_longlong;
// From b_BOOL.h
-pub type BOOL = ::c_int; // excuse me what
+pub type BOOL = ::c_int;
-//Straight from vxWind.h ..
+// From vxWind.h ..
pub type _Vx_OBJ_HANDLE = ::c_int;
pub type _Vx_TASK_ID = ::_Vx_OBJ_HANDLE;
pub type _Vx_MSG_Q_ID = ::_Vx_OBJ_HANDLE;
@@ -100,43 +105,29 @@ pub type SD_ID = ::OBJ_HANDLE;
pub type CONDVAR_ID = ::OBJ_HANDLE;
// From vxTypes.h
-pub type _Vx_usr_arg_t = ::ssize_t; // c_int for LP32
-pub type _Vx_exit_code_t = ::ssize_t; // c_int for LP32
+pub type _Vx_usr_arg_t = isize;
+pub type _Vx_exit_code_t = isize;
pub type _Vx_ticks_t = ::c_uint;
pub type _Vx_ticks64_t = ::c_ulonglong;
-// From vxTypesBase.h
-pub type va_list = *mut ::c_char;
-
pub type sa_family_t = ::c_uchar;
-// structs that only exist in userspace
-s! {
- // b_struct_vx_eventsResourceCb.h
- pub struct _Vx_EVENTS_RSRC {
- pub registered : ::c_uint,
- pub taskId : ::c_int,
- pub options : ::c_uchar,
- pub pad : [::c_uchar; 3],
- }
-
- // b_struct_vx_semaphore.h
- pub struct _Vx_semaphore {
- pub magic : ::c_uint,
- pub semType: ::c_uint,
- pub options: ::c_uint,
- pub recurse: ::c_uint,
- pub owned_k: ::c_uint, // owned_k is volatile
- pub semId_k: ::_Vx_SEM_ID_KERNEL,
- pub state : ::c_uint, //state is union of _Vx_UINT and _Vx_UINT
- pub events : ::_Vx_EVENTS_RSRC,
+#[cfg_attr(feature = "extra_traits", derive(Debug))]
+pub enum _Vx_semaphore {}
+impl ::Copy for _Vx_semaphore {}
+impl ::Clone for _Vx_semaphore {
+ fn clone(&self) -> _Vx_semaphore {
+ *self
}
+}
+// structs that only exist in userspace
+s! {
// b_pthread_condattr_t.h
pub struct pthread_condattr_t {
pub condAttrStatus: ::c_int,
pub condAttrPshared: ::c_int,
- pub _CondAttrClockId: ::clockid_t,
+ pub condAttrClockId: ::clockid_t,
}
// b_pthread_cond_t.h
@@ -147,23 +138,25 @@ s! {
pub condRefCount: ::c_int,
pub condMutex: *mut ::pthread_mutex_t,
pub condAttr: ::pthread_condattr_t,
- pub condSemName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX]
+ pub condSemName: [::c_char; _PTHREAD_SHARED_SEM_NAME_MAX]
}
// b_pthread_rwlockattr_t.h
pub struct pthread_rwlockattr_t {
pub rwlockAttrStatus: ::c_int,
+ pub rwlockAttrPshared: ::c_int,
pub rwlockAttrMaxReaders: ::c_uint,
+ pub rwlockAttrConformOpt: ::c_uint,
}
// b_pthread_rwlock_t.h
pub struct pthread_rwlock_t {
pub rwlockSemId: :: _Vx_SEM_ID,
- pub rwlockReadersRefCount: ::c_int,
+ pub rwlockReadersRefCount: ::c_uint,
pub rwlockValid: ::c_int,
pub rwlockInitted: ::c_int,
pub rwlockAttr: ::pthread_rwlockattr_t,
- pub rwlockName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX]
+ pub rwlockSemName: [::c_char; _PTHREAD_SHARED_SEM_NAME_MAX]
}
// b_struct_timeval.h
@@ -173,29 +166,38 @@ s! {
}
// socket.h
+ pub struct linger {
+ pub l_onoff: ::c_int,
+ pub l_linger: ::c_int,
+ }
+
pub struct sockaddr {
pub sa_len : ::c_uchar,
pub sa_family : sa_family_t,
pub sa_data : [::c_char; 14],
}
- // socket.h
- pub struct sockaddr_storage {
- pub ss_len : ::c_uchar,
- pub ss_family : ::sa_family_t,
- pub __ss_pad1 : [::c_char; _SS_PAD1SIZE],
- pub __ss_align : i32,
- // pub __ss_pad2 : [::c_char; _SS_PAD2SIZE],
- pub __ss_pad2 : [::c_char; 32],
- pub __ss_pad3 : [::c_char; 32],
- pub __ss_pad4 : [::c_char; 32],
- pub __ss_pad5 : [::c_char; _SS_PAD2SIZE - 96],
- }
pub struct iovec {
pub iov_base: *mut ::c_void,
pub iov_len: ::size_t,
}
+ pub struct msghdr {
+ pub msg_name: *mut c_void,
+ pub msg_namelen: socklen_t,
+ pub msg_iov: *mut iovec,
+ pub msg_iovlen: ::c_int,
+ pub msg_control: *mut c_void,
+ pub msg_controllen: socklen_t,
+ pub msg_flags: ::c_int,
+ }
+
+ pub struct cmsghdr {
+ pub cmsg_len: socklen_t,
+ pub cmsg_level: ::c_int,
+ pub cmsg_type: ::c_int,
+ }
+
// poll.h
pub struct pollfd {
pub fd : ::c_int,
@@ -203,40 +205,10 @@ s! {
pub revents : ::c_short,
}
- // dirent.h
- pub struct dirent {
- pub d_ino : ::ino_t,
- // pub d_name : [::c_char; (_PARM_NAME_MAX + 1)],
- pub d_name : [::c_char; 32],
- pub d_name1 : [::c_char; 32],
- pub d_name2 : [::c_char; 32],
- pub d_name3 : [::c_char; 32],
- pub d_name4 : [::c_char; 32],
- pub d_name5 : [::c_char; 32],
- pub d_name6 : [::c_char; 32],
- pub d_name7 : [::c_char; 32],
- }
-
- pub struct dirent64 {
- pub d_ino : ::ino_t,
- pub d_off : ::off64_t,
- pub d_reclen : u16,
- pub d_type : u8,
- // pub d_name : [::c_char; 256],
- pub d_name : [::c_char; 32],
- pub d_name1 : [::c_char; 32],
- pub d_name2 : [::c_char; 32],
- pub d_name3 : [::c_char; 32],
- pub d_name4 : [::c_char; 32],
- pub d_name5 : [::c_char; 32],
- pub d_name6 : [::c_char; 32],
- pub d_name7 : [::c_char; 32],
- } // Doesn't seem like it exists anymore
-
// resource.h
pub struct rlimit { /* Is this really needed? Questionable ... */
- pub rlim_cur : ::size_t,
- pub rlim_max : ::size_t,
+ pub rlim_cur : ::rlim_t,
+ pub rlim_max : ::rlim_t,
}
// stat.h
@@ -316,21 +288,11 @@ s! {
// This field is a union of int and void * in vxworks
// The size has been set to the larger of the two
pub si_value : ::size_t,
- }
-
- pub struct ipc_perm {
- pub __key : key_t,
- pub uid : uid_t,
- pub gid : gid_t,
- pub cuid : uid_t,
- pub cgid : gid_t,
- pub mode : ::c_ushort,
- pub __seq : ::c_ushort,
- }
-
- pub struct shmid_ds {
- pub shm_perm : ipc_perm,
- pub shm_segsz : ::c_int,
+ pub si_errno : ::c_int,
+ pub si_status: ::c_int,
+ pub si_addr: *mut ::c_void,
+ pub si_uid: ::uid_t,
+ pub si_pid: ::pid_t,
}
// pthread.h (krnl)
@@ -352,7 +314,7 @@ s! {
pub mutexCondRefCount: ::c_int,
pub mutexSavPriority: ::c_int,
pub mutexAttr: ::pthread_mutexattr_t,
- pub mutexSemName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX],
+ pub mutexSemName: [::c_char; _PTHREAD_SHARED_SEM_NAME_MAX],
}
// b_struct_timespec.h
@@ -361,6 +323,19 @@ s! {
pub tv_nsec: ::c_long,
}
+ // time.h
+ pub struct tm {
+ pub tm_sec: ::c_int,
+ pub tm_min: ::c_int,
+ pub tm_hour: ::c_int,
+ pub tm_mday: ::c_int,
+ pub tm_mon: ::c_int,
+ pub tm_year: ::c_int,
+ pub tm_wday: ::c_int,
+ pub tm_yday: ::c_int,
+ pub tm_isdst: ::c_int,
+ }
+
// in.h
pub struct in_addr {
pub s_addr: in_addr_t,
@@ -373,6 +348,7 @@ s! {
}
// in6.h
+ #[repr(align(4))]
pub struct in6_addr {
pub s6_addr: [u8; 16],
}
@@ -417,15 +393,6 @@ s! {
pub sin6_scope_id: u32,
}
- pub struct sockaddr_un {
- pub sun_family: sa_family_t,
- //pub sun_path: [::c_char; 108]
- pub sun_path: [::c_char; 32],
- pub sun_path1: [::c_char; 32],
- pub sun_path2: [::c_char; 32],
- pub sun_path3: [::c_char; 12],
- }
-
pub struct passwd {
pub pw_name: *mut ::c_char,
pub pw_uid: ::uid_t,
@@ -434,6 +401,27 @@ s! {
pub pw_shell: *mut ::c_char,
}
+ pub struct Dl_info {
+ pub dli_fname: *const ::c_char,
+ pub dli_fbase: *mut ::c_void,
+ pub dli_sname: *const ::c_char,
+ pub dli_saddr: *mut ::c_void,
+ }
+}
+
+s_no_extra_traits! {
+ // dirent.h
+ pub struct dirent {
+ pub d_ino : ::ino_t,
+ pub d_name : [::c_char; _PARM_NAME_MAX + 1],
+ }
+
+ pub struct sockaddr_un {
+ pub sun_len: u8,
+ pub sun_family: sa_family_t,
+ pub sun_path: [::c_char; 104]
+ }
+
// rtpLibCommon.h
pub struct RTP_DESC {
pub status : ::c_int,
@@ -441,25 +429,69 @@ s! {
pub entrAddr : *mut ::c_void,
pub initTaskId: ::TASK_ID,
pub parentId : ::RTP_ID,
- //pub pathName : [::c_char; (VX_RTP_NAME_LENGTH + 1)],
- pub pathName : [::c_char; 32],
- pub pathName1 : [::c_char; 32],
- pub pathName2 : [::c_char; 32],
- pub pathName3 : [::c_char; 32],
- pub pathName4 : [::c_char; 32],
- pub pathName5 : [::c_char; 32],
- pub pathName6 : [::c_char; 32],
- pub pathName7 : [::c_char; 32],
- pub taskCnt : u32,
+ pub pathName : [::c_char; VX_RTP_NAME_LENGTH + 1],
+ pub taskCnt : ::c_int,
pub textStart : *mut ::c_void,
pub textEnd : *mut ::c_void,
}
+ // socket.h
+ pub struct sockaddr_storage {
+ pub ss_len : ::c_uchar,
+ pub ss_family : ::sa_family_t,
+ pub __ss_pad1 : [::c_char; _SS_PAD1SIZE],
+ pub __ss_align : i32,
+ pub __ss_pad2 : [::c_char; _SS_PAD2SIZE],
+ }
- pub struct Dl_info {
- pub dli_fname: *const ::c_char,
- pub dli_fbase: *mut ::c_void,
- pub dli_sname: *const ::c_char,
- pub dli_saddr: *mut ::c_void,
+}
+
+cfg_if! {
+ if #[cfg(feature = "extra_traits")] {
+ impl ::fmt::Debug for dirent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("dirent")
+ .field("d_ino", &self.d_ino)
+ .field("d_name", &&self.d_name[..])
+ .finish()
+ }
+ }
+
+ impl ::fmt::Debug for sockaddr_un {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sockaddr_un")
+ .field("sun_len", &self.sun_len)
+ .field("sun_family", &self.sun_family)
+ .field("sun_path", &&self.sun_path[..])
+ .finish()
+ }
+ }
+
+ impl ::fmt::Debug for RTP_DESC {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("RTP_DESC")
+ .field("status", &self.status)
+ .field("options", &self.options)
+ .field("entrAddr", &self.entrAddr)
+ .field("initTaskId", &self.initTaskId)
+ .field("parentId", &self.parentId)
+ .field("pathName", &&self.pathName[..])
+ .field("taskCnt", &self.taskCnt)
+ .field("textStart", &self.textStart)
+ .field("textEnd", &self.textEnd)
+ .finish()
+ }
+ }
+ impl ::fmt::Debug for sockaddr_storage {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sockaddr_storage")
+ .field("ss_len", &self.ss_len)
+ .field("ss_family", &self.ss_family)
+ .field("__ss_pad1", &&self.__ss_pad1[..])
+ .field("__ss_align", &self.__ss_align)
+ .field("__ss_pad2", &&self.__ss_pad2[..])
+ .finish()
+ }
+ }
}
}
@@ -500,7 +532,7 @@ pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 1;
pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 2;
pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
pub const PTHREAD_STACK_MIN: usize = 4096;
-pub const PTHREAD_SHARED_SEM_NAME_MAX: usize = 30;
+pub const _PTHREAD_SHARED_SEM_NAME_MAX: usize = 30;
pub const EFAULT: ::c_int = 14;
pub const EBUSY: ::c_int = 16;
@@ -508,7 +540,7 @@ pub const EEXIST: ::c_int = 17;
pub const ENODEV: ::c_int = 19;
pub const EINVAL: ::c_int = 22;
pub const EPIPE: ::c_int = 32;
-pub const ERANGE: ::c_int = 34;
+pub const ERANGE: ::c_int = 38;
// ERRNO STUFF
pub const EPERM: ::c_int = 1; /* Not owner */
@@ -571,61 +603,46 @@ enum nfsstat {
NFSERR_NOSPC = 28,
NFSERR_ROFS = 30,
NFSERR_MLINK = 31,
- NFSERR_NAMETOOLONG = 63,
- NFSERR_NOTEMPTY = 66,
- NFSERR_DQUOT = 69,
- NFSERR_STALE = 70,
+ NFSERR_NAMETOOLONG = 26,
+ NFSERR_NOTEMPTY = 15,
+ NFSERR_DQUOT = 83,
+ NFSERR_STALE = 88,
NFSERR_REMOTE = 71,
NFSERR_WFLUSH = 99,
NFSERR_BADHANDLE = 10001,
NFSERR_NOT_SYNC = 10002,
NFSERR_BAD_COOKIE = 10003,
- NFSERR_NOTSUPP = 10004,
+ NFSERR_NOTSUPP = 45,
NFSERR_TOOSMALL = 10005,
- NFSERR_SERVERFAULT = 10006,
NFSERR_BADTYPE = 10007,
NFSERR_JUKEBOX = 10008,
}
-pub const S_nfsLib_NFS_OK: ::c_int = M_nfsStat | nfsstat::NFS_OK as ::c_int;
-pub const S_nfsLib_NFSERR_PERM: ::c_int =
- M_nfsStat | nfsstat::NFSERR_PERM as ::c_int;
-pub const S_nfsLib_NFSERR_NOENT: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NOENT as ::c_int;
-pub const S_nfsLib_NFSERR_IO: ::c_int =
- M_nfsStat | nfsstat::NFSERR_IO as ::c_int;
-pub const S_nfsLib_NFSERR_NXIO: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NXIO as ::c_int;
-pub const S_nfsLib_NFSERR_ACCESS: ::c_int =
- M_nfsStat | nfsstat::NFSERR_ACCESS as ::c_int;
-pub const S_nfsLib_NFSERR_EXIST: ::c_int =
- M_nfsStat | nfsstat::NFSERR_EXIST as ::c_int;
+pub const S_nfsLib_NFS_OK: ::c_int = nfsstat::NFS_OK as ::c_int;
+pub const S_nfsLib_NFSERR_PERM: ::c_int = nfsstat::NFSERR_PERM as ::c_int;
+pub const S_nfsLib_NFSERR_NOENT: ::c_int = nfsstat::NFSERR_NOENT as ::c_int;
+pub const S_nfsLib_NFSERR_IO: ::c_int = nfsstat::NFSERR_IO as ::c_int;
+pub const S_nfsLib_NFSERR_NXIO: ::c_int = nfsstat::NFSERR_NXIO as ::c_int;
+pub const S_nfsLib_NFSERR_ACCESS: ::c_int = nfsstat::NFSERR_ACCESS as ::c_int;
+pub const S_nfsLib_NFSERR_EXIST: ::c_int = nfsstat::NFSERR_EXIST as ::c_int;
pub const S_nfsLib_NFSERR_XDEV: ::c_int =
M_nfsStat | nfsstat::NFSERR_XDEV as ::c_int;
pub const S_nfsLib_NFSERR_NODEV: ::c_int =
M_nfsStat | nfsstat::NFSERR_NODEV as ::c_int;
-pub const S_nfsLib_NFSERR_NOTDIR: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NOTDIR as ::c_int;
-pub const S_nfsLib_NFSERR_ISDIR: ::c_int =
- M_nfsStat | nfsstat::NFSERR_ISDIR as ::c_int;
-pub const S_nfsLib_NFSERR_INVAL: ::c_int =
- M_nfsStat | nfsstat::NFSERR_INVAL as ::c_int;
-pub const S_nfsLib_NFSERR_FBIG: ::c_int =
- M_nfsStat | nfsstat::NFSERR_FBIG as ::c_int;
-pub const S_nfsLib_NFSERR_NOSPC: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NOSPC as ::c_int;
-pub const S_nfsLib_NFSERR_ROFS: ::c_int =
- M_nfsStat | nfsstat::NFSERR_ROFS as ::c_int;
+pub const S_nfsLib_NFSERR_NOTDIR: ::c_int = nfsstat::NFSERR_NOTDIR as ::c_int;
+pub const S_nfsLib_NFSERR_ISDIR: ::c_int = nfsstat::NFSERR_ISDIR as ::c_int;
+pub const S_nfsLib_NFSERR_INVAL: ::c_int = nfsstat::NFSERR_INVAL as ::c_int;
+pub const S_nfsLib_NFSERR_FBIG: ::c_int = nfsstat::NFSERR_FBIG as ::c_int;
+pub const S_nfsLib_NFSERR_NOSPC: ::c_int = nfsstat::NFSERR_NOSPC as ::c_int;
+pub const S_nfsLib_NFSERR_ROFS: ::c_int = nfsstat::NFSERR_ROFS as ::c_int;
pub const S_nfsLib_NFSERR_MLINK: ::c_int =
M_nfsStat | nfsstat::NFSERR_MLINK as ::c_int;
pub const S_nfsLib_NFSERR_NAMETOOLONG: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NAMETOOLONG as ::c_int;
+ nfsstat::NFSERR_NAMETOOLONG as ::c_int;
pub const S_nfsLib_NFSERR_NOTEMPTY: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NOTEMPTY as ::c_int;
-pub const S_nfsLib_NFSERR_DQUOT: ::c_int =
- M_nfsStat | nfsstat::NFSERR_DQUOT as ::c_int;
-pub const S_nfsLib_NFSERR_STALE: ::c_int =
- M_nfsStat | nfsstat::NFSERR_STALE as ::c_int;
+ nfsstat::NFSERR_NOTEMPTY as ::c_int;
+pub const S_nfsLib_NFSERR_DQUOT: ::c_int = nfsstat::NFSERR_DQUOT as ::c_int;
+pub const S_nfsLib_NFSERR_STALE: ::c_int = nfsstat::NFSERR_STALE as ::c_int;
pub const S_nfsLib_NFSERR_WFLUSH: ::c_int =
M_nfsStat | nfsstat::NFSERR_WFLUSH as ::c_int;
pub const S_nfsLib_NFSERR_REMOTE: ::c_int =
@@ -637,26 +654,34 @@ pub const S_nfsLib_NFSERR_NOT_SYNC: ::c_int =
pub const S_nfsLib_NFSERR_BAD_COOKIE: ::c_int =
M_nfsStat | nfsstat::NFSERR_BAD_COOKIE as ::c_int;
pub const S_nfsLib_NFSERR_NOTSUPP: ::c_int =
- M_nfsStat | nfsstat::NFSERR_NOTSUPP as ::c_int;
+ nfsstat::NFSERR_NOTSUPP as ::c_int;
pub const S_nfsLib_NFSERR_TOOSMALL: ::c_int =
M_nfsStat | nfsstat::NFSERR_TOOSMALL as ::c_int;
-pub const S_nfsLib_NFSERR_SERVERFAULT: ::c_int =
- M_nfsStat | nfsstat::NFSERR_SERVERFAULT as ::c_int;
+pub const S_nfsLib_NFSERR_SERVERFAULT: ::c_int = nfsstat::NFSERR_IO as ::c_int;
pub const S_nfsLib_NFSERR_BADTYPE: ::c_int =
M_nfsStat | nfsstat::NFSERR_BADTYPE as ::c_int;
pub const S_nfsLib_NFSERR_JUKEBOX: ::c_int =
M_nfsStat | nfsstat::NFSERR_JUKEBOX as ::c_int;
-// IP Stuff? These are allll guesswork
+// in.h
pub const IPPROTO_IP: ::c_int = 0;
-pub const IP_TTL: ::c_int = 4; // not sure if this is right
-pub const IP_ADD_MEMBERSHIP: ::c_int = 11;
-pub const IP_DROP_MEMBERSHIP: ::c_int = 12;
-pub const IPV6_V6ONLY: ::c_int = 26;
-pub const IP_MULTICAST_TTL: ::c_int = 33;
-pub const IP_MULTICAST_LOOP: ::c_int = 34;
-pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
-pub const IPPROTO_IPV6: ::c_int = 41; // or this one, for that matter
+pub const IPPROTO_IPV6: ::c_int = 41;
+
+pub const IP_TTL: ::c_int = 4;
+pub const IP_MULTICAST_IF: ::c_int = 9;
+pub const IP_MULTICAST_TTL: ::c_int = 10;
+pub const IP_MULTICAST_LOOP: ::c_int = 11;
+pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
+
+// in6.h
+pub const IPV6_V6ONLY: ::c_int = 1;
+pub const IPV6_UNICAST_HOPS: ::c_int = 4;
+pub const IPV6_MULTICAST_IF: ::c_int = 9;
+pub const IPV6_MULTICAST_HOPS: ::c_int = 10;
+pub const IPV6_MULTICAST_LOOP: ::c_int = 11;
+pub const IPV6_ADD_MEMBERSHIP: ::c_int = 12;
+pub const IPV6_DROP_MEMBERSHIP: ::c_int = 13;
// STAT Stuff
pub const S_IFMT: ::c_int = 0xf000;
@@ -685,21 +710,39 @@ pub const S_IWOTH: ::c_int = 0x0002;
pub const S_IXOTH: ::c_int = 0x0001;
pub const S_IRWXO: ::c_int = 0x0007;
+// socket.h
pub const SOL_SOCKET: ::c_int = 0xffff;
-pub const SO_BROADCAST: ::c_int = 0x001e;
+
+pub const SO_DEBUG: ::c_int = 0x0001;
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_RCVLOWAT: ::c_int = 0x0012;
+pub const SO_SNDLOWAT: ::c_int = 0x0013;
pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_ACCEPTCONN: ::c_int = 0x001e;
+pub const SO_BROADCAST: ::c_int = 0x0020;
+pub const SO_USELOOPBACK: ::c_int = 0x0040;
+pub const SO_LINGER: ::c_int = 0x0080;
+pub const SO_REUSEPORT: ::c_int = 0x0200;
+
+pub const SO_VLAN: ::c_int = 0x8000;
+
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_BINDTODEVICE: ::c_int = 0x1010;
+pub const SO_OOBINLINE: ::c_int = 0x1011;
+pub const SO_CONNTIMEO: ::c_int = 0x100a;
+
pub const SOCK_STREAM: ::c_int = 1;
pub const SOCK_DGRAM: ::c_int = 2;
pub const SOCK_RAW: ::c_int = 3;
pub const SOCK_RDM: ::c_int = 4;
pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SOCK_PACKET: ::c_int = 10;
-pub const SO_DEBUG: ::c_int = 0x0001;
-pub const SO_REUSEADDR: ::c_int = 0x0004;
-pub const SO_KEEPALIVE: ::c_int = 0x0008;
-pub const SO_DONTROUTE: ::c_int = 0x0010;
-pub const SO_RCVLOWAT: ::c_int = 0x0012;
pub const _SS_MAXSIZE: usize = 128;
pub const _SS_ALIGNSIZE: usize = size_of::<u32>();
@@ -740,7 +783,7 @@ pub const AF_SOCKDEV: ::c_int = 31;
pub const AF_TIPC: ::c_int = 33;
pub const AF_MIPC: ::c_int = 34;
pub const AF_MIPC_SAFE: ::c_int = 35;
-pub const AF_MAX: ::c_int = 36;
+pub const AF_MAX: ::c_int = 37;
pub const SHUT_RD: ::c_int = 0;
pub const SHUT_WR: ::c_int = 1;
@@ -753,7 +796,6 @@ pub const TCP_NOPUSH: ::c_int = 3;
pub const TCP_KEEPIDLE: ::c_int = 4;
pub const TCP_KEEPINTVL: ::c_int = 5;
pub const TCP_KEEPCNT: ::c_int = 6;
-pub const SO_ERROR: ::c_int = 4;
// IO Lib Definitions:
@@ -772,7 +814,7 @@ pub const FIOWRITE: ::c_int = 12;
pub const FIODISKCHANGE: ::c_int = 13;
pub const FIOCANCEL: ::c_int = 14;
pub const FIOSQUEEZE: ::c_int = 15;
-pub const FIONBIO: ::c_int = -1878786032; // it goes on ...
+pub const FIONBIO: ::c_int = 16;
pub const _POSIX_PATH_MAX: ::c_int = 256;
// Some poll stuff
@@ -783,7 +825,7 @@ pub const POLLRDNORM: ::c_short = 0x0040;
pub const POLLWRNORM: ::c_short = POLLOUT;
pub const POLLRDBAND: ::c_short = 0x0080;
pub const POLLWRBAND: ::c_short = 0x0100;
-pub const POLLER: ::c_short = 0x0008;
+pub const POLLERR: ::c_short = 0x0008;
pub const POLLHUP: ::c_short = 0x0010;
pub const POLLNVAL: ::c_short = 0x0020;
@@ -801,25 +843,12 @@ pub const F_SETLK: ::c_int = 8;
pub const F_SETLKW: ::c_int = 9;
pub const F_DUPFD_CLOEXEC: ::c_int = 14;
-//Some Dirent.h stuff
-pub const DT_UNKNOWN: ::c_uchar = 0x0;
-pub const DT_FIFO: ::c_uchar = 0x1;
-pub const DT_CHR: ::c_uchar = 0x2;
-pub const DT_DIR: ::c_uchar = 0x4;
-pub const DT_BLK: ::c_uchar = 0x6;
-pub const DT_REG: ::c_uchar = 0x8;
-pub const DT_LNK: ::c_uchar = 0xA;
-pub const DT_SOCK: ::c_uchar = 0xC;
-pub const DT_WHT: ::c_uchar = 0xE;
-
// Other Random Stuff
pub const VXSIM_EWOULDBLOCK: ::c_int = 70;
-pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
-pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
-pub const SIG_DFL: sighandler_t = 0 as sighandler_t;
-pub const SIG_IGN: sighandler_t = 1 as sighandler_t;
-pub const SIG_ERR: sighandler_t = !0 as sighandler_t;
+pub const SIG_DFL: c_int = 0;
+pub const SIG_IGN: c_int = 1;
+pub const SIG_ERR: c_int = !0;
pub const SIGHUP: ::c_int = 1;
pub const SIGINT: ::c_int = 2;
@@ -878,15 +907,15 @@ pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
mutexValid: PTHREAD_VALID_OBJ,
mutexInitted: PTHREAD_UNUSED_YET_OBJ,
mutexCondRefCount: 0,
- mutexSavPriority: 0,
+ mutexSavPriority: -1,
mutexAttr: PTHREAD_MUTEXATTR_INITIALIZER,
- mutexSemName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+ mutexSemName: [0; _PTHREAD_SHARED_SEM_NAME_MAX],
};
const PTHREAD_CONDATTR_INITIALIZER: pthread_condattr_t = pthread_condattr_t {
- condAttrStatus: 0,
- condAttrPshared: 0,
- _CondAttrClockId: CLOCK_REALTIME,
+ condAttrStatus: 0xf70990ef,
+ condAttrPshared: 1,
+ condAttrClockId: CLOCK_REALTIME,
};
pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
condSemId: null_mut(),
@@ -895,13 +924,15 @@ pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
condRefCount: 0,
condMutex: null_mut(),
condAttr: PTHREAD_CONDATTR_INITIALIZER,
- condSemName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+ condSemName: [0; _PTHREAD_SHARED_SEM_NAME_MAX],
};
const PTHREAD_RWLOCKATTR_INITIALIZER: pthread_rwlockattr_t =
pthread_rwlockattr_t {
rwlockAttrStatus: PTHREAD_INITIALIZED_OBJ,
+ rwlockAttrPshared: 1,
rwlockAttrMaxReaders: 0,
+ rwlockAttrConformOpt: 1,
};
pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
rwlockSemId: null_mut(),
@@ -909,7 +940,7 @@ pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
rwlockValid: PTHREAD_VALID_OBJ,
rwlockInitted: PTHREAD_UNUSED_YET_OBJ,
rwlockAttr: PTHREAD_RWLOCKATTR_INITIALIZER,
- rwlockName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+ rwlockSemName: [0; _PTHREAD_SHARED_SEM_NAME_MAX],
};
pub const SEEK_SET: ::c_int = 0;
@@ -919,19 +950,19 @@ pub const SEEK_END: ::c_int = 2;
// rtpLibCommon.h
pub const VX_RTP_NAME_LENGTH: usize = 255;
-//Some unsupported stuff
-pub const _SC_GETPW_R_SIZE_MAX: ::c_int = -1; // Via unistd.h
-pub const _SC_PAGESIZE: ::c_int = 64;
+// h/public/unistd.h
+pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 21; // Via unistd.h
+pub const _SC_PAGESIZE: ::c_int = 39;
pub const O_ACCMODE: ::c_int = 3;
pub const O_CLOEXEC: ::c_int = 0x100000; // fcntlcom
pub const O_EXCL: ::c_int = 0x0800;
pub const O_CREAT: ::c_int = 0x0200;
pub const O_TRUNC: ::c_int = 0x0400;
pub const O_APPEND: ::c_int = 0x0008;
-pub const O_RDWR: ::c_int = 2;
-pub const O_WRONLY: ::c_int = 1;
+pub const O_RDWR: ::c_int = 0x0002;
+pub const O_WRONLY: ::c_int = 0x0001;
pub const O_RDONLY: ::c_int = 0;
-pub const O_NONBLOCK: ::c_int = 0x4;
+pub const O_NONBLOCK: ::c_int = 0x4000;
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum FILE {}
@@ -950,6 +981,48 @@ impl ::Clone for fpos_t {
}
}
+f! {
+ pub fn CMSG_ALIGN(len: usize) -> usize {
+ len + ::mem::size_of::<usize>() - 1 & !(::mem::size_of::<usize>() - 1)
+ }
+
+ pub fn CMSG_NXTHDR(mhdr: *const msghdr,
+ cmsg: *const cmsghdr) -> *mut cmsghdr {
+ let next = cmsg as usize + CMSG_ALIGN((*cmsg).cmsg_len as usize)
+ + CMSG_ALIGN(::mem::size_of::<::cmsghdr>());
+ let max = (*mhdr).msg_control as usize
+ + (*mhdr).msg_controllen as usize;
+ if next <= max {
+ (cmsg as usize + CMSG_ALIGN((*cmsg).cmsg_len as usize))
+ as *mut ::cmsghdr
+ } else {
+ 0 as *mut ::cmsghdr
+ }
+ }
+
+ pub fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr {
+ if (*mhdr).msg_controllen as usize > 0 {
+ (*mhdr).msg_control as *mut cmsghdr
+ } else {
+ 0 as *mut cmsghdr
+ }
+ }
+
+ pub fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut ::c_uchar {
+ (cmsg as *mut ::c_uchar)
+ .offset(CMSG_ALIGN(::mem::size_of::<::cmsghdr>()) as isize)
+ }
+
+ pub fn CMSG_SPACE(length: ::c_uint) -> ::c_uint {
+ (CMSG_ALIGN(length as usize) + CMSG_ALIGN(::mem::size_of::<cmsghdr>()))
+ as ::c_uint
+ }
+
+ pub fn CMSG_LEN(length: ::c_uint) -> ::c_uint {
+ CMSG_ALIGN(::mem::size_of::<cmsghdr>()) as ::c_uint + length
+ }
+}
+
extern "C" {
pub fn isalnum(c: c_int) -> c_int;
pub fn isalpha(c: c_int) -> c_int;
@@ -1030,7 +1103,6 @@ extern "C" {
pub fn free(p: *mut c_void);
pub fn abort() -> !;
pub fn exit(status: c_int) -> !;
- // pub fn _exit(status: c_int) -> !;
pub fn atexit(cb: extern "C" fn()) -> c_int;
pub fn system(s: *const c_char) -> c_int;
pub fn getenv(s: *const c_char) -> *mut c_char;
@@ -1064,7 +1136,6 @@ extern "C" {
n: size_t,
) -> c_int;
pub fn strlen(cs: *const c_char) -> size_t;
- pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
pub fn strerror(n: c_int) -> *mut c_char;
pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
@@ -1289,6 +1360,15 @@ extern "C" {
) -> *mut ::c_void;
pub fn dlclose(handle: *mut ::c_void) -> ::c_int;
pub fn res_init() -> ::c_int;
+
+ // time.h
+ pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+ pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+ pub fn mktime(tm: *mut tm) -> time_t;
+ pub fn time(time: *mut time_t) -> time_t;
+ pub fn gmtime(time_p: *const time_t) -> *mut tm;
+ pub fn localtime(time_p: *const time_t) -> *mut tm;
+ pub fn timegm(tm: *mut tm) -> time_t;
pub fn difftime(time1: time_t, time0: time_t) -> ::c_double;
pub fn mknod(
@@ -1298,7 +1378,7 @@ extern "C" {
) -> ::c_int;
pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;
pub fn chroot(name: *const ::c_char) -> ::c_int;
- pub fn usleep(secs: ::c_uint) -> ::c_int;
+ pub fn usleep(secs: ::useconds_t) -> ::c_int;
pub fn putenv(string: *mut c_char) -> ::c_int;
pub fn setlocale(
category: ::c_int,
@@ -1354,10 +1434,7 @@ extern "C" {
}
extern "C" {
- // this is gonna be a big one
-
// stdlib.h
- // This function may not be defined for armv7
pub fn memalign(block_size: ::size_t, size_arg: ::size_t)
-> *mut ::c_void;
@@ -1368,10 +1445,7 @@ extern "C" {
pub fn chdir(attr: *const ::c_char) -> ::c_int;
// pthread.h
- pub fn pthread_mutexattr_init(
- /* PTHREAD STUFF */
- attr: *mut pthread_mutexattr_t,
- ) -> ::c_int;
+ pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> ::c_int;
// pthread.h
pub fn pthread_mutexattr_destroy(
@@ -1707,6 +1781,12 @@ extern "C" {
pFromLen: *mut ::socklen_t,
) -> ::ssize_t;
+ pub fn recvmsg(
+ socket: ::c_int,
+ mp: *mut ::msghdr,
+ flags: ::c_int,
+ ) -> ::ssize_t;
+
// socket.h
pub fn send(
socket: ::c_int,
@@ -1715,6 +1795,12 @@ extern "C" {
flags: ::c_int,
) -> ::ssize_t;
+ pub fn sendmsg(
+ socket: ::c_int,
+ mp: *const ::msghdr,
+ flags: ::c_int,
+ ) -> ::ssize_t;
+
// socket.h
pub fn sendto(
socket: ::c_int,
@@ -1895,7 +1981,7 @@ extern "C" {
pub fn closedir(ptr: *mut ::DIR) -> ::c_int;
pub fn pwrite64(
- fd: ::c_int, // if you want to use fd, you gotta fix these
+ fd: ::c_int,
buf: *const ::c_void,
count: ::size_t,
offset: off64_t,
@@ -2075,7 +2161,9 @@ pub fn posix_memalign(
) -> ::c_int {
// check to see if align is a power of 2 and if align is a multiple
// of sizeof(void *)
- if (align & align - 1 != 0) || (align % size_of::<::size_t>() != 0) {
+ if (align & align - 1 != 0)
+ || (align as usize % size_of::<::size_t>() != 0)
+ {
return ::EINVAL;
}
@@ -2154,9 +2242,6 @@ cfg_if! {
} else if #[cfg(any(target_arch = "arm"))] {
mod arm;
pub use self::arm::*;
- } else if #[cfg(any(target_arch = "armv7"))] {
- mod armv7;
- pub use self::armv7::*;
} else if #[cfg(any(target_arch = "x86"))] {
mod x86;
pub use self::x86::*;
diff --git a/src/vxworks/powerpc.rs b/src/vxworks/powerpc.rs
index cfdce825a0..55240068aa 100644
--- a/src/vxworks/powerpc.rs
+++ b/src/vxworks/powerpc.rs
@@ -1,3 +1,4 @@
pub type c_char = u8;
+pub type wchar_t = u32;
pub type c_long = i32;
pub type c_ulong = u32;
diff --git a/src/vxworks/powerpc64.rs b/src/vxworks/powerpc64.rs
index 577c8bef16..4032488b6c 100644
--- a/src/vxworks/powerpc64.rs
+++ b/src/vxworks/powerpc64.rs
@@ -1,3 +1,4 @@
pub type c_char = u8;
+pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;
diff --git a/src/vxworks/x86.rs b/src/vxworks/x86.rs
index 81ba14588b..e617bb83c6 100644
--- a/src/vxworks/x86.rs
+++ b/src/vxworks/x86.rs
@@ -1,3 +1,4 @@
pub type c_char = i8;
+pub type wchar_t = i32;
pub type c_long = i32;
pub type c_ulong = u32;
diff --git a/src/vxworks/x86_64.rs b/src/vxworks/x86_64.rs
index 27b9412668..5e95ea2567 100644
--- a/src/vxworks/x86_64.rs
+++ b/src/vxworks/x86_64.rs
@@ -1,3 +1,4 @@
+pub type c_char = i8;
+pub type wchar_t = i32;
pub type c_long = i64;
pub type c_ulong = u64;
-pub type c_char = i8;