| /* automatically generated by rust-bindgen */ |
| |
| #[repr(C)] |
| #[derive(Default)] |
| pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>); |
| impl<T> __IncompleteArrayField<T> { |
| #[inline] |
| pub fn new() -> Self { |
| __IncompleteArrayField(::std::marker::PhantomData) |
| } |
| #[inline] |
| pub unsafe fn as_ptr(&self) -> *const T { |
| ::std::mem::transmute(self) |
| } |
| #[inline] |
| pub unsafe fn as_mut_ptr(&mut self) -> *mut T { |
| ::std::mem::transmute(self) |
| } |
| #[inline] |
| pub unsafe fn as_slice(&self, len: usize) -> &[T] { |
| ::std::slice::from_raw_parts(self.as_ptr(), len) |
| } |
| #[inline] |
| pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { |
| ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) |
| } |
| } |
| impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> { |
| fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { |
| fmt.write_str("__IncompleteArrayField") |
| } |
| } |
| impl<T> ::std::clone::Clone for __IncompleteArrayField<T> { |
| #[inline] |
| fn clone(&self) -> Self { |
| Self::new() |
| } |
| } |
| impl<T> ::std::marker::Copy for __IncompleteArrayField<T> {} |
| pub const _STDINT_H: u32 = 1; |
| pub const _FEATURES_H: u32 = 1; |
| pub const _DEFAULT_SOURCE: u32 = 1; |
| pub const __USE_ISOC11: u32 = 1; |
| pub const __USE_ISOC99: u32 = 1; |
| pub const __USE_ISOC95: u32 = 1; |
| pub const __USE_POSIX_IMPLICITLY: u32 = 1; |
| pub const _POSIX_SOURCE: u32 = 1; |
| pub const _POSIX_C_SOURCE: u32 = 200809; |
| pub const __USE_POSIX: u32 = 1; |
| pub const __USE_POSIX2: u32 = 1; |
| pub const __USE_POSIX199309: u32 = 1; |
| pub const __USE_POSIX199506: u32 = 1; |
| pub const __USE_XOPEN2K: u32 = 1; |
| pub const __USE_XOPEN2K8: u32 = 1; |
| pub const _ATFILE_SOURCE: u32 = 1; |
| pub const __USE_MISC: u32 = 1; |
| pub const __USE_ATFILE: u32 = 1; |
| pub const __USE_FORTIFY_LEVEL: u32 = 0; |
| pub const _STDC_PREDEF_H: u32 = 1; |
| pub const __STDC_IEC_559__: u32 = 1; |
| pub const __STDC_IEC_559_COMPLEX__: u32 = 1; |
| pub const __STDC_ISO_10646__: u32 = 201605; |
| pub const __STDC_NO_THREADS__: u32 = 1; |
| pub const __GNU_LIBRARY__: u32 = 6; |
| pub const __GLIBC__: u32 = 2; |
| pub const __GLIBC_MINOR__: u32 = 24; |
| pub const _SYS_CDEFS_H: u32 = 1; |
| pub const __WORDSIZE: u32 = 64; |
| pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; |
| pub const __SYSCALL_WORDSIZE: u32 = 64; |
| pub const _BITS_WCHAR_H: u32 = 1; |
| pub const INT8_MIN: i32 = -128; |
| pub const INT16_MIN: i32 = -32768; |
| pub const INT32_MIN: i32 = -2147483648; |
| pub const INT8_MAX: u32 = 127; |
| pub const INT16_MAX: u32 = 32767; |
| pub const INT32_MAX: u32 = 2147483647; |
| pub const UINT8_MAX: u32 = 255; |
| pub const UINT16_MAX: u32 = 65535; |
| pub const UINT32_MAX: u32 = 4294967295; |
| pub const INT_LEAST8_MIN: i32 = -128; |
| pub const INT_LEAST16_MIN: i32 = -32768; |
| pub const INT_LEAST32_MIN: i32 = -2147483648; |
| pub const INT_LEAST8_MAX: u32 = 127; |
| pub const INT_LEAST16_MAX: u32 = 32767; |
| pub const INT_LEAST32_MAX: u32 = 2147483647; |
| pub const UINT_LEAST8_MAX: u32 = 255; |
| pub const UINT_LEAST16_MAX: u32 = 65535; |
| pub const UINT_LEAST32_MAX: u32 = 4294967295; |
| pub const INT_FAST8_MIN: i32 = -128; |
| pub const INT_FAST16_MIN: i64 = -9223372036854775808; |
| pub const INT_FAST32_MIN: i64 = -9223372036854775808; |
| pub const INT_FAST8_MAX: u32 = 127; |
| pub const INT_FAST16_MAX: u64 = 9223372036854775807; |
| pub const INT_FAST32_MAX: u64 = 9223372036854775807; |
| pub const UINT_FAST8_MAX: u32 = 255; |
| pub const UINT_FAST16_MAX: i32 = -1; |
| pub const UINT_FAST32_MAX: i32 = -1; |
| pub const INTPTR_MIN: i64 = -9223372036854775808; |
| pub const INTPTR_MAX: u64 = 9223372036854775807; |
| pub const UINTPTR_MAX: i32 = -1; |
| pub const PTRDIFF_MIN: i64 = -9223372036854775808; |
| pub const PTRDIFF_MAX: u64 = 9223372036854775807; |
| pub const SIG_ATOMIC_MIN: i32 = -2147483648; |
| pub const SIG_ATOMIC_MAX: u32 = 2147483647; |
| pub const SIZE_MAX: i32 = -1; |
| pub const WINT_MIN: u32 = 0; |
| pub const WINT_MAX: u32 = 4294967295; |
| pub const _SYS_TYPES_H: u32 = 1; |
| pub const _BITS_TYPES_H: u32 = 1; |
| pub const _BITS_TYPESIZES_H: u32 = 1; |
| pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; |
| pub const __INO_T_MATCHES_INO64_T: u32 = 1; |
| pub const __FD_SETSIZE: u32 = 1024; |
| pub const __clock_t_defined: u32 = 1; |
| pub const __time_t_defined: u32 = 1; |
| pub const __clockid_t_defined: u32 = 1; |
| pub const __timer_t_defined: u32 = 1; |
| pub const __BIT_TYPES_DEFINED__: u32 = 1; |
| pub const _ENDIAN_H: u32 = 1; |
| pub const __LITTLE_ENDIAN: u32 = 1234; |
| pub const __BIG_ENDIAN: u32 = 4321; |
| pub const __PDP_ENDIAN: u32 = 3412; |
| pub const __BYTE_ORDER: u32 = 1234; |
| pub const __FLOAT_WORD_ORDER: u32 = 1234; |
| pub const LITTLE_ENDIAN: u32 = 1234; |
| pub const BIG_ENDIAN: u32 = 4321; |
| pub const PDP_ENDIAN: u32 = 3412; |
| pub const BYTE_ORDER: u32 = 1234; |
| pub const _BITS_BYTESWAP_H: u32 = 1; |
| pub const _SYS_SELECT_H: u32 = 1; |
| pub const __FD_ZERO_STOS: &'static [u8; 6usize] = b"stosq\0"; |
| pub const _SIGSET_H_types: u32 = 1; |
| pub const __timespec_defined: u32 = 1; |
| pub const _STRUCT_TIMEVAL: u32 = 1; |
| pub const FD_SETSIZE: u32 = 1024; |
| pub const _SYS_SYSMACROS_H: u32 = 1; |
| pub const _BITS_PTHREADTYPES_H: u32 = 1; |
| pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; |
| pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; |
| pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; |
| pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; |
| pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; |
| pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; |
| pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; |
| pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; |
| pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; |
| pub const __have_pthread_attr_t: u32 = 1; |
| pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; |
| pub const __PTHREAD_RWLOCK_INT_FLAGS_SHARED: u32 = 1; |
| pub const _SYS_TIME_H: u32 = 1; |
| pub const _TIME_H: u32 = 1; |
| pub const _BITS_TIME_H: u32 = 1; |
| pub const CLOCK_REALTIME: u32 = 0; |
| pub const CLOCK_MONOTONIC: u32 = 1; |
| pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; |
| pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; |
| pub const CLOCK_MONOTONIC_RAW: u32 = 4; |
| pub const CLOCK_REALTIME_COARSE: u32 = 5; |
| pub const CLOCK_MONOTONIC_COARSE: u32 = 6; |
| pub const CLOCK_BOOTTIME: u32 = 7; |
| pub const CLOCK_REALTIME_ALARM: u32 = 8; |
| pub const CLOCK_BOOTTIME_ALARM: u32 = 9; |
| pub const CLOCK_TAI: u32 = 11; |
| pub const TIMER_ABSTIME: u32 = 1; |
| pub const TIME_UTC: u32 = 1; |
| pub const _XLOCALE_H: u32 = 1; |
| pub const _LIBC_LIMITS_H_: u32 = 1; |
| pub const MB_LEN_MAX: u32 = 16; |
| pub const _BITS_POSIX1_LIM_H: u32 = 1; |
| pub const _POSIX_AIO_LISTIO_MAX: u32 = 2; |
| pub const _POSIX_AIO_MAX: u32 = 1; |
| pub const _POSIX_ARG_MAX: u32 = 4096; |
| pub const _POSIX_CHILD_MAX: u32 = 25; |
| pub const _POSIX_DELAYTIMER_MAX: u32 = 32; |
| pub const _POSIX_HOST_NAME_MAX: u32 = 255; |
| pub const _POSIX_LINK_MAX: u32 = 8; |
| pub const _POSIX_LOGIN_NAME_MAX: u32 = 9; |
| pub const _POSIX_MAX_CANON: u32 = 255; |
| pub const _POSIX_MAX_INPUT: u32 = 255; |
| pub const _POSIX_MQ_OPEN_MAX: u32 = 8; |
| pub const _POSIX_MQ_PRIO_MAX: u32 = 32; |
| pub const _POSIX_NAME_MAX: u32 = 14; |
| pub const _POSIX_NGROUPS_MAX: u32 = 8; |
| pub const _POSIX_OPEN_MAX: u32 = 20; |
| pub const _POSIX_PATH_MAX: u32 = 256; |
| pub const _POSIX_PIPE_BUF: u32 = 512; |
| pub const _POSIX_RE_DUP_MAX: u32 = 255; |
| pub const _POSIX_RTSIG_MAX: u32 = 8; |
| pub const _POSIX_SEM_NSEMS_MAX: u32 = 256; |
| pub const _POSIX_SEM_VALUE_MAX: u32 = 32767; |
| pub const _POSIX_SIGQUEUE_MAX: u32 = 32; |
| pub const _POSIX_SSIZE_MAX: u32 = 32767; |
| pub const _POSIX_STREAM_MAX: u32 = 8; |
| pub const _POSIX_SYMLINK_MAX: u32 = 255; |
| pub const _POSIX_SYMLOOP_MAX: u32 = 8; |
| pub const _POSIX_TIMER_MAX: u32 = 32; |
| pub const _POSIX_TTY_NAME_MAX: u32 = 9; |
| pub const _POSIX_TZNAME_MAX: u32 = 6; |
| pub const _POSIX_CLOCKRES_MIN: u32 = 20000000; |
| pub const NR_OPEN: u32 = 1024; |
| pub const NGROUPS_MAX: u32 = 65536; |
| pub const ARG_MAX: u32 = 131072; |
| pub const LINK_MAX: u32 = 127; |
| pub const MAX_CANON: u32 = 255; |
| pub const MAX_INPUT: u32 = 255; |
| pub const NAME_MAX: u32 = 255; |
| pub const PATH_MAX: u32 = 4096; |
| pub const PIPE_BUF: u32 = 4096; |
| pub const XATTR_NAME_MAX: u32 = 255; |
| pub const XATTR_SIZE_MAX: u32 = 65536; |
| pub const XATTR_LIST_MAX: u32 = 65536; |
| pub const RTSIG_MAX: u32 = 32; |
| pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; |
| pub const PTHREAD_KEYS_MAX: u32 = 1024; |
| pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; |
| pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; |
| pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; |
| pub const AIO_PRIO_DELTA_MAX: u32 = 20; |
| pub const PTHREAD_STACK_MIN: u32 = 16384; |
| pub const DELAYTIMER_MAX: u32 = 2147483647; |
| pub const TTY_NAME_MAX: u32 = 32; |
| pub const LOGIN_NAME_MAX: u32 = 256; |
| pub const HOST_NAME_MAX: u32 = 64; |
| pub const MQ_PRIO_MAX: u32 = 32768; |
| pub const SEM_VALUE_MAX: u32 = 2147483647; |
| pub const _BITS_POSIX2_LIM_H: u32 = 1; |
| pub const _POSIX2_BC_BASE_MAX: u32 = 99; |
| pub const _POSIX2_BC_DIM_MAX: u32 = 2048; |
| pub const _POSIX2_BC_SCALE_MAX: u32 = 99; |
| pub const _POSIX2_BC_STRING_MAX: u32 = 1000; |
| pub const _POSIX2_COLL_WEIGHTS_MAX: u32 = 2; |
| pub const _POSIX2_EXPR_NEST_MAX: u32 = 32; |
| pub const _POSIX2_LINE_MAX: u32 = 2048; |
| pub const _POSIX2_RE_DUP_MAX: u32 = 255; |
| pub const _POSIX2_CHARCLASS_NAME_MAX: u32 = 14; |
| pub const BC_BASE_MAX: u32 = 99; |
| pub const BC_DIM_MAX: u32 = 2048; |
| pub const BC_SCALE_MAX: u32 = 99; |
| pub const BC_STRING_MAX: u32 = 1000; |
| pub const COLL_WEIGHTS_MAX: u32 = 255; |
| pub const EXPR_NEST_MAX: u32 = 32; |
| pub const LINE_MAX: u32 = 2048; |
| pub const CHARCLASS_NAME_MAX: u32 = 2048; |
| pub const RE_DUP_MAX: u32 = 32767; |
| pub const LIBUSB_API_VERSION: u32 = 16777477; |
| pub const LIBUSBX_API_VERSION: u32 = 16777477; |
| pub const LIBUSB_DT_DEVICE_SIZE: u32 = 18; |
| pub const LIBUSB_DT_CONFIG_SIZE: u32 = 9; |
| pub const LIBUSB_DT_INTERFACE_SIZE: u32 = 9; |
| pub const LIBUSB_DT_ENDPOINT_SIZE: u32 = 7; |
| pub const LIBUSB_DT_ENDPOINT_AUDIO_SIZE: u32 = 9; |
| pub const LIBUSB_DT_HUB_NONVAR_SIZE: u32 = 7; |
| pub const LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE: u32 = 6; |
| pub const LIBUSB_DT_BOS_SIZE: u32 = 5; |
| pub const LIBUSB_DT_DEVICE_CAPABILITY_SIZE: u32 = 3; |
| pub const LIBUSB_BT_USB_2_0_EXTENSION_SIZE: u32 = 7; |
| pub const LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE: u32 = 10; |
| pub const LIBUSB_BT_CONTAINER_ID_SIZE: u32 = 20; |
| pub const LIBUSB_DT_BOS_MAX_SIZE: u32 = 42; |
| pub const LIBUSB_ENDPOINT_ADDRESS_MASK: u32 = 15; |
| pub const LIBUSB_ENDPOINT_DIR_MASK: u32 = 128; |
| pub const LIBUSB_TRANSFER_TYPE_MASK: u32 = 3; |
| pub const LIBUSB_ISO_SYNC_TYPE_MASK: u32 = 12; |
| pub const LIBUSB_ISO_USAGE_TYPE_MASK: u32 = 48; |
| pub const LIBUSB_ERROR_COUNT: u32 = 14; |
| pub const LIBUSB_HOTPLUG_MATCH_ANY: i32 = -1; |
| pub type int_least8_t = ::std::os::raw::c_schar; |
| pub type int_least16_t = ::std::os::raw::c_short; |
| pub type int_least32_t = ::std::os::raw::c_int; |
| pub type int_least64_t = ::std::os::raw::c_long; |
| pub type uint_least8_t = ::std::os::raw::c_uchar; |
| pub type uint_least16_t = ::std::os::raw::c_ushort; |
| pub type uint_least32_t = ::std::os::raw::c_uint; |
| pub type uint_least64_t = ::std::os::raw::c_ulong; |
| pub type int_fast8_t = ::std::os::raw::c_schar; |
| pub type int_fast16_t = ::std::os::raw::c_long; |
| pub type int_fast32_t = ::std::os::raw::c_long; |
| pub type int_fast64_t = ::std::os::raw::c_long; |
| pub type uint_fast8_t = ::std::os::raw::c_uchar; |
| pub type uint_fast16_t = ::std::os::raw::c_ulong; |
| pub type uint_fast32_t = ::std::os::raw::c_ulong; |
| pub type uint_fast64_t = ::std::os::raw::c_ulong; |
| pub type intmax_t = ::std::os::raw::c_long; |
| pub type uintmax_t = ::std::os::raw::c_ulong; |
| pub type __u_char = ::std::os::raw::c_uchar; |
| pub type __u_short = ::std::os::raw::c_ushort; |
| pub type __u_int = ::std::os::raw::c_uint; |
| pub type __u_long = ::std::os::raw::c_ulong; |
| pub type __int8_t = ::std::os::raw::c_schar; |
| pub type __uint8_t = ::std::os::raw::c_uchar; |
| pub type __int16_t = ::std::os::raw::c_short; |
| pub type __uint16_t = ::std::os::raw::c_ushort; |
| pub type __int32_t = ::std::os::raw::c_int; |
| pub type __uint32_t = ::std::os::raw::c_uint; |
| pub type __int64_t = ::std::os::raw::c_long; |
| pub type __uint64_t = ::std::os::raw::c_ulong; |
| pub type __quad_t = ::std::os::raw::c_long; |
| pub type __u_quad_t = ::std::os::raw::c_ulong; |
| pub type __dev_t = ::std::os::raw::c_ulong; |
| pub type __uid_t = ::std::os::raw::c_uint; |
| pub type __gid_t = ::std::os::raw::c_uint; |
| pub type __ino_t = ::std::os::raw::c_ulong; |
| pub type __ino64_t = ::std::os::raw::c_ulong; |
| pub type __mode_t = ::std::os::raw::c_uint; |
| pub type __nlink_t = ::std::os::raw::c_ulong; |
| pub type __off_t = ::std::os::raw::c_long; |
| pub type __off64_t = ::std::os::raw::c_long; |
| pub type __pid_t = ::std::os::raw::c_int; |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct __fsid_t { |
| pub __val: [::std::os::raw::c_int; 2usize], |
| } |
| #[test] |
| fn bindgen_test_layout___fsid_t() { |
| assert_eq!( |
| ::std::mem::size_of::<__fsid_t>(), |
| 8usize, |
| concat!("Size of: ", stringify!(__fsid_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<__fsid_t>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(__fsid_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__fsid_t), |
| "::", |
| stringify!(__val) |
| ) |
| ); |
| } |
| pub type __clock_t = ::std::os::raw::c_long; |
| pub type __rlim_t = ::std::os::raw::c_ulong; |
| pub type __rlim64_t = ::std::os::raw::c_ulong; |
| pub type __id_t = ::std::os::raw::c_uint; |
| pub type __time_t = ::std::os::raw::c_long; |
| pub type __useconds_t = ::std::os::raw::c_uint; |
| pub type __suseconds_t = ::std::os::raw::c_long; |
| pub type __daddr_t = ::std::os::raw::c_int; |
| pub type __key_t = ::std::os::raw::c_int; |
| pub type __clockid_t = ::std::os::raw::c_int; |
| pub type __timer_t = *mut ::std::os::raw::c_void; |
| pub type __blksize_t = ::std::os::raw::c_long; |
| pub type __blkcnt_t = ::std::os::raw::c_long; |
| pub type __blkcnt64_t = ::std::os::raw::c_long; |
| pub type __fsblkcnt_t = ::std::os::raw::c_ulong; |
| pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; |
| pub type __fsfilcnt_t = ::std::os::raw::c_ulong; |
| pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; |
| pub type __fsword_t = ::std::os::raw::c_long; |
| pub type __ssize_t = ::std::os::raw::c_long; |
| pub type __syscall_slong_t = ::std::os::raw::c_long; |
| pub type __syscall_ulong_t = ::std::os::raw::c_ulong; |
| pub type __loff_t = __off64_t; |
| pub type __qaddr_t = *mut __quad_t; |
| pub type __caddr_t = *mut ::std::os::raw::c_char; |
| pub type __intptr_t = ::std::os::raw::c_long; |
| pub type __socklen_t = ::std::os::raw::c_uint; |
| pub type u_char = __u_char; |
| pub type u_short = __u_short; |
| pub type u_int = __u_int; |
| pub type u_long = __u_long; |
| pub type quad_t = __quad_t; |
| pub type u_quad_t = __u_quad_t; |
| pub type fsid_t = __fsid_t; |
| pub type loff_t = __loff_t; |
| pub type ino_t = __ino_t; |
| pub type dev_t = __dev_t; |
| pub type gid_t = __gid_t; |
| pub type mode_t = __mode_t; |
| pub type nlink_t = __nlink_t; |
| pub type uid_t = __uid_t; |
| pub type off_t = __off_t; |
| pub type pid_t = __pid_t; |
| pub type id_t = __id_t; |
| pub type daddr_t = __daddr_t; |
| pub type caddr_t = __caddr_t; |
| pub type key_t = __key_t; |
| pub type clock_t = __clock_t; |
| pub type time_t = __time_t; |
| pub type clockid_t = __clockid_t; |
| pub type timer_t = __timer_t; |
| pub type ulong = ::std::os::raw::c_ulong; |
| pub type ushort = ::std::os::raw::c_ushort; |
| pub type uint = ::std::os::raw::c_uint; |
| pub type u_int8_t = ::std::os::raw::c_uchar; |
| pub type u_int16_t = ::std::os::raw::c_ushort; |
| pub type u_int32_t = ::std::os::raw::c_uint; |
| pub type u_int64_t = ::std::os::raw::c_ulong; |
| pub type register_t = ::std::os::raw::c_long; |
| pub type __sig_atomic_t = ::std::os::raw::c_int; |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct __sigset_t { |
| pub __val: [::std::os::raw::c_ulong; 16usize], |
| } |
| #[test] |
| fn bindgen_test_layout___sigset_t() { |
| assert_eq!( |
| ::std::mem::size_of::<__sigset_t>(), |
| 128usize, |
| concat!("Size of: ", stringify!(__sigset_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<__sigset_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(__sigset_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__sigset_t), |
| "::", |
| stringify!(__val) |
| ) |
| ); |
| } |
| pub type sigset_t = __sigset_t; |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct timespec { |
| pub tv_sec: __time_t, |
| pub tv_nsec: __syscall_slong_t, |
| } |
| #[test] |
| fn bindgen_test_layout_timespec() { |
| assert_eq!( |
| ::std::mem::size_of::<timespec>(), |
| 16usize, |
| concat!("Size of: ", stringify!(timespec)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<timespec>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(timespec)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timespec>())).tv_sec as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timespec), |
| "::", |
| stringify!(tv_sec) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timespec>())).tv_nsec as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timespec), |
| "::", |
| stringify!(tv_nsec) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct timeval { |
| pub tv_sec: __time_t, |
| pub tv_usec: __suseconds_t, |
| } |
| #[test] |
| fn bindgen_test_layout_timeval() { |
| assert_eq!( |
| ::std::mem::size_of::<timeval>(), |
| 16usize, |
| concat!("Size of: ", stringify!(timeval)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<timeval>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(timeval)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timeval>())).tv_sec as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timeval), |
| "::", |
| stringify!(tv_sec) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timeval>())).tv_usec as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timeval), |
| "::", |
| stringify!(tv_usec) |
| ) |
| ); |
| } |
| pub type suseconds_t = __suseconds_t; |
| pub type __fd_mask = ::std::os::raw::c_long; |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct fd_set { |
| pub __fds_bits: [__fd_mask; 16usize], |
| } |
| #[test] |
| fn bindgen_test_layout_fd_set() { |
| assert_eq!( |
| ::std::mem::size_of::<fd_set>(), |
| 128usize, |
| concat!("Size of: ", stringify!(fd_set)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<fd_set>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(fd_set)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<fd_set>())).__fds_bits as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(fd_set), |
| "::", |
| stringify!(__fds_bits) |
| ) |
| ); |
| } |
| pub type fd_mask = __fd_mask; |
| extern "C" { |
| pub fn select( |
| __nfds: ::std::os::raw::c_int, |
| __readfds: *mut fd_set, |
| __writefds: *mut fd_set, |
| __exceptfds: *mut fd_set, |
| __timeout: *mut timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn pselect( |
| __nfds: ::std::os::raw::c_int, |
| __readfds: *mut fd_set, |
| __writefds: *mut fd_set, |
| __exceptfds: *mut fd_set, |
| __timeout: *const timespec, |
| __sigmask: *const __sigset_t, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn gnu_dev_major(__dev: ::std::os::raw::c_ulonglong) -> ::std::os::raw::c_uint; |
| } |
| extern "C" { |
| pub fn gnu_dev_minor(__dev: ::std::os::raw::c_ulonglong) -> ::std::os::raw::c_uint; |
| } |
| extern "C" { |
| pub fn gnu_dev_makedev( |
| __major: ::std::os::raw::c_uint, |
| __minor: ::std::os::raw::c_uint, |
| ) -> ::std::os::raw::c_ulonglong; |
| } |
| pub type blksize_t = __blksize_t; |
| pub type blkcnt_t = __blkcnt_t; |
| pub type fsblkcnt_t = __fsblkcnt_t; |
| pub type fsfilcnt_t = __fsfilcnt_t; |
| pub type pthread_t = ::std::os::raw::c_ulong; |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_attr_t { |
| pub __size: [::std::os::raw::c_char; 56usize], |
| pub __align: ::std::os::raw::c_long, |
| _bindgen_union_align: [u64; 7usize], |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_attr_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_attr_t>(), |
| 56usize, |
| concat!("Size of: ", stringify!(pthread_attr_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_attr_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_attr_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_attr_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_attr_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_attr_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_attr_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct __pthread_internal_list { |
| pub __prev: *mut __pthread_internal_list, |
| pub __next: *mut __pthread_internal_list, |
| } |
| #[test] |
| fn bindgen_test_layout___pthread_internal_list() { |
| assert_eq!( |
| ::std::mem::size_of::<__pthread_internal_list>(), |
| 16usize, |
| concat!("Size of: ", stringify!(__pthread_internal_list)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<__pthread_internal_list>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(__pthread_internal_list)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__pthread_internal_list), |
| "::", |
| stringify!(__prev) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__pthread_internal_list), |
| "::", |
| stringify!(__next) |
| ) |
| ); |
| } |
| pub type __pthread_list_t = __pthread_internal_list; |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_mutex_t { |
| pub __data: pthread_mutex_t___pthread_mutex_s, |
| pub __size: [::std::os::raw::c_char; 40usize], |
| pub __align: ::std::os::raw::c_long, |
| _bindgen_union_align: [u64; 5usize], |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct pthread_mutex_t___pthread_mutex_s { |
| pub __lock: ::std::os::raw::c_int, |
| pub __count: ::std::os::raw::c_uint, |
| pub __owner: ::std::os::raw::c_int, |
| pub __nusers: ::std::os::raw::c_uint, |
| pub __kind: ::std::os::raw::c_int, |
| pub __spins: ::std::os::raw::c_short, |
| pub __elision: ::std::os::raw::c_short, |
| pub __list: __pthread_list_t, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_mutex_t___pthread_mutex_s() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_mutex_t___pthread_mutex_s>(), |
| 40usize, |
| concat!("Size of: ", stringify!(pthread_mutex_t___pthread_mutex_s)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_mutex_t___pthread_mutex_s>(), |
| 8usize, |
| concat!( |
| "Alignment of ", |
| stringify!(pthread_mutex_t___pthread_mutex_s) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__lock as *const _ |
| as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__lock) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__count as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__count) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__owner as *const _ |
| as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__owner) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__nusers as *const _ |
| as usize |
| }, |
| 12usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__nusers) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__kind as *const _ |
| as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__kind) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__spins as *const _ |
| as usize |
| }, |
| 20usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__spins) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__elision as *const _ |
| as usize |
| }, |
| 22usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__elision) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_mutex_t___pthread_mutex_s>())).__list as *const _ |
| as usize |
| }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t___pthread_mutex_s), |
| "::", |
| stringify!(__list) |
| ) |
| ); |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_mutex_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_mutex_t>(), |
| 40usize, |
| concat!("Size of: ", stringify!(pthread_mutex_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_mutex_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_mutex_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__data as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t), |
| "::", |
| stringify!(__data) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutex_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_mutexattr_t { |
| pub __size: [::std::os::raw::c_char; 4usize], |
| pub __align: ::std::os::raw::c_int, |
| _bindgen_union_align: u32, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_mutexattr_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_mutexattr_t>(), |
| 4usize, |
| concat!("Size of: ", stringify!(pthread_mutexattr_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_mutexattr_t>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(pthread_mutexattr_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_mutexattr_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutexattr_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_mutexattr_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_mutexattr_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_cond_t { |
| pub __data: pthread_cond_t__bindgen_ty_1, |
| pub __size: [::std::os::raw::c_char; 48usize], |
| pub __align: ::std::os::raw::c_longlong, |
| _bindgen_union_align: [u64; 6usize], |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct pthread_cond_t__bindgen_ty_1 { |
| pub __lock: ::std::os::raw::c_int, |
| pub __futex: ::std::os::raw::c_uint, |
| pub __total_seq: ::std::os::raw::c_ulonglong, |
| pub __wakeup_seq: ::std::os::raw::c_ulonglong, |
| pub __woken_seq: ::std::os::raw::c_ulonglong, |
| pub __mutex: *mut ::std::os::raw::c_void, |
| pub __nwaiters: ::std::os::raw::c_uint, |
| pub __broadcast_seq: ::std::os::raw::c_uint, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_cond_t__bindgen_ty_1() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_cond_t__bindgen_ty_1>(), |
| 48usize, |
| concat!("Size of: ", stringify!(pthread_cond_t__bindgen_ty_1)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_cond_t__bindgen_ty_1>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_cond_t__bindgen_ty_1)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__lock as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__lock) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__futex as *const _ as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__futex) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__total_seq as *const _ |
| as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__total_seq) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__wakeup_seq as *const _ |
| as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__wakeup_seq) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__woken_seq as *const _ |
| as usize |
| }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__woken_seq) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__mutex as *const _ as usize |
| }, |
| 32usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__mutex) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__nwaiters as *const _ as usize |
| }, |
| 40usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__nwaiters) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_cond_t__bindgen_ty_1>())).__broadcast_seq as *const _ |
| as usize |
| }, |
| 44usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t__bindgen_ty_1), |
| "::", |
| stringify!(__broadcast_seq) |
| ) |
| ); |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_cond_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_cond_t>(), |
| 48usize, |
| concat!("Size of: ", stringify!(pthread_cond_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_cond_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_cond_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__data as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t), |
| "::", |
| stringify!(__data) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_cond_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_condattr_t { |
| pub __size: [::std::os::raw::c_char; 4usize], |
| pub __align: ::std::os::raw::c_int, |
| _bindgen_union_align: u32, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_condattr_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_condattr_t>(), |
| 4usize, |
| concat!("Size of: ", stringify!(pthread_condattr_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_condattr_t>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(pthread_condattr_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_condattr_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_condattr_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_condattr_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_condattr_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| pub type pthread_key_t = ::std::os::raw::c_uint; |
| pub type pthread_once_t = ::std::os::raw::c_int; |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_rwlock_t { |
| pub __data: pthread_rwlock_t__bindgen_ty_1, |
| pub __size: [::std::os::raw::c_char; 56usize], |
| pub __align: ::std::os::raw::c_long, |
| _bindgen_union_align: [u64; 7usize], |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct pthread_rwlock_t__bindgen_ty_1 { |
| pub __lock: ::std::os::raw::c_int, |
| pub __nr_readers: ::std::os::raw::c_uint, |
| pub __readers_wakeup: ::std::os::raw::c_uint, |
| pub __writer_wakeup: ::std::os::raw::c_uint, |
| pub __nr_readers_queued: ::std::os::raw::c_uint, |
| pub __nr_writers_queued: ::std::os::raw::c_uint, |
| pub __writer: ::std::os::raw::c_int, |
| pub __shared: ::std::os::raw::c_int, |
| pub __rwelision: ::std::os::raw::c_schar, |
| pub __pad1: [::std::os::raw::c_uchar; 7usize], |
| pub __pad2: ::std::os::raw::c_ulong, |
| pub __flags: ::std::os::raw::c_uint, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_rwlock_t__bindgen_ty_1() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_rwlock_t__bindgen_ty_1>(), |
| 56usize, |
| concat!("Size of: ", stringify!(pthread_rwlock_t__bindgen_ty_1)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_rwlock_t__bindgen_ty_1>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_rwlock_t__bindgen_ty_1)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__lock as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__lock) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__nr_readers as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__nr_readers) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__readers_wakeup as *const _ |
| as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__readers_wakeup) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__writer_wakeup as *const _ |
| as usize |
| }, |
| 12usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__writer_wakeup) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__nr_readers_queued |
| as *const _ as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__nr_readers_queued) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__nr_writers_queued |
| as *const _ as usize |
| }, |
| 20usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__nr_writers_queued) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__writer as *const _ as usize |
| }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__writer) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__shared as *const _ as usize |
| }, |
| 28usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__shared) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__rwelision as *const _ |
| as usize |
| }, |
| 32usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__rwelision) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__pad1 as *const _ as usize |
| }, |
| 33usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__pad1) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__pad2 as *const _ as usize |
| }, |
| 40usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__pad2) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<pthread_rwlock_t__bindgen_ty_1>())).__flags as *const _ as usize |
| }, |
| 48usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t__bindgen_ty_1), |
| "::", |
| stringify!(__flags) |
| ) |
| ); |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_rwlock_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_rwlock_t>(), |
| 56usize, |
| concat!("Size of: ", stringify!(pthread_rwlock_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_rwlock_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_rwlock_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__data as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t), |
| "::", |
| stringify!(__data) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlock_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_rwlockattr_t { |
| pub __size: [::std::os::raw::c_char; 8usize], |
| pub __align: ::std::os::raw::c_long, |
| _bindgen_union_align: u64, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_rwlockattr_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_rwlockattr_t>(), |
| 8usize, |
| concat!("Size of: ", stringify!(pthread_rwlockattr_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_rwlockattr_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_rwlockattr_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlockattr_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_rwlockattr_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_rwlockattr_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| pub type pthread_spinlock_t = ::std::os::raw::c_int; |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_barrier_t { |
| pub __size: [::std::os::raw::c_char; 32usize], |
| pub __align: ::std::os::raw::c_long, |
| _bindgen_union_align: [u64; 4usize], |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_barrier_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_barrier_t>(), |
| 32usize, |
| concat!("Size of: ", stringify!(pthread_barrier_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_barrier_t>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(pthread_barrier_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_barrier_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_barrier_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_barrier_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_barrier_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Copy, Clone)] |
| pub union pthread_barrierattr_t { |
| pub __size: [::std::os::raw::c_char; 4usize], |
| pub __align: ::std::os::raw::c_int, |
| _bindgen_union_align: u32, |
| } |
| #[test] |
| fn bindgen_test_layout_pthread_barrierattr_t() { |
| assert_eq!( |
| ::std::mem::size_of::<pthread_barrierattr_t>(), |
| 4usize, |
| concat!("Size of: ", stringify!(pthread_barrierattr_t)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<pthread_barrierattr_t>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(pthread_barrierattr_t)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_barrierattr_t>())).__size as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_barrierattr_t), |
| "::", |
| stringify!(__size) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<pthread_barrierattr_t>())).__align as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(pthread_barrierattr_t), |
| "::", |
| stringify!(__align) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct timezone { |
| pub tz_minuteswest: ::std::os::raw::c_int, |
| pub tz_dsttime: ::std::os::raw::c_int, |
| } |
| #[test] |
| fn bindgen_test_layout_timezone() { |
| assert_eq!( |
| ::std::mem::size_of::<timezone>(), |
| 8usize, |
| concat!("Size of: ", stringify!(timezone)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<timezone>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(timezone)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timezone>())).tz_minuteswest as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timezone), |
| "::", |
| stringify!(tz_minuteswest) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<timezone>())).tz_dsttime as *const _ as usize }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(timezone), |
| "::", |
| stringify!(tz_dsttime) |
| ) |
| ); |
| } |
| pub type __timezone_ptr_t = *mut timezone; |
| extern "C" { |
| pub fn gettimeofday(__tv: *mut timeval, __tz: __timezone_ptr_t) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn settimeofday(__tv: *const timeval, __tz: *const timezone) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn adjtime(__delta: *const timeval, __olddelta: *mut timeval) -> ::std::os::raw::c_int; |
| } |
| pub const ITIMER_REAL: __itimer_which = 0; |
| pub const ITIMER_VIRTUAL: __itimer_which = 1; |
| pub const ITIMER_PROF: __itimer_which = 2; |
| pub type __itimer_which = u32; |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct itimerval { |
| pub it_interval: timeval, |
| pub it_value: timeval, |
| } |
| #[test] |
| fn bindgen_test_layout_itimerval() { |
| assert_eq!( |
| ::std::mem::size_of::<itimerval>(), |
| 32usize, |
| concat!("Size of: ", stringify!(itimerval)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<itimerval>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(itimerval)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<itimerval>())).it_interval as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(itimerval), |
| "::", |
| stringify!(it_interval) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<itimerval>())).it_value as *const _ as usize }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(itimerval), |
| "::", |
| stringify!(it_value) |
| ) |
| ); |
| } |
| pub type __itimer_which_t = ::std::os::raw::c_int; |
| extern "C" { |
| pub fn getitimer(__which: __itimer_which_t, __value: *mut itimerval) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn setitimer( |
| __which: __itimer_which_t, |
| __new: *const itimerval, |
| __old: *mut itimerval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn utimes( |
| __file: *const ::std::os::raw::c_char, |
| __tvp: *const timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn lutimes( |
| __file: *const ::std::os::raw::c_char, |
| __tvp: *const timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn futimes(__fd: ::std::os::raw::c_int, __tvp: *const timeval) -> ::std::os::raw::c_int; |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct tm { |
| pub tm_sec: ::std::os::raw::c_int, |
| pub tm_min: ::std::os::raw::c_int, |
| pub tm_hour: ::std::os::raw::c_int, |
| pub tm_mday: ::std::os::raw::c_int, |
| pub tm_mon: ::std::os::raw::c_int, |
| pub tm_year: ::std::os::raw::c_int, |
| pub tm_wday: ::std::os::raw::c_int, |
| pub tm_yday: ::std::os::raw::c_int, |
| pub tm_isdst: ::std::os::raw::c_int, |
| pub tm_gmtoff: ::std::os::raw::c_long, |
| pub tm_zone: *const ::std::os::raw::c_char, |
| } |
| #[test] |
| fn bindgen_test_layout_tm() { |
| assert_eq!( |
| ::std::mem::size_of::<tm>(), |
| 56usize, |
| concat!("Size of: ", stringify!(tm)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<tm>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(tm)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_sec as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_sec) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_min as *const _ as usize }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_min) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_hour as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_hour) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_mday as *const _ as usize }, |
| 12usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_mday) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_mon as *const _ as usize }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_mon) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_year as *const _ as usize }, |
| 20usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_year) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_wday as *const _ as usize }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_wday) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_yday as *const _ as usize }, |
| 28usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_yday) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_isdst as *const _ as usize }, |
| 32usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_isdst) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_gmtoff as *const _ as usize }, |
| 40usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_gmtoff) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<tm>())).tm_zone as *const _ as usize }, |
| 48usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(tm), |
| "::", |
| stringify!(tm_zone) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct itimerspec { |
| pub it_interval: timespec, |
| pub it_value: timespec, |
| } |
| #[test] |
| fn bindgen_test_layout_itimerspec() { |
| assert_eq!( |
| ::std::mem::size_of::<itimerspec>(), |
| 32usize, |
| concat!("Size of: ", stringify!(itimerspec)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<itimerspec>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(itimerspec)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<itimerspec>())).it_interval as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(itimerspec), |
| "::", |
| stringify!(it_interval) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<itimerspec>())).it_value as *const _ as usize }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(itimerspec), |
| "::", |
| stringify!(it_value) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct sigevent { |
| _unused: [u8; 0], |
| } |
| extern "C" { |
| pub fn clock() -> clock_t; |
| } |
| extern "C" { |
| pub fn time(__timer: *mut time_t) -> time_t; |
| } |
| extern "C" { |
| pub fn difftime(__time1: time_t, __time0: time_t) -> f64; |
| } |
| extern "C" { |
| pub fn mktime(__tp: *mut tm) -> time_t; |
| } |
| extern "C" { |
| pub fn strftime( |
| __s: *mut ::std::os::raw::c_char, |
| __maxsize: usize, |
| __format: *const ::std::os::raw::c_char, |
| __tp: *const tm, |
| ) -> usize; |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct __locale_struct { |
| pub __locales: [*mut __locale_data; 13usize], |
| pub __ctype_b: *const ::std::os::raw::c_ushort, |
| pub __ctype_tolower: *const ::std::os::raw::c_int, |
| pub __ctype_toupper: *const ::std::os::raw::c_int, |
| pub __names: [*const ::std::os::raw::c_char; 13usize], |
| } |
| #[test] |
| fn bindgen_test_layout___locale_struct() { |
| assert_eq!( |
| ::std::mem::size_of::<__locale_struct>(), |
| 232usize, |
| concat!("Size of: ", stringify!(__locale_struct)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<__locale_struct>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(__locale_struct)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__locale_struct>())).__locales as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__locale_struct), |
| "::", |
| stringify!(__locales) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_b as *const _ as usize }, |
| 104usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__locale_struct), |
| "::", |
| stringify!(__ctype_b) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_tolower as *const _ as usize }, |
| 112usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__locale_struct), |
| "::", |
| stringify!(__ctype_tolower) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_toupper as *const _ as usize }, |
| 120usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__locale_struct), |
| "::", |
| stringify!(__ctype_toupper) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<__locale_struct>())).__names as *const _ as usize }, |
| 128usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(__locale_struct), |
| "::", |
| stringify!(__names) |
| ) |
| ); |
| } |
| pub type __locale_t = *mut __locale_struct; |
| pub type locale_t = __locale_t; |
| extern "C" { |
| pub fn strftime_l( |
| __s: *mut ::std::os::raw::c_char, |
| __maxsize: usize, |
| __format: *const ::std::os::raw::c_char, |
| __tp: *const tm, |
| __loc: __locale_t, |
| ) -> usize; |
| } |
| extern "C" { |
| pub fn gmtime(__timer: *const time_t) -> *mut tm; |
| } |
| extern "C" { |
| pub fn localtime(__timer: *const time_t) -> *mut tm; |
| } |
| extern "C" { |
| pub fn gmtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm; |
| } |
| extern "C" { |
| pub fn localtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm; |
| } |
| extern "C" { |
| pub fn asctime(__tp: *const tm) -> *mut ::std::os::raw::c_char; |
| } |
| extern "C" { |
| pub fn ctime(__timer: *const time_t) -> *mut ::std::os::raw::c_char; |
| } |
| extern "C" { |
| pub fn asctime_r( |
| __tp: *const tm, |
| __buf: *mut ::std::os::raw::c_char, |
| ) -> *mut ::std::os::raw::c_char; |
| } |
| extern "C" { |
| pub fn ctime_r( |
| __timer: *const time_t, |
| __buf: *mut ::std::os::raw::c_char, |
| ) -> *mut ::std::os::raw::c_char; |
| } |
| extern "C" { |
| #[link_name = "\u{1}__tzname"] |
| pub static mut __tzname: [*mut ::std::os::raw::c_char; 2usize]; |
| } |
| extern "C" { |
| #[link_name = "\u{1}__daylight"] |
| pub static mut __daylight: ::std::os::raw::c_int; |
| } |
| extern "C" { |
| #[link_name = "\u{1}__timezone"] |
| pub static mut __timezone: ::std::os::raw::c_long; |
| } |
| extern "C" { |
| #[link_name = "\u{1}tzname"] |
| pub static mut tzname: [*mut ::std::os::raw::c_char; 2usize]; |
| } |
| extern "C" { |
| pub fn tzset(); |
| } |
| extern "C" { |
| #[link_name = "\u{1}daylight"] |
| pub static mut daylight: ::std::os::raw::c_int; |
| } |
| extern "C" { |
| #[link_name = "\u{1}timezone"] |
| pub static mut timezone: ::std::os::raw::c_long; |
| } |
| extern "C" { |
| pub fn stime(__when: *const time_t) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timegm(__tp: *mut tm) -> time_t; |
| } |
| extern "C" { |
| pub fn timelocal(__tp: *mut tm) -> time_t; |
| } |
| extern "C" { |
| pub fn dysize(__year: ::std::os::raw::c_int) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn nanosleep( |
| __requested_time: *const timespec, |
| __remaining: *mut timespec, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn clock_getres(__clock_id: clockid_t, __res: *mut timespec) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn clock_settime(__clock_id: clockid_t, __tp: *const timespec) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn clock_nanosleep( |
| __clock_id: clockid_t, |
| __flags: ::std::os::raw::c_int, |
| __req: *const timespec, |
| __rem: *mut timespec, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn clock_getcpuclockid(__pid: pid_t, __clock_id: *mut clockid_t) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timer_create( |
| __clock_id: clockid_t, |
| __evp: *mut sigevent, |
| __timerid: *mut timer_t, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timer_delete(__timerid: timer_t) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timer_settime( |
| __timerid: timer_t, |
| __flags: ::std::os::raw::c_int, |
| __value: *const itimerspec, |
| __ovalue: *mut itimerspec, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timer_gettime(__timerid: timer_t, __value: *mut itimerspec) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timer_getoverrun(__timerid: timer_t) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn timespec_get( |
| __ts: *mut timespec, |
| __base: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| /// In the context of a \ref libusb_device_descriptor "device descriptor", |
| /// this bDeviceClass value indicates that each interface specifies its |
| /// own class information and all interfaces operate independently. |
| pub const LIBUSB_CLASS_PER_INTERFACE: libusb_class_code = 0; |
| /// Audio class |
| pub const LIBUSB_CLASS_AUDIO: libusb_class_code = 1; |
| /// Communications class |
| pub const LIBUSB_CLASS_COMM: libusb_class_code = 2; |
| /// Human Interface Device class |
| pub const LIBUSB_CLASS_HID: libusb_class_code = 3; |
| /// Physical |
| pub const LIBUSB_CLASS_PHYSICAL: libusb_class_code = 5; |
| /// Printer class |
| pub const LIBUSB_CLASS_PRINTER: libusb_class_code = 7; |
| /// Image class |
| pub const LIBUSB_CLASS_PTP: libusb_class_code = 6; |
| /// Image class |
| pub const LIBUSB_CLASS_IMAGE: libusb_class_code = 6; |
| /// Mass storage class |
| pub const LIBUSB_CLASS_MASS_STORAGE: libusb_class_code = 8; |
| /// Hub class |
| pub const LIBUSB_CLASS_HUB: libusb_class_code = 9; |
| /// Data class |
| pub const LIBUSB_CLASS_DATA: libusb_class_code = 10; |
| /// Smart Card |
| pub const LIBUSB_CLASS_SMART_CARD: libusb_class_code = 11; |
| /// Content Security |
| pub const LIBUSB_CLASS_CONTENT_SECURITY: libusb_class_code = 13; |
| /// Video |
| pub const LIBUSB_CLASS_VIDEO: libusb_class_code = 14; |
| /// Personal Healthcare |
| pub const LIBUSB_CLASS_PERSONAL_HEALTHCARE: libusb_class_code = 15; |
| /// Diagnostic Device |
| pub const LIBUSB_CLASS_DIAGNOSTIC_DEVICE: libusb_class_code = 220; |
| /// Wireless class |
| pub const LIBUSB_CLASS_WIRELESS: libusb_class_code = 224; |
| /// Application class |
| pub const LIBUSB_CLASS_APPLICATION: libusb_class_code = 254; |
| /// Class is vendor-specific |
| pub const LIBUSB_CLASS_VENDOR_SPEC: libusb_class_code = 255; |
| /// \ingroup libusb_desc |
| /// Device and/or Interface Class codes |
| pub type libusb_class_code = u32; |
| /// Device descriptor. See libusb_device_descriptor. |
| pub const LIBUSB_DT_DEVICE: libusb_descriptor_type = 1; |
| /// Configuration descriptor. See libusb_config_descriptor. |
| pub const LIBUSB_DT_CONFIG: libusb_descriptor_type = 2; |
| /// String descriptor |
| pub const LIBUSB_DT_STRING: libusb_descriptor_type = 3; |
| /// Interface descriptor. See libusb_interface_descriptor. |
| pub const LIBUSB_DT_INTERFACE: libusb_descriptor_type = 4; |
| /// Endpoint descriptor. See libusb_endpoint_descriptor. |
| pub const LIBUSB_DT_ENDPOINT: libusb_descriptor_type = 5; |
| /// BOS descriptor |
| pub const LIBUSB_DT_BOS: libusb_descriptor_type = 15; |
| /// Device Capability descriptor |
| pub const LIBUSB_DT_DEVICE_CAPABILITY: libusb_descriptor_type = 16; |
| /// HID descriptor |
| pub const LIBUSB_DT_HID: libusb_descriptor_type = 33; |
| /// HID report descriptor |
| pub const LIBUSB_DT_REPORT: libusb_descriptor_type = 34; |
| /// Physical descriptor |
| pub const LIBUSB_DT_PHYSICAL: libusb_descriptor_type = 35; |
| /// Hub descriptor |
| pub const LIBUSB_DT_HUB: libusb_descriptor_type = 41; |
| /// SuperSpeed Hub descriptor |
| pub const LIBUSB_DT_SUPERSPEED_HUB: libusb_descriptor_type = 42; |
| /// SuperSpeed Endpoint Companion descriptor |
| pub const LIBUSB_DT_SS_ENDPOINT_COMPANION: libusb_descriptor_type = 48; |
| /// \ingroup libusb_desc |
| /// Descriptor types as defined by the USB specification. |
| pub type libusb_descriptor_type = u32; |
| /// In: device-to-host |
| pub const LIBUSB_ENDPOINT_IN: libusb_endpoint_direction = 128; |
| /// Out: host-to-device |
| pub const LIBUSB_ENDPOINT_OUT: libusb_endpoint_direction = 0; |
| /// \ingroup libusb_desc |
| /// Endpoint direction. Values for bit 7 of the |
| /// \ref libusb_endpoint_descriptor::bEndpointAddress "endpoint address" scheme. |
| pub type libusb_endpoint_direction = u32; |
| /// Control endpoint |
| pub const LIBUSB_TRANSFER_TYPE_CONTROL: libusb_transfer_type = 0; |
| /// Isochronous endpoint |
| pub const LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: libusb_transfer_type = 1; |
| /// Bulk endpoint |
| pub const LIBUSB_TRANSFER_TYPE_BULK: libusb_transfer_type = 2; |
| /// Interrupt endpoint |
| pub const LIBUSB_TRANSFER_TYPE_INTERRUPT: libusb_transfer_type = 3; |
| /// Stream endpoint |
| pub const LIBUSB_TRANSFER_TYPE_BULK_STREAM: libusb_transfer_type = 4; |
| /// \ingroup libusb_desc |
| /// Endpoint transfer type. Values for bits 0:1 of the |
| /// \ref libusb_endpoint_descriptor::bmAttributes "endpoint attributes" field. |
| pub type libusb_transfer_type = u32; |
| /// Request status of the specific recipient |
| pub const LIBUSB_REQUEST_GET_STATUS: libusb_standard_request = 0; |
| /// Clear or disable a specific feature |
| pub const LIBUSB_REQUEST_CLEAR_FEATURE: libusb_standard_request = 1; |
| /// Set or enable a specific feature |
| pub const LIBUSB_REQUEST_SET_FEATURE: libusb_standard_request = 3; |
| /// Set device address for all future accesses |
| pub const LIBUSB_REQUEST_SET_ADDRESS: libusb_standard_request = 5; |
| /// Get the specified descriptor |
| pub const LIBUSB_REQUEST_GET_DESCRIPTOR: libusb_standard_request = 6; |
| /// Used to update existing descriptors or add new descriptors |
| pub const LIBUSB_REQUEST_SET_DESCRIPTOR: libusb_standard_request = 7; |
| /// Get the current device configuration value |
| pub const LIBUSB_REQUEST_GET_CONFIGURATION: libusb_standard_request = 8; |
| /// Set device configuration |
| pub const LIBUSB_REQUEST_SET_CONFIGURATION: libusb_standard_request = 9; |
| /// Return the selected alternate setting for the specified interface |
| pub const LIBUSB_REQUEST_GET_INTERFACE: libusb_standard_request = 10; |
| /// Select an alternate interface for the specified interface |
| pub const LIBUSB_REQUEST_SET_INTERFACE: libusb_standard_request = 11; |
| /// Set then report an endpoint's synchronization frame |
| pub const LIBUSB_REQUEST_SYNCH_FRAME: libusb_standard_request = 12; |
| /// Sets both the U1 and U2 Exit Latency |
| pub const LIBUSB_REQUEST_SET_SEL: libusb_standard_request = 48; |
| /// Delay from the time a host transmits a packet to the time it is |
| /// received by the device. |
| pub const LIBUSB_SET_ISOCH_DELAY: libusb_standard_request = 49; |
| /// \ingroup libusb_misc |
| /// Standard requests, as defined in table 9-5 of the USB 3.0 specifications |
| pub type libusb_standard_request = u32; |
| /// Standard |
| pub const LIBUSB_REQUEST_TYPE_STANDARD: libusb_request_type = 0; |
| /// Class |
| pub const LIBUSB_REQUEST_TYPE_CLASS: libusb_request_type = 32; |
| /// Vendor |
| pub const LIBUSB_REQUEST_TYPE_VENDOR: libusb_request_type = 64; |
| /// Reserved |
| pub const LIBUSB_REQUEST_TYPE_RESERVED: libusb_request_type = 96; |
| /// \ingroup libusb_misc |
| /// Request type bits of the |
| /// \ref libusb_control_setup::bmRequestType "bmRequestType" field in control |
| /// transfers. |
| pub type libusb_request_type = u32; |
| /// Device |
| pub const LIBUSB_RECIPIENT_DEVICE: libusb_request_recipient = 0; |
| /// Interface |
| pub const LIBUSB_RECIPIENT_INTERFACE: libusb_request_recipient = 1; |
| /// Endpoint |
| pub const LIBUSB_RECIPIENT_ENDPOINT: libusb_request_recipient = 2; |
| /// Other |
| pub const LIBUSB_RECIPIENT_OTHER: libusb_request_recipient = 3; |
| /// \ingroup libusb_misc |
| /// Recipient bits of the |
| /// \ref libusb_control_setup::bmRequestType "bmRequestType" field in control |
| /// transfers. Values 4 through 31 are reserved. |
| pub type libusb_request_recipient = u32; |
| /// No synchronization |
| pub const LIBUSB_ISO_SYNC_TYPE_NONE: libusb_iso_sync_type = 0; |
| /// Asynchronous |
| pub const LIBUSB_ISO_SYNC_TYPE_ASYNC: libusb_iso_sync_type = 1; |
| /// Adaptive |
| pub const LIBUSB_ISO_SYNC_TYPE_ADAPTIVE: libusb_iso_sync_type = 2; |
| /// Synchronous |
| pub const LIBUSB_ISO_SYNC_TYPE_SYNC: libusb_iso_sync_type = 3; |
| /// \ingroup libusb_desc |
| /// Synchronization type for isochronous endpoints. Values for bits 2:3 of the |
| /// \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in |
| /// libusb_endpoint_descriptor. |
| pub type libusb_iso_sync_type = u32; |
| /// Data endpoint |
| pub const LIBUSB_ISO_USAGE_TYPE_DATA: libusb_iso_usage_type = 0; |
| /// Feedback endpoint |
| pub const LIBUSB_ISO_USAGE_TYPE_FEEDBACK: libusb_iso_usage_type = 1; |
| /// Implicit feedback Data endpoint |
| pub const LIBUSB_ISO_USAGE_TYPE_IMPLICIT: libusb_iso_usage_type = 2; |
| /// \ingroup libusb_desc |
| /// Usage type for isochronous endpoints. Values for bits 4:5 of the |
| /// \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in |
| /// libusb_endpoint_descriptor. |
| pub type libusb_iso_usage_type = u32; |
| /// \ingroup libusb_desc |
| /// A structure representing the standard USB device descriptor. This |
| /// descriptor is documented in section 9.6.1 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_device_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_DEVICE LIBUSB_DT_DEVICE in this |
| /// context. |
| pub bDescriptorType: u8, |
| /// USB specification release number in binary-coded decimal. A value of |
| /// 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1, etc. |
| pub bcdUSB: u16, |
| /// USB-IF class code for the device. See \ref libusb_class_code. |
| pub bDeviceClass: u8, |
| /// USB-IF subclass code for the device, qualified by the bDeviceClass |
| /// value |
| pub bDeviceSubClass: u8, |
| /// USB-IF protocol code for the device, qualified by the bDeviceClass and |
| /// bDeviceSubClass values |
| pub bDeviceProtocol: u8, |
| /// Maximum packet size for endpoint 0 |
| pub bMaxPacketSize0: u8, |
| /// USB-IF vendor ID |
| pub idVendor: u16, |
| /// USB-IF product ID |
| pub idProduct: u16, |
| /// Device release number in binary-coded decimal |
| pub bcdDevice: u16, |
| /// Index of string descriptor describing manufacturer |
| pub iManufacturer: u8, |
| /// Index of string descriptor describing product |
| pub iProduct: u8, |
| /// Index of string descriptor containing device serial number |
| pub iSerialNumber: u8, |
| /// Number of possible configurations |
| pub bNumConfigurations: u8, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_device_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_device_descriptor>(), |
| 18usize, |
| concat!("Size of: ", stringify!(libusb_device_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_device_descriptor>(), |
| 2usize, |
| concat!("Alignment of ", stringify!(libusb_device_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bLength as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bDescriptorType as *const _ |
| as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_device_descriptor>())).bcdUSB as *const _ as usize }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bcdUSB) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bDeviceClass as *const _ as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bDeviceClass) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bDeviceSubClass as *const _ |
| as usize |
| }, |
| 5usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bDeviceSubClass) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bDeviceProtocol as *const _ |
| as usize |
| }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bDeviceProtocol) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bMaxPacketSize0 as *const _ |
| as usize |
| }, |
| 7usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bMaxPacketSize0) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).idVendor as *const _ as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(idVendor) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).idProduct as *const _ as usize |
| }, |
| 10usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(idProduct) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bcdDevice as *const _ as usize |
| }, |
| 12usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bcdDevice) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).iManufacturer as *const _ as usize |
| }, |
| 14usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(iManufacturer) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).iProduct as *const _ as usize |
| }, |
| 15usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(iProduct) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).iSerialNumber as *const _ as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(iSerialNumber) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_device_descriptor>())).bNumConfigurations as *const _ |
| as usize |
| }, |
| 17usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_device_descriptor), |
| "::", |
| stringify!(bNumConfigurations) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the standard USB endpoint descriptor. This |
| /// descriptor is documented in section 9.6.6 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_endpoint_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_ENDPOINT LIBUSB_DT_ENDPOINT in |
| /// this context. |
| pub bDescriptorType: u8, |
| /// The address of the endpoint described by this descriptor. Bits 0:3 are |
| /// the endpoint number. Bits 4:6 are reserved. Bit 7 indicates direction, |
| /// see \ref libusb_endpoint_direction. |
| pub bEndpointAddress: u8, |
| /// Attributes which apply to the endpoint when it is configured using |
| /// the bConfigurationValue. Bits 0:1 determine the transfer type and |
| /// correspond to \ref libusb_transfer_type. Bits 2:3 are only used for |
| /// isochronous endpoints and correspond to \ref libusb_iso_sync_type. |
| /// Bits 4:5 are also only used for isochronous endpoints and correspond to |
| /// \ref libusb_iso_usage_type. Bits 6:7 are reserved. |
| pub bmAttributes: u8, |
| /// Maximum packet size this endpoint is capable of sending/receiving. |
| pub wMaxPacketSize: u16, |
| /// Interval for polling endpoint for data transfers. |
| pub bInterval: u8, |
| /// For audio devices only: the rate at which synchronization feedback |
| /// is provided. |
| pub bRefresh: u8, |
| /// For audio devices only: the address if the synch endpoint |
| pub bSynchAddress: u8, |
| /// Extra descriptors. If libusb encounters unknown endpoint descriptors, |
| /// it will store them here, should you wish to parse them. |
| pub extra: *const ::std::os::raw::c_uchar, |
| /// Length of the extra descriptors, in bytes. |
| pub extra_length: ::std::os::raw::c_int, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_endpoint_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_endpoint_descriptor>(), |
| 32usize, |
| concat!("Size of: ", stringify!(libusb_endpoint_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_endpoint_descriptor>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_endpoint_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bLength as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bDescriptorType as *const _ |
| as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bEndpointAddress as *const _ |
| as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bEndpointAddress) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bmAttributes as *const _ as usize |
| }, |
| 3usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bmAttributes) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).wMaxPacketSize as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(wMaxPacketSize) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bInterval as *const _ as usize |
| }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bInterval) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bRefresh as *const _ as usize |
| }, |
| 7usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bRefresh) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).bSynchAddress as *const _ |
| as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(bSynchAddress) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).extra as *const _ as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(extra) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_endpoint_descriptor>())).extra_length as *const _ as usize |
| }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_endpoint_descriptor), |
| "::", |
| stringify!(extra_length) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the standard USB interface descriptor. This |
| /// descriptor is documented in section 9.6.5 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_interface_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE |
| /// in this context. |
| pub bDescriptorType: u8, |
| /// Number of this interface |
| pub bInterfaceNumber: u8, |
| /// Value used to select this alternate setting for this interface |
| pub bAlternateSetting: u8, |
| /// Number of endpoints used by this interface (excluding the control |
| /// endpoint). |
| pub bNumEndpoints: u8, |
| /// USB-IF class code for this interface. See \ref libusb_class_code. |
| pub bInterfaceClass: u8, |
| /// USB-IF subclass code for this interface, qualified by the |
| /// bInterfaceClass value |
| pub bInterfaceSubClass: u8, |
| /// USB-IF protocol code for this interface, qualified by the |
| /// bInterfaceClass and bInterfaceSubClass values |
| pub bInterfaceProtocol: u8, |
| /// Index of string descriptor describing this interface |
| pub iInterface: u8, |
| /// Array of endpoint descriptors. This length of this array is determined |
| /// by the bNumEndpoints field. |
| pub endpoint: *const libusb_endpoint_descriptor, |
| /// Extra descriptors. If libusb encounters unknown interface descriptors, |
| /// it will store them here, should you wish to parse them. |
| pub extra: *const ::std::os::raw::c_uchar, |
| /// Length of the extra descriptors, in bytes. |
| pub extra_length: ::std::os::raw::c_int, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_interface_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_interface_descriptor>(), |
| 40usize, |
| concat!("Size of: ", stringify!(libusb_interface_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_interface_descriptor>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_interface_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bLength as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bDescriptorType as *const _ |
| as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bInterfaceNumber as *const _ |
| as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bInterfaceNumber) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bAlternateSetting as *const _ |
| as usize |
| }, |
| 3usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bAlternateSetting) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bNumEndpoints as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bNumEndpoints) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bInterfaceClass as *const _ |
| as usize |
| }, |
| 5usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bInterfaceClass) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bInterfaceSubClass as *const _ |
| as usize |
| }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bInterfaceSubClass) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).bInterfaceProtocol as *const _ |
| as usize |
| }, |
| 7usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(bInterfaceProtocol) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).iInterface as *const _ as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(iInterface) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).endpoint as *const _ as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(endpoint) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).extra as *const _ as usize |
| }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(extra) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_interface_descriptor>())).extra_length as *const _ |
| as usize |
| }, |
| 32usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface_descriptor), |
| "::", |
| stringify!(extra_length) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A collection of alternate settings for a particular USB interface. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_interface { |
| /// Array of interface descriptors. The length of this array is determined |
| /// by the num_altsetting field. |
| pub altsetting: *const libusb_interface_descriptor, |
| /// The number of alternate settings that belong to this interface |
| pub num_altsetting: ::std::os::raw::c_int, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_interface() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_interface>(), |
| 16usize, |
| concat!("Size of: ", stringify!(libusb_interface)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_interface>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_interface)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_interface>())).altsetting as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface), |
| "::", |
| stringify!(altsetting) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_interface>())).num_altsetting as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_interface), |
| "::", |
| stringify!(num_altsetting) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the standard USB configuration descriptor. This |
| /// descriptor is documented in section 9.6.3 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_config_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG |
| /// in this context. |
| pub bDescriptorType: u8, |
| /// Total length of data returned for this configuration |
| pub wTotalLength: u16, |
| /// Number of interfaces supported by this configuration |
| pub bNumInterfaces: u8, |
| /// Identifier value for this configuration |
| pub bConfigurationValue: u8, |
| /// Index of string descriptor describing this configuration |
| pub iConfiguration: u8, |
| /// Configuration characteristics |
| pub bmAttributes: u8, |
| /// Maximum power consumption of the USB device from this bus in this |
| /// configuration when the device is fully operation. Expressed in units |
| /// of 2 mA when the device is operating in high-speed mode and in units |
| /// of 8 mA when the device is operating in super-speed mode. |
| pub MaxPower: u8, |
| /// Array of interfaces supported by this configuration. The length of |
| /// this array is determined by the bNumInterfaces field. |
| pub interface: *const libusb_interface, |
| /// Extra descriptors. If libusb encounters unknown configuration |
| /// descriptors, it will store them here, should you wish to parse them. |
| pub extra: *const ::std::os::raw::c_uchar, |
| /// Length of the extra descriptors, in bytes. |
| pub extra_length: ::std::os::raw::c_int, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_config_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_config_descriptor>(), |
| 40usize, |
| concat!("Size of: ", stringify!(libusb_config_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_config_descriptor>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_config_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).bLength as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).bDescriptorType as *const _ |
| as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).wTotalLength as *const _ as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(wTotalLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).bNumInterfaces as *const _ as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(bNumInterfaces) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).bConfigurationValue as *const _ |
| as usize |
| }, |
| 5usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(bConfigurationValue) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).iConfiguration as *const _ as usize |
| }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(iConfiguration) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).bmAttributes as *const _ as usize |
| }, |
| 7usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(bmAttributes) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).MaxPower as *const _ as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(MaxPower) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).interface as *const _ as usize |
| }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(interface) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_config_descriptor>())).extra as *const _ as usize }, |
| 24usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(extra) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_config_descriptor>())).extra_length as *const _ as usize |
| }, |
| 32usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_config_descriptor), |
| "::", |
| stringify!(extra_length) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the superspeed endpoint companion |
| /// descriptor. This descriptor is documented in section 9.6.7 of |
| /// the USB 3.0 specification. All multiple-byte fields are represented in |
| /// host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_ss_endpoint_companion_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_SS_ENDPOINT_COMPANION in |
| /// this context. |
| pub bDescriptorType: u8, |
| /// The maximum number of packets the endpoint can send or |
| /// receive as part of a burst. |
| pub bMaxBurst: u8, |
| /// In bulk EP: bits 4:0 represents the maximum number of |
| /// streams the EP supports. In isochronous EP: bits 1:0 |
| /// represents the Mult - a zero based value that determines |
| /// the maximum number of packets within a service interval |
| pub bmAttributes: u8, |
| /// The total number of bytes this EP will transfer every |
| /// service interval. valid only for periodic EPs. |
| pub wBytesPerInterval: u16, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_ss_endpoint_companion_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_ss_endpoint_companion_descriptor>(), |
| 6usize, |
| concat!( |
| "Size of: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor) |
| ) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_ss_endpoint_companion_descriptor>(), |
| 2usize, |
| concat!( |
| "Alignment of ", |
| stringify!(libusb_ss_endpoint_companion_descriptor) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_endpoint_companion_descriptor>())).bLength as *const _ |
| as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_endpoint_companion_descriptor>())).bDescriptorType |
| as *const _ as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_endpoint_companion_descriptor>())).bMaxBurst |
| as *const _ as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor), |
| "::", |
| stringify!(bMaxBurst) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_endpoint_companion_descriptor>())).bmAttributes |
| as *const _ as usize |
| }, |
| 3usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor), |
| "::", |
| stringify!(bmAttributes) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_endpoint_companion_descriptor>())).wBytesPerInterval |
| as *const _ as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_endpoint_companion_descriptor), |
| "::", |
| stringify!(wBytesPerInterval) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A generic representation of a BOS Device Capability descriptor. It is |
| /// advised to check bDevCapabilityType and call the matching |
| /// libusb_get_*_descriptor function to get a structure fully matching the type. |
| #[repr(C)] |
| #[derive(Debug)] |
| pub struct libusb_bos_dev_capability_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY |
| /// LIBUSB_DT_DEVICE_CAPABILITY in this context. |
| pub bDescriptorType: u8, |
| /// Device Capability type |
| pub bDevCapabilityType: u8, |
| /// Device Capability data (bLength - 3 bytes) |
| pub dev_capability_data: __IncompleteArrayField<u8>, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_bos_dev_capability_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_bos_dev_capability_descriptor>(), |
| 3usize, |
| concat!( |
| "Size of: ", |
| stringify!(libusb_bos_dev_capability_descriptor) |
| ) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_bos_dev_capability_descriptor>(), |
| 1usize, |
| concat!( |
| "Alignment of ", |
| stringify!(libusb_bos_dev_capability_descriptor) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the Binary Device Object Store (BOS) descriptor. |
| /// This descriptor is documented in section 9.6.2 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug)] |
| pub struct libusb_bos_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_BOS LIBUSB_DT_BOS |
| /// in this context. |
| pub bDescriptorType: u8, |
| /// Length of this descriptor and all of its sub descriptors |
| pub wTotalLength: u16, |
| /// The number of separate device capability descriptors in |
| /// the BOS |
| pub bNumDeviceCaps: u8, |
| /// bNumDeviceCap Device Capability Descriptors |
| pub dev_capability: __IncompleteArrayField<*mut libusb_bos_dev_capability_descriptor>, |
| pub __bindgen_align: [u64; 0usize], |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_bos_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_bos_descriptor>(), |
| 8usize, |
| concat!("Size of: ", stringify!(libusb_bos_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_bos_descriptor>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_bos_descriptor)) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the USB 2.0 Extension descriptor |
| /// This descriptor is documented in section 9.6.2.1 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_usb_2_0_extension_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY |
| /// LIBUSB_DT_DEVICE_CAPABILITY in this context. |
| pub bDescriptorType: u8, |
| /// Capability type. Will have value |
| /// \ref libusb_capability_type::LIBUSB_BT_USB_2_0_EXTENSION |
| /// LIBUSB_BT_USB_2_0_EXTENSION in this context. |
| pub bDevCapabilityType: u8, |
| /// Bitmap encoding of supported device level features. |
| /// A value of one in a bit location indicates a feature is |
| /// supported; a value of zero indicates it is not supported. |
| /// See \ref libusb_usb_2_0_extension_attributes. |
| pub bmAttributes: u32, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_usb_2_0_extension_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_usb_2_0_extension_descriptor>(), |
| 8usize, |
| concat!("Size of: ", stringify!(libusb_usb_2_0_extension_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_usb_2_0_extension_descriptor>(), |
| 4usize, |
| concat!( |
| "Alignment of ", |
| stringify!(libusb_usb_2_0_extension_descriptor) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_usb_2_0_extension_descriptor>())).bLength as *const _ |
| as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_usb_2_0_extension_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_usb_2_0_extension_descriptor>())).bDescriptorType |
| as *const _ as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_usb_2_0_extension_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_usb_2_0_extension_descriptor>())).bDevCapabilityType |
| as *const _ as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_usb_2_0_extension_descriptor), |
| "::", |
| stringify!(bDevCapabilityType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_usb_2_0_extension_descriptor>())).bmAttributes as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_usb_2_0_extension_descriptor), |
| "::", |
| stringify!(bmAttributes) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the SuperSpeed USB Device Capability descriptor |
| /// This descriptor is documented in section 9.6.2.2 of the USB 3.0 specification. |
| /// All multiple-byte fields are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_ss_usb_device_capability_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY |
| /// LIBUSB_DT_DEVICE_CAPABILITY in this context. |
| pub bDescriptorType: u8, |
| /// Capability type. Will have value |
| /// \ref libusb_capability_type::LIBUSB_BT_SS_USB_DEVICE_CAPABILITY |
| /// LIBUSB_BT_SS_USB_DEVICE_CAPABILITY in this context. |
| pub bDevCapabilityType: u8, |
| /// Bitmap encoding of supported device level features. |
| /// A value of one in a bit location indicates a feature is |
| /// supported; a value of zero indicates it is not supported. |
| /// See \ref libusb_ss_usb_device_capability_attributes. |
| pub bmAttributes: u8, |
| /// Bitmap encoding of the speed supported by this device when |
| /// operating in SuperSpeed mode. See \ref libusb_supported_speed. |
| pub wSpeedSupported: u16, |
| /// The lowest speed at which all the functionality supported |
| /// by the device is available to the user. For example if the |
| /// device supports all its functionality when connected at |
| /// full speed and above then it sets this value to 1. |
| pub bFunctionalitySupport: u8, |
| /// U1 Device Exit Latency. |
| pub bU1DevExitLat: u8, |
| /// U2 Device Exit Latency. |
| pub bU2DevExitLat: u16, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_ss_usb_device_capability_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_ss_usb_device_capability_descriptor>(), |
| 10usize, |
| concat!( |
| "Size of: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor) |
| ) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_ss_usb_device_capability_descriptor>(), |
| 2usize, |
| concat!( |
| "Alignment of ", |
| stringify!(libusb_ss_usb_device_capability_descriptor) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).bLength |
| as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).bDescriptorType |
| as *const _ as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())) |
| .bDevCapabilityType as *const _ as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bDevCapabilityType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).bmAttributes |
| as *const _ as usize |
| }, |
| 3usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bmAttributes) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).wSpeedSupported |
| as *const _ as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(wSpeedSupported) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())) |
| .bFunctionalitySupport as *const _ as usize |
| }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bFunctionalitySupport) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).bU1DevExitLat |
| as *const _ as usize |
| }, |
| 7usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bU1DevExitLat) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_ss_usb_device_capability_descriptor>())).bU2DevExitLat |
| as *const _ as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_ss_usb_device_capability_descriptor), |
| "::", |
| stringify!(bU2DevExitLat) |
| ) |
| ); |
| } |
| /// \ingroup libusb_desc |
| /// A structure representing the Container ID descriptor. |
| /// This descriptor is documented in section 9.6.2.3 of the USB 3.0 specification. |
| /// All multiple-byte fields, except UUIDs, are represented in host-endian format. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_container_id_descriptor { |
| /// Size of this descriptor (in bytes) |
| pub bLength: u8, |
| /// Descriptor type. Will have value |
| /// \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY |
| /// LIBUSB_DT_DEVICE_CAPABILITY in this context. |
| pub bDescriptorType: u8, |
| /// Capability type. Will have value |
| /// \ref libusb_capability_type::LIBUSB_BT_CONTAINER_ID |
| /// LIBUSB_BT_CONTAINER_ID in this context. |
| pub bDevCapabilityType: u8, |
| /// Reserved field |
| pub bReserved: u8, |
| /// 128 bit UUID |
| pub ContainerID: [u8; 16usize], |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_container_id_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_container_id_descriptor>(), |
| 20usize, |
| concat!("Size of: ", stringify!(libusb_container_id_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_container_id_descriptor>(), |
| 1usize, |
| concat!("Alignment of ", stringify!(libusb_container_id_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_container_id_descriptor>())).bLength as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_container_id_descriptor), |
| "::", |
| stringify!(bLength) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_container_id_descriptor>())).bDescriptorType as *const _ |
| as usize |
| }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_container_id_descriptor), |
| "::", |
| stringify!(bDescriptorType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_container_id_descriptor>())).bDevCapabilityType |
| as *const _ as usize |
| }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_container_id_descriptor), |
| "::", |
| stringify!(bDevCapabilityType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_container_id_descriptor>())).bReserved as *const _ |
| as usize |
| }, |
| 3usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_container_id_descriptor), |
| "::", |
| stringify!(bReserved) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_container_id_descriptor>())).ContainerID as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_container_id_descriptor), |
| "::", |
| stringify!(ContainerID) |
| ) |
| ); |
| } |
| /// \ingroup libusb_asyncio |
| /// Setup packet for control transfers. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_control_setup { |
| /// Request type. Bits 0:4 determine recipient, see |
| /// \ref libusb_request_recipient. Bits 5:6 determine type, see |
| /// \ref libusb_request_type. Bit 7 determines data transfer direction, see |
| /// \ref libusb_endpoint_direction. |
| pub bmRequestType: u8, |
| /// Request. If the type bits of bmRequestType are equal to |
| /// \ref libusb_request_type::LIBUSB_REQUEST_TYPE_STANDARD |
| /// "LIBUSB_REQUEST_TYPE_STANDARD" then this field refers to |
| /// \ref libusb_standard_request. For other cases, use of this field is |
| /// application-specific. |
| pub bRequest: u8, |
| /// Value. Varies according to request |
| pub wValue: u16, |
| /// Index. Varies according to request, typically used to pass an index |
| /// or offset |
| pub wIndex: u16, |
| /// Number of bytes to transfer |
| pub wLength: u16, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_control_setup() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_control_setup>(), |
| 8usize, |
| concat!("Size of: ", stringify!(libusb_control_setup)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_control_setup>(), |
| 2usize, |
| concat!("Alignment of ", stringify!(libusb_control_setup)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_control_setup>())).bmRequestType as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_control_setup), |
| "::", |
| stringify!(bmRequestType) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_control_setup>())).bRequest as *const _ as usize }, |
| 1usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_control_setup), |
| "::", |
| stringify!(bRequest) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_control_setup>())).wValue as *const _ as usize }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_control_setup), |
| "::", |
| stringify!(wValue) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_control_setup>())).wIndex as *const _ as usize }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_control_setup), |
| "::", |
| stringify!(wIndex) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_control_setup>())).wLength as *const _ as usize }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_control_setup), |
| "::", |
| stringify!(wLength) |
| ) |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_context { |
| _unused: [u8; 0], |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_device { |
| _unused: [u8; 0], |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_device_handle { |
| _unused: [u8; 0], |
| } |
| /// \ingroup libusb_lib |
| /// Structure providing the version of the libusb runtime |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_version { |
| /// Library major version. |
| pub major: u16, |
| /// Library minor version. |
| pub minor: u16, |
| /// Library micro version. |
| pub micro: u16, |
| /// Library nano version. |
| pub nano: u16, |
| /// Library release candidate suffix string, e.g. "-rc4". |
| pub rc: *const ::std::os::raw::c_char, |
| /// For ABI compatibility only. |
| pub describe: *const ::std::os::raw::c_char, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_version() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_version>(), |
| 24usize, |
| concat!("Size of: ", stringify!(libusb_version)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_version>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_version)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).major as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(major) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).minor as *const _ as usize }, |
| 2usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(minor) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).micro as *const _ as usize }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(micro) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).nano as *const _ as usize }, |
| 6usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(nano) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).rc as *const _ as usize }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(rc) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_version>())).describe as *const _ as usize }, |
| 16usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_version), |
| "::", |
| stringify!(describe) |
| ) |
| ); |
| } |
| /// The OS doesn't report or know the device speed. |
| pub const LIBUSB_SPEED_UNKNOWN: libusb_speed = 0; |
| /// The device is operating at low speed (1.5MBit/s). |
| pub const LIBUSB_SPEED_LOW: libusb_speed = 1; |
| /// The device is operating at full speed (12MBit/s). |
| pub const LIBUSB_SPEED_FULL: libusb_speed = 2; |
| /// The device is operating at high speed (480MBit/s). |
| pub const LIBUSB_SPEED_HIGH: libusb_speed = 3; |
| /// The device is operating at super speed (5000MBit/s). |
| pub const LIBUSB_SPEED_SUPER: libusb_speed = 4; |
| /// \ingroup libusb_dev |
| /// Speed codes. Indicates the speed at which the device is operating. |
| pub type libusb_speed = u32; |
| /// Low speed operation supported (1.5MBit/s). |
| pub const LIBUSB_LOW_SPEED_OPERATION: libusb_supported_speed = 1; |
| /// Full speed operation supported (12MBit/s). |
| pub const LIBUSB_FULL_SPEED_OPERATION: libusb_supported_speed = 2; |
| /// High speed operation supported (480MBit/s). |
| pub const LIBUSB_HIGH_SPEED_OPERATION: libusb_supported_speed = 4; |
| /// Superspeed operation supported (5000MBit/s). |
| pub const LIBUSB_SUPER_SPEED_OPERATION: libusb_supported_speed = 8; |
| /// \ingroup libusb_dev |
| /// Supported speeds (wSpeedSupported) bitfield. Indicates what |
| /// speeds the device supports. |
| pub type libusb_supported_speed = u32; |
| /// Supports Link Power Management (LPM) |
| pub const LIBUSB_BM_LPM_SUPPORT: libusb_usb_2_0_extension_attributes = 2; |
| /// \ingroup libusb_dev |
| /// Masks for the bits of the |
| /// \ref libusb_usb_2_0_extension_descriptor::bmAttributes "bmAttributes" field |
| /// of the USB 2.0 Extension descriptor. |
| pub type libusb_usb_2_0_extension_attributes = u32; |
| /// Supports Latency Tolerance Messages (LTM) |
| pub const LIBUSB_BM_LTM_SUPPORT: libusb_ss_usb_device_capability_attributes = 2; |
| /// \ingroup libusb_dev |
| /// Masks for the bits of the |
| /// \ref libusb_ss_usb_device_capability_descriptor::bmAttributes "bmAttributes" field |
| /// field of the SuperSpeed USB Device Capability descriptor. |
| pub type libusb_ss_usb_device_capability_attributes = u32; |
| /// Wireless USB device capability |
| pub const LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY: libusb_bos_type = 1; |
| /// USB 2.0 extensions |
| pub const LIBUSB_BT_USB_2_0_EXTENSION: libusb_bos_type = 2; |
| /// SuperSpeed USB device capability |
| pub const LIBUSB_BT_SS_USB_DEVICE_CAPABILITY: libusb_bos_type = 3; |
| /// Container ID type |
| pub const LIBUSB_BT_CONTAINER_ID: libusb_bos_type = 4; |
| /// \ingroup libusb_dev |
| /// USB capability types |
| pub type libusb_bos_type = u32; |
| /// Success (no error) |
| pub const LIBUSB_SUCCESS: libusb_error = 0; |
| /// Input/output error |
| pub const LIBUSB_ERROR_IO: libusb_error = -1; |
| /// Invalid parameter |
| pub const LIBUSB_ERROR_INVALID_PARAM: libusb_error = -2; |
| /// Access denied (insufficient permissions) |
| pub const LIBUSB_ERROR_ACCESS: libusb_error = -3; |
| /// No such device (it may have been disconnected) |
| pub const LIBUSB_ERROR_NO_DEVICE: libusb_error = -4; |
| /// Entity not found |
| pub const LIBUSB_ERROR_NOT_FOUND: libusb_error = -5; |
| /// Resource busy |
| pub const LIBUSB_ERROR_BUSY: libusb_error = -6; |
| /// Operation timed out |
| pub const LIBUSB_ERROR_TIMEOUT: libusb_error = -7; |
| /// Overflow |
| pub const LIBUSB_ERROR_OVERFLOW: libusb_error = -8; |
| /// Pipe error |
| pub const LIBUSB_ERROR_PIPE: libusb_error = -9; |
| /// System call interrupted (perhaps due to signal) |
| pub const LIBUSB_ERROR_INTERRUPTED: libusb_error = -10; |
| /// Insufficient memory |
| pub const LIBUSB_ERROR_NO_MEM: libusb_error = -11; |
| /// Operation not supported or unimplemented on this platform |
| pub const LIBUSB_ERROR_NOT_SUPPORTED: libusb_error = -12; |
| /// Other error |
| pub const LIBUSB_ERROR_OTHER: libusb_error = -99; |
| /// \ingroup libusb_misc |
| /// Error codes. Most libusb functions return 0 on success or one of these |
| /// codes on failure. |
| /// You can call libusb_error_name() to retrieve a string representation of an |
| /// error code or libusb_strerror() to get an end-user suitable description of |
| /// an error code. |
| pub type libusb_error = i32; |
| /// Transfer completed without error. Note that this does not indicate |
| /// that the entire amount of requested data was transferred. |
| pub const LIBUSB_TRANSFER_COMPLETED: libusb_transfer_status = 0; |
| /// Transfer failed |
| pub const LIBUSB_TRANSFER_ERROR: libusb_transfer_status = 1; |
| /// Transfer timed out |
| pub const LIBUSB_TRANSFER_TIMED_OUT: libusb_transfer_status = 2; |
| /// Transfer was cancelled |
| pub const LIBUSB_TRANSFER_CANCELLED: libusb_transfer_status = 3; |
| /// For bulk/interrupt endpoints: halt condition detected (endpoint |
| /// stalled). For control endpoints: control request not supported. |
| pub const LIBUSB_TRANSFER_STALL: libusb_transfer_status = 4; |
| /// Device was disconnected |
| pub const LIBUSB_TRANSFER_NO_DEVICE: libusb_transfer_status = 5; |
| /// Device sent more data than requested |
| pub const LIBUSB_TRANSFER_OVERFLOW: libusb_transfer_status = 6; |
| /// \ingroup libusb_asyncio |
| /// Transfer status codes |
| pub type libusb_transfer_status = u32; |
| /// Report short frames as errors |
| pub const LIBUSB_TRANSFER_SHORT_NOT_OK: libusb_transfer_flags = 1; |
| /// Automatically free() transfer buffer during libusb_free_transfer(). |
| /// Note that buffers allocated with libusb_dev_mem_alloc() should not |
| /// be attempted freed in this way, since free() is not an appropriate |
| /// way to release such memory. |
| pub const LIBUSB_TRANSFER_FREE_BUFFER: libusb_transfer_flags = 2; |
| /// Automatically call libusb_free_transfer() after callback returns. |
| /// If this flag is set, it is illegal to call libusb_free_transfer() |
| /// from your transfer callback, as this will result in a double-free |
| /// when this flag is acted upon. |
| pub const LIBUSB_TRANSFER_FREE_TRANSFER: libusb_transfer_flags = 4; |
| /// Terminate transfers that are a multiple of the endpoint's |
| /// wMaxPacketSize with an extra zero length packet. This is useful |
| /// when a device protocol mandates that each logical request is |
| /// terminated by an incomplete packet (i.e. the logical requests are |
| /// not separated by other means). |
| /// |
| /// This flag only affects host-to-device transfers to bulk and interrupt |
| /// endpoints. In other situations, it is ignored. |
| /// |
| /// This flag only affects transfers with a length that is a multiple of |
| /// the endpoint's wMaxPacketSize. On transfers of other lengths, this |
| /// flag has no effect. Therefore, if you are working with a device that |
| /// needs a ZLP whenever the end of the logical request falls on a packet |
| /// boundary, then it is sensible to set this flag on <em>every</em> |
| /// transfer (you do not have to worry about only setting it on transfers |
| /// that end on the boundary). |
| /// |
| /// This flag is currently only supported on Linux. |
| /// On other systems, libusb_submit_transfer() will return |
| /// LIBUSB_ERROR_NOT_SUPPORTED for every transfer where this flag is set. |
| /// |
| /// Available since libusb-1.0.9. |
| pub const LIBUSB_TRANSFER_ADD_ZERO_PACKET: libusb_transfer_flags = 8; |
| /// \ingroup libusb_asyncio |
| /// libusb_transfer.flags values |
| pub type libusb_transfer_flags = u32; |
| /// \ingroup libusb_asyncio |
| /// Isochronous packet descriptor. |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_iso_packet_descriptor { |
| /// Length of data to request in this packet |
| pub length: ::std::os::raw::c_uint, |
| /// Amount of data that was actually transferred |
| pub actual_length: ::std::os::raw::c_uint, |
| /// Status code for this packet |
| pub status: libusb_transfer_status, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_iso_packet_descriptor() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_iso_packet_descriptor>(), |
| 12usize, |
| concat!("Size of: ", stringify!(libusb_iso_packet_descriptor)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_iso_packet_descriptor>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(libusb_iso_packet_descriptor)) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_iso_packet_descriptor>())).length as *const _ as usize |
| }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_iso_packet_descriptor), |
| "::", |
| stringify!(length) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_iso_packet_descriptor>())).actual_length as *const _ |
| as usize |
| }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_iso_packet_descriptor), |
| "::", |
| stringify!(actual_length) |
| ) |
| ); |
| assert_eq!( |
| unsafe { |
| &(*(::std::ptr::null::<libusb_iso_packet_descriptor>())).status as *const _ as usize |
| }, |
| 8usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_iso_packet_descriptor), |
| "::", |
| stringify!(status) |
| ) |
| ); |
| } |
| /// \ingroup libusb_asyncio |
| /// Asynchronous transfer callback function type. When submitting asynchronous |
| /// transfers, you pass a pointer to a callback function of this type via the |
| /// \ref libusb_transfer::callback "callback" member of the libusb_transfer |
| /// structure. libusb will call this function later, when the transfer has |
| /// completed or failed. See \ref libusb_asyncio for more information. |
| /// \param transfer The libusb_transfer struct the callback function is being |
| /// notified about. |
| pub type libusb_transfer_cb_fn = |
| ::std::option::Option<unsafe extern "C" fn(transfer: *mut libusb_transfer)>; |
| /// \ingroup libusb_asyncio |
| /// The generic USB transfer structure. The user populates this structure and |
| /// then submits it in order to request a transfer. After the transfer has |
| /// completed, the library populates the transfer with the results and passes |
| /// it back to the user. |
| #[repr(C)] |
| #[derive(Debug)] |
| pub struct libusb_transfer { |
| /// Handle of the device that this transfer will be submitted to |
| pub dev_handle: *mut libusb_device_handle, |
| /// A bitwise OR combination of \ref libusb_transfer_flags. |
| pub flags: u8, |
| /// Address of the endpoint where this transfer will be sent. |
| pub endpoint: ::std::os::raw::c_uchar, |
| /// Type of the endpoint from \ref libusb_transfer_type |
| pub type_: ::std::os::raw::c_uchar, |
| /// Timeout for this transfer in millseconds. A value of 0 indicates no |
| /// timeout. |
| pub timeout: ::std::os::raw::c_uint, |
| /// The status of the transfer. Read-only, and only for use within |
| /// transfer callback function. |
| /// |
| /// If this is an isochronous transfer, this field may read COMPLETED even |
| /// if there were errors in the frames. Use the |
| /// \ref libusb_iso_packet_descriptor::status "status" field in each packet |
| /// to determine if errors occurred. |
| pub status: libusb_transfer_status, |
| /// Length of the data buffer |
| pub length: ::std::os::raw::c_int, |
| /// Actual length of data that was transferred. Read-only, and only for |
| /// use within transfer callback function. Not valid for isochronous |
| /// endpoint transfers. |
| pub actual_length: ::std::os::raw::c_int, |
| /// Callback function. This will be invoked when the transfer completes, |
| /// fails, or is cancelled. |
| pub callback: libusb_transfer_cb_fn, |
| /// User context data to pass to the callback function. |
| pub user_data: *mut ::std::os::raw::c_void, |
| /// Data buffer |
| pub buffer: *mut ::std::os::raw::c_uchar, |
| /// Number of isochronous packets. Only used for I/O with isochronous |
| /// endpoints. |
| pub num_iso_packets: ::std::os::raw::c_int, |
| /// Isochronous packet descriptors, for isochronous transfers only. |
| pub iso_packet_desc: __IncompleteArrayField<libusb_iso_packet_descriptor>, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_transfer() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_transfer>(), |
| 64usize, |
| concat!("Size of: ", stringify!(libusb_transfer)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_transfer>(), |
| 8usize, |
| concat!("Alignment of ", stringify!(libusb_transfer)) |
| ); |
| } |
| /// The libusb_has_capability() API is available. |
| pub const LIBUSB_CAP_HAS_CAPABILITY: libusb_capability = 0; |
| /// Hotplug support is available on this platform. |
| pub const LIBUSB_CAP_HAS_HOTPLUG: libusb_capability = 1; |
| /// The library can access HID devices without requiring user intervention. |
| /// Note that before being able to actually access an HID device, you may |
| /// still have to call additional libusb functions such as |
| /// \ref libusb_detach_kernel_driver(). |
| pub const LIBUSB_CAP_HAS_HID_ACCESS: libusb_capability = 256; |
| /// The library supports detaching of the default USB driver, using |
| /// \ref libusb_detach_kernel_driver(), if one is set by the OS kernel |
| pub const LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER: libusb_capability = 257; |
| /// \ingroup libusb_misc |
| /// Capabilities supported by an instance of libusb on the current running |
| /// platform. Test if the loaded library supports a given capability by calling |
| /// \ref libusb_has_capability(). |
| pub type libusb_capability = u32; |
| pub const LIBUSB_LOG_LEVEL_NONE: libusb_log_level = 0; |
| pub const LIBUSB_LOG_LEVEL_ERROR: libusb_log_level = 1; |
| pub const LIBUSB_LOG_LEVEL_WARNING: libusb_log_level = 2; |
| pub const LIBUSB_LOG_LEVEL_INFO: libusb_log_level = 3; |
| pub const LIBUSB_LOG_LEVEL_DEBUG: libusb_log_level = 4; |
| /// \ingroup libusb_lib |
| /// Log message levels. |
| /// - LIBUSB_LOG_LEVEL_NONE (0) : no messages ever printed by the library (default) |
| /// - LIBUSB_LOG_LEVEL_ERROR (1) : error messages are printed to stderr |
| /// - LIBUSB_LOG_LEVEL_WARNING (2) : warning and error messages are printed to stderr |
| /// - LIBUSB_LOG_LEVEL_INFO (3) : informational messages are printed to stdout, warning |
| /// and error messages are printed to stderr |
| /// - LIBUSB_LOG_LEVEL_DEBUG (4) : debug and informational messages are printed to stdout, |
| /// warnings and errors to stderr |
| pub type libusb_log_level = u32; |
| extern "C" { |
| pub fn libusb_init(ctx: *mut *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_exit(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_set_debug(ctx: *mut libusb_context, level: ::std::os::raw::c_int); |
| } |
| extern "C" { |
| pub fn libusb_get_version() -> *const libusb_version; |
| } |
| extern "C" { |
| pub fn libusb_has_capability(capability: u32) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_error_name(errcode: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; |
| } |
| extern "C" { |
| pub fn libusb_setlocale(locale: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_strerror(errcode: libusb_error) -> *const ::std::os::raw::c_char; |
| } |
| extern "C" { |
| pub fn libusb_get_device_list( |
| ctx: *mut libusb_context, |
| list: *mut *mut *mut libusb_device, |
| ) -> isize; |
| } |
| extern "C" { |
| pub fn libusb_free_device_list( |
| list: *mut *mut libusb_device, |
| unref_devices: ::std::os::raw::c_int, |
| ); |
| } |
| extern "C" { |
| pub fn libusb_ref_device(dev: *mut libusb_device) -> *mut libusb_device; |
| } |
| extern "C" { |
| pub fn libusb_unref_device(dev: *mut libusb_device); |
| } |
| extern "C" { |
| pub fn libusb_get_configuration( |
| dev: *mut libusb_device_handle, |
| config: *mut ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_device_descriptor( |
| dev: *mut libusb_device, |
| desc: *mut libusb_device_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_active_config_descriptor( |
| dev: *mut libusb_device, |
| config: *mut *mut libusb_config_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_config_descriptor( |
| dev: *mut libusb_device, |
| config_index: u8, |
| config: *mut *mut libusb_config_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_config_descriptor_by_value( |
| dev: *mut libusb_device, |
| bConfigurationValue: u8, |
| config: *mut *mut libusb_config_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_config_descriptor(config: *mut libusb_config_descriptor); |
| } |
| extern "C" { |
| pub fn libusb_get_ss_endpoint_companion_descriptor( |
| ctx: *mut libusb_context, |
| endpoint: *const libusb_endpoint_descriptor, |
| ep_comp: *mut *mut libusb_ss_endpoint_companion_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_ss_endpoint_companion_descriptor( |
| ep_comp: *mut libusb_ss_endpoint_companion_descriptor, |
| ); |
| } |
| extern "C" { |
| pub fn libusb_get_bos_descriptor( |
| dev_handle: *mut libusb_device_handle, |
| bos: *mut *mut libusb_bos_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_bos_descriptor(bos: *mut libusb_bos_descriptor); |
| } |
| extern "C" { |
| pub fn libusb_get_usb_2_0_extension_descriptor( |
| ctx: *mut libusb_context, |
| dev_cap: *mut libusb_bos_dev_capability_descriptor, |
| usb_2_0_extension: *mut *mut libusb_usb_2_0_extension_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_usb_2_0_extension_descriptor( |
| usb_2_0_extension: *mut libusb_usb_2_0_extension_descriptor, |
| ); |
| } |
| extern "C" { |
| pub fn libusb_get_ss_usb_device_capability_descriptor( |
| ctx: *mut libusb_context, |
| dev_cap: *mut libusb_bos_dev_capability_descriptor, |
| ss_usb_device_cap: *mut *mut libusb_ss_usb_device_capability_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_ss_usb_device_capability_descriptor( |
| ss_usb_device_cap: *mut libusb_ss_usb_device_capability_descriptor, |
| ); |
| } |
| extern "C" { |
| pub fn libusb_get_container_id_descriptor( |
| ctx: *mut libusb_context, |
| dev_cap: *mut libusb_bos_dev_capability_descriptor, |
| container_id: *mut *mut libusb_container_id_descriptor, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_container_id_descriptor(container_id: *mut libusb_container_id_descriptor); |
| } |
| extern "C" { |
| pub fn libusb_get_bus_number(dev: *mut libusb_device) -> u8; |
| } |
| extern "C" { |
| pub fn libusb_get_port_number(dev: *mut libusb_device) -> u8; |
| } |
| extern "C" { |
| pub fn libusb_get_port_numbers( |
| dev: *mut libusb_device, |
| port_numbers: *mut u8, |
| port_numbers_len: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_port_path( |
| ctx: *mut libusb_context, |
| dev: *mut libusb_device, |
| path: *mut u8, |
| path_length: u8, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_parent(dev: *mut libusb_device) -> *mut libusb_device; |
| } |
| extern "C" { |
| pub fn libusb_get_device_address(dev: *mut libusb_device) -> u8; |
| } |
| extern "C" { |
| pub fn libusb_get_device_speed(dev: *mut libusb_device) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_max_packet_size( |
| dev: *mut libusb_device, |
| endpoint: ::std::os::raw::c_uchar, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_max_iso_packet_size( |
| dev: *mut libusb_device, |
| endpoint: ::std::os::raw::c_uchar, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_open( |
| dev: *mut libusb_device, |
| dev_handle: *mut *mut libusb_device_handle, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_close(dev_handle: *mut libusb_device_handle); |
| } |
| extern "C" { |
| pub fn libusb_get_device(dev_handle: *mut libusb_device_handle) -> *mut libusb_device; |
| } |
| extern "C" { |
| pub fn libusb_set_configuration( |
| dev_handle: *mut libusb_device_handle, |
| configuration: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_claim_interface( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_release_interface( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_open_device_with_vid_pid( |
| ctx: *mut libusb_context, |
| vendor_id: u16, |
| product_id: u16, |
| ) -> *mut libusb_device_handle; |
| } |
| extern "C" { |
| pub fn libusb_set_interface_alt_setting( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| alternate_setting: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_clear_halt( |
| dev_handle: *mut libusb_device_handle, |
| endpoint: ::std::os::raw::c_uchar, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_reset_device(dev_handle: *mut libusb_device_handle) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_alloc_streams( |
| dev_handle: *mut libusb_device_handle, |
| num_streams: u32, |
| endpoints: *mut ::std::os::raw::c_uchar, |
| num_endpoints: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_streams( |
| dev_handle: *mut libusb_device_handle, |
| endpoints: *mut ::std::os::raw::c_uchar, |
| num_endpoints: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_dev_mem_alloc( |
| dev_handle: *mut libusb_device_handle, |
| length: usize, |
| ) -> *mut ::std::os::raw::c_uchar; |
| } |
| extern "C" { |
| pub fn libusb_dev_mem_free( |
| dev_handle: *mut libusb_device_handle, |
| buffer: *mut ::std::os::raw::c_uchar, |
| length: usize, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_kernel_driver_active( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_detach_kernel_driver( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_attach_kernel_driver( |
| dev_handle: *mut libusb_device_handle, |
| interface_number: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_set_auto_detach_kernel_driver( |
| dev_handle: *mut libusb_device_handle, |
| enable: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_alloc_transfer(iso_packets: ::std::os::raw::c_int) -> *mut libusb_transfer; |
| } |
| extern "C" { |
| pub fn libusb_submit_transfer(transfer: *mut libusb_transfer) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_cancel_transfer(transfer: *mut libusb_transfer) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_free_transfer(transfer: *mut libusb_transfer); |
| } |
| extern "C" { |
| pub fn libusb_transfer_set_stream_id(transfer: *mut libusb_transfer, stream_id: u32); |
| } |
| extern "C" { |
| pub fn libusb_transfer_get_stream_id(transfer: *mut libusb_transfer) -> u32; |
| } |
| extern "C" { |
| pub fn libusb_control_transfer( |
| dev_handle: *mut libusb_device_handle, |
| request_type: u8, |
| bRequest: u8, |
| wValue: u16, |
| wIndex: u16, |
| data: *mut ::std::os::raw::c_uchar, |
| wLength: u16, |
| timeout: ::std::os::raw::c_uint, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_bulk_transfer( |
| dev_handle: *mut libusb_device_handle, |
| endpoint: ::std::os::raw::c_uchar, |
| data: *mut ::std::os::raw::c_uchar, |
| length: ::std::os::raw::c_int, |
| actual_length: *mut ::std::os::raw::c_int, |
| timeout: ::std::os::raw::c_uint, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_interrupt_transfer( |
| dev_handle: *mut libusb_device_handle, |
| endpoint: ::std::os::raw::c_uchar, |
| data: *mut ::std::os::raw::c_uchar, |
| length: ::std::os::raw::c_int, |
| actual_length: *mut ::std::os::raw::c_int, |
| timeout: ::std::os::raw::c_uint, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_string_descriptor_ascii( |
| dev_handle: *mut libusb_device_handle, |
| desc_index: u8, |
| data: *mut ::std::os::raw::c_uchar, |
| length: ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_try_lock_events(ctx: *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_lock_events(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_unlock_events(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_event_handling_ok(ctx: *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_event_handler_active(ctx: *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_interrupt_event_handler(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_lock_event_waiters(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_unlock_event_waiters(ctx: *mut libusb_context); |
| } |
| extern "C" { |
| pub fn libusb_wait_for_event( |
| ctx: *mut libusb_context, |
| tv: *mut timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_handle_events_timeout( |
| ctx: *mut libusb_context, |
| tv: *mut timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_handle_events_timeout_completed( |
| ctx: *mut libusb_context, |
| tv: *mut timeval, |
| completed: *mut ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_handle_events(ctx: *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_handle_events_completed( |
| ctx: *mut libusb_context, |
| completed: *mut ::std::os::raw::c_int, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_handle_events_locked( |
| ctx: *mut libusb_context, |
| tv: *mut timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_pollfds_handle_timeouts(ctx: *mut libusb_context) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| pub fn libusb_get_next_timeout( |
| ctx: *mut libusb_context, |
| tv: *mut timeval, |
| ) -> ::std::os::raw::c_int; |
| } |
| /// \ingroup libusb_poll |
| /// File descriptor for polling |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct libusb_pollfd { |
| /// Numeric file descriptor |
| pub fd: ::std::os::raw::c_int, |
| /// Event flags to poll for from <poll.h>. POLLIN indicates that you |
| /// should monitor this file descriptor for becoming ready to read from, |
| /// and POLLOUT indicates that you should monitor this file descriptor for |
| /// nonblocking write readiness. |
| pub events: ::std::os::raw::c_short, |
| } |
| #[test] |
| fn bindgen_test_layout_libusb_pollfd() { |
| assert_eq!( |
| ::std::mem::size_of::<libusb_pollfd>(), |
| 8usize, |
| concat!("Size of: ", stringify!(libusb_pollfd)) |
| ); |
| assert_eq!( |
| ::std::mem::align_of::<libusb_pollfd>(), |
| 4usize, |
| concat!("Alignment of ", stringify!(libusb_pollfd)) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_pollfd>())).fd as *const _ as usize }, |
| 0usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_pollfd), |
| "::", |
| stringify!(fd) |
| ) |
| ); |
| assert_eq!( |
| unsafe { &(*(::std::ptr::null::<libusb_pollfd>())).events as *const _ as usize }, |
| 4usize, |
| concat!( |
| "Offset of field: ", |
| stringify!(libusb_pollfd), |
| "::", |
| stringify!(events) |
| ) |
| ); |
| } |
| /// \ingroup libusb_poll |
| /// Callback function, invoked when a new file descriptor should be added |
| /// to the set of file descriptors monitored for events. |
| /// \param fd the new file descriptor |
| /// \param events events to monitor for, see \ref libusb_pollfd for a |
| /// description |
| /// \param user_data User data pointer specified in |
| /// libusb_set_pollfd_notifiers() call |
| /// \see libusb_set_pollfd_notifiers() |
| pub type libusb_pollfd_added_cb = ::std::option::Option< |
| unsafe extern "C" fn( |
| fd: ::std::os::raw::c_int, |
| events: ::std::os::raw::c_short, |
| user_data: *mut ::std::os::raw::c_void, |
| ), |
| >; |
| /// \ingroup libusb_poll |
| /// Callback function, invoked when a file descriptor should be removed from |
| /// the set of file descriptors being monitored for events. After returning |
| /// from this callback, do not use that file descriptor again. |
| /// \param fd the file descriptor to stop monitoring |
| /// \param user_data User data pointer specified in |
| /// libusb_set_pollfd_notifiers() call |
| /// \see libusb_set_pollfd_notifiers() |
| pub type libusb_pollfd_removed_cb = ::std::option::Option< |
| unsafe extern "C" fn(fd: ::std::os::raw::c_int, user_data: *mut ::std::os::raw::c_void), |
| >; |
| extern "C" { |
| pub fn libusb_get_pollfds(ctx: *mut libusb_context) -> *mut *const libusb_pollfd; |
| } |
| extern "C" { |
| pub fn libusb_free_pollfds(pollfds: *mut *const libusb_pollfd); |
| } |
| extern "C" { |
| pub fn libusb_set_pollfd_notifiers( |
| ctx: *mut libusb_context, |
| added_cb: libusb_pollfd_added_cb, |
| removed_cb: libusb_pollfd_removed_cb, |
| user_data: *mut ::std::os::raw::c_void, |
| ); |
| } |
| /// \ingroup libusb_hotplug |
| /// Callback handle. |
| /// |
| /// Callbacks handles are generated by libusb_hotplug_register_callback() |
| /// and can be used to deregister callbacks. Callback handles are unique |
| /// per libusb_context and it is safe to call libusb_hotplug_deregister_callback() |
| /// on an already deregisted callback. |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// For more information, see \ref libusb_hotplug. |
| pub type libusb_hotplug_callback_handle = ::std::os::raw::c_int; |
| /// Default value when not using any flags. |
| pub const LIBUSB_HOTPLUG_NO_FLAGS: libusb_hotplug_flag = 0; |
| /// Arm the callback and fire it for all matching currently attached devices. |
| pub const LIBUSB_HOTPLUG_ENUMERATE: libusb_hotplug_flag = 1; |
| /// \ingroup libusb_hotplug |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// Flags for hotplug events |
| pub type libusb_hotplug_flag = u32; |
| /// A device has been plugged in and is ready to use |
| pub const LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED: libusb_hotplug_event = 1; |
| /// A device has left and is no longer available. |
| /// It is the user's responsibility to call libusb_close on any handle associated with a disconnected device. |
| /// It is safe to call libusb_get_device_descriptor on a device that has left |
| pub const LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT: libusb_hotplug_event = 2; |
| /// \ingroup libusb_hotplug |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// Hotplug events |
| pub type libusb_hotplug_event = u32; |
| /// \ingroup libusb_hotplug |
| /// Hotplug callback function type. When requesting hotplug event notifications, |
| /// you pass a pointer to a callback function of this type. |
| /// |
| /// This callback may be called by an internal event thread and as such it is |
| /// recommended the callback do minimal processing before returning. |
| /// |
| /// libusb will call this function later, when a matching event had happened on |
| /// a matching device. See \ref libusb_hotplug for more information. |
| /// |
| /// It is safe to call either libusb_hotplug_register_callback() or |
| /// libusb_hotplug_deregister_callback() from within a callback function. |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// \param ctx context of this notification |
| /// \param device libusb_device this event occurred on |
| /// \param event event that occurred |
| /// \param user_data user data provided when this callback was registered |
| /// \returns bool whether this callback is finished processing events. |
| /// returning 1 will cause this callback to be deregistered |
| pub type libusb_hotplug_callback_fn = ::std::option::Option< |
| unsafe extern "C" fn( |
| ctx: *mut libusb_context, |
| device: *mut libusb_device, |
| event: libusb_hotplug_event, |
| user_data: *mut ::std::os::raw::c_void, |
| ) -> ::std::os::raw::c_int, |
| >; |
| extern "C" { |
| /// \ingroup libusb_hotplug |
| /// Register a hotplug callback function |
| /// |
| /// Register a callback with the libusb_context. The callback will fire |
| /// when a matching event occurs on a matching device. The callback is |
| /// armed until either it is deregistered with libusb_hotplug_deregister_callback() |
| /// or the supplied callback returns 1 to indicate it is finished processing events. |
| /// |
| /// If the \ref LIBUSB_HOTPLUG_ENUMERATE is passed the callback will be |
| /// called with a \ref LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED for all devices |
| /// already plugged into the machine. Note that libusb modifies its internal |
| /// device list from a separate thread, while calling hotplug callbacks from |
| /// libusb_handle_events(), so it is possible for a device to already be present |
| /// on, or removed from, its internal device list, while the hotplug callbacks |
| /// still need to be dispatched. This means that when using \ref |
| /// LIBUSB_HOTPLUG_ENUMERATE, your callback may be called twice for the arrival |
| /// of the same device, once from libusb_hotplug_register_callback() and once |
| /// from libusb_handle_events(); and/or your callback may be called for the |
| /// removal of a device for which an arrived call was never made. |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// \param[in] ctx context to register this callback with |
| /// \param[in] events bitwise or of events that will trigger this callback. See \ref |
| /// libusb_hotplug_event |
| /// \param[in] flags hotplug callback flags. See \ref libusb_hotplug_flag |
| /// \param[in] vendor_id the vendor id to match or \ref LIBUSB_HOTPLUG_MATCH_ANY |
| /// \param[in] product_id the product id to match or \ref LIBUSB_HOTPLUG_MATCH_ANY |
| /// \param[in] dev_class the device class to match or \ref LIBUSB_HOTPLUG_MATCH_ANY |
| /// \param[in] cb_fn the function to be invoked on a matching event/device |
| /// \param[in] user_data user data to pass to the callback function |
| /// \param[out] callback_handle pointer to store the handle of the allocated callback (can be NULL) |
| /// \returns LIBUSB_SUCCESS on success LIBUSB_ERROR code on failure |
| pub fn libusb_hotplug_register_callback( |
| ctx: *mut libusb_context, |
| events: libusb_hotplug_event, |
| flags: libusb_hotplug_flag, |
| vendor_id: ::std::os::raw::c_int, |
| product_id: ::std::os::raw::c_int, |
| dev_class: ::std::os::raw::c_int, |
| cb_fn: libusb_hotplug_callback_fn, |
| user_data: *mut ::std::os::raw::c_void, |
| callback_handle: *mut libusb_hotplug_callback_handle, |
| ) -> ::std::os::raw::c_int; |
| } |
| extern "C" { |
| /// \ingroup libusb_hotplug |
| /// Deregisters a hotplug callback. |
| /// |
| /// Deregister a callback from a libusb_context. This function is safe to call from within |
| /// a hotplug callback. |
| /// |
| /// Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 |
| /// |
| /// \param[in] ctx context this callback is registered with |
| /// \param[in] callback_handle the handle of the callback to deregister |
| pub fn libusb_hotplug_deregister_callback( |
| ctx: *mut libusb_context, |
| callback_handle: libusb_hotplug_callback_handle, |
| ); |
| } |
| #[repr(C)] |
| #[derive(Debug, Copy, Clone)] |
| pub struct __locale_data { |
| pub _address: u8, |
| } |