From 2d44950d14c64144c6b02443687ee40b964a2560 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sat, 1 Oct 2022 08:44:13 +0100 Subject: [PATCH 01/12] native-activity: Migrate ANativeActivity callbacks to Rust A first step towards replacing the android_native_app_glue code with a pure Rust implementation. --- android-activity/generate-bindings.sh | 3 + .../native_app_glue/android_native_app_glue.c | 144 +-- .../native_app_glue/android_native_app_glue.h | 9 + .../src/game_activity/ffi_aarch64.rs | 661 ++++------ android-activity/src/game_activity/ffi_arm.rs | 669 ++++------ .../src/game_activity/ffi_i686.rs | 669 ++++------ .../src/game_activity/ffi_x86_64.rs | 669 ++++------ android-activity/src/native_activity/ffi.rs | 1 + .../src/native_activity/ffi_aarch64.rs | 1135 ++-------------- .../src/native_activity/ffi_arm.rs | 1132 ++-------------- .../src/native_activity/ffi_i686.rs | 1132 ++-------------- .../src/native_activity/ffi_x86_64.rs | 1143 ++--------------- android-activity/src/native_activity/mod.rs | 127 +- 13 files changed, 1442 insertions(+), 6052 deletions(-) diff --git a/android-activity/generate-bindings.sh b/android-activity/generate-bindings.sh index f73cb6b..b9809cd 100644 --- a/android-activity/generate-bindings.sh +++ b/android-activity/generate-bindings.sh @@ -53,6 +53,9 @@ while read ARCH && read TARGET ; do --blocklist-item 'GameActivity_onCreate' \ --blocklist-function 'GameActivity_onCreate_C' \ --newtype-enum '\w+_(result|status)_t' \ + --blocklist-item 'pthread_mutex_t' \ + --blocklist-item 'pthread_cond_t' \ + --blocklist-item 'pthread_\w*' \ -- \ -Inative-activity-csrc \ --sysroot="$SYSROOT" --target=$TARGET diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c index 4b212bd..b05f750 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c @@ -180,10 +180,6 @@ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) { } } -void app_dummy() { - -} - static void android_app_destroy(struct android_app* android_app) { LOGV("android_app_destroy!"); free_saved_state(android_app); @@ -198,21 +194,6 @@ static void android_app_destroy(struct android_app* android_app) { // Can't touch android_app object after this. } -/* -static void process_input(struct android_app* app, __attribute__((unused)) struct android_poll_source* source) { - AInputEvent* event = NULL; - while (AInputQueue_getEvent(app->inputQueue, &event) >= 0) { - LOGV("New input event: type=%d\n", AInputEvent_getType(event)); - if (AInputQueue_preDispatchEvent(app->inputQueue, event)) { - continue; - } - int32_t handled = 0; - if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event); - AInputQueue_finishEvent(app->inputQueue, event, handled); - } -} -*/ - static void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source) { int8_t cmd = android_app_read_cmd(app); android_app_pre_exec_cmd(app, cmd); @@ -231,9 +212,6 @@ static void* android_app_entry(void* param) { android_app->cmdPollSource.id = LOOPER_ID_MAIN; android_app->cmdPollSource.app = android_app; android_app->cmdPollSource.process = process_cmd; - //android_app->inputPollSource.id = LOOPER_ID_INPUT; - //android_app->inputPollSource.app = android_app; - //android_app->inputPollSource.process = process_input; ALooper* looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS); ALooper_addFd(looper, android_app->msgread, LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT, NULL, @@ -255,7 +233,7 @@ static void* android_app_entry(void* param) { // Native activity interaction (called from main thread) // -------------------------------------------------------------------- -static struct android_app* android_app_create(ANativeActivity* activity, +struct android_app* android_app_create(ANativeActivity* activity, void* savedState, size_t savedStateSize) { struct android_app* android_app = (struct android_app*)malloc(sizeof(struct android_app)); memset(android_app, 0, sizeof(struct android_app)); @@ -293,13 +271,13 @@ static struct android_app* android_app_create(ANativeActivity* activity, return android_app; } -static void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { +void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { LOGE("Failure writing android_app cmd: %s\n", strerror(errno)); } } -static void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) { +void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) { pthread_mutex_lock(&android_app->mutex); android_app->pendingInputQueue = inputQueue; android_app_write_cmd(android_app, APP_CMD_INPUT_CHANGED); @@ -309,7 +287,7 @@ static void android_app_set_input(struct android_app* android_app, AInputQueue* pthread_mutex_unlock(&android_app->mutex); } -static void android_app_set_window(struct android_app* android_app, ANativeWindow* window) { +void android_app_set_window(struct android_app* android_app, ANativeWindow* window) { pthread_mutex_lock(&android_app->mutex); if (android_app->pendingWindow != NULL) { android_app_write_cmd(android_app, APP_CMD_TERM_WINDOW); @@ -324,7 +302,7 @@ static void android_app_set_window(struct android_app* android_app, ANativeWindo pthread_mutex_unlock(&android_app->mutex); } -static void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) { +void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) { pthread_mutex_lock(&android_app->mutex); android_app_write_cmd(android_app, cmd); while (android_app->activityState != cmd) { @@ -333,7 +311,7 @@ static void android_app_set_activity_state(struct android_app* android_app, int8 pthread_mutex_unlock(&android_app->mutex); } -static void android_app_free(struct android_app* android_app) { +void android_app_free(struct android_app* android_app) { pthread_mutex_lock(&android_app->mutex); android_app_write_cmd(android_app, APP_CMD_DESTROY); while (!android_app->destroyed) { @@ -346,112 +324,4 @@ static void android_app_free(struct android_app* android_app) { pthread_cond_destroy(&android_app->cond); pthread_mutex_destroy(&android_app->mutex); free(android_app); -} - -static void onDestroy(ANativeActivity* activity) { - LOGV("Destroy: %p\n", activity); - android_app_free((struct android_app*)activity->instance); -} - -static void onStart(ANativeActivity* activity) { - LOGV("Start: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_START); -} - -static void onResume(ANativeActivity* activity) { - LOGV("Resume: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_RESUME); -} - -static void* onSaveInstanceState(ANativeActivity* activity, size_t* outLen) { - struct android_app* android_app = (struct android_app*)activity->instance; - void* savedState = NULL; - - LOGV("SaveInstanceState: %p\n", activity); - pthread_mutex_lock(&android_app->mutex); - android_app->stateSaved = 0; - android_app_write_cmd(android_app, APP_CMD_SAVE_STATE); - while (!android_app->stateSaved) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - - if (android_app->savedState != NULL) { - savedState = android_app->savedState; - *outLen = android_app->savedStateSize; - android_app->savedState = NULL; - android_app->savedStateSize = 0; - } - - pthread_mutex_unlock(&android_app->mutex); - - return savedState; -} - -static void onPause(ANativeActivity* activity) { - LOGV("Pause: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_PAUSE); -} - -static void onStop(ANativeActivity* activity) { - LOGV("Stop: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_STOP); -} - -static void onConfigurationChanged(ANativeActivity* activity) { - struct android_app* android_app = (struct android_app*)activity->instance; - LOGV("ConfigurationChanged: %p\n", activity); - android_app_write_cmd(android_app, APP_CMD_CONFIG_CHANGED); -} - -static void onLowMemory(ANativeActivity* activity) { - struct android_app* android_app = (struct android_app*)activity->instance; - LOGV("LowMemory: %p\n", activity); - android_app_write_cmd(android_app, APP_CMD_LOW_MEMORY); -} - -static void onWindowFocusChanged(ANativeActivity* activity, int focused) { - LOGV("WindowFocusChanged: %p -- %d\n", activity, focused); - android_app_write_cmd((struct android_app*)activity->instance, - focused ? APP_CMD_GAINED_FOCUS : APP_CMD_LOST_FOCUS); -} - -static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) { - LOGV("NativeWindowCreated: %p -- %p\n", activity, window); - android_app_set_window((struct android_app*)activity->instance, window); -} - -static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) { - LOGV("NativeWindowDestroyed: %p -- %p\n", activity, window); - android_app_set_window((struct android_app*)activity->instance, NULL); -} - -static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) { - LOGV("InputQueueCreated: %p -- %p\n", activity, queue); - android_app_set_input((struct android_app*)activity->instance, queue); -} - -static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) { - LOGV("InputQueueDestroyed: %p -- %p\n", activity, queue); - android_app_set_input((struct android_app*)activity->instance, NULL); -} - -JNIEXPORT -void ANativeActivity_onCreate_C(ANativeActivity* activity, void* savedState, - size_t savedStateSize) { - LOGV("Creating: %p\n", activity); - activity->callbacks->onDestroy = onDestroy; - activity->callbacks->onStart = onStart; - activity->callbacks->onResume = onResume; - activity->callbacks->onSaveInstanceState = onSaveInstanceState; - activity->callbacks->onPause = onPause; - activity->callbacks->onStop = onStop; - activity->callbacks->onConfigurationChanged = onConfigurationChanged; - activity->callbacks->onLowMemory = onLowMemory; - activity->callbacks->onWindowFocusChanged = onWindowFocusChanged; - activity->callbacks->onNativeWindowCreated = onNativeWindowCreated; - activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed; - activity->callbacks->onInputQueueCreated = onInputQueueCreated; - activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed; - - activity->instance = android_app_create(activity, savedState, savedStateSize); -} +} \ No newline at end of file diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h index 2a9c6ed..4889769 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h @@ -334,6 +334,15 @@ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); void android_app_attach_input_queue_looper(struct android_app* android_app); void android_app_detach_input_queue_looper(struct android_app* android_app); + +struct android_app* android_app_create(ANativeActivity* activity, + void* savedState, size_t savedStateSize); +void android_app_write_cmd(struct android_app* android_app, int8_t cmd); +void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue); +void android_app_set_window(struct android_app* android_app, ANativeWindow* window); +void android_app_set_activity_state(struct android_app* android_app, int8_t cmd); +void android_app_free(struct android_app* android_app); + /** * Dummy function that used to be used to prevent the linker from stripping app * glue code. No longer necessary, since __attribute__((visibility("default"))) diff --git a/android-activity/src/game_activity/ffi_aarch64.rs b/android-activity/src/game_activity/ffi_aarch64.rs index d9ebe3d..2c6600f 100644 --- a/android-activity/src/game_activity/ffi_aarch64.rs +++ b/android-activity/src/game_activity/ffi_aarch64.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const WCHAR_MIN: u8 = 0u8; pub const INT8_MIN: i32 = -128; @@ -60,11 +57,7 @@ pub const WINT_MAX: u32 = 4294967295; pub const WINT_MIN: u32 = 0; pub const __BITS_PER_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; -pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; @@ -222,6 +215,10 @@ pub const SCNxFAST32: &[u8; 3usize] = b"lx\0"; pub const SCNxFAST64: &[u8; 3usize] = b"lx\0"; pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; pub const SCNxPTR: &[u8; 3usize] = b"lx\0"; +pub const __GNUC_VA_LIST: u32 = 1; +pub const true_: u32 = 1; +pub const false_: u32 = 0; +pub const __bool_true_false_are_defined: u32 = 1; pub const GAME_ACTIVITY_POINTER_INFO_AXIS_COUNT: u32 = 48; pub const GAMEACTIVITY_MAX_NUM_POINTERS_IN_MOTION_EVENT: u32 = 8; pub const GAMEACTIVITY_MAX_NUM_HISTORICAL_IN_MOTION_EVENT: u32 = 8; @@ -474,8 +471,6 @@ pub const __SIGRTMAX: u32 = 64; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; @@ -531,9 +526,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -545,8 +538,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -562,8 +554,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -627,12 +618,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -837,7 +822,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -1456,158 +1440,6 @@ pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub type va_list = [u64; 4usize]; -pub type __gnuc_va_list = [u64; 4usize]; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; @@ -1639,10 +1471,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_8 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -1743,13 +1571,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -1771,8 +1593,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_18 = ::std::os::raw::c_uint; @@ -1799,9 +1619,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -1826,9 +1643,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -2025,15 +1839,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AInputQueue { @@ -2067,9 +1872,6 @@ extern "C" { handled: ::std::os::raw::c_int, ); } -extern "C" { - pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -2144,52 +1946,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2270,8 +2031,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -2580,6 +2339,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -2598,15 +2366,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -2621,11 +2380,157 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; +pub type va_list = [u64; 4usize]; +pub type __gnuc_va_list = [u64; 4usize]; +#[repr(C)] +pub struct JavaVMAttachArgs { + pub version: jint, + pub name: *const ::std::os::raw::c_char, + pub group: jobject, +} +#[test] +fn bindgen_test_layout_JavaVMAttachArgs() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(group) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct JavaVMOption { + pub optionString: *const ::std::os::raw::c_char, + pub extraInfo: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout_JavaVMOption() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(JavaVMOption)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMOption)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(optionString) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(extraInfo) + ) + ); +} +#[repr(C)] +pub struct JavaVMInitArgs { + pub version: jint, + pub nOptions: jint, + pub options: *mut JavaVMOption, + pub ignoreUnrecognized: jboolean, +} +#[test] +fn bindgen_test_layout_JavaVMInitArgs() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(nOptions) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(options) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(ignoreUnrecognized) + ) + ); } pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_CAPTION_BAR: GameCommonInsetsType = 0; pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_DISPLAY_CUTOUT: GameCommonInsetsType = 1; @@ -5214,11 +5119,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -5336,57 +5239,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 16usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -5405,19 +5257,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -5457,19 +5296,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -6732,40 +6558,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 16usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -6811,7 +6637,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -6849,6 +6675,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -6925,45 +6790,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type fd_mask = ::std::os::raw::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -7008,7 +6834,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7017,7 +6843,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7027,7 +6853,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7387,15 +7213,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -7483,36 +7306,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/android-activity/src/game_activity/ffi_arm.rs b/android-activity/src/game_activity/ffi_arm.rs index 73b02a4..7021eb4 100644 --- a/android-activity/src/game_activity/ffi_arm.rs +++ b/android-activity/src/game_activity/ffi_arm.rs @@ -101,13 +101,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const WCHAR_MIN: u8 = 0u8; pub const INT8_MIN: i32 = -128; @@ -146,11 +143,7 @@ pub const PTRDIFF_MAX: u32 = 2147483647; pub const SIZE_MAX: u32 = 4294967295; pub const __BITS_PER_LONG: u32 = 32; pub const __FD_SETSIZE: u32 = 1024; -pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; pub const PRId8: &[u8; 2usize] = b"d\0"; pub const PRId16: &[u8; 2usize] = b"d\0"; @@ -273,6 +266,10 @@ pub const SCNxLEAST64: &[u8; 4usize] = b"llx\0"; pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; pub const SCNxFAST64: &[u8; 4usize] = b"llx\0"; pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; +pub const __GNUC_VA_LIST: u32 = 1; +pub const true_: u32 = 1; +pub const false_: u32 = 0; +pub const __bool_true_false_are_defined: u32 = 1; pub const GAME_ACTIVITY_POINTER_INFO_AXIS_COUNT: u32 = 48; pub const GAMEACTIVITY_MAX_NUM_POINTERS_IN_MOTION_EVENT: u32 = 8; pub const GAMEACTIVITY_MAX_NUM_HISTORICAL_IN_MOTION_EVENT: u32 = 8; @@ -498,21 +495,19 @@ pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; pub const SIGSWI: u32 = 32; -pub const SA_THIRTYTWO: u32 = 33554432; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_THIRTYTWO: u32 = 33554432; +pub const SA_RESTORER: u32 = 67108864; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -562,9 +557,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -576,8 +569,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -593,8 +585,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -659,12 +650,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -867,7 +852,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -1475,158 +1459,6 @@ pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub type va_list = u32; -pub type __gnuc_va_list = u32; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; @@ -1658,10 +1490,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_8 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -1762,13 +1590,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -1790,8 +1612,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_18 = ::std::os::raw::c_uint; @@ -1818,9 +1638,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -1845,9 +1662,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -2044,15 +1858,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AInputQueue { @@ -2086,9 +1891,6 @@ extern "C" { handled: ::std::os::raw::c_int, ); } -extern "C" { - pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -2163,52 +1965,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2289,8 +2050,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -2599,6 +2358,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -2617,15 +2385,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -2640,11 +2399,157 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; +pub type va_list = u32; +pub type __gnuc_va_list = u32; +#[repr(C)] +pub struct JavaVMAttachArgs { + pub version: jint, + pub name: *const ::std::os::raw::c_char, + pub group: jobject, +} +#[test] +fn bindgen_test_layout_JavaVMAttachArgs() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(group) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct JavaVMOption { + pub optionString: *const ::std::os::raw::c_char, + pub extraInfo: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout_JavaVMOption() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(JavaVMOption)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMOption)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(optionString) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(extraInfo) + ) + ); +} +#[repr(C)] +pub struct JavaVMInitArgs { + pub version: jint, + pub nOptions: jint, + pub options: *mut JavaVMOption, + pub ignoreUnrecognized: jboolean, +} +#[test] +fn bindgen_test_layout_JavaVMInitArgs() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(nOptions) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(options) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(ignoreUnrecognized) + ) + ); } pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_CAPTION_BAR: GameCommonInsetsType = 0; pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_DISPLAY_CUTOUT: GameCommonInsetsType = 1; @@ -5171,11 +5076,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -5293,57 +5196,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -5362,19 +5214,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -5414,19 +5253,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -7201,40 +7027,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 8usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -7280,7 +7106,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -7318,6 +7144,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -7394,45 +7259,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type fd_mask = ::std::os::raw::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -7477,7 +7303,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7486,7 +7312,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7496,7 +7322,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -7856,15 +7682,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -7952,36 +7775,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/android-activity/src/game_activity/ffi_i686.rs b/android-activity/src/game_activity/ffi_i686.rs index 4fc5a56..31fedac 100644 --- a/android-activity/src/game_activity/ffi_i686.rs +++ b/android-activity/src/game_activity/ffi_i686.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const INT8_MIN: i32 = -128; pub const INT8_MAX: u32 = 127; @@ -65,11 +62,7 @@ pub const PTRDIFF_MAX: u32 = 2147483647; pub const SIZE_MAX: u32 = 4294967295; pub const __BITS_PER_LONG: u32 = 32; pub const __FD_SETSIZE: u32 = 1024; -pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; pub const PRId8: &[u8; 2usize] = b"d\0"; pub const PRId16: &[u8; 2usize] = b"d\0"; @@ -192,6 +185,10 @@ pub const SCNxLEAST64: &[u8; 4usize] = b"llx\0"; pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; pub const SCNxFAST64: &[u8; 4usize] = b"llx\0"; pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; +pub const __GNUC_VA_LIST: u32 = 1; +pub const true_: u32 = 1; +pub const false_: u32 = 0; +pub const __bool_true_false_are_defined: u32 = 1; pub const GAME_ACTIVITY_POINTER_INFO_AXIS_COUNT: u32 = 48; pub const GAMEACTIVITY_MAX_NUM_POINTERS_IN_MOTION_EVENT: u32 = 8; pub const GAMEACTIVITY_MAX_NUM_HISTORICAL_IN_MOTION_EVENT: u32 = 8; @@ -438,20 +435,18 @@ pub const SIGPWR: u32 = 30; pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -501,9 +496,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -515,8 +508,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -532,8 +524,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -579,12 +570,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -788,7 +773,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -1396,158 +1380,6 @@ pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub type va_list = __builtin_va_list; -pub type __gnuc_va_list = __builtin_va_list; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; @@ -1579,10 +1411,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_8 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -1683,13 +1511,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -1711,8 +1533,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_18 = ::std::os::raw::c_uint; @@ -1739,9 +1559,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -1766,9 +1583,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -1965,15 +1779,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AInputQueue { @@ -2007,9 +1812,6 @@ extern "C" { handled: ::std::os::raw::c_int, ); } -extern "C" { - pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -2084,52 +1886,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2210,8 +1971,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -2520,6 +2279,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -2538,15 +2306,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -2561,11 +2320,157 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +#[repr(C)] +pub struct JavaVMAttachArgs { + pub version: jint, + pub name: *const ::std::os::raw::c_char, + pub group: jobject, +} +#[test] +fn bindgen_test_layout_JavaVMAttachArgs() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(group) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct JavaVMOption { + pub optionString: *const ::std::os::raw::c_char, + pub extraInfo: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout_JavaVMOption() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(JavaVMOption)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMOption)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(optionString) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(extraInfo) + ) + ); +} +#[repr(C)] +pub struct JavaVMInitArgs { + pub version: jint, + pub nOptions: jint, + pub options: *mut JavaVMOption, + pub ignoreUnrecognized: jboolean, +} +#[test] +fn bindgen_test_layout_JavaVMInitArgs() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(nOptions) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(options) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(ignoreUnrecognized) + ) + ); } pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_CAPTION_BAR: GameCommonInsetsType = 0; pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_DISPLAY_CUTOUT: GameCommonInsetsType = 1; @@ -6205,40 +6110,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 8usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -6284,7 +6189,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timespec { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_nsec: ::std::os::raw::c_long, } #[test] @@ -6323,7 +6228,7 @@ fn bindgen_test_layout_timespec() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -6361,6 +6266,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -6437,45 +6381,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type sigset_t = ::std::os::raw::c_ulong; pub type __signalfn_t = ::std::option::Option; pub type __sighandler_t = __signalfn_t; @@ -6939,11 +6844,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -7061,57 +6964,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -7130,19 +6982,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -7182,19 +7021,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -9221,7 +9047,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9230,7 +9056,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9240,7 +9066,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9601,15 +9427,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -9697,36 +9520,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/android-activity/src/game_activity/ffi_x86_64.rs b/android-activity/src/game_activity/ffi_x86_64.rs index e5a2b88..2bedc9b 100644 --- a/android-activity/src/game_activity/ffi_x86_64.rs +++ b/android-activity/src/game_activity/ffi_x86_64.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const INT8_MIN: i32 = -128; pub const INT8_MAX: u32 = 127; @@ -59,11 +56,7 @@ pub const WINT_MAX: u32 = 4294967295; pub const WINT_MIN: u32 = 0; pub const __BITS_PER_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; -pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; @@ -221,6 +214,10 @@ pub const SCNxFAST32: &[u8; 3usize] = b"lx\0"; pub const SCNxFAST64: &[u8; 3usize] = b"lx\0"; pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; pub const SCNxPTR: &[u8; 3usize] = b"lx\0"; +pub const __GNUC_VA_LIST: u32 = 1; +pub const true_: u32 = 1; +pub const false_: u32 = 0; +pub const __bool_true_false_are_defined: u32 = 1; pub const GAME_ACTIVITY_POINTER_INFO_AXIS_COUNT: u32 = 48; pub const GAMEACTIVITY_MAX_NUM_POINTERS_IN_MOTION_EVENT: u32 = 8; pub const GAMEACTIVITY_MAX_NUM_HISTORICAL_IN_MOTION_EVENT: u32 = 8; @@ -467,20 +464,18 @@ pub const SIGPWR: u32 = 30; pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -530,9 +525,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -544,8 +537,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -561,8 +553,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -607,12 +598,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -817,7 +802,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -1436,158 +1420,6 @@ pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub type va_list = __builtin_va_list; -pub type __gnuc_va_list = __builtin_va_list; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; @@ -1619,10 +1451,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_8 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -1723,13 +1551,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -1751,8 +1573,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_18 = ::std::os::raw::c_uint; @@ -1779,9 +1599,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -1806,9 +1623,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -2005,15 +1819,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct AInputQueue { @@ -2047,9 +1852,6 @@ extern "C" { handled: ::std::os::raw::c_int, ); } -extern "C" { - pub fn AInputQueue_fromJava(env: *mut JNIEnv, inputQueue: jobject) -> *mut AInputQueue; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -2124,52 +1926,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2250,8 +2011,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -2560,6 +2319,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -2578,15 +2346,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -2601,11 +2360,157 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; +pub type va_list = __builtin_va_list; +pub type __gnuc_va_list = __builtin_va_list; +#[repr(C)] +pub struct JavaVMAttachArgs { + pub version: jint, + pub name: *const ::std::os::raw::c_char, + pub group: jobject, +} +#[test] +fn bindgen_test_layout_JavaVMAttachArgs() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMAttachArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(JavaVMAttachArgs), + "::", + stringify!(group) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct JavaVMOption { + pub optionString: *const ::std::os::raw::c_char, + pub extraInfo: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout_JavaVMOption() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(JavaVMOption)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMOption)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(optionString) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMOption), + "::", + stringify!(extraInfo) + ) + ); +} +#[repr(C)] +pub struct JavaVMInitArgs { + pub version: jint, + pub nOptions: jint, + pub options: *mut JavaVMOption, + pub ignoreUnrecognized: jboolean, +} +#[test] +fn bindgen_test_layout_JavaVMInitArgs() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(JavaVMInitArgs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(nOptions) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(options) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(JavaVMInitArgs), + "::", + stringify!(ignoreUnrecognized) + ) + ); } pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_CAPTION_BAR: GameCommonInsetsType = 0; pub const GameCommonInsetsType_GAMECOMMON_INSETS_TYPE_DISPLAY_CUTOUT: GameCommonInsetsType = 1; @@ -6274,40 +6179,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 16usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -6353,7 +6258,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timespec { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_nsec: ::std::os::raw::c_long, } #[test] @@ -6392,7 +6297,7 @@ fn bindgen_test_layout_timespec() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -6430,6 +6335,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -6506,45 +6450,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type sigset_t = ::std::os::raw::c_ulong; pub type __signalfn_t = ::std::option::Option; pub type __sighandler_t = __signalfn_t; @@ -6954,11 +6859,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -7076,57 +6979,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 16usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -7145,19 +6997,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -7197,19 +7036,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -9251,7 +9077,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9260,7 +9086,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9270,7 +9096,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -9630,15 +9456,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -9726,36 +9549,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/android-activity/src/native_activity/ffi.rs b/android-activity/src/native_activity/ffi.rs index be3e68e..fde83f0 100644 --- a/android-activity/src/native_activity/ffi.rs +++ b/android-activity/src/native_activity/ffi.rs @@ -16,6 +16,7 @@ use jni_sys::*; use ndk_sys::AAssetManager; use ndk_sys::ANativeWindow; use ndk_sys::{AConfiguration, AInputQueue, ALooper}; +use libc::{pthread_t, pthread_mutex_t, pthread_cond_t}; #[cfg(all( any(target_os = "android", feature = "test"), diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs index 4784055..3c9ae42 100644 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ b/android-activity/src/native_activity/ffi_aarch64.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const POLLIN: u32 = 1; pub const POLLPRI: u32 = 2; @@ -309,8 +306,6 @@ pub const __SIGRTMAX: u32 = 64; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; @@ -366,9 +361,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -380,8 +373,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -397,8 +389,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -462,12 +453,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -501,9 +486,6 @@ pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; pub const PTHREAD_SCOPE_PROCESS: u32 = 1; pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; @@ -880,7 +862,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -898,247 +879,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, - pub __reserved: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i64; 4usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 12usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 14usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: i64, -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1964,11 +1704,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2086,57 +1824,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 16usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -2155,19 +1842,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -2207,19 +1881,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -3354,26 +3015,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -3482,40 +3123,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 16usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -3561,7 +3202,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -3599,6 +3240,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -3675,45 +3355,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type fd_mask = ::std::os::raw::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3758,7 +3399,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -3767,7 +3408,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -3777,7 +3418,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -4137,15 +3778,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -4233,36 +3871,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4330,506 +3938,6 @@ pub type _bindgen_ty_1 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -5476,10 +4584,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_11 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -5580,13 +4684,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -5608,8 +4706,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_21 = ::std::os::raw::c_uint; @@ -5636,9 +4732,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -5663,9 +4756,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -5862,15 +4952,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -5945,52 +5026,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -6071,8 +5111,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -6381,6 +5419,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -6399,15 +5446,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -6422,12 +5460,6 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; -} #[repr(C)] pub struct ANativeActivity { pub callbacks: *mut ANativeActivityCallbacks, @@ -6955,7 +5987,6 @@ fn bindgen_test_layout_android_poll_source() { #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { pub userData: *mut ::std::os::raw::c_void, pub onAppCmd: ::std::option::Option, @@ -7361,6 +6392,28 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } +extern "C" { + pub fn android_app_create( + activity: *mut ANativeActivity, + savedState: *mut ::std::os::raw::c_void, + savedStateSize: size_t, + ) -> *mut android_app; +} +extern "C" { + pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); +} +extern "C" { + pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); +} +extern "C" { + pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_free(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs index e7a14eb..a80f853 100644 --- a/android-activity/src/native_activity/ffi_arm.rs +++ b/android-activity/src/native_activity/ffi_arm.rs @@ -101,13 +101,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const POLLIN: u32 = 1; pub const POLLPRI: u32 = 2; @@ -368,21 +365,19 @@ pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; pub const SIGSWI: u32 = 32; -pub const SA_THIRTYTWO: u32 = 33554432; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_THIRTYTWO: u32 = 33554432; +pub const SA_RESTORER: u32 = 67108864; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -432,9 +427,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -446,8 +439,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -463,8 +455,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -529,12 +520,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -568,9 +553,6 @@ pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; pub const PTHREAD_SCOPE_PROCESS: u32 = 1; pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; pub const PRId8: &[u8; 2usize] = b"d\0"; pub const PRId16: &[u8; 2usize] = b"d\0"; @@ -910,7 +892,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -928,236 +909,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i32; 8usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: [i32; 2usize], -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1921,11 +1672,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2043,57 +1792,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -2112,19 +1810,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -2164,19 +1849,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -3823,26 +3495,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -3951,40 +3603,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 8usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -4030,7 +3682,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -4068,6 +3720,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -4144,45 +3835,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type fd_mask = ::std::os::raw::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4227,7 +3879,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -4236,7 +3888,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -4246,7 +3898,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -4606,15 +4258,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -4702,36 +4351,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4799,506 +4418,6 @@ pub type _bindgen_ty_2 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -5945,10 +5064,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_12 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -6049,13 +5164,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -6077,8 +5186,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_22 = ::std::os::raw::c_uint; @@ -6105,9 +5212,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -6132,9 +5236,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -6331,15 +5432,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -6414,52 +5506,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -6540,8 +5591,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -6850,6 +5899,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -6868,15 +5926,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -6891,12 +5940,6 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; -} #[repr(C)] pub struct ANativeActivity { pub callbacks: *mut ANativeActivityCallbacks, @@ -7424,7 +6467,6 @@ fn bindgen_test_layout_android_poll_source() { #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { pub userData: *mut ::std::os::raw::c_void, pub onAppCmd: ::std::option::Option, @@ -7830,6 +6872,28 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } +extern "C" { + pub fn android_app_create( + activity: *mut ANativeActivity, + savedState: *mut ::std::os::raw::c_void, + savedStateSize: size_t, + ) -> *mut android_app; +} +extern "C" { + pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); +} +extern "C" { + pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); +} +extern "C" { + pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_free(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs index c9593f7..febea7d 100644 --- a/android-activity/src/native_activity/ffi_i686.rs +++ b/android-activity/src/native_activity/ffi_i686.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const POLLIN: u32 = 1; pub const POLLPRI: u32 = 2; @@ -308,20 +305,18 @@ pub const SIGPWR: u32 = 30; pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -371,9 +366,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -385,8 +378,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -402,8 +394,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -449,12 +440,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -488,9 +473,6 @@ pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; pub const PTHREAD_SCOPE_PROCESS: u32 = 1; pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; pub const PRId8: &[u8; 2usize] = b"d\0"; pub const PRId16: &[u8; 2usize] = b"d\0"; @@ -831,7 +813,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -849,236 +830,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i32; 8usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: [i32; 2usize], -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -2955,40 +2706,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 8usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 4usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -3034,7 +2785,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timespec { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_nsec: ::std::os::raw::c_long, } #[test] @@ -3073,7 +2824,7 @@ fn bindgen_test_layout_timespec() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -3111,6 +2862,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -3187,45 +2977,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type sigset_t = ::std::os::raw::c_ulong; pub type __signalfn_t = ::std::option::Option; pub type __sighandler_t = __signalfn_t; @@ -3689,11 +3440,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3811,57 +3560,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -3880,19 +3578,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -3932,19 +3617,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -5879,26 +5551,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -5971,7 +5623,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -5980,7 +5632,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -5990,7 +5642,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -6351,15 +6003,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -6447,36 +6096,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -6544,506 +6163,6 @@ pub type _bindgen_ty_2 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -7690,10 +6809,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_12 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -7794,13 +6909,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -7822,8 +6931,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_22 = ::std::os::raw::c_uint; @@ -7850,9 +6957,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -7877,9 +6981,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -8076,15 +7177,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -8159,52 +7251,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -8285,8 +7336,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -8595,6 +7644,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -8613,15 +7671,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -8636,12 +7685,6 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; -} #[repr(C)] pub struct ANativeActivity { pub callbacks: *mut ANativeActivityCallbacks, @@ -9169,7 +8212,6 @@ fn bindgen_test_layout_android_poll_source() { #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { pub userData: *mut ::std::os::raw::c_void, pub onAppCmd: ::std::option::Option, @@ -9575,6 +8617,28 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } +extern "C" { + pub fn android_app_create( + activity: *mut ANativeActivity, + savedState: *mut ::std::os::raw::c_void, + savedStateSize: size_t, + ) -> *mut android_app; +} +extern "C" { + pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); +} +extern "C" { + pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); +} +extern "C" { + pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_free(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs index 4919340..8ed9c94 100644 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ b/android-activity/src/native_activity/ffi_x86_64.rs @@ -21,13 +21,10 @@ pub const __ANDROID_API_O_MR1__: u32 = 27; pub const __ANDROID_API_P__: u32 = 28; pub const __ANDROID_API_Q__: u32 = 29; pub const __ANDROID_API_R__: u32 = 30; -pub const __ANDROID_API_S__: u32 = 31; -pub const __ANDROID_API_T__: u32 = 33; -pub const __ANDROID_NDK__: u32 = 1; -pub const __NDK_MAJOR__: u32 = 25; -pub const __NDK_MINOR__: u32 = 0; +pub const __NDK_MAJOR__: u32 = 21; +pub const __NDK_MINOR__: u32 = 1; pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 8775105; +pub const __NDK_BUILD__: u32 = 6352462; pub const __NDK_CANARY__: u32 = 0; pub const POLLIN: u32 = 1; pub const POLLPRI: u32 = 2; @@ -302,20 +299,18 @@ pub const SIGPWR: u32 = 30; pub const SIGSYS: u32 = 31; pub const SIGUNUSED: u32 = 31; pub const __SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; pub const SA_NOCLDSTOP: u32 = 1; pub const SA_NOCLDWAIT: u32 = 2; pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; pub const SA_ONSTACK: u32 = 134217728; pub const SA_RESTART: u32 = 268435456; pub const SA_NODEFER: u32 = 1073741824; pub const SA_RESETHAND: u32 = 2147483648; pub const SA_NOMASK: u32 = 1073741824; pub const SA_ONESHOT: u32 = 2147483648; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; pub const SIG_BLOCK: u32 = 0; pub const SIG_UNBLOCK: u32 = 1; pub const SIG_SETMASK: u32 = 2; @@ -365,9 +360,7 @@ pub const SEGV_PKUERR: u32 = 4; pub const SEGV_ACCADI: u32 = 5; pub const SEGV_ADIDERR: u32 = 6; pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; +pub const NSIGSEGV: u32 = 7; pub const BUS_ADRALN: u32 = 1; pub const BUS_ADRERR: u32 = 2; pub const BUS_OBJERR: u32 = 3; @@ -379,8 +372,7 @@ pub const TRAP_TRACE: u32 = 2; pub const TRAP_BRANCH: u32 = 3; pub const TRAP_HWBKPT: u32 = 4; pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; +pub const NSIGTRAP: u32 = 5; pub const CLD_EXITED: u32 = 1; pub const CLD_KILLED: u32 = 2; pub const CLD_DUMPED: u32 = 3; @@ -396,8 +388,7 @@ pub const POLL_PRI: u32 = 5; pub const POLL_HUP: u32 = 6; pub const NSIGPOLL: u32 = 6; pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; +pub const NSIGSYS: u32 = 1; pub const EMT_TAGOVF: u32 = 1; pub const NSIGEMT: u32 = 1; pub const SIGEV_SIGNAL: u32 = 0; @@ -442,12 +433,6 @@ pub const CLONE_NEWUSER: u32 = 268435456; pub const CLONE_NEWPID: u32 = 536870912; pub const CLONE_NEWNET: u32 = 1073741824; pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; pub const SCHED_NORMAL: u32 = 0; pub const SCHED_FIFO: u32 = 1; pub const SCHED_RR: u32 = 2; @@ -481,9 +466,6 @@ pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; pub const PTHREAD_SCOPE_PROCESS: u32 = 1; pub const __GNUC_VA_LIST: u32 = 1; pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const __bool_true_false_are_defined: u32 = 1; pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; @@ -860,7 +842,6 @@ fn bindgen_test_layout___kernel_fsid_t() { } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; @@ -878,247 +859,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, - pub __reserved: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i64; 4usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 12usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 14usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: i64, -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -3024,40 +2764,40 @@ fn bindgen_test_layout___kernel_itimerspec() { } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { - pub tv_sec: __kernel_old_time_t, - pub tv_nsec: ::std::os::raw::c_long, +pub struct __kernel_old_timeval { + pub tv_sec: __kernel_long_t, + pub tv_usec: __kernel_long_t, } #[test] -fn bindgen_test_layout___kernel_old_timespec() { +fn bindgen_test_layout___kernel_old_timeval() { assert_eq!( - ::std::mem::size_of::<__kernel_old_timespec>(), + ::std::mem::size_of::<__kernel_old_timeval>(), 16usize, - concat!("Size of: ", stringify!(__kernel_old_timespec)) + concat!("Size of: ", stringify!(__kernel_old_timeval)) ); assert_eq!( - ::std::mem::align_of::<__kernel_old_timespec>(), + ::std::mem::align_of::<__kernel_old_timeval>(), 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timespec)) + concat!("Alignment of ", stringify!(__kernel_old_timeval)) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_sec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", stringify!(tv_sec) ) ); assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timespec>())).tv_nsec as *const _ as usize }, + unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, 8usize, concat!( "Offset of field: ", - stringify!(__kernel_old_timespec), + stringify!(__kernel_old_timeval), "::", - stringify!(tv_nsec) + stringify!(tv_usec) ) ); } @@ -3103,7 +2843,7 @@ fn bindgen_test_layout___kernel_sock_timeval() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timespec { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_nsec: ::std::os::raw::c_long, } #[test] @@ -3142,7 +2882,7 @@ fn bindgen_test_layout_timespec() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct timeval { - pub tv_sec: __kernel_old_time_t, + pub tv_sec: __kernel_time_t, pub tv_usec: __kernel_suseconds_t, } #[test] @@ -3180,6 +2920,45 @@ fn bindgen_test_layout_timeval() { } #[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::(), + 8usize, + concat!("Size of: ", stringify!(timezone)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(timezone)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_minuteswest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(timezone), + "::", + stringify!(tz_dsttime) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct itimerspec { pub it_interval: timespec, pub it_value: timespec, @@ -3256,45 +3035,6 @@ fn bindgen_test_layout_itimerval() { ) ); } -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} pub type sigset_t = ::std::os::raw::c_ulong; pub type __signalfn_t = ::std::option::Option; pub type __sighandler_t = __signalfn_t; @@ -3704,11 +3444,9 @@ pub struct __sifields__bindgen_ty_5 { #[repr(C)] #[derive(Copy, Clone)] pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, pub _addr_lsb: ::std::os::raw::c_short, pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, - pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3826,57 +3564,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { ) ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { - pub _data: ::std::os::raw::c_ulong, - pub _type: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 16usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._data - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3>()))._type - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_type) - ) - ); -} #[test] fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { assert_eq!( @@ -3895,19 +3582,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._trapno as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); assert_eq!( unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ @@ -3947,19 +3621,6 @@ fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { stringify!(_addr_pkey) ) ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._perf as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_perf) - ) - ); } #[test] fn bindgen_test_layout___sifields__bindgen_ty_5() { @@ -5909,26 +5570,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -6001,7 +5642,7 @@ extern "C" { } extern "C" { pub fn select( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -6010,7 +5651,7 @@ extern "C" { } extern "C" { pub fn pselect( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -6020,7 +5661,7 @@ extern "C" { } extern "C" { pub fn pselect64( - __max_fd_plus_one: ::std::os::raw::c_int, + __fd_count: ::std::os::raw::c_int, __read_fds: *mut fd_set, __write_fds: *mut fd_set, __exception_fds: *mut fd_set, @@ -6380,15 +6021,12 @@ pub struct clone_args { pub stack: __u64, pub stack_size: __u64, pub tls: __u64, - pub set_tid: __u64, - pub set_tid_size: __u64, - pub cgroup: __u64, } #[test] fn bindgen_test_layout_clone_args() { assert_eq!( ::std::mem::size_of::(), - 88usize, + 64usize, concat!("Size of: ", stringify!(clone_args)) ); assert_eq!( @@ -6476,36 +6114,6 @@ fn bindgen_test_layout_clone_args() { stringify!(tls) ) ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).set_tid_size as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(set_tid_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cgroup as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(cgroup) - ) - ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -6573,506 +6181,6 @@ pub type _bindgen_ty_2 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -7719,10 +6827,6 @@ pub struct AInputEvent { } pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub const AINPUT_EVENT_TYPE_FOCUS: ::std::os::raw::c_uint = 3; -pub const AINPUT_EVENT_TYPE_CAPTURE: ::std::os::raw::c_uint = 4; -pub const AINPUT_EVENT_TYPE_DRAG: ::std::os::raw::c_uint = 5; -pub const AINPUT_EVENT_TYPE_TOUCH_MODE: ::std::os::raw::c_uint = 6; pub type _bindgen_ty_12 = ::std::os::raw::c_uint; pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; @@ -7823,13 +6927,7 @@ pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_TOOL_TYPE_PALM: ::std::os::raw::c_uint = 5; pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_NONE: AMotionClassification = 0; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_AMBIGUOUS_GESTURE: - AMotionClassification = 1; -pub const AMotionClassification_AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS: AMotionClassification = 2; -pub type AMotionClassification = u32; pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; @@ -7851,8 +6949,6 @@ pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_HDMI: ::std::os::raw::c_uint = 33554433; -pub const AINPUT_SOURCE_SENSOR: ::std::os::raw::c_uint = 67108864; pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; pub type _bindgen_ty_22 = ::std::os::raw::c_uint; @@ -7879,9 +6975,6 @@ extern "C" { extern "C" { pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; } -extern "C" { - pub fn AInputEvent_release(event: *const AInputEvent); -} extern "C" { pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; } @@ -7906,9 +6999,6 @@ extern "C" { extern "C" { pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; } -extern "C" { - pub fn AKeyEvent_fromJava(env: *mut JNIEnv, keyEvent: jobject) -> *const AInputEvent; -} extern "C" { pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; } @@ -8105,15 +7195,6 @@ extern "C" { history_index: size_t, ) -> f32; } -extern "C" { - pub fn AMotionEvent_getActionButton(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getClassification(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_fromJava(env: *mut JNIEnv, motionEvent: jobject) -> *const AInputEvent; -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct imaxdiv_t { @@ -8188,52 +7269,11 @@ extern "C" { ) -> uintmax_t; } pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_STANDARD_MASK: ADataSpace = 4128768; -pub const ADataSpace_STANDARD_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_STANDARD_BT709: ADataSpace = 65536; -pub const ADataSpace_STANDARD_BT601_625: ADataSpace = 131072; -pub const ADataSpace_STANDARD_BT601_625_UNADJUSTED: ADataSpace = 196608; -pub const ADataSpace_STANDARD_BT601_525: ADataSpace = 262144; -pub const ADataSpace_STANDARD_BT601_525_UNADJUSTED: ADataSpace = 327680; -pub const ADataSpace_STANDARD_BT2020: ADataSpace = 393216; -pub const ADataSpace_STANDARD_BT2020_CONSTANT_LUMINANCE: ADataSpace = 458752; -pub const ADataSpace_STANDARD_BT470M: ADataSpace = 524288; -pub const ADataSpace_STANDARD_FILM: ADataSpace = 589824; -pub const ADataSpace_STANDARD_DCI_P3: ADataSpace = 655360; -pub const ADataSpace_STANDARD_ADOBE_RGB: ADataSpace = 720896; -pub const ADataSpace_TRANSFER_MASK: ADataSpace = 130023424; -pub const ADataSpace_TRANSFER_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_TRANSFER_LINEAR: ADataSpace = 4194304; -pub const ADataSpace_TRANSFER_SRGB: ADataSpace = 8388608; -pub const ADataSpace_TRANSFER_SMPTE_170M: ADataSpace = 12582912; -pub const ADataSpace_TRANSFER_GAMMA2_2: ADataSpace = 16777216; -pub const ADataSpace_TRANSFER_GAMMA2_6: ADataSpace = 20971520; -pub const ADataSpace_TRANSFER_GAMMA2_8: ADataSpace = 25165824; -pub const ADataSpace_TRANSFER_ST2084: ADataSpace = 29360128; -pub const ADataSpace_TRANSFER_HLG: ADataSpace = 33554432; -pub const ADataSpace_RANGE_MASK: ADataSpace = 939524096; -pub const ADataSpace_RANGE_UNSPECIFIED: ADataSpace = 0; -pub const ADataSpace_RANGE_FULL: ADataSpace = 134217728; -pub const ADataSpace_RANGE_LIMITED: ADataSpace = 268435456; -pub const ADataSpace_RANGE_EXTENDED: ADataSpace = 402653184; pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub const ADataSpace_ADATASPACE_BT2020_ITU_PQ: ADataSpace = 298188800; -pub const ADataSpace_ADATASPACE_ADOBE_RGB: ADataSpace = 151715840; -pub const ADataSpace_ADATASPACE_JFIF: ADataSpace = 146931712; -pub const ADataSpace_ADATASPACE_BT601_625: ADataSpace = 281149440; -pub const ADataSpace_ADATASPACE_BT601_525: ADataSpace = 281280512; -pub const ADataSpace_ADATASPACE_BT2020: ADataSpace = 147193856; -pub const ADataSpace_ADATASPACE_BT709: ADataSpace = 281083904; -pub const ADataSpace_ADATASPACE_DCI_P3: ADataSpace = 155844608; -pub const ADataSpace_ADATASPACE_SRGB_LINEAR: ADataSpace = 138477568; -pub const ADataSpace_ADATASPACE_BT2020_HLG: ADataSpace = 168165376; -pub const ADataSpace_ADATASPACE_BT2020_ITU_HLG: ADataSpace = 302383104; -pub const ADataSpace_DEPTH: ADataSpace = 4096; -pub const ADataSpace_DYNAMIC_DEPTH: ADataSpace = 4098; pub type ADataSpace = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -8314,8 +7354,6 @@ pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHard 52; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_YCbCr_P010: AHardwareBuffer_Format = 54; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8_UNORM: AHardwareBuffer_Format = 56; pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: AHardwareBuffer_UsageFlags = 0; @@ -8624,6 +7662,15 @@ extern "C" { outVirtualAddress: *mut *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int; } +extern "C" { + pub fn AHardwareBuffer_lockPlanes( + buffer: *mut AHardwareBuffer, + usage: u64, + fence: i32, + rect: *const ARect, + outPlanes: *mut AHardwareBuffer_Planes, + ) -> ::std::os::raw::c_int; +} extern "C" { pub fn AHardwareBuffer_unlock( buffer: *mut AHardwareBuffer, @@ -8642,15 +7689,6 @@ extern "C" { outBuffer: *mut *mut AHardwareBuffer, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; } @@ -8665,12 +7703,6 @@ extern "C" { outBytesPerStride: *mut i32, ) -> ::std::os::raw::c_int; } -extern "C" { - pub fn AHardwareBuffer_getId( - buffer: *const AHardwareBuffer, - outId: *mut u64, - ) -> ::std::os::raw::c_int; -} #[repr(C)] pub struct ANativeActivity { pub callbacks: *mut ANativeActivityCallbacks, @@ -9198,7 +8230,6 @@ fn bindgen_test_layout_android_poll_source() { #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { pub userData: *mut ::std::os::raw::c_void, pub onAppCmd: ::std::option::Option, @@ -9604,6 +8635,28 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } +extern "C" { + pub fn android_app_create( + activity: *mut ANativeActivity, + savedState: *mut ::std::os::raw::c_void, + savedStateSize: size_t, + ) -> *mut android_app; +} +extern "C" { + pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); +} +extern "C" { + pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); +} +extern "C" { + pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); +} +extern "C" { + pub fn android_app_free(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 4456001..28d8bde 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -479,26 +479,127 @@ impl AndroidAppInner { } } -// Rust doesn't give us a clean way to directly export symbols from C/C++ -// so we rename the C/C++ symbols and re-export this entrypoint from -// Rust... -// -// https://github.com/rust-lang/rfcs/issues/2771 -extern "C" { - pub fn ANativeActivity_onCreate_C( - activity: *mut std::os::raw::c_void, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: usize, - ); +unsafe extern "C" fn on_destroy(activity: *mut ffi::ANativeActivity) { + log::debug!("Destroy: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_free(android_app); +} + +unsafe extern "C" fn on_start(activity: *mut ffi::ANativeActivity) { + log::debug!("Start: {:p}\n", activity); + + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_START as i8); +} + +unsafe extern "C" fn on_resume(activity: *mut ffi::ANativeActivity) { + log::debug!("Resume: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); +} + +unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, out_len: *mut ffi::size_t) -> *mut libc::c_void { + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let mut saved_state: *mut libc::c_void = ptr::null_mut(); + + log::debug!("SaveInstanceState: {:p}\n", activity); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).stateSaved = 0; + ffi::android_app_write_cmd(android_app, ffi::APP_CMD_SAVE_STATE as i8); + while (*android_app).stateSaved == 0 { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + + if (*android_app).savedState != ptr::null_mut() { + saved_state = (*android_app).savedState; + *out_len = (*android_app).savedStateSize; + (*android_app).savedState = ptr::null_mut(); + (*android_app).savedStateSize = 0; + } + + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + + return saved_state; +} + +unsafe extern "C" fn on_pause(activity: *mut ffi::ANativeActivity) { + log::debug!("Pause: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_PAUSE as i8); +} + +unsafe extern "C" fn on_stop(activity: *mut ffi::ANativeActivity) { + log::debug!("Stop: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_STOP as i8); +} + +unsafe extern "C" fn on_configuration_changed(activity: *mut ffi::ANativeActivity) { + log::debug!("ConfigurationChanged: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_write_cmd(android_app, ffi::APP_CMD_CONFIG_CHANGED as i8); +} + +unsafe extern "C" fn on_low_memory(activity: *mut ffi::ANativeActivity) { + log::debug!("LowMemory: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_write_cmd(android_app, ffi::APP_CMD_LOW_MEMORY as i8); +} + +unsafe extern "C" fn on_window_focus_changed(activity: *mut ffi::ANativeActivity, focused: libc::c_int) { + log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_write_cmd(android_app, + if focused != 0 { ffi::APP_CMD_GAINED_FOCUS as i8 } else { ffi::APP_CMD_LOST_FOCUS as i8}); +} + +unsafe extern "C" fn on_native_window_created(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { + log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_window(android_app, window); +} + +unsafe extern "C" fn on_native_window_destroyed(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { + log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_window(android_app, ptr::null_mut()); +} + +unsafe extern "C" fn on_input_queue_created(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { + log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_input(android_app, queue); +} + +unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { + log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); + ffi::android_app_set_input(android_app, ptr::null_mut()); } #[no_mangle] unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut std::os::raw::c_void, + activity: *mut ffi::ANativeActivity, saved_state: *mut std::os::raw::c_void, saved_state_size: usize, ) { - ANativeActivity_onCreate_C(activity, saved_state, saved_state_size); + log::debug!("Creating: {:p}", activity); + + (*(*activity).callbacks).onDestroy = Some(on_destroy); + (*(*activity).callbacks).onStart = Some(on_start); + (*(*activity).callbacks).onResume = Some(on_resume); + (*(*activity).callbacks).onSaveInstanceState = Some(on_save_instance_state); + (*(*activity).callbacks).onPause = Some(on_pause); + (*(*activity).callbacks).onStop = Some(on_stop); + (*(*activity).callbacks).onConfigurationChanged = Some(on_configuration_changed); + (*(*activity).callbacks).onLowMemory = Some(on_low_memory); + (*(*activity).callbacks).onWindowFocusChanged = Some(on_window_focus_changed); + (*(*activity).callbacks).onNativeWindowCreated = Some(on_native_window_created); + (*(*activity).callbacks).onNativeWindowDestroyed = Some(on_native_window_destroyed); + (*(*activity).callbacks).onInputQueueCreated = Some(on_input_queue_created); + (*(*activity).callbacks).onInputQueueDestroyed = Some(on_input_queue_destroyed); + + (*activity).instance = ffi::android_app_create(activity, saved_state, saved_state_size as u64) as *mut _; } fn android_log(level: Level, tag: &CStr, msg: &CStr) { From a65729400b6996a6b3888f716c185bd1777d4cdd Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sat, 1 Oct 2022 12:46:50 +0100 Subject: [PATCH 02/12] native-activity: Port android_app_create/free from C to Rust A literal port for now, with the intention of re-working into more idiomatic Rust code once we have a port of all the C code. --- android-activity/generate-bindings.sh | 11 +- .../native_app_glue/android_native_app_glue.c | 54 +- .../native_app_glue/android_native_app_glue.h | 13 +- android-activity/src/game_activity/ffi.rs | 5 +- .../src/game_activity/ffi_aarch64.rs | 826 ------------------ android-activity/src/game_activity/ffi_arm.rs | 815 ----------------- .../src/game_activity/ffi_i686.rs | 815 ----------------- .../src/game_activity/ffi_x86_64.rs | 826 ------------------ android-activity/src/lib.rs | 19 + android-activity/src/native_activity/ffi.rs | 6 +- .../src/native_activity/ffi_aarch64.rs | 71 +- .../src/native_activity/ffi_arm.rs | 71 +- .../src/native_activity/ffi_i686.rs | 71 +- .../src/native_activity/ffi_x86_64.rs | 71 +- android-activity/src/native_activity/mod.rs | 101 ++- 15 files changed, 137 insertions(+), 3638 deletions(-) diff --git a/android-activity/generate-bindings.sh b/android-activity/generate-bindings.sh index b9809cd..786d60a 100644 --- a/android-activity/generate-bindings.sh +++ b/android-activity/generate-bindings.sh @@ -16,6 +16,10 @@ while read ARCH && read TARGET ; do --blocklist-item 'C?_?JNIEnv' \ --blocklist-item '_?JavaVM' \ --blocklist-item '_?j\w+' \ + --blocklist-item 'size_t' \ + --blocklist-item 'pthread_\w*' \ + --blocklist-function 'pthread_\w' \ + --blocklist-item 'ARect' \ --blocklist-item 'ALooper\w*' \ --blocklist-function 'ALooper\w*' \ --blocklist-item 'AAsset\w*' \ @@ -38,6 +42,10 @@ while read ARCH && read TARGET ; do --blocklist-item 'C?_?JNIEnv' \ --blocklist-item '_?JavaVM' \ --blocklist-item '_?j\w+' \ + --blocklist-item 'size_t' \ + --blocklist-item 'pthread_\w*' \ + --blocklist-function 'pthread_\w' \ + --blocklist-item 'ARect' \ --blocklist-item 'ALooper\w*' \ --blocklist-function 'ALooper\w*' \ --blocklist-item 'AAsset\w*' \ @@ -53,9 +61,6 @@ while read ARCH && read TARGET ; do --blocklist-item 'GameActivity_onCreate' \ --blocklist-function 'GameActivity_onCreate_C' \ --newtype-enum '\w+_(result|status)_t' \ - --blocklist-item 'pthread_mutex_t' \ - --blocklist-item 'pthread_cond_t' \ - --blocklist-item 'pthread_\w*' \ -- \ -Inative-activity-csrc \ --sysroot="$SYSROOT" --target=$TARGET diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c index b05f750..6ec55b2 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c @@ -201,7 +201,7 @@ static void process_cmd(struct android_app* app, __attribute__((unused)) struct android_app_post_exec_cmd(app, cmd); } -static void* android_app_entry(void* param) { +void* android_app_entry(void* param) { struct android_app* android_app = (struct android_app*)param; android_app->config = AConfiguration_new(); @@ -233,43 +233,6 @@ static void* android_app_entry(void* param) { // Native activity interaction (called from main thread) // -------------------------------------------------------------------- -struct android_app* android_app_create(ANativeActivity* activity, - void* savedState, size_t savedStateSize) { - struct android_app* android_app = (struct android_app*)malloc(sizeof(struct android_app)); - memset(android_app, 0, sizeof(struct android_app)); - android_app->activity = activity; - - pthread_mutex_init(&android_app->mutex, NULL); - pthread_cond_init(&android_app->cond, NULL); - - if (savedState != NULL) { - android_app->savedState = malloc(savedStateSize); - android_app->savedStateSize = savedStateSize; - memcpy(android_app->savedState, savedState, savedStateSize); - } - - int msgpipe[2]; - if (pipe(msgpipe)) { - LOGE("could not create pipe: %s", strerror(errno)); - return NULL; - } - android_app->msgread = msgpipe[0]; - android_app->msgwrite = msgpipe[1]; - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - pthread_create(&android_app->thread, &attr, android_app_entry, android_app); - - // Wait for thread to start. - pthread_mutex_lock(&android_app->mutex); - while (!android_app->running) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); - - return android_app; -} void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { @@ -309,19 +272,4 @@ void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) pthread_cond_wait(&android_app->cond, &android_app->mutex); } pthread_mutex_unlock(&android_app->mutex); -} - -void android_app_free(struct android_app* android_app) { - pthread_mutex_lock(&android_app->mutex); - android_app_write_cmd(android_app, APP_CMD_DESTROY); - while (!android_app->destroyed) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); - - close(android_app->msgread); - close(android_app->msgwrite); - pthread_cond_destroy(&android_app->cond); - pthread_mutex_destroy(&android_app->mutex); - free(android_app); } \ No newline at end of file diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h index 4889769..5e7dca7 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h @@ -335,23 +335,12 @@ void android_app_attach_input_queue_looper(struct android_app* android_app); void android_app_detach_input_queue_looper(struct android_app* android_app); -struct android_app* android_app_create(ANativeActivity* activity, - void* savedState, size_t savedStateSize); void android_app_write_cmd(struct android_app* android_app, int8_t cmd); void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue); void android_app_set_window(struct android_app* android_app, ANativeWindow* window); void android_app_set_activity_state(struct android_app* android_app, int8_t cmd); -void android_app_free(struct android_app* android_app); -/** - * Dummy function that used to be used to prevent the linker from stripping app - * glue code. No longer necessary, since __attribute__((visibility("default"))) - * does this for us. - */ -__attribute__(( - deprecated("Calls to app_dummy are no longer necessary. See " - "https://github.com/android-ndk/ndk/issues/381."))) void -app_dummy(); +void* android_app_entry(void* param); /** * This is the function that application code must implement, representing diff --git a/android-activity/src/game_activity/ffi.rs b/android-activity/src/game_activity/ffi.rs index 56f98e9..40ecc1d 100644 --- a/android-activity/src/game_activity/ffi.rs +++ b/android-activity/src/game_activity/ffi.rs @@ -13,9 +13,8 @@ #![allow(dead_code)] use jni_sys::*; -use ndk_sys::AAssetManager; -use ndk_sys::ANativeWindow; -use ndk_sys::{AConfiguration, ALooper, ALooper_callbackFunc}; +use ndk_sys::{ARect, AConfiguration, ALooper, ALooper_callbackFunc, AAssetManager, ANativeWindow}; +use libc::{size_t, pthread_t, pthread_mutex_t, pthread_cond_t}; #[cfg(all( any(target_os = "android", feature = "test"), diff --git a/android-activity/src/game_activity/ffi_aarch64.rs b/android-activity/src/game_activity/ffi_aarch64.rs index 2c6600f..626d193 100644 --- a/android-activity/src/game_activity/ffi_aarch64.rs +++ b/android-activity/src/game_activity/ffi_aarch64.rs @@ -659,7 +659,6 @@ extern "C" { extern "C" { pub fn android_get_device_api_level() -> ::std::os::raw::c_int; } -pub type size_t = ::std::os::raw::c_ulong; pub type wchar_t = ::std::os::raw::c_uint; #[repr(C)] #[repr(align(16))] @@ -839,247 +838,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, - pub __reserved: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i64; 4usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 12usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 14usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: i64, -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1952,67 +1710,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -4777,7 +4474,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -6146,7 +5842,6 @@ pub type fpregset_t = user_fpsimd_struct; pub type mcontext_t = sigcontext; #[repr(C)] #[repr(align(16))] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -6430,26 +6125,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -7373,506 +7048,6 @@ pub type _bindgen_ty_22 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_23 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -8171,7 +7346,6 @@ pub type android_motion_event_filter = #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the documentation of GameActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { #[doc = " An optional pointer to application-defined state."] pub userData: *mut ::std::os::raw::c_void, diff --git a/android-activity/src/game_activity/ffi_arm.rs b/android-activity/src/game_activity/ffi_arm.rs index 7021eb4..e0f2aa2 100644 --- a/android-activity/src/game_activity/ffi_arm.rs +++ b/android-activity/src/game_activity/ffi_arm.rs @@ -691,7 +691,6 @@ extern "C" { extern "C" { pub fn android_get_device_api_level() -> ::std::os::raw::c_int; } -pub type size_t = ::std::os::raw::c_uint; pub type wchar_t = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -869,236 +868,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i32; 8usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: [i32; 2usize], -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1971,67 +1740,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -4734,7 +4442,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -6566,7 +6273,6 @@ pub type fpregset_t = user_fpregs; pub type mcontext_t = sigcontext; #[repr(C)] #[repr(align(8))] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -6899,26 +6605,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -7842,506 +7528,6 @@ pub type _bindgen_ty_23 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -8640,7 +7826,6 @@ pub type android_motion_event_filter = #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the documentation of GameActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { #[doc = " An optional pointer to application-defined state."] pub userData: *mut ::std::os::raw::c_void, diff --git a/android-activity/src/game_activity/ffi_i686.rs b/android-activity/src/game_activity/ffi_i686.rs index 31fedac..1f46419 100644 --- a/android-activity/src/game_activity/ffi_i686.rs +++ b/android-activity/src/game_activity/ffi_i686.rs @@ -611,7 +611,6 @@ extern "C" { extern "C" { pub fn android_get_device_api_level() -> ::std::os::raw::c_int; } -pub type size_t = ::std::os::raw::c_uint; pub type wchar_t = ::std::os::raw::c_int; #[repr(C)] #[repr(align(8))] @@ -790,236 +789,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i32; 8usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 1usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: [i32; 2usize], -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1892,67 +1661,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -6502,7 +6210,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -8633,7 +8340,6 @@ fn bindgen_test_layout_mcontext_t() { ); } #[repr(C)] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -8955,26 +8661,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -9587,506 +9273,6 @@ pub type _bindgen_ty_23 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -10385,7 +9571,6 @@ pub type android_motion_event_filter = #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the documentation of GameActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { #[doc = " An optional pointer to application-defined state."] pub userData: *mut ::std::os::raw::c_void, diff --git a/android-activity/src/game_activity/ffi_x86_64.rs b/android-activity/src/game_activity/ffi_x86_64.rs index 2bedc9b..29d5fbe 100644 --- a/android-activity/src/game_activity/ffi_x86_64.rs +++ b/android-activity/src/game_activity/ffi_x86_64.rs @@ -639,7 +639,6 @@ extern "C" { extern "C" { pub fn android_get_device_api_level() -> ::std::os::raw::c_int; } -pub type size_t = ::std::os::raw::c_ulong; pub type wchar_t = ::std::os::raw::c_int; #[repr(C)] #[repr(align(16))] @@ -819,247 +818,6 @@ pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr_t { - pub flags: u32, - pub stack_base: *mut ::std::os::raw::c_void, - pub stack_size: size_t, - pub guard_size: size_t, - pub sched_policy: i32, - pub sched_priority: i32, - pub __reserved: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pthread_attr_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_attr_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_base as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).guard_size as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(guard_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_policy as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_policy) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(sched_priority) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(pthread_attr_t), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_t { - pub __private: [i64; 4usize], -} -#[test] -fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_barrier_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_barrier_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_barrierattr_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_t { - pub __private: [i32; 12usize], -} -#[test] -fn bindgen_test_layout_pthread_cond_t() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_cond_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_cond_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_condattr_t = ::std::os::raw::c_long; -pub type pthread_key_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_t { - pub __private: [i32; 10usize], -} -#[test] -fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_mutex_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_mutex_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_mutexattr_t = ::std::os::raw::c_long; -pub type pthread_once_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock_t { - pub __private: [i32; 14usize], -} -#[test] -fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pthread_rwlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_rwlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_rwlockattr_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock_t { - pub __private: i64, -} -#[test] -fn bindgen_test_layout_pthread_spinlock_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_spinlock_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__private as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pthread_spinlock_t), - "::", - stringify!(__private) - ) - ); -} -pub type pthread_t = ::std::os::raw::c_long; pub type __gid_t = __kernel_gid32_t; pub type gid_t = __gid_t; pub type __uid_t = __kernel_uid32_t; @@ -1932,67 +1690,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -6517,7 +6214,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -8702,7 +8398,6 @@ fn bindgen_test_layout_mcontext_t() { ); } #[repr(C)] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -8985,26 +8680,6 @@ extern "C" { extern "C" { pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); } -extern "C" { - pub fn pthread_kill( - __pthread: pthread_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_sigmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} extern "C" { pub fn sigqueue( __pid: pid_t, @@ -9616,506 +9291,6 @@ pub type _bindgen_ty_23 = ::std::os::raw::c_uint; pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn pthread_atfork( - __prepare: ::std::option::Option, - __parent: ::std::option::Option, - __child: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getdetachstate( - __attr: *const pthread_attr_t, - __state: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getguardsize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getinheritsched( - __attr: *const pthread_attr_t, - __flag: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedparam( - __attr: *const pthread_attr_t, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getschedpolicy( - __attr: *const pthread_attr_t, - __policy: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getscope( - __attr: *const pthread_attr_t, - __scope: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstack( - __attr: *const pthread_attr_t, - __addr: *mut *mut ::std::os::raw::c_void, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_getstacksize( - __attr: *const pthread_attr_t, - __size: *mut size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setdetachstate( - __attr: *mut pthread_attr_t, - __state: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setguardsize( - __attr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setinheritsched( - __attr: *mut pthread_attr_t, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedparam( - __attr: *mut pthread_attr_t, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setschedpolicy( - __attr: *mut pthread_attr_t, - __policy: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setscope( - __attr: *mut pthread_attr_t, - __scope: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstack( - __attr: *mut pthread_attr_t, - __addr: *mut ::std::os::raw::c_void, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_attr_setstacksize( - __addr: *mut pthread_attr_t, - __size: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getclock( - __attr: *const pthread_condattr_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_getpshared( - __attr: *const pthread_condattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setclock( - __attr: *mut pthread_condattr_t, - __clock: clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_condattr_setpshared( - __attr: *mut pthread_condattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_clockwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_init( - __cond: *mut pthread_cond_t, - __attr: *const pthread_condattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_timedwait_monotonic_np( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_cond_wait( - __cond: *mut pthread_cond_t, - __mutex: *mut pthread_mutex_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_create( - __pthread_ptr: *mut pthread_t, - __attr: *const pthread_attr_t, - __start_routine: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void, - >, - arg1: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_detach(__pthread: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_exit(__return_value: *mut ::std::os::raw::c_void); -} -extern "C" { - pub fn pthread_equal(__lhs: pthread_t, __rhs: pthread_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getattr_np( - __pthread: pthread_t, - __attr: *mut pthread_attr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getcpuclockid( - __pthread: pthread_t, - __clock: *mut clockid_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getschedparam( - __pthread: pthread_t, - __policy: *mut ::std::os::raw::c_int, - __param: *mut sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void; -} -extern "C" { - pub fn pthread_gettid_np(__pthread: pthread_t) -> pid_t; -} -extern "C" { - pub fn pthread_join( - __pthread: pthread_t, - __return_value_ptr: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_create( - __key_ptr: *mut pthread_key_t, - __key_destructor: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void), - >, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getpshared( - __attr: *const pthread_mutexattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_gettype( - __attr: *const pthread_mutexattr_t, - __type: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_getprotocol( - __attr: *const pthread_mutexattr_t, - __protocol: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setpshared( - __attr: *mut pthread_mutexattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_settype( - __attr: *mut pthread_mutexattr_t, - __type: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutexattr_setprotocol( - __attr: *mut pthread_mutexattr_t, - __protocol: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_clocklock( - __mutex: *mut pthread_mutex_t, - __clock: clockid_t, - __abstime: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_init( - __mutex: *mut pthread_mutex_t, - __attr: *const pthread_mutexattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_timedlock_monotonic_np( - __mutex: *mut pthread_mutex_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_once( - __once: *mut pthread_once_t, - __init_routine: ::std::option::Option, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getpshared( - __attr: *const pthread_rwlockattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setpshared( - __attr: *mut pthread_rwlockattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_getkind_np( - __attr: *const pthread_rwlockattr_t, - __kind: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlockattr_setkind_np( - __attr: *mut pthread_rwlockattr_t, - __kind: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockrdlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_clockwrlock( - __rwlock: *mut pthread_rwlock_t, - __clock: clockid_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_init( - __rwlock: *mut pthread_rwlock_t, - __attr: *const pthread_rwlockattr_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedrdlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_timedwrlock_monotonic_np( - __rwlock: *mut pthread_rwlock_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_getpshared( - __attr: *const pthread_barrierattr_t, - __shared: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrierattr_setpshared( - __attr: *mut pthread_barrierattr_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_init( - __barrier: *mut pthread_barrier_t, - __attr: *const pthread_barrierattr_t, - __count: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_destroy(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_init( - __spinlock: *mut pthread_spinlock_t, - __shared: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_lock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_trylock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_spin_unlock(__spinlock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_self() -> pthread_t; -} -extern "C" { - pub fn pthread_setname_np( - __pthread: pthread_t, - __name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedparam( - __pthread: pthread_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setschedprio( - __pthread: pthread_t, - __priority: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pthread_setspecific( - __key: pthread_key_t, - __value: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} pub type __pthread_cleanup_func_t = ::std::option::Option; #[repr(C)] @@ -10414,7 +9589,6 @@ pub type android_motion_event_filter = #[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] #[doc = " full usage example. Also look at the documentation of GameActivity."] #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct android_app { #[doc = " An optional pointer to application-defined state."] pub userData: *mut ::std::os::raw::c_void, diff --git a/android-activity/src/lib.rs b/android-activity/src/lib.rs index ff6aeb6..787be40 100644 --- a/android-activity/src/lib.rs +++ b/android-activity/src/lib.rs @@ -69,6 +69,25 @@ pub struct Rect { pub bottom: i32, } +impl Rect { + /// An empty `Rect` with all components set to zero. + pub fn empty() -> Self { + Self { left: 0, top: 0, right: 0, bottom: 0 } + } +} + +impl Into for Rect { + fn into(self) -> ndk_sys::ARect { + ndk_sys::ARect { left: self.left, right: self.right, top: self.top, bottom: self.bottom } + } +} + +impl From for Rect { + fn from(arect: ndk_sys::ARect) -> Self { + Self { left: arect.left, right: arect.right, top: arect.top, bottom: arect.bottom } + } +} + pub type StateSaver<'a> = activity_impl::StateSaver<'a>; pub type StateLoader<'a> = activity_impl::StateLoader<'a>; diff --git a/android-activity/src/native_activity/ffi.rs b/android-activity/src/native_activity/ffi.rs index fde83f0..4b9a8de 100644 --- a/android-activity/src/native_activity/ffi.rs +++ b/android-activity/src/native_activity/ffi.rs @@ -13,10 +13,8 @@ #![allow(dead_code)] use jni_sys::*; -use ndk_sys::AAssetManager; -use ndk_sys::ANativeWindow; -use ndk_sys::{AConfiguration, AInputQueue, ALooper}; -use libc::{pthread_t, pthread_mutex_t, pthread_cond_t}; +use ndk_sys::{ARect, AConfiguration, AInputQueue, ALooper, AAssetManager, ANativeWindow}; +use libc::{size_t, pthread_t, pthread_mutex_t, pthread_cond_t}; #[cfg(all( any(target_os = "android", feature = "test"), diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs index 3c9ae42..3d81790 100644 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ b/android-activity/src/native_activity/ffi_aarch64.rs @@ -699,7 +699,6 @@ fn bindgen_test_layout_pollfd() { ) ); } -pub type size_t = ::std::os::raw::c_ulong; pub type wchar_t = ::std::os::raw::c_uint; #[repr(C)] #[repr(align(16))] @@ -1362,7 +1361,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -2731,7 +2729,6 @@ pub type fpregset_t = user_fpsimd_struct; pub type mcontext_t = sigcontext; #[repr(C)] #[repr(align(16))] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -5032,67 +5029,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -6395,7 +6331,7 @@ extern "C" { extern "C" { pub fn android_app_create( activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, + savedState: *const ::std::os::raw::c_void, savedStateSize: size_t, ) -> *mut android_app; } @@ -6415,10 +6351,7 @@ extern "C" { pub fn android_app_free(android_app: *mut android_app); } extern "C" { - #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] - #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] - #[doc = " does this for us."] - pub fn app_dummy(); + pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } extern "C" { #[doc = " This is the function that application code must implement, representing"] diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs index a80f853..00063db 100644 --- a/android-activity/src/native_activity/ffi_arm.rs +++ b/android-activity/src/native_activity/ffi_arm.rs @@ -731,7 +731,6 @@ fn bindgen_test_layout_pollfd() { ) ); } -pub type size_t = ::std::os::raw::c_uint; pub type wchar_t = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -1330,7 +1329,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -3162,7 +3160,6 @@ pub type fpregset_t = user_fpregs; pub type mcontext_t = sigcontext; #[repr(C)] #[repr(align(8))] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -5512,67 +5509,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -6875,7 +6811,7 @@ extern "C" { extern "C" { pub fn android_app_create( activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, + savedState: *const ::std::os::raw::c_void, savedStateSize: size_t, ) -> *mut android_app; } @@ -6895,10 +6831,7 @@ extern "C" { pub fn android_app_free(android_app: *mut android_app); } extern "C" { - #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] - #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] - #[doc = " does this for us."] - pub fn app_dummy(); + pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } extern "C" { #[doc = " This is the function that application code must implement, representing"] diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs index febea7d..2d0df7b 100644 --- a/android-activity/src/native_activity/ffi_i686.rs +++ b/android-activity/src/native_activity/ffi_i686.rs @@ -651,7 +651,6 @@ fn bindgen_test_layout_pollfd() { ) ); } -pub type size_t = ::std::os::raw::c_uint; pub type wchar_t = ::std::os::raw::c_int; #[repr(C)] #[repr(align(8))] @@ -3098,7 +3097,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -5229,7 +5227,6 @@ fn bindgen_test_layout_mcontext_t() { ); } #[repr(C)] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -7257,67 +7254,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -8620,7 +8556,7 @@ extern "C" { extern "C" { pub fn android_app_create( activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, + savedState: *const ::std::os::raw::c_void, savedStateSize: size_t, ) -> *mut android_app; } @@ -8640,10 +8576,7 @@ extern "C" { pub fn android_app_free(android_app: *mut android_app); } extern "C" { - #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] - #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] - #[doc = " does this for us."] - pub fn app_dummy(); + pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } extern "C" { #[doc = " This is the function that application code must implement, representing"] diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs index 8ed9c94..b691ea3 100644 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ b/android-activity/src/native_activity/ffi_x86_64.rs @@ -679,7 +679,6 @@ fn bindgen_test_layout_pollfd() { ) ); } -pub type size_t = ::std::os::raw::c_ulong; pub type wchar_t = ::std::os::raw::c_int; #[repr(C)] #[repr(align(16))] @@ -3102,7 +3101,6 @@ fn bindgen_test_layout___kernel_sigaction() { ); } #[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut ::std::os::raw::c_void, pub ss_flags: ::std::os::raw::c_int, @@ -5287,7 +5285,6 @@ fn bindgen_test_layout_mcontext_t() { ); } #[repr(C)] -#[derive(Copy, Clone)] pub struct ucontext { pub uc_flags: ::std::os::raw::c_ulong, pub uc_link: *mut ucontext, @@ -7275,67 +7272,6 @@ pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; pub type ADataSpace = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ARect { - pub left: i32, - pub top: i32, - pub right: i32, - pub bottom: i32, -} -#[test] -fn bindgen_test_layout_ARect() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ARect)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ARect)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).left as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(left) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).top as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(top) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).right as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(right) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bottom as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ARect), - "::", - stringify!(bottom) - ) - ); -} pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; @@ -8638,7 +8574,7 @@ extern "C" { extern "C" { pub fn android_app_create( activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, + savedState: *const ::std::os::raw::c_void, savedStateSize: size_t, ) -> *mut android_app; } @@ -8658,10 +8594,7 @@ extern "C" { pub fn android_app_free(android_app: *mut android_app); } extern "C" { - #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] - #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] - #[doc = " does this for us."] - pub fn app_dummy(); + pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } extern "C" { #[doc = " This is the function that application code must implement, representing"] diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 28d8bde..e7afb8c 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -479,10 +479,101 @@ impl AndroidAppInner { } } +extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { + unsafe { ffi::android_app_entry(arg) as *mut _ } +} + +unsafe extern "C" fn android_app_create(activity: *mut ffi::ANativeActivity, + saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::android_app +{ + let mut msgpipe: [libc::c_int; 2] = [ -1, -1 ]; + if libc::pipe(msgpipe.as_mut_ptr()) != 0 { + panic!("could not create Rust <-> Java IPC pipe: {}", std::io::Error::last_os_error()); + } + + // For now we need to use malloc to track saved state, while the android_native_app_glue + // code will use free() to free the memory. + let mut saved_state = ptr::null_mut(); + if saved_state_in != ptr::null() && saved_state_size > 0 { + saved_state = libc::malloc(saved_state_size); + assert!(saved_state != ptr::null_mut(), "Failed to allocate {} bytes for restoring saved application state", saved_state_size); + libc::memcpy(saved_state, saved_state_in, saved_state_size); + } + + let android_app = Box::into_raw(Box::new(ffi::android_app { + userData: ptr::null_mut(), + onAppCmd: None, + onInputEvent: None, + activity, + config: ptr::null_mut(), + savedState: saved_state, + savedStateSize: saved_state_size, + looper: ptr::null_mut(), + inputQueue: ptr::null_mut(), + window: ptr::null_mut(), + contentRect: Rect::empty().into(), + activityState: 0, + destroyRequested: 0, + mutex: libc::PTHREAD_MUTEX_INITIALIZER, + cond: libc::PTHREAD_COND_INITIALIZER, + msgread: msgpipe[0], + msgwrite: msgpipe[1], + thread: 0, + cmdPollSource: ffi::android_poll_source { id: 0, app: ptr::null_mut(), process: None }, + inputPollSource: ffi::android_poll_source { id: 0, app: ptr::null_mut(), process: None }, + running: 0, + stateSaved: 0, + destroyed: 0, + redrawNeeded: 0, + pendingInputQueue: ptr::null_mut(), + pendingWindow: ptr::null_mut(), + pendingContentRect: Rect::empty().into(), + })); + + // TODO: use std::os::spawn and drop the handle to detach instead of directly + // using pthread_create + let mut attr = std::mem::MaybeUninit::::zeroed(); + libc::pthread_attr_init(attr.as_mut_ptr()); + libc::pthread_attr_setdetachstate(attr.as_mut_ptr(), libc::PTHREAD_CREATE_DETACHED); + let mut thread = std::mem::MaybeUninit::::zeroed(); + libc::pthread_create(thread.as_mut_ptr(), attr.as_mut_ptr(), android_app_main, android_app as *mut _); + let thread = thread.assume_init(); + (*android_app).thread = thread; + + // TODO: switch to std::sync::Condvar + // Wait for thread to start. + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + while (*android_app).running == 0 { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + + android_app +} + +unsafe extern "C" fn android_app_drop(android_app: *mut ffi::android_app) { + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + ffi::android_app_write_cmd(android_app, ffi::APP_CMD_DESTROY as i8); + while !(*android_app).destroyed == 0 { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + + libc::close((*android_app).msgread); + libc::close((*android_app).msgwrite); + libc::pthread_cond_destroy(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_destroy(&mut (*android_app).mutex as *mut _); + + let _android_app = Box::from_raw(android_app); + // Box dropped here +} + unsafe extern "C" fn on_destroy(activity: *mut ffi::ANativeActivity) { log::debug!("Destroy: {:p}\n", activity); + let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_free(android_app); + (*activity).instance = ptr::null_mut(); + android_app_drop(android_app); } unsafe extern "C" fn on_start(activity: *mut ffi::ANativeActivity) { @@ -498,7 +589,7 @@ unsafe extern "C" fn on_resume(activity: *mut ffi::ANativeActivity) { ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); } -unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, out_len: *mut ffi::size_t) -> *mut libc::c_void { +unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, out_len: *mut libc::size_t) -> *mut libc::c_void { let android_app: *mut ffi::android_app = (*activity).instance.cast(); let mut saved_state: *mut libc::c_void = ptr::null_mut(); @@ -580,8 +671,8 @@ unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ffi::ANativeActivit #[no_mangle] unsafe extern "C" fn ANativeActivity_onCreate( activity: *mut ffi::ANativeActivity, - saved_state: *mut std::os::raw::c_void, - saved_state_size: usize, + saved_state: *const libc::c_void, + saved_state_size: libc::size_t, ) { log::debug!("Creating: {:p}", activity); @@ -599,7 +690,7 @@ unsafe extern "C" fn ANativeActivity_onCreate( (*(*activity).callbacks).onInputQueueCreated = Some(on_input_queue_created); (*(*activity).callbacks).onInputQueueDestroyed = Some(on_input_queue_destroyed); - (*activity).instance = ffi::android_app_create(activity, saved_state, saved_state_size as u64) as *mut _; + (*activity).instance = android_app_create(activity, saved_state, saved_state_size) as *mut _; } fn android_log(level: Level, tag: &CStr, msg: &CStr) { From 1314210be48b3d61a1f888d457a1d66ad776948f Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sat, 1 Oct 2022 15:04:25 +0100 Subject: [PATCH 03/12] native-activity: complete port of sender/java-side C code to Rust --- .../native_app_glue/android_native_app_glue.c | 45 ----------- .../native_app_glue/android_native_app_glue.h | 6 -- .../src/native_activity/ffi_aarch64.rs | 22 ------ .../src/native_activity/ffi_arm.rs | 22 ------ .../src/native_activity/ffi_i686.rs | 22 ------ .../src/native_activity/ffi_x86_64.rs | 22 ------ android-activity/src/native_activity/mod.rs | 79 +++++++++++++++---- 7 files changed, 64 insertions(+), 154 deletions(-) diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c index 6ec55b2..4c070c4 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c @@ -228,48 +228,3 @@ void* android_app_entry(void* param) { android_app_destroy(android_app); return NULL; } - -// -------------------------------------------------------------------- -// Native activity interaction (called from main thread) -// -------------------------------------------------------------------- - - -void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { - if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { - LOGE("Failure writing android_app cmd: %s\n", strerror(errno)); - } -} - -void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) { - pthread_mutex_lock(&android_app->mutex); - android_app->pendingInputQueue = inputQueue; - android_app_write_cmd(android_app, APP_CMD_INPUT_CHANGED); - while (android_app->inputQueue != android_app->pendingInputQueue) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} - -void android_app_set_window(struct android_app* android_app, ANativeWindow* window) { - pthread_mutex_lock(&android_app->mutex); - if (android_app->pendingWindow != NULL) { - android_app_write_cmd(android_app, APP_CMD_TERM_WINDOW); - } - android_app->pendingWindow = window; - if (window != NULL) { - android_app_write_cmd(android_app, APP_CMD_INIT_WINDOW); - } - while (android_app->window != android_app->pendingWindow) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} - -void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) { - pthread_mutex_lock(&android_app->mutex); - android_app_write_cmd(android_app, cmd); - while (android_app->activityState != cmd) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} \ No newline at end of file diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h index 5e7dca7..c4609ec 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h @@ -334,12 +334,6 @@ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); void android_app_attach_input_queue_looper(struct android_app* android_app); void android_app_detach_input_queue_looper(struct android_app* android_app); - -void android_app_write_cmd(struct android_app* android_app, int8_t cmd); -void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue); -void android_app_set_window(struct android_app* android_app, ANativeWindow* window); -void android_app_set_activity_state(struct android_app* android_app, int8_t cmd); - void* android_app_entry(void* param); /** diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs index 3d81790..b8cf4b4 100644 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ b/android-activity/src/native_activity/ffi_aarch64.rs @@ -6328,28 +6328,6 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } -extern "C" { - pub fn android_app_create( - activity: *mut ANativeActivity, - savedState: *const ::std::os::raw::c_void, - savedStateSize: size_t, - ) -> *mut android_app; -} -extern "C" { - pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); -} -extern "C" { - pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); -} -extern "C" { - pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_free(android_app: *mut android_app); -} extern "C" { pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs index 00063db..9df36b6 100644 --- a/android-activity/src/native_activity/ffi_arm.rs +++ b/android-activity/src/native_activity/ffi_arm.rs @@ -6808,28 +6808,6 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } -extern "C" { - pub fn android_app_create( - activity: *mut ANativeActivity, - savedState: *const ::std::os::raw::c_void, - savedStateSize: size_t, - ) -> *mut android_app; -} -extern "C" { - pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); -} -extern "C" { - pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); -} -extern "C" { - pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_free(android_app: *mut android_app); -} extern "C" { pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs index 2d0df7b..0f8604c 100644 --- a/android-activity/src/native_activity/ffi_i686.rs +++ b/android-activity/src/native_activity/ffi_i686.rs @@ -8553,28 +8553,6 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } -extern "C" { - pub fn android_app_create( - activity: *mut ANativeActivity, - savedState: *const ::std::os::raw::c_void, - savedStateSize: size_t, - ) -> *mut android_app; -} -extern "C" { - pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); -} -extern "C" { - pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); -} -extern "C" { - pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_free(android_app: *mut android_app); -} extern "C" { pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs index b691ea3..e2fef1a 100644 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ b/android-activity/src/native_activity/ffi_x86_64.rs @@ -8571,28 +8571,6 @@ extern "C" { extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } -extern "C" { - pub fn android_app_create( - activity: *mut ANativeActivity, - savedState: *const ::std::os::raw::c_void, - savedStateSize: size_t, - ) -> *mut android_app; -} -extern "C" { - pub fn android_app_write_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_set_input(android_app: *mut android_app, inputQueue: *mut AInputQueue); -} -extern "C" { - pub fn android_app_set_window(android_app: *mut android_app, window: *mut ANativeWindow); -} -extern "C" { - pub fn android_app_set_activity_state(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_free(android_app: *mut android_app); -} extern "C" { pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index e7afb8c..42e7096 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -483,7 +483,7 @@ extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { unsafe { ffi::android_app_entry(arg) as *mut _ } } -unsafe extern "C" fn android_app_create(activity: *mut ffi::ANativeActivity, +unsafe fn android_app_create(activity: *mut ffi::ANativeActivity, saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::android_app { let mut msgpipe: [libc::c_int; 2] = [ -1, -1 ]; @@ -551,9 +551,9 @@ unsafe extern "C" fn android_app_create(activity: *mut ffi::ANativeActivity, android_app } -unsafe extern "C" fn android_app_drop(android_app: *mut ffi::android_app) { +unsafe fn android_app_drop(android_app: *mut ffi::android_app) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - ffi::android_app_write_cmd(android_app, ffi::APP_CMD_DESTROY as i8); + android_app_write_cmd(android_app, ffi::APP_CMD_DESTROY as i8); while !(*android_app).destroyed == 0 { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } @@ -568,6 +568,55 @@ unsafe extern "C" fn android_app_drop(android_app: *mut ffi::android_app) { // Box dropped here } +unsafe fn android_app_write_cmd(android_app: *mut ffi::android_app, cmd: i8) { + loop { + match libc::write((*android_app).msgwrite, &cmd as *const _ as *const _, 1) { + 1 => break, + -1 => { + let err = std::io::Error::last_os_error(); + if err.kind() != std::io::ErrorKind::Interrupted { + panic!("Failure writing android_app cmd: {}", err); + } + } + count => panic!("Spurious write of {count} bytes while writing android_app cmd") + } + } +} + +unsafe fn android_app_set_input(android_app: *mut ffi::android_app, input_queue: *mut ndk_sys::AInputQueue) { + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).pendingInputQueue = input_queue; + android_app_write_cmd(android_app, ffi::APP_CMD_INPUT_CHANGED as i8); + while (*android_app).inputQueue != (*android_app).pendingInputQueue { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); +} + +unsafe fn android_app_set_window(android_app: *mut ffi::android_app, window: *mut ndk_sys::ANativeWindow) { + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + if (*android_app).pendingWindow != ptr::null_mut() { + android_app_write_cmd(android_app, ffi::APP_CMD_TERM_WINDOW as i8); + } + (*android_app).pendingWindow = window; + if window != ptr::null_mut() { + android_app_write_cmd(android_app, ffi::APP_CMD_INIT_WINDOW as i8); + } + while (*android_app).window != (*android_app).pendingWindow { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); +} + +unsafe fn android_app_set_activity_state(android_app: *mut ffi::android_app, cmd: i8) { + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + android_app_write_cmd(android_app, cmd); + while (*android_app).activityState as i8 != cmd { + libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); +} + unsafe extern "C" fn on_destroy(activity: *mut ffi::ANativeActivity) { log::debug!("Destroy: {:p}\n", activity); @@ -580,13 +629,13 @@ unsafe extern "C" fn on_start(activity: *mut ffi::ANativeActivity) { log::debug!("Start: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_START as i8); + android_app_set_activity_state(android_app, ffi::APP_CMD_START as i8); } unsafe extern "C" fn on_resume(activity: *mut ffi::ANativeActivity) { log::debug!("Resume: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); + android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); } unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, out_len: *mut libc::size_t) -> *mut libc::c_void { @@ -596,7 +645,7 @@ unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, log::debug!("SaveInstanceState: {:p}\n", activity); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); (*android_app).stateSaved = 0; - ffi::android_app_write_cmd(android_app, ffi::APP_CMD_SAVE_STATE as i8); + android_app_write_cmd(android_app, ffi::APP_CMD_SAVE_STATE as i8); while (*android_app).stateSaved == 0 { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } @@ -616,56 +665,56 @@ unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, unsafe extern "C" fn on_pause(activity: *mut ffi::ANativeActivity) { log::debug!("Pause: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_PAUSE as i8); + android_app_set_activity_state(android_app, ffi::APP_CMD_PAUSE as i8); } unsafe extern "C" fn on_stop(activity: *mut ffi::ANativeActivity) { log::debug!("Stop: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_activity_state(android_app, ffi::APP_CMD_STOP as i8); + android_app_set_activity_state(android_app, ffi::APP_CMD_STOP as i8); } unsafe extern "C" fn on_configuration_changed(activity: *mut ffi::ANativeActivity) { log::debug!("ConfigurationChanged: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_write_cmd(android_app, ffi::APP_CMD_CONFIG_CHANGED as i8); + android_app_write_cmd(android_app, ffi::APP_CMD_CONFIG_CHANGED as i8); } unsafe extern "C" fn on_low_memory(activity: *mut ffi::ANativeActivity) { log::debug!("LowMemory: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_write_cmd(android_app, ffi::APP_CMD_LOW_MEMORY as i8); + android_app_write_cmd(android_app, ffi::APP_CMD_LOW_MEMORY as i8); } unsafe extern "C" fn on_window_focus_changed(activity: *mut ffi::ANativeActivity, focused: libc::c_int) { log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_write_cmd(android_app, + android_app_write_cmd(android_app, if focused != 0 { ffi::APP_CMD_GAINED_FOCUS as i8 } else { ffi::APP_CMD_LOST_FOCUS as i8}); } unsafe extern "C" fn on_native_window_created(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_window(android_app, window); + android_app_set_window(android_app, window); } unsafe extern "C" fn on_native_window_destroyed(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_window(android_app, ptr::null_mut()); + android_app_set_window(android_app, ptr::null_mut()); } unsafe extern "C" fn on_input_queue_created(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_input(android_app, queue); + android_app_set_input(android_app, queue); } unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); let android_app: *mut ffi::android_app = (*activity).instance.cast(); - ffi::android_app_set_input(android_app, ptr::null_mut()); + android_app_set_input(android_app, ptr::null_mut()); } #[no_mangle] From 1507b37425ac5c61e1a5a75d7a2de4c8e87af13d Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sat, 1 Oct 2022 16:08:55 +0100 Subject: [PATCH 04/12] native-activity: port android_app_entry (mainloop init) from C to Rust --- .../native_app_glue/android_native_app_glue.c | 34 ++---------- .../native_app_glue/android_native_app_glue.h | 10 ++-- .../src/native_activity/ffi_aarch64.rs | 9 ++-- .../src/native_activity/ffi_arm.rs | 9 ++-- .../src/native_activity/ffi_i686.rs | 9 ++-- .../src/native_activity/ffi_x86_64.rs | 9 ++-- android-activity/src/native_activity/mod.rs | 52 +++++++++++++++++-- 7 files changed, 73 insertions(+), 59 deletions(-) diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c index 4c070c4..9377ecc 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c @@ -61,7 +61,7 @@ int8_t android_app_read_cmd(struct android_app* android_app) { return -1; } -static void print_cur_config(struct android_app* android_app) { +void print_cur_config(struct android_app* android_app) { char lang[2], country[2]; AConfiguration_getLanguage(android_app->config, lang); AConfiguration_getCountry(android_app->config, country); @@ -180,7 +180,7 @@ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) { } } -static void android_app_destroy(struct android_app* android_app) { +void android_app_destroy(struct android_app* android_app) { LOGV("android_app_destroy!"); free_saved_state(android_app); pthread_mutex_lock(&android_app->mutex); @@ -194,37 +194,9 @@ static void android_app_destroy(struct android_app* android_app) { // Can't touch android_app object after this. } -static void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source) { +void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source) { int8_t cmd = android_app_read_cmd(app); android_app_pre_exec_cmd(app, cmd); if (app->onAppCmd != NULL) app->onAppCmd(app, cmd); android_app_post_exec_cmd(app, cmd); } - -void* android_app_entry(void* param) { - struct android_app* android_app = (struct android_app*)param; - - android_app->config = AConfiguration_new(); - AConfiguration_fromAssetManager(android_app->config, android_app->activity->assetManager); - - print_cur_config(android_app); - - android_app->cmdPollSource.id = LOOPER_ID_MAIN; - android_app->cmdPollSource.app = android_app; - android_app->cmdPollSource.process = process_cmd; - - ALooper* looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS); - ALooper_addFd(looper, android_app->msgread, LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT, NULL, - &android_app->cmdPollSource); - android_app->looper = looper; - - pthread_mutex_lock(&android_app->mutex); - android_app->running = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - - _rust_glue_entry(android_app); - - android_app_destroy(android_app); - return NULL; -} diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h index c4609ec..a73f748 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h @@ -334,13 +334,9 @@ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); void android_app_attach_input_queue_looper(struct android_app* android_app); void android_app_detach_input_queue_looper(struct android_app* android_app); -void* android_app_entry(void* param); - -/** - * This is the function that application code must implement, representing - * the main entry to the app. - */ -extern void _rust_glue_entry(struct android_app* app); +void print_cur_config(struct android_app* android_app); +void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source); +void android_app_destroy(struct android_app* android_app); #ifdef __cplusplus } diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs index b8cf4b4..2c91497 100644 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ b/android-activity/src/native_activity/ffi_aarch64.rs @@ -6329,11 +6329,12 @@ extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } extern "C" { - pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; + pub fn print_cur_config(android_app: *mut android_app); } extern "C" { - #[doc = " This is the function that application code must implement, representing"] - #[doc = " the main entry to the app."] - pub fn _rust_glue_entry(app: *mut android_app); + pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); +} +extern "C" { + pub fn android_app_destroy(android_app: *mut android_app); } pub type __uint128_t = u128; diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs index 9df36b6..30a88ef 100644 --- a/android-activity/src/native_activity/ffi_arm.rs +++ b/android-activity/src/native_activity/ffi_arm.rs @@ -6809,10 +6809,11 @@ extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } extern "C" { - pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; + pub fn print_cur_config(android_app: *mut android_app); } extern "C" { - #[doc = " This is the function that application code must implement, representing"] - #[doc = " the main entry to the app."] - pub fn _rust_glue_entry(app: *mut android_app); + pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); +} +extern "C" { + pub fn android_app_destroy(android_app: *mut android_app); } diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs index 0f8604c..410dca4 100644 --- a/android-activity/src/native_activity/ffi_i686.rs +++ b/android-activity/src/native_activity/ffi_i686.rs @@ -8554,11 +8554,12 @@ extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } extern "C" { - pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; + pub fn print_cur_config(android_app: *mut android_app); } extern "C" { - #[doc = " This is the function that application code must implement, representing"] - #[doc = " the main entry to the app."] - pub fn _rust_glue_entry(app: *mut android_app); + pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); +} +extern "C" { + pub fn android_app_destroy(android_app: *mut android_app); } pub type __builtin_va_list = *mut ::std::os::raw::c_char; diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs index e2fef1a..c0288f9 100644 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ b/android-activity/src/native_activity/ffi_x86_64.rs @@ -8572,12 +8572,13 @@ extern "C" { pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); } extern "C" { - pub fn android_app_entry(param: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; + pub fn print_cur_config(android_app: *mut android_app); } extern "C" { - #[doc = " This is the function that application code must implement, representing"] - #[doc = " the main entry to the app."] - pub fn _rust_glue_entry(app: *mut android_app); + pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); +} +extern "C" { + pub fn android_app_destroy(android_app: *mut android_app); } pub type __builtin_va_list = [__va_list_tag; 1usize]; #[repr(C)] diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 42e7096..6281265 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -479,10 +479,49 @@ impl AndroidAppInner { } } + +//////////////////////////// +// Rust-side event loop +//////////////////////////// + + extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { - unsafe { ffi::android_app_entry(arg) as *mut _ } + unsafe { + let android_app: *mut ffi::android_app = arg.cast(); + + (*android_app).config = ndk_sys::AConfiguration_new(); + ndk_sys::AConfiguration_fromAssetManager((*android_app).config, (*(*android_app).activity).assetManager); + + ffi::print_cur_config(android_app); + + (*android_app).cmdPollSource.id = ffi::LOOPER_ID_MAIN as i32; + (*android_app).cmdPollSource.app = android_app; + (*android_app).cmdPollSource.process = Some(ffi::process_cmd); + + let looper = ndk_sys::ALooper_prepare(ndk_sys::ALOOPER_PREPARE_ALLOW_NON_CALLBACKS as libc::c_int); + ndk_sys::ALooper_addFd(looper, (*android_app).msgread, ffi::LOOPER_ID_MAIN as libc::c_int, ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, None, + &mut (*android_app).cmdPollSource as *mut _ as *mut _); + (*android_app).looper = looper; + + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).running = 1; + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + + _rust_glue_entry(android_app); + + ffi::android_app_destroy(android_app); + + ptr::null_mut() + } } + +/////////////////////////////// +// Java-side callback handling +/////////////////////////////// + + unsafe fn android_app_create(activity: *mut ffi::ANativeActivity, saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::android_app { @@ -575,10 +614,14 @@ unsafe fn android_app_write_cmd(android_app: *mut ffi::android_app, cmd: i8) { -1 => { let err = std::io::Error::last_os_error(); if err.kind() != std::io::ErrorKind::Interrupted { - panic!("Failure writing android_app cmd: {}", err); + log::error!("Failure writing android_app cmd: {}", err); + return; } } - count => panic!("Spurious write of {count} bytes while writing android_app cmd") + count => { + log::error!("Spurious write of {count} bytes while writing android_app cmd"); + return; + } } } } @@ -762,8 +805,7 @@ extern "Rust" { // This is a spring board between android_native_app_glue and the user's // `app_main` function. This is run on a dedicated thread spawned // by android_native_app_glue. -#[no_mangle] -pub unsafe extern "C" fn _rust_glue_entry(app: *mut ffi::android_app) { +pub unsafe fn _rust_glue_entry(app: *mut ffi::android_app) { // Maybe make this stdout/stderr redirection an optional / opt-in feature?... let mut logpipe: [RawFd; 2] = Default::default(); libc::pipe(logpipe.as_mut_ptr()); From 3de1433f82a60f2b238d3694c7924f4bda1157de Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sun, 2 Oct 2022 15:33:03 +0100 Subject: [PATCH 05/12] native-activity: complete (first-pass) port of C code to Rust At this point the C code has been fully ported to Rust but it's not yet well integrated with the pre-existing Rust code and the port is not yet particularly idiomatic Rust code. --- android-activity/build.rs | 10 - android-activity/generate-bindings.sh | 27 - .../native_app_glue/android_native_app_glue.c | 202 - .../native_app_glue/android_native_app_glue.h | 345 - android-activity/src/native_activity/ffi.rs | 32 - .../src/native_activity/ffi_aarch64.rs | 6340 ------------ .../src/native_activity/ffi_arm.rs | 6819 ------------- .../src/native_activity/ffi_i686.rs | 8565 ---------------- .../src/native_activity/ffi_x86_64.rs | 8644 ----------------- android-activity/src/native_activity/mod.rs | 434 +- 10 files changed, 334 insertions(+), 31084 deletions(-) delete mode 100644 android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c delete mode 100644 android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h delete mode 100644 android-activity/src/native_activity/ffi.rs delete mode 100644 android-activity/src/native_activity/ffi_aarch64.rs delete mode 100644 android-activity/src/native_activity/ffi_arm.rs delete mode 100644 android-activity/src/native_activity/ffi_i686.rs delete mode 100644 android-activity/src/native_activity/ffi_x86_64.rs diff --git a/android-activity/build.rs b/android-activity/build.rs index c6a5706..6b08f62 100644 --- a/android-activity/build.rs +++ b/android-activity/build.rs @@ -1,13 +1,5 @@ #![allow(dead_code)] -fn build_glue_for_native_activity() { - cc::Build::new() - .include("native-activity-csrc") - .include("native-activity-csrc/native-activity/native_app_glue") - .file("native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c") - .compile("libnative_app_glue.a"); -} - fn build_glue_for_game_activity() { cc::Build::new() .cpp(true) @@ -38,6 +30,4 @@ fn build_glue_for_game_activity() { fn main() { #[cfg(feature = "game-activity")] build_glue_for_game_activity(); - #[cfg(feature = "native-activity")] - build_glue_for_native_activity(); } diff --git a/android-activity/generate-bindings.sh b/android-activity/generate-bindings.sh index 786d60a..530eeae 100644 --- a/android-activity/generate-bindings.sh +++ b/android-activity/generate-bindings.sh @@ -37,33 +37,6 @@ while read ARCH && read TARGET ; do -Igame-activity-csrc \ --sysroot="$SYSROOT" --target=$TARGET - bindgen native-activity-ffi.h -o src/native_activity/ffi_$ARCH.rs \ - --blocklist-item 'JNI\w+' \ - --blocklist-item 'C?_?JNIEnv' \ - --blocklist-item '_?JavaVM' \ - --blocklist-item '_?j\w+' \ - --blocklist-item 'size_t' \ - --blocklist-item 'pthread_\w*' \ - --blocklist-function 'pthread_\w' \ - --blocklist-item 'ARect' \ - --blocklist-item 'ALooper\w*' \ - --blocklist-function 'ALooper\w*' \ - --blocklist-item 'AAsset\w*' \ - --blocklist-item 'AAssetManager\w*' \ - --blocklist-function 'AAssetManager\w*' \ - --blocklist-item 'ANativeWindow\w*' \ - --blocklist-function 'ANativeWindow\w*' \ - --blocklist-item 'AConfiguration\w*' \ - --blocklist-function 'AConfiguration\w*' \ - --blocklist-function 'android_main' \ - --blocklist-item 'AInputQueue\w*' \ - --blocklist-function 'AInputQueue\w*' \ - --blocklist-item 'GameActivity_onCreate' \ - --blocklist-function 'GameActivity_onCreate_C' \ - --newtype-enum '\w+_(result|status)_t' \ - -- \ - -Inative-activity-csrc \ - --sysroot="$SYSROOT" --target=$TARGET done << EOF arm arm-linux-androideabi diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c deleted file mode 100644 index 9377ecc..0000000 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include - -#include -#include -#include -#include -#include - -#include "android_native_app_glue.h" -#include - -#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__)) -#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "threaded_app", __VA_ARGS__)) - -/* For debug builds, always enable the debug traces in this library */ -#ifndef NDEBUG -# define LOGV(...) ((void)__android_log_print(ANDROID_LOG_VERBOSE, "threaded_app", __VA_ARGS__)) -#else -# define LOGV(...) ((void)0) -#endif - -static void free_saved_state(struct android_app* android_app) { - pthread_mutex_lock(&android_app->mutex); - if (android_app->savedState != NULL) { - free(android_app->savedState); - android_app->savedState = NULL; - android_app->savedStateSize = 0; - } - pthread_mutex_unlock(&android_app->mutex); -} - -int8_t android_app_read_cmd(struct android_app* android_app) { - int8_t cmd; - if (read(android_app->msgread, &cmd, sizeof(cmd)) == sizeof(cmd)) { - switch (cmd) { - case APP_CMD_SAVE_STATE: - free_saved_state(android_app); - break; - } - return cmd; - } else { - LOGE("No data on command pipe!"); - } - return -1; -} - -void print_cur_config(struct android_app* android_app) { - char lang[2], country[2]; - AConfiguration_getLanguage(android_app->config, lang); - AConfiguration_getCountry(android_app->config, country); - - LOGV("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d " - "keys=%d nav=%d keysHid=%d navHid=%d sdk=%d size=%d long=%d " - "modetype=%d modenight=%d", - AConfiguration_getMcc(android_app->config), - AConfiguration_getMnc(android_app->config), - lang[0], lang[1], country[0], country[1], - AConfiguration_getOrientation(android_app->config), - AConfiguration_getTouchscreen(android_app->config), - AConfiguration_getDensity(android_app->config), - AConfiguration_getKeyboard(android_app->config), - AConfiguration_getNavigation(android_app->config), - AConfiguration_getKeysHidden(android_app->config), - AConfiguration_getNavHidden(android_app->config), - AConfiguration_getSdkVersion(android_app->config), - AConfiguration_getScreenSize(android_app->config), - AConfiguration_getScreenLong(android_app->config), - AConfiguration_getUiModeType(android_app->config), - AConfiguration_getUiModeNight(android_app->config)); -} - -void android_app_attach_input_queue_looper(struct android_app* android_app) { - if (android_app->inputQueue != NULL) { - LOGV("Attaching input queue to looper"); - AInputQueue_attachLooper(android_app->inputQueue, - android_app->looper, LOOPER_ID_INPUT, NULL, - &android_app->inputPollSource); - } -} - -void android_app_detach_input_queue_looper(struct android_app* android_app) { - if (android_app->inputQueue != NULL) { - LOGV("Detaching input queue from looper"); - AInputQueue_detachLooper(android_app->inputQueue); - } -} - -void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) { - switch (cmd) { - case APP_CMD_INPUT_CHANGED: - LOGV("APP_CMD_INPUT_CHANGED\n"); - pthread_mutex_lock(&android_app->mutex); - if (android_app->inputQueue != NULL) { - android_app_detach_input_queue_looper(android_app); - } - android_app->inputQueue = android_app->pendingInputQueue; - if (android_app->inputQueue != NULL) { - android_app_attach_input_queue_looper(android_app); - } - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_INIT_WINDOW: - LOGV("APP_CMD_INIT_WINDOW\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->window = android_app->pendingWindow; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_TERM_WINDOW: - LOGV("APP_CMD_TERM_WINDOW\n"); - pthread_cond_broadcast(&android_app->cond); - break; - - case APP_CMD_RESUME: - case APP_CMD_START: - case APP_CMD_PAUSE: - case APP_CMD_STOP: - LOGV("activityState=%d\n", cmd); - pthread_mutex_lock(&android_app->mutex); - android_app->activityState = cmd; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_CONFIG_CHANGED: - LOGV("APP_CMD_CONFIG_CHANGED\n"); - AConfiguration_fromAssetManager(android_app->config, - android_app->activity->assetManager); - print_cur_config(android_app); - break; - - case APP_CMD_DESTROY: - LOGV("APP_CMD_DESTROY\n"); - android_app->destroyRequested = 1; - break; - } -} - -void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) { - switch (cmd) { - case APP_CMD_TERM_WINDOW: - LOGV("APP_CMD_TERM_WINDOW\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->window = NULL; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_SAVE_STATE: - LOGV("APP_CMD_SAVE_STATE\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->stateSaved = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_RESUME: - free_saved_state(android_app); - break; - } -} - -void android_app_destroy(struct android_app* android_app) { - LOGV("android_app_destroy!"); - free_saved_state(android_app); - pthread_mutex_lock(&android_app->mutex); - if (android_app->inputQueue != NULL) { - AInputQueue_detachLooper(android_app->inputQueue); - } - AConfiguration_delete(android_app->config); - android_app->destroyed = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - // Can't touch android_app object after this. -} - -void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source) { - int8_t cmd = android_app_read_cmd(app); - android_app_pre_exec_cmd(app, cmd); - if (app->onAppCmd != NULL) app->onAppCmd(app, cmd); - android_app_post_exec_cmd(app, cmd); -} diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h deleted file mode 100644 index a73f748..0000000 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef _ANDROID_NATIVE_APP_GLUE_H -#define _ANDROID_NATIVE_APP_GLUE_H - -#include -#include -#include - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The native activity interface provided by - * is based on a set of application-provided callbacks that will be called - * by the Activity's main thread when certain events occur. - * - * This means that each one of this callbacks _should_ _not_ block, or they - * risk having the system force-close the application. This programming - * model is direct, lightweight, but constraining. - * - * The 'android_native_app_glue' static library is used to provide a different - * execution model where the application can implement its own main event - * loop in a different thread instead. Here's how it works: - * - * 1/ The application must provide a function named "android_main()" that - * will be called when the activity is created, in a new thread that is - * distinct from the activity's main thread. - * - * 2/ android_main() receives a pointer to a valid "android_app" structure - * that contains references to other important objects, e.g. the - * ANativeActivity obejct instance the application is running in. - * - * 3/ the "android_app" object holds an ALooper instance that already - * listens to two important things: - * - * - activity lifecycle events (e.g. "pause", "resume"). See APP_CMD_XXX - * declarations below. - * - * - input events coming from the AInputQueue attached to the activity. - * - * Each of these correspond to an ALooper identifier returned by - * ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT, - * respectively. - * - * Your application can use the same ALooper to listen to additional - * file-descriptors. They can either be callback based, or with return - * identifiers starting with LOOPER_ID_USER. - * - * 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event, - * the returned data will point to an android_poll_source structure. You - * can call the process() function on it, and fill in android_app->onAppCmd - * and android_app->onInputEvent to be called for your own processing - * of the event. - * - * Alternatively, you can call the low-level functions to read and process - * the data directly... look at the process_cmd() and process_input() - * implementations in the glue to see how to do this. - * - * See the sample named "native-activity" that comes with the NDK with a - * full usage example. Also look at the JavaDoc of NativeActivity. - */ - -struct android_app; - -/** - * Data associated with an ALooper fd that will be returned as the "outData" - * when that source has data ready. - */ -struct android_poll_source { - // The identifier of this source. May be LOOPER_ID_MAIN or - // LOOPER_ID_INPUT. - int32_t id; - - // The android_app this ident is associated with. - struct android_app* app; - - // Function to call to perform the standard processing of data from - // this source. - void (*process)(struct android_app* app, struct android_poll_source* source); -}; - -/** - * This is the interface for the standard glue code of a threaded - * application. In this model, the application's code is running - * in its own thread separate from the main thread of the process. - * It is not required that this thread be associated with the Java - * VM, although it will need to be in order to make JNI calls any - * Java objects. - */ -struct android_app { - // The application can place a pointer to its own state object - // here if it likes. - void* userData; - - // Fill this in with the function to process main app commands (APP_CMD_*) - void (*onAppCmd)(struct android_app* app, int32_t cmd); - - // Fill this in with the function to process input events. At this point - // the event has already been pre-dispatched, and it will be finished upon - // return. Return 1 if you have handled the event, 0 for any default - // dispatching. - int32_t (*onInputEvent)(struct android_app* app, AInputEvent* event); - - // The ANativeActivity object instance that this app is running in. - ANativeActivity* activity; - - // The current configuration the app is running in. - AConfiguration* config; - - // This is the last instance's saved state, as provided at creation time. - // It is NULL if there was no state. You can use this as you need; the - // memory will remain around until you call android_app_exec_cmd() for - // APP_CMD_RESUME, at which point it will be freed and savedState set to NULL. - // These variables should only be changed when processing a APP_CMD_SAVE_STATE, - // at which point they will be initialized to NULL and you can malloc your - // state and place the information here. In that case the memory will be - // freed for you later. - void* savedState; - size_t savedStateSize; - - // The ALooper associated with the app's thread. - ALooper* looper; - - // When non-NULL, this is the input queue from which the app will - // receive user input events. - AInputQueue* inputQueue; - - // When non-NULL, this is the window surface that the app can draw in. - ANativeWindow* window; - - // Current content rectangle of the window; this is the area where the - // window's content should be placed to be seen by the user. - ARect contentRect; - - // Current state of the app's activity. May be either APP_CMD_START, - // APP_CMD_RESUME, APP_CMD_PAUSE, or APP_CMD_STOP; see below. - int activityState; - - // This is non-zero when the application's NativeActivity is being - // destroyed and waiting for the app thread to complete. - int destroyRequested; - - // ------------------------------------------------- - // Below are "private" implementation of the glue code. - - pthread_mutex_t mutex; - pthread_cond_t cond; - - int msgread; - int msgwrite; - - pthread_t thread; - - struct android_poll_source cmdPollSource; - struct android_poll_source inputPollSource; - - int running; - int stateSaved; - int destroyed; - int redrawNeeded; - AInputQueue* pendingInputQueue; - ANativeWindow* pendingWindow; - ARect pendingContentRect; -}; - -enum { - /** - * Looper data ID of commands coming from the app's main thread, which - * is returned as an identifier from ALooper_pollOnce(). The data for this - * identifier is a pointer to an android_poll_source structure. - * These can be retrieved and processed with android_app_read_cmd() - * and android_app_exec_cmd(). - */ - LOOPER_ID_MAIN = 1, - - /** - * Looper data ID of events coming from the AInputQueue of the - * application's window, which is returned as an identifier from - * ALooper_pollOnce(). The data for this identifier is a pointer to an - * android_poll_source structure. These can be read via the inputQueue - * object of android_app. - */ - LOOPER_ID_INPUT = 2, - - /** - * Start of user-defined ALooper identifiers. - */ - LOOPER_ID_USER = 3, -}; - -enum { - /** - * Command from main thread: the AInputQueue has changed. Upon processing - * this command, android_app->inputQueue will be updated to the new queue - * (or NULL). - */ - APP_CMD_INPUT_CHANGED, - - /** - * Command from main thread: a new ANativeWindow is ready for use. Upon - * receiving this command, android_app->window will contain the new window - * surface. - */ - APP_CMD_INIT_WINDOW, - - /** - * Command from main thread: the existing ANativeWindow needs to be - * terminated. Upon receiving this command, android_app->window still - * contains the existing window; after calling android_app_exec_cmd - * it will be set to NULL. - */ - APP_CMD_TERM_WINDOW, - - /** - * Command from main thread: the current ANativeWindow has been resized. - * Please redraw with its new size. - */ - APP_CMD_WINDOW_RESIZED, - - /** - * Command from main thread: the system needs that the current ANativeWindow - * be redrawn. You should redraw the window before handing this to - * android_app_exec_cmd() in order to avoid transient drawing glitches. - */ - APP_CMD_WINDOW_REDRAW_NEEDED, - - /** - * Command from main thread: the content area of the window has changed, - * such as from the soft input window being shown or hidden. You can - * find the new content rect in android_app::contentRect. - */ - APP_CMD_CONTENT_RECT_CHANGED, - - /** - * Command from main thread: the app's activity window has gained - * input focus. - */ - APP_CMD_GAINED_FOCUS, - - /** - * Command from main thread: the app's activity window has lost - * input focus. - */ - APP_CMD_LOST_FOCUS, - - /** - * Command from main thread: the current device configuration has changed. - */ - APP_CMD_CONFIG_CHANGED, - - /** - * Command from main thread: the system is running low on memory. - * Try to reduce your memory use. - */ - APP_CMD_LOW_MEMORY, - - /** - * Command from main thread: the app's activity has been started. - */ - APP_CMD_START, - - /** - * Command from main thread: the app's activity has been resumed. - */ - APP_CMD_RESUME, - - /** - * Command from main thread: the app should generate a new saved state - * for itself, to restore from later if needed. If you have saved state, - * allocate it with malloc and place it in android_app.savedState with - * the size in android_app.savedStateSize. The will be freed for you - * later. - */ - APP_CMD_SAVE_STATE, - - /** - * Command from main thread: the app's activity has been paused. - */ - APP_CMD_PAUSE, - - /** - * Command from main thread: the app's activity has been stopped. - */ - APP_CMD_STOP, - - /** - * Command from main thread: the app's activity is being destroyed, - * and waiting for the app thread to clean up and exit before proceeding. - */ - APP_CMD_DESTROY, -}; - -/** - * Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next - * app command message. - */ -int8_t android_app_read_cmd(struct android_app* android_app); - -/** - * Call with the command returned by android_app_read_cmd() to do the - * initial pre-processing of the given command. You can perform your own - * actions for the command after calling this function. - */ -void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd); - -/** - * Call with the command returned by android_app_read_cmd() to do the - * final post-processing of the given command. You must have done your own - * actions for the command before calling this function. - */ -void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); - -void android_app_attach_input_queue_looper(struct android_app* android_app); -void android_app_detach_input_queue_looper(struct android_app* android_app); - -void print_cur_config(struct android_app* android_app); -void process_cmd(struct android_app* app, __attribute__((unused)) struct android_poll_source* source); -void android_app_destroy(struct android_app* android_app); - -#ifdef __cplusplus -} -#endif - -#endif /* _ANDROID_NATIVE_APP_GLUE_H */ diff --git a/android-activity/src/native_activity/ffi.rs b/android-activity/src/native_activity/ffi.rs deleted file mode 100644 index 4b9a8de..0000000 --- a/android-activity/src/native_activity/ffi.rs +++ /dev/null @@ -1,32 +0,0 @@ -//! The bindings are pre-generated and the right one for the platform is selected at compile time. - -// Bindgen lints -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] -#![allow(improper_ctypes)] -#![allow(clippy::all)] -// Temporarily allow UB nullptr dereference in bindgen layout tests until fixed upstream: -// https://github.com/rust-lang/rust-bindgen/pull/2055 -// https://github.com/rust-lang/rust-bindgen/pull/2064 -#![allow(deref_nullptr)] -#![allow(dead_code)] - -use jni_sys::*; -use ndk_sys::{ARect, AConfiguration, AInputQueue, ALooper, AAssetManager, ANativeWindow}; -use libc::{size_t, pthread_t, pthread_mutex_t, pthread_cond_t}; - -#[cfg(all( - any(target_os = "android", feature = "test"), - any(target_arch = "arm", target_arch = "armv7") -))] -include!("ffi_arm.rs"); - -#[cfg(all(any(target_os = "android", feature = "test"), target_arch = "aarch64"))] -include!("ffi_aarch64.rs"); - -#[cfg(all(any(target_os = "android", feature = "test"), target_arch = "x86"))] -include!("ffi_i686.rs"); - -#[cfg(all(any(target_os = "android", feature = "test"), target_arch = "x86_64"))] -include!("ffi_x86_64.rs"); diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs deleted file mode 100644 index 2c91497..0000000 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ /dev/null @@ -1,6340 +0,0 @@ -/* automatically generated by rust-bindgen 0.59.2 */ - -pub const __BIONIC__: u32 = 1; -pub const __WORDSIZE: u32 = 64; -pub const __bos_level: u32 = 0; -pub const __ANDROID_API_FUTURE__: u32 = 10000; -pub const __ANDROID_API__: u32 = 10000; -pub const __ANDROID_API_G__: u32 = 9; -pub const __ANDROID_API_I__: u32 = 14; -pub const __ANDROID_API_J__: u32 = 16; -pub const __ANDROID_API_J_MR1__: u32 = 17; -pub const __ANDROID_API_J_MR2__: u32 = 18; -pub const __ANDROID_API_K__: u32 = 19; -pub const __ANDROID_API_L__: u32 = 21; -pub const __ANDROID_API_L_MR1__: u32 = 22; -pub const __ANDROID_API_M__: u32 = 23; -pub const __ANDROID_API_N__: u32 = 24; -pub const __ANDROID_API_N_MR1__: u32 = 25; -pub const __ANDROID_API_O__: u32 = 26; -pub const __ANDROID_API_O_MR1__: u32 = 27; -pub const __ANDROID_API_P__: u32 = 28; -pub const __ANDROID_API_Q__: u32 = 29; -pub const __ANDROID_API_R__: u32 = 30; -pub const __NDK_MAJOR__: u32 = 21; -pub const __NDK_MINOR__: u32 = 1; -pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 6352462; -pub const __NDK_CANARY__: u32 = 0; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const WCHAR_MIN: u8 = 0u8; -pub const INT8_MIN: i32 = -128; -pub const INT8_MAX: u32 = 127; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST8_MAX: u32 = 127; -pub const UINT8_MAX: u32 = 255; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_FAST8_MAX: u32 = 255; -pub const INT16_MIN: i32 = -32768; -pub const INT16_MAX: u32 = 32767; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const UINT16_MAX: u32 = 65535; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const INT32_MIN: i32 = -2147483648; -pub const INT32_MAX: u32 = 2147483647; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 4294967295; -pub const WINT_MIN: u32 = 0; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const FPSIMD_MAGIC: u32 = 1179680769; -pub const ESR_MAGIC: u32 = 1163088385; -pub const EXTRA_MAGIC: u32 = 1163416577; -pub const SVE_MAGIC: u32 = 1398162689; -pub const __SVE_VQ_BYTES: u32 = 16; -pub const __SVE_VQ_MIN: u32 = 1; -pub const __SVE_VQ_MAX: u32 = 512; -pub const __SVE_VL_MIN: u32 = 16; -pub const __SVE_VL_MAX: u32 = 8192; -pub const __SVE_NUM_ZREGS: u32 = 32; -pub const __SVE_NUM_PREGS: u32 = 16; -pub const __SVE_ZREGS_OFFSET: u32 = 0; -pub const SVE_VQ_BYTES: u32 = 16; -pub const SVE_VQ_MIN: u32 = 1; -pub const SVE_VQ_MAX: u32 = 512; -pub const SVE_VL_MIN: u32 = 16; -pub const SVE_VL_MAX: u32 = 8192; -pub const SVE_NUM_ZREGS: u32 = 32; -pub const SVE_NUM_PREGS: u32 = 16; -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 PASS_MAX: u32 = 128; -pub const NL_ARGMAX: u32 = 9; -pub const NL_LANGMAX: u32 = 14; -pub const NL_MSGMAX: u32 = 32767; -pub const NL_NMAX: u32 = 1; -pub const NL_SETMAX: u32 = 255; -pub const NL_TEXTMAX: u32 = 255; -pub const TMP_MAX: u32 = 308915776; -pub const CHAR_BIT: u32 = 8; -pub const LONG_BIT: u32 = 64; -pub const WORD_BIT: u32 = 32; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MIN: u32 = 0; -pub const CHAR_MAX: u32 = 255; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: i32 = -1; -pub const LONG_MAX: u64 = 9223372036854775807; -pub const LONG_MIN: i64 = -9223372036854775808; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MAX: u64 = 9223372036854775807; -pub const ULONG_LONG_MAX: i32 = -1; -pub const UID_MAX: u32 = 4294967295; -pub const GID_MAX: u32 = 4294967295; -pub const SIZE_T_MAX: i32 = -1; -pub const SSIZE_MAX: u64 = 9223372036854775807; -pub const MB_LEN_MAX: u32 = 4; -pub const NZERO: u32 = 20; -pub const IOV_MAX: u32 = 1024; -pub const SEM_VALUE_MAX: u32 = 1073741823; -pub const _POSIX_VERSION: u32 = 200809; -pub const _POSIX2_VERSION: u32 = 200809; -pub const _XOPEN_VERSION: u32 = 700; -pub const __BIONIC_POSIX_FEATURE_MISSING: i32 = -1; -pub const _POSIX_ASYNCHRONOUS_IO: i32 = -1; -pub const _POSIX_CHOWN_RESTRICTED: u32 = 1; -pub const _POSIX_CPUTIME: u32 = 200809; -pub const _POSIX_FSYNC: u32 = 200809; -pub const _POSIX_IPV6: u32 = 200809; -pub const _POSIX_MAPPED_FILES: u32 = 200809; -pub const _POSIX_MEMLOCK_RANGE: u32 = 200809; -pub const _POSIX_MEMORY_PROTECTION: u32 = 200809; -pub const _POSIX_MESSAGE_PASSING: i32 = -1; -pub const _POSIX_MONOTONIC_CLOCK: u32 = 200809; -pub const _POSIX_NO_TRUNC: u32 = 1; -pub const _POSIX_PRIORITIZED_IO: i32 = -1; -pub const _POSIX_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_RAW_SOCKETS: u32 = 200809; -pub const _POSIX_READER_WRITER_LOCKS: u32 = 200809; -pub const _POSIX_REGEXP: u32 = 1; -pub const _POSIX_SAVED_IDS: u32 = 1; -pub const _POSIX_SEMAPHORES: u32 = 200809; -pub const _POSIX_SHARED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_SHELL: u32 = 1; -pub const _POSIX_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_SYNCHRONIZED_IO: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKADDR: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKSIZE: u32 = 200809; -pub const _POSIX_THREAD_CPUTIME: u32 = 200809; -pub const _POSIX_THREAD_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_THREAD_PROCESS_SHARED: u32 = 200809; -pub const _POSIX_THREAD_ROBUST_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_ROBUST_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_SAFE_FUNCTIONS: u32 = 200809; -pub const _POSIX_THREAD_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_THREADS: u32 = 200809; -pub const _POSIX_TIMERS: u32 = 200809; -pub const _POSIX_TRACE: i32 = -1; -pub const _POSIX_TRACE_EVENT_FILTER: i32 = -1; -pub const _POSIX_TRACE_INHERIT: i32 = -1; -pub const _POSIX_TRACE_LOG: i32 = -1; -pub const _POSIX_TYPED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_VDISABLE: u8 = 0u8; -pub const _POSIX2_C_BIND: u32 = 200809; -pub const _POSIX2_C_DEV: i32 = -1; -pub const _POSIX2_CHAR_TERM: u32 = 200809; -pub const _POSIX2_FORT_DEV: i32 = -1; -pub const _POSIX2_FORT_RUN: i32 = -1; -pub const _POSIX2_LOCALEDEF: i32 = -1; -pub const _POSIX2_SW_DEV: i32 = -1; -pub const _POSIX2_UPE: i32 = -1; -pub const _POSIX_V7_ILP32_OFF32: i32 = -1; -pub const _POSIX_V7_ILP32_OFFBIG: i32 = -1; -pub const _POSIX_V7_LP64_OFF64: u32 = 1; -pub const _POSIX_V7_LPBIG_OFFBIG: u32 = 1; -pub const _XOPEN_CRYPT: i32 = -1; -pub const _XOPEN_ENH_I18N: u32 = 1; -pub const _XOPEN_LEGACY: i32 = -1; -pub const _XOPEN_REALTIME: u32 = 1; -pub const _XOPEN_REALTIME_THREADS: u32 = 1; -pub const _XOPEN_SHM: u32 = 1; -pub const _XOPEN_STREAMS: i32 = -1; -pub const _XOPEN_UNIX: 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_CLOCKRES_MIN: u32 = 20000000; -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_SS_REPL_MAX: u32 = 4; -pub const _POSIX_SYMLINK_MAX: u32 = 255; -pub const _POSIX_SYMLOOP_MAX: u32 = 8; -pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; -pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; -pub const _POSIX_TIMER_MAX: u32 = 32; -pub const _POSIX_TRACE_EVENT_NAME_MAX: u32 = 30; -pub const _POSIX_TRACE_NAME_MAX: u32 = 8; -pub const _POSIX_TRACE_SYS_MAX: u32 = 8; -pub const _POSIX_TRACE_USER_EVENT_MAX: u32 = 32; -pub const _POSIX_TTY_NAME_MAX: u32 = 9; -pub const _POSIX_TZNAME_MAX: u32 = 6; -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_CHARCLASS_NAME_MAX: u32 = 14; -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 _XOPEN_IOV_MAX: u32 = 16; -pub const _XOPEN_NAME_MAX: u32 = 255; -pub const _XOPEN_PATH_MAX: u32 = 1024; -pub const HOST_NAME_MAX: u32 = 255; -pub const LOGIN_NAME_MAX: u32 = 256; -pub const TTY_NAME_MAX: u32 = 32; -pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const PTHREAD_KEYS_MAX: u32 = 128; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 5120; -pub const SIGSTKSZ: u32 = 16384; -pub const _KERNEL__NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 64; -pub const _NSIG_WORDS: u32 = 1; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const __SIGRTMIN: u32 = 32; -pub const __SIGRTMAX: u32 = 64; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const NSIGSEGV: u32 = 7; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const NSIGTRAP: u32 = 5; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const NSIGSYS: u32 = 1; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const _NSIG: u32 = 65; -pub const NSIG: u32 = 65; -pub const PAGE_SIZE: u32 = 4096; -pub const PAGE_MASK: i32 = -4096; -pub const NGREG: u32 = 34; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -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_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const FD_SETSIZE: u32 = 1024; -pub const CLOCKS_PER_SEC: u32 = 1000000; -pub const TIME_UTC: u32 = 1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SCHED_OTHER: u32 = 0; -pub const PTHREAD_ONCE_INIT: u32 = 0; -pub const PTHREAD_BARRIER_SERIAL_THREAD: i32 = -1; -pub const PTHREAD_STACK_MIN: u32 = 16384; -pub const PTHREAD_CREATE_DETACHED: u32 = 1; -pub const PTHREAD_CREATE_JOINABLE: u32 = 0; -pub const PTHREAD_EXPLICIT_SCHED: u32 = 0; -pub const PTHREAD_INHERIT_SCHED: u32 = 1; -pub const PTHREAD_PRIO_NONE: u32 = 0; -pub const PTHREAD_PRIO_INHERIT: u32 = 1; -pub const PTHREAD_PROCESS_PRIVATE: u32 = 0; -pub const PTHREAD_PROCESS_SHARED: u32 = 1; -pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; -pub const PTHREAD_SCOPE_PROCESS: u32 = 1; -pub const __GNUC_VA_LIST: u32 = 1; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; -pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; -pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; -pub const PRId8: &[u8; 2usize] = b"d\0"; -pub const PRId16: &[u8; 2usize] = b"d\0"; -pub const PRId32: &[u8; 2usize] = b"d\0"; -pub const PRId64: &[u8; 3usize] = b"ld\0"; -pub const PRIdLEAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST16: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST32: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST64: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdFAST16: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST32: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST64: &[u8; 3usize] = b"ld\0"; -pub const PRIdMAX: &[u8; 3usize] = b"jd\0"; -pub const PRIdPTR: &[u8; 3usize] = b"ld\0"; -pub const PRIi8: &[u8; 2usize] = b"i\0"; -pub const PRIi16: &[u8; 2usize] = b"i\0"; -pub const PRIi32: &[u8; 2usize] = b"i\0"; -pub const PRIi64: &[u8; 3usize] = b"li\0"; -pub const PRIiLEAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST16: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST32: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST64: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiFAST16: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST32: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST64: &[u8; 3usize] = b"li\0"; -pub const PRIiMAX: &[u8; 3usize] = b"ji\0"; -pub const PRIiPTR: &[u8; 3usize] = b"li\0"; -pub const PRIo8: &[u8; 2usize] = b"o\0"; -pub const PRIo16: &[u8; 2usize] = b"o\0"; -pub const PRIo32: &[u8; 2usize] = b"o\0"; -pub const PRIo64: &[u8; 3usize] = b"lo\0"; -pub const PRIoLEAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST16: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST32: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST64: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoFAST16: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST32: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST64: &[u8; 3usize] = b"lo\0"; -pub const PRIoMAX: &[u8; 3usize] = b"jo\0"; -pub const PRIoPTR: &[u8; 3usize] = b"lo\0"; -pub const PRIu8: &[u8; 2usize] = b"u\0"; -pub const PRIu16: &[u8; 2usize] = b"u\0"; -pub const PRIu32: &[u8; 2usize] = b"u\0"; -pub const PRIu64: &[u8; 3usize] = b"lu\0"; -pub const PRIuLEAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST16: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST32: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST64: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuFAST16: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST32: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST64: &[u8; 3usize] = b"lu\0"; -pub const PRIuMAX: &[u8; 3usize] = b"ju\0"; -pub const PRIuPTR: &[u8; 3usize] = b"lu\0"; -pub const PRIx8: &[u8; 2usize] = b"x\0"; -pub const PRIx16: &[u8; 2usize] = b"x\0"; -pub const PRIx32: &[u8; 2usize] = b"x\0"; -pub const PRIx64: &[u8; 3usize] = b"lx\0"; -pub const PRIxLEAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST16: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST32: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST64: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxFAST16: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST32: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST64: &[u8; 3usize] = b"lx\0"; -pub const PRIxMAX: &[u8; 3usize] = b"jx\0"; -pub const PRIxPTR: &[u8; 3usize] = b"lx\0"; -pub const PRIX8: &[u8; 2usize] = b"X\0"; -pub const PRIX16: &[u8; 2usize] = b"X\0"; -pub const PRIX32: &[u8; 2usize] = b"X\0"; -pub const PRIX64: &[u8; 3usize] = b"lX\0"; -pub const PRIXLEAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST16: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST32: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST64: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXFAST16: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST32: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST64: &[u8; 3usize] = b"lX\0"; -pub const PRIXMAX: &[u8; 3usize] = b"jX\0"; -pub const PRIXPTR: &[u8; 3usize] = b"lX\0"; -pub const SCNd8: &[u8; 4usize] = b"hhd\0"; -pub const SCNd16: &[u8; 3usize] = b"hd\0"; -pub const SCNd32: &[u8; 2usize] = b"d\0"; -pub const SCNd64: &[u8; 3usize] = b"ld\0"; -pub const SCNdLEAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdLEAST16: &[u8; 3usize] = b"hd\0"; -pub const SCNdLEAST32: &[u8; 2usize] = b"d\0"; -pub const SCNdLEAST64: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdFAST16: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST32: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST64: &[u8; 3usize] = b"ld\0"; -pub const SCNdMAX: &[u8; 3usize] = b"jd\0"; -pub const SCNdPTR: &[u8; 3usize] = b"ld\0"; -pub const SCNi8: &[u8; 4usize] = b"hhi\0"; -pub const SCNi16: &[u8; 3usize] = b"hi\0"; -pub const SCNi32: &[u8; 2usize] = b"i\0"; -pub const SCNi64: &[u8; 3usize] = b"li\0"; -pub const SCNiLEAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiLEAST16: &[u8; 3usize] = b"hi\0"; -pub const SCNiLEAST32: &[u8; 2usize] = b"i\0"; -pub const SCNiLEAST64: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiFAST16: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST32: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST64: &[u8; 3usize] = b"li\0"; -pub const SCNiMAX: &[u8; 3usize] = b"ji\0"; -pub const SCNiPTR: &[u8; 3usize] = b"li\0"; -pub const SCNo8: &[u8; 4usize] = b"hho\0"; -pub const SCNo16: &[u8; 3usize] = b"ho\0"; -pub const SCNo32: &[u8; 2usize] = b"o\0"; -pub const SCNo64: &[u8; 3usize] = b"lo\0"; -pub const SCNoLEAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoLEAST16: &[u8; 3usize] = b"ho\0"; -pub const SCNoLEAST32: &[u8; 2usize] = b"o\0"; -pub const SCNoLEAST64: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoFAST16: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST32: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST64: &[u8; 3usize] = b"lo\0"; -pub const SCNoMAX: &[u8; 3usize] = b"jo\0"; -pub const SCNoPTR: &[u8; 3usize] = b"lo\0"; -pub const SCNu8: &[u8; 4usize] = b"hhu\0"; -pub const SCNu16: &[u8; 3usize] = b"hu\0"; -pub const SCNu32: &[u8; 2usize] = b"u\0"; -pub const SCNu64: &[u8; 3usize] = b"lu\0"; -pub const SCNuLEAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuLEAST16: &[u8; 3usize] = b"hu\0"; -pub const SCNuLEAST32: &[u8; 2usize] = b"u\0"; -pub const SCNuLEAST64: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuFAST16: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST32: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST64: &[u8; 3usize] = b"lu\0"; -pub const SCNuMAX: &[u8; 3usize] = b"ju\0"; -pub const SCNuPTR: &[u8; 3usize] = b"lu\0"; -pub const SCNx8: &[u8; 4usize] = b"hhx\0"; -pub const SCNx16: &[u8; 3usize] = b"hx\0"; -pub const SCNx32: &[u8; 2usize] = b"x\0"; -pub const SCNx64: &[u8; 3usize] = b"lx\0"; -pub const SCNxLEAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxLEAST16: &[u8; 3usize] = b"hx\0"; -pub const SCNxLEAST32: &[u8; 2usize] = b"x\0"; -pub const SCNxLEAST64: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxFAST16: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST32: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST64: &[u8; 3usize] = b"lx\0"; -pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; -pub const SCNxPTR: &[u8; 3usize] = b"lx\0"; -extern "C" { - pub fn android_get_application_target_sdk_version() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn android_get_device_api_level() -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { - pub fd: ::std::os::raw::c_int, - pub events: ::std::os::raw::c_short, - pub revents: ::std::os::raw::c_short, -} -#[test] -fn bindgen_test_layout_pollfd() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pollfd)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pollfd)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(fd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).events as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(events) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).revents as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(revents) - ) - ); -} -pub type wchar_t = ::std::os::raw::c_uint; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct max_align_t { - pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, - pub __bindgen_padding_0: u64, - pub __clang_max_align_nonce2: u128, -} -#[test] -fn bindgen_test_layout_max_align_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(max_align_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(max_align_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce2) - ) - ); -} -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 __intptr_t = ::std::os::raw::c_long; -pub type __uintptr_t = ::std::os::raw::c_ulong; -pub type int_least8_t = i8; -pub type uint_least8_t = u8; -pub type int_least16_t = i16; -pub type uint_least16_t = u16; -pub type int_least32_t = i32; -pub type uint_least32_t = u32; -pub type int_least64_t = i64; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type uint_fast8_t = u8; -pub type int_fast64_t = i64; -pub type uint_fast64_t = u64; -pub type int_fast16_t = i64; -pub type uint_fast16_t = u64; -pub type int_fast32_t = i64; -pub type uint_fast32_t = u64; -pub type uintmax_t = u64; -pub type intmax_t = i64; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 16usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = ::std::os::raw::c_uint; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; -pub type __kernel_uid_t = ::std::os::raw::c_uint; -pub type __kernel_gid_t = ::std::os::raw::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_old_dev_t = ::std::os::raw::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = ::std::os::raw::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = ::std::os::raw::c_uint; -pub type __gid_t = __kernel_gid32_t; -pub type gid_t = __gid_t; -pub type __uid_t = __kernel_uid32_t; -pub type uid_t = __uid_t; -pub type __pid_t = __kernel_pid_t; -pub type pid_t = __pid_t; -pub type __id_t = u32; -pub type id_t = __id_t; -pub type blkcnt_t = ::std::os::raw::c_ulong; -pub type blksize_t = ::std::os::raw::c_ulong; -pub type caddr_t = __kernel_caddr_t; -pub type clock_t = __kernel_clock_t; -pub type __clockid_t = __kernel_clockid_t; -pub type clockid_t = __clockid_t; -pub type daddr_t = __kernel_daddr_t; -pub type fsblkcnt_t = ::std::os::raw::c_ulong; -pub type fsfilcnt_t = ::std::os::raw::c_ulong; -pub type __mode_t = __kernel_mode_t; -pub type mode_t = __mode_t; -pub type __key_t = __kernel_key_t; -pub type key_t = __key_t; -pub type __ino_t = __kernel_ino_t; -pub type ino_t = __ino_t; -pub type ino64_t = u64; -pub type __nlink_t = u32; -pub type nlink_t = __nlink_t; -pub type __timer_t = *mut ::std::os::raw::c_void; -pub type timer_t = __timer_t; -pub type __suseconds_t = __kernel_suseconds_t; -pub type suseconds_t = __suseconds_t; -pub type __useconds_t = u32; -pub type useconds_t = __useconds_t; -pub type dev_t = u64; -pub type __time_t = __kernel_time_t; -pub type time_t = __time_t; -pub type off_t = i64; -pub type loff_t = off_t; -pub type off64_t = loff_t; -pub type __socklen_t = u32; -pub type socklen_t = __socklen_t; -pub type __va_list = [u64; 4usize]; -pub type ssize_t = __kernel_ssize_t; -pub type uint_t = ::std::os::raw::c_uint; -pub type uint = ::std::os::raw::c_uint; -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 u_int32_t = u32; -pub type u_int16_t = u16; -pub type u_int8_t = u8; -pub type u_int64_t = u64; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext { - pub fault_address: __u64, - pub regs: [__u64; 31usize], - pub sp: __u64, - pub pc: __u64, - pub pstate: __u64, - pub __bindgen_padding_0: [u8; 8usize], - pub __reserved: [__u8; 4096usize], -} -#[test] -fn bindgen_test_layout_sigcontext() { - assert_eq!( - ::std::mem::size_of::(), - 4384usize, - concat!("Size of: ", stringify!(sigcontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(sigcontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fault_address as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fault_address) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).regs as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(regs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pc as *const _ as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(pc) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pstate as *const _ as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(pstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _aarch64_ctx { - pub magic: __u32, - pub size: __u32, -} -#[test] -fn bindgen_test_layout__aarch64_ctx() { - assert_eq!( - ::std::mem::size_of::<_aarch64_ctx>(), - 8usize, - concat!("Size of: ", stringify!(_aarch64_ctx)) - ); - assert_eq!( - ::std::mem::align_of::<_aarch64_ctx>(), - 4usize, - concat!("Alignment of ", stringify!(_aarch64_ctx)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_aarch64_ctx>())).magic as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_aarch64_ctx), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_aarch64_ctx>())).size as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_aarch64_ctx), - "::", - stringify!(size) - ) - ); -} -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct fpsimd_context { - pub head: _aarch64_ctx, - pub fpsr: __u32, - pub fpcr: __u32, - pub vregs: [__uint128_t; 32usize], -} -#[test] -fn bindgen_test_layout_fpsimd_context() { - assert_eq!( - ::std::mem::size_of::(), - 528usize, - concat!("Size of: ", stringify!(fpsimd_context)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(fpsimd_context)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).head as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fpsimd_context), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpsr as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(fpsimd_context), - "::", - stringify!(fpsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpcr as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(fpsimd_context), - "::", - stringify!(fpcr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vregs as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(fpsimd_context), - "::", - stringify!(vregs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct esr_context { - pub head: _aarch64_ctx, - pub esr: __u64, -} -#[test] -fn bindgen_test_layout_esr_context() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(esr_context)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(esr_context)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).head as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(esr_context), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esr as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(esr_context), - "::", - stringify!(esr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct extra_context { - pub head: _aarch64_ctx, - pub datap: __u64, - pub size: __u32, - pub __reserved: [__u32; 3usize], -} -#[test] -fn bindgen_test_layout_extra_context() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(extra_context)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(extra_context)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).head as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(extra_context), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).datap as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(extra_context), - "::", - stringify!(datap) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(extra_context), - "::", - stringify!(size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(extra_context), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sve_context { - pub head: _aarch64_ctx, - pub vl: __u16, - pub __reserved: [__u16; 3usize], -} -#[test] -fn bindgen_test_layout_sve_context() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sve_context)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sve_context)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).head as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sve_context), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vl as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sve_context), - "::", - stringify!(vl) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(sve_context), - "::", - stringify!(__reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigset_t { - pub sig: [::std::os::raw::c_ulong; 1usize], -} -#[test] -fn bindgen_test_layout_sigset_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigset_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigset_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sig as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigset_t), - "::", - stringify!(sig) - ) - ); -} -pub type old_sigset_t = ::std::os::raw::c_ulong; -pub type __signalfn_t = ::std::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::std::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sigaction { - pub sa_handler: __sighandler_t, - pub sa_flags: ::std::os::raw::c_ulong, - pub sa_restorer: __sigrestore_t, - pub sa_mask: sigset_t, -} -#[test] -fn bindgen_test_layout___kernel_sigaction() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_handler as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_restorer as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_restorer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_mask as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_mask) - ) - ); -} -#[repr(C)] -pub struct sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_flags: ::std::os::raw::c_int, - pub ss_size: size_t, -} -#[test] -fn bindgen_test_layout_sigaltstack() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaltstack)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_sp as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_size) - ) - ); -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_int as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_int) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_ptr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_ptr) - ) - ); -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { - pub _kill: __sifields__bindgen_ty_1, - pub _timer: __sifields__bindgen_ty_2, - pub _rt: __sifields__bindgen_ty_3, - pub _sigchld: __sifields__bindgen_ty_4, - pub _sigfault: __sifields__bindgen_ty_5, - pub _sigpoll: __sifields__bindgen_ty_6, - pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_uid) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { - pub _tid: __kernel_timer_t, - pub _overrun: ::std::os::raw::c_int, - pub _sigval: sigval_t, - pub _sys_private: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_2>(), - 24usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_2>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._overrun as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_overrun) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sigval) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sys_private as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sys_private) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _sigval: sigval_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_3>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_3>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_sigval) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _status: ::std::os::raw::c_int, - pub _utime: __kernel_clock_t, - pub _stime: __kernel_clock_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_4() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_4>(), - 32usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_4>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._status as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._utime as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_utime) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._stime as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_stime) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { - pub _addr: *mut ::std::os::raw::c_void, - pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _addr_lsb: ::std::os::raw::c_short, - pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, - pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { - pub _dummy_bnd: [::std::os::raw::c_char; 8usize], - pub _lower: *mut ::std::os::raw::c_void, - pub _upper: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 24usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>())) - ._dummy_bnd as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_dummy_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._lower - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_lower) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._upper - as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_upper) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { - pub _dummy_pkey: [::std::os::raw::c_char; 8usize], - pub _pkey: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>())) - ._dummy_pkey as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_dummy_pkey) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>()))._pkey - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 24usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_lsb) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_bnd as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_pkey - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5>(), - 32usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5>()))._addr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5), - "::", - stringify!(_addr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { - pub _band: ::std::os::raw::c_long, - pub _fd: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_6() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_6>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_6>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._band as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_band) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._fd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_fd) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { - pub _call_addr: *mut ::std::os::raw::c_void, - pub _syscall: ::std::os::raw::c_int, - pub _arch: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_7() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_7>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_7>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._call_addr as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_call_addr) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._syscall as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_syscall) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._arch as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_arch) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields() { - assert_eq!( - ::std::mem::size_of::<__sifields>(), - 32usize, - concat!("Size of: ", stringify!(__sifields)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._kill as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_kill) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._timer as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_timer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._rt as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_rt) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigchld as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigchld) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigfault as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigfault) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigpoll as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigpoll) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigsys as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigsys) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { - pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { - pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, - pub _si_pad: [::std::os::raw::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub _sifields: __sifields, -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!( - "Alignment of ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_signo as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_signo) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_errno as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_errno) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_code as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_code) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sifields as *const _ - as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_sifields) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._si_pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1), - "::", - stringify!(_si_pad) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(siginfo)) - ); -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_value: sigval_t, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_notify: ::std::os::raw::c_int, - pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { - pub _pad: [::std::os::raw::c_int; 12usize], - pub _tid: ::std::os::raw::c_int, - pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { - pub _function: ::std::option::Option, - pub _attribute: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!( - "Size of: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!( - "Alignment of ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._function as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_function) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._attribute as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_attribute) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_pad) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sigev_thread as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_sigev_thread) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_value as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_value) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_signo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_signo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_notify as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._sigev_un as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(_sigev_un) - ) - ); -} -pub type sigevent_t = sigevent; -pub type sig_atomic_t = ::std::os::raw::c_int; -pub type sig_t = __sighandler_t; -pub type sighandler_t = __sighandler_t; -pub type sigset64_t = sigset_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub sa_flags: ::std::os::raw::c_int, - pub __bindgen_anon_1: sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction64 { - pub sa_flags: ::std::os::raw::c_int, - pub __bindgen_anon_1: sigaction64__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction64__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction64() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigaction64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_regs_struct { - pub regs: [u64; 31usize], - pub sp: u64, - pub pc: u64, - pub pstate: u64, -} -#[test] -fn bindgen_test_layout_user_regs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 272usize, - concat!("Size of: ", stringify!(user_regs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(user_regs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).regs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(regs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pc as *const _ as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(pc) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pstate as *const _ as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(pstate) - ) - ); -} -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct user_fpsimd_struct { - pub vregs: [__uint128_t; 32usize], - pub fpsr: u32, - pub fpcr: u32, -} -#[test] -fn bindgen_test_layout_user_fpsimd_struct() { - assert_eq!( - ::std::mem::size_of::(), - 528usize, - concat!("Size of: ", stringify!(user_fpsimd_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(user_fpsimd_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_fpsimd_struct), - "::", - stringify!(vregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpsr as *const _ as usize }, - 512usize, - concat!( - "Offset of field: ", - stringify!(user_fpsimd_struct), - "::", - stringify!(fpsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpcr as *const _ as usize }, - 516usize, - concat!( - "Offset of field: ", - stringify!(user_fpsimd_struct), - "::", - stringify!(fpcr) - ) - ); -} -pub type greg_t = ::std::os::raw::c_ulong; -pub type gregset_t = [greg_t; 34usize]; -pub type fpregset_t = user_fpsimd_struct; -pub type mcontext_t = sigcontext; -#[repr(C)] -#[repr(align(16))] -pub struct ucontext { - pub uc_flags: ::std::os::raw::c_ulong, - pub uc_link: *mut ucontext, - pub uc_stack: stack_t, - pub __bindgen_anon_1: ucontext__bindgen_ty_1, - pub __padding: [::std::os::raw::c_char; 120usize], - pub __bindgen_padding_0: u64, - pub uc_mcontext: mcontext_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ucontext__bindgen_ty_1 { - pub uc_sigmask: sigset_t, - pub uc_sigmask64: sigset64_t, -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask64 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask64) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext() { - assert_eq!( - ::std::mem::size_of::(), - 4560usize, - concat!("Size of: ", stringify!(ucontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(ucontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_link as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_link) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_stack as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__padding as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(__padding) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_mcontext as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_mcontext) - ) - ); -} -pub type ucontext_t = ucontext; -extern "C" { - pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int; -} -extern "C" { - pub static sys_siglist: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub static sys_signame: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub fn sigaction( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction, - __old_action: *mut sigaction, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaction64( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction64, - __old_action: *mut sigaction64, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn siginterrupt( - __signal: ::std::os::raw::c_int, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn signal(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn sigaddset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaddset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember( - __set: *const sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember64( - __set: *const sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend(__mask: *const sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend64(__mask: *const sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait( - __set: *const sigset_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait64( - __set: *const sigset64_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sighold(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigignore(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpause(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigrelse(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigset(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn raise(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn kill(__pid: pid_t, __signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn killpg( - __pgrp: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn tgkill( - __tgid: ::std::os::raw::c_int, - __tid: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaltstack( - __new_signal_stack: *const stack_t, - __old_signal_stack: *mut stack_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn psiginfo(__info: *const siginfo_t, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn sigqueue( - __pid: pid_t, - __signal: ::std::os::raw::c_int, - __value: sigval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait( - __set: *const sigset_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait64( - __set: *const sigset64_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo64(__set: *const sigset64_t, __info: *mut siginfo_t) - -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { - pub tv_sec: __kernel_time64_t, - pub tv_nsec: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___kernel_timespec() { - assert_eq!( - ::std::mem::size_of::<__kernel_timespec>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_timespec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_timespec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_nsec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { - pub it_interval: __kernel_timespec, - pub it_value: __kernel_timespec, -} -#[test] -fn bindgen_test_layout___kernel_itimerspec() { - assert_eq!( - ::std::mem::size_of::<__kernel_itimerspec>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_itimerspec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { - pub tv_sec: __kernel_long_t, - pub tv_usec: __kernel_long_t, -} -#[test] -fn bindgen_test_layout___kernel_old_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_old_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_old_timeval>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { - pub tv_sec: __s64, - pub tv_usec: __s64, -} -#[test] -fn bindgen_test_layout___kernel_sock_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_sock_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sock_timeval>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: __kernel_time_t, - pub tv_usec: __kernel_suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} -#[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::(), - 32usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[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::(), - 32usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_value) - ) - ); -} -pub type fd_mask = ::std::os::raw::c_ulong; -#[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::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -extern "C" { - pub fn __FD_CLR_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_SET_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_ISSET_chk( - arg1: ::std::os::raw::c_int, - arg2: *const fd_set, - arg3: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn select( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *mut timeval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect64( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn gettimeofday(__tv: *mut timeval, __tz: *mut timezone) -> ::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 getitimer( - __which: ::std::os::raw::c_int, - __current_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn setitimer( - __which: ::std::os::raw::c_int, - __new_value: *const itimerval, - __old_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn utimes( - __path: *const ::std::os::raw::c_char, - __times: *const timeval, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __locale_t { - _unused: [u8; 0], -} -pub type locale_t = *mut __locale_t; -extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -extern "C" { - pub static mut timezone: ::std::os::raw::c_long; -} -#[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::(), - 56usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_min as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_min) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_hour as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_hour) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mday as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mon as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mon) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_year as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_year) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_wday as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_wday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_yday as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_yday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_isdst as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_isdst) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_gmtoff as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_gmtoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_zone as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_zone) - ) - ); -} -extern "C" { - pub fn time(__t: *mut time_t) -> time_t; -} -extern "C" { - pub fn nanosleep( - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn asctime(__tm: *const tm) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn asctime_r( - __tm: *const tm, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn difftime(__lhs: time_t, __rhs: time_t) -> f64; -} -extern "C" { - pub fn mktime(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn localtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn localtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn gmtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn gmtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn strptime( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strptime_l( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - __l: locale_t, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strftime( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - ) -> size_t; -} -extern "C" { - pub fn strftime_l( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - __l: locale_t, - ) -> size_t; -} -extern "C" { - pub fn ctime(__t: *const time_t) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn ctime_r( - __t: *const time_t, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn tzset(); -} -extern "C" { - pub fn clock() -> clock_t; -} -extern "C" { - pub fn clock_getcpuclockid(__pid: pid_t, __clock: *mut clockid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_getres(__clock: clockid_t, __resolution: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_gettime(__clock: clockid_t, __ts: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_nanosleep( - __clock: clockid_t, - __flags: ::std::os::raw::c_int, - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_settime(__clock: clockid_t, __ts: *const timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_create( - __clock: clockid_t, - __event: *mut sigevent, - __timer_ptr: *mut timer_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_delete(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_settime( - __timer: timer_t, - __flags: ::std::os::raw::c_int, - __new_value: *const itimerspec, - __old_value: *mut itimerspec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_gettime(__timer: timer_t, __ts: *mut itimerspec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_getoverrun(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timelocal(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timegm(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timespec_get( - __ts: *mut timespec, - __base: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -pub type nfds_t = ::std::os::raw::c_uint; -extern "C" { - pub fn poll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout_ms: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll64( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clone_args { - pub flags: __u64, - pub pidfd: __u64, - pub child_tid: __u64, - pub parent_tid: __u64, - pub exit_signal: __u64, - pub stack: __u64, - pub stack_size: __u64, - pub tls: __u64, -} -#[test] -fn bindgen_test_layout_clone_args() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(clone_args)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(clone_args)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pidfd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(pidfd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).child_tid as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(child_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).parent_tid as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(parent_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).exit_signal as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(exit_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tls as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(tls) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sched_param { - pub sched_priority: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sched_param() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sched_param)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sched_param)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sched_param), - "::", - stringify!(sched_priority) - ) - ); -} -extern "C" { - pub fn sched_setscheduler( - __pid: pid_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getscheduler(__pid: pid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_yield() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_max(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_min(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_setparam(__pid: pid_t, __param: *const sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getparam(__pid: pid_t, __param: *mut sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_rr_get_interval(__pid: pid_t, __quantum: *mut timespec) -> ::std::os::raw::c_int; -} -pub const PTHREAD_MUTEX_NORMAL: ::std::os::raw::c_uint = 0; -pub const PTHREAD_MUTEX_RECURSIVE: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_ERRORCHECK: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_ERRORCHECK_NP: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_RECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_DEFAULT: ::std::os::raw::c_uint = 0; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; -pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub type __pthread_cleanup_func_t = - ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __pthread_cleanup_t { - pub __cleanup_prev: *mut __pthread_cleanup_t, - pub __cleanup_routine: __pthread_cleanup_func_t, - pub __cleanup_arg: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___pthread_cleanup_t() { - assert_eq!( - ::std::mem::size_of::<__pthread_cleanup_t>(), - 24usize, - concat!("Size of: ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - ::std::mem::align_of::<__pthread_cleanup_t>(), - 8usize, - concat!("Alignment of ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_prev as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_prev) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_routine as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_routine) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_arg as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_arg) - ) - ); -} -extern "C" { - pub fn __pthread_cleanup_push( - c: *mut __pthread_cleanup_t, - arg1: __pthread_cleanup_func_t, - arg2: *mut ::std::os::raw::c_void, - ); -} -extern "C" { - pub fn __pthread_cleanup_pop(arg1: *mut __pthread_cleanup_t, arg2: ::std::os::raw::c_int); -} -pub const AASSET_MODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AASSET_MODE_RANDOM: ::std::os::raw::c_uint = 1; -pub const AASSET_MODE_STREAMING: ::std::os::raw::c_uint = 2; -pub const AASSET_MODE_BUFFER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub const ACONFIGURATION_ORIENTATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_ORIENTATION_PORT: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_ORIENTATION_LAND: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_ORIENTATION_SQUARE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_TOUCHSCREEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_TOUCHSCREEN_NOTOUCH: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_TOUCHSCREEN_STYLUS: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_TOUCHSCREEN_FINGER: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_DENSITY_DEFAULT: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_DENSITY_LOW: ::std::os::raw::c_uint = 120; -pub const ACONFIGURATION_DENSITY_MEDIUM: ::std::os::raw::c_uint = 160; -pub const ACONFIGURATION_DENSITY_TV: ::std::os::raw::c_uint = 213; -pub const ACONFIGURATION_DENSITY_HIGH: ::std::os::raw::c_uint = 240; -pub const ACONFIGURATION_DENSITY_XHIGH: ::std::os::raw::c_uint = 320; -pub const ACONFIGURATION_DENSITY_XXHIGH: ::std::os::raw::c_uint = 480; -pub const ACONFIGURATION_DENSITY_XXXHIGH: ::std::os::raw::c_uint = 640; -pub const ACONFIGURATION_DENSITY_ANY: ::std::os::raw::c_uint = 65534; -pub const ACONFIGURATION_DENSITY_NONE: ::std::os::raw::c_uint = 65535; -pub const ACONFIGURATION_KEYBOARD_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYBOARD_NOKEYS: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYBOARD_QWERTY: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYBOARD_12KEY: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVIGATION_NONAV: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVIGATION_DPAD: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_NAVIGATION_TRACKBALL: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_WHEEL: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_KEYSHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYSHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYSHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYSHIDDEN_SOFT: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENSIZE_SMALL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENSIZE_NORMAL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_LARGE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_SCREENSIZE_XLARGE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_SCREENLONG_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENLONG_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENLONG_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENROUND_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENROUND_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENROUND_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_HDR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_HDR_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_HDR_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_TYPE_NORMAL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_TYPE_DESK: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_CAR: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_UI_MODE_TYPE_TELEVISION: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_UI_MODE_TYPE_APPLIANCE: ::std::os::raw::c_uint = 5; -pub const ACONFIGURATION_UI_MODE_TYPE_WATCH: ::std::os::raw::c_uint = 6; -pub const ACONFIGURATION_UI_MODE_TYPE_VR_HEADSET: ::std::os::raw::c_uint = 7; -pub const ACONFIGURATION_UI_MODE_NIGHT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_NIGHT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_NIGHT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREEN_HEIGHT_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_LTR: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_LAYOUTDIR_RTL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_MCC: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_MNC: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_LOCALE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_TOUCHSCREEN: ::std::os::raw::c_uint = 8; -pub const ACONFIGURATION_KEYBOARD: ::std::os::raw::c_uint = 16; -pub const ACONFIGURATION_KEYBOARD_HIDDEN: ::std::os::raw::c_uint = 32; -pub const ACONFIGURATION_NAVIGATION: ::std::os::raw::c_uint = 64; -pub const ACONFIGURATION_ORIENTATION: ::std::os::raw::c_uint = 128; -pub const ACONFIGURATION_DENSITY: ::std::os::raw::c_uint = 256; -pub const ACONFIGURATION_SCREEN_SIZE: ::std::os::raw::c_uint = 512; -pub const ACONFIGURATION_VERSION: ::std::os::raw::c_uint = 1024; -pub const ACONFIGURATION_SCREEN_LAYOUT: ::std::os::raw::c_uint = 2048; -pub const ACONFIGURATION_UI_MODE: ::std::os::raw::c_uint = 4096; -pub const ACONFIGURATION_SMALLEST_SCREEN_SIZE: ::std::os::raw::c_uint = 8192; -pub const ACONFIGURATION_LAYOUTDIR: ::std::os::raw::c_uint = 16384; -pub const ACONFIGURATION_SCREEN_ROUND: ::std::os::raw::c_uint = 32768; -pub const ACONFIGURATION_COLOR_MODE: ::std::os::raw::c_uint = 65536; -pub const ACONFIGURATION_MNC_ZERO: ::std::os::raw::c_uint = 65535; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const ALOOPER_PREPARE_ALLOW_NON_CALLBACKS: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const ALOOPER_POLL_WAKE: ::std::os::raw::c_int = -1; -pub const ALOOPER_POLL_CALLBACK: ::std::os::raw::c_int = -2; -pub const ALOOPER_POLL_TIMEOUT: ::std::os::raw::c_int = -3; -pub const ALOOPER_POLL_ERROR: ::std::os::raw::c_int = -4; -pub type _bindgen_ty_6 = ::std::os::raw::c_int; -pub const ALOOPER_EVENT_INPUT: ::std::os::raw::c_uint = 1; -pub const ALOOPER_EVENT_OUTPUT: ::std::os::raw::c_uint = 2; -pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; -pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; -pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_7 = ::std::os::raw::c_uint; -pub type va_list = [u64; 4usize]; -pub type __gnuc_va_list = [u64; 4usize]; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} -pub const AKEYCODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AKEYCODE_SOFT_LEFT: ::std::os::raw::c_uint = 1; -pub const AKEYCODE_SOFT_RIGHT: ::std::os::raw::c_uint = 2; -pub const AKEYCODE_HOME: ::std::os::raw::c_uint = 3; -pub const AKEYCODE_BACK: ::std::os::raw::c_uint = 4; -pub const AKEYCODE_CALL: ::std::os::raw::c_uint = 5; -pub const AKEYCODE_ENDCALL: ::std::os::raw::c_uint = 6; -pub const AKEYCODE_0: ::std::os::raw::c_uint = 7; -pub const AKEYCODE_1: ::std::os::raw::c_uint = 8; -pub const AKEYCODE_2: ::std::os::raw::c_uint = 9; -pub const AKEYCODE_3: ::std::os::raw::c_uint = 10; -pub const AKEYCODE_4: ::std::os::raw::c_uint = 11; -pub const AKEYCODE_5: ::std::os::raw::c_uint = 12; -pub const AKEYCODE_6: ::std::os::raw::c_uint = 13; -pub const AKEYCODE_7: ::std::os::raw::c_uint = 14; -pub const AKEYCODE_8: ::std::os::raw::c_uint = 15; -pub const AKEYCODE_9: ::std::os::raw::c_uint = 16; -pub const AKEYCODE_STAR: ::std::os::raw::c_uint = 17; -pub const AKEYCODE_POUND: ::std::os::raw::c_uint = 18; -pub const AKEYCODE_DPAD_UP: ::std::os::raw::c_uint = 19; -pub const AKEYCODE_DPAD_DOWN: ::std::os::raw::c_uint = 20; -pub const AKEYCODE_DPAD_LEFT: ::std::os::raw::c_uint = 21; -pub const AKEYCODE_DPAD_RIGHT: ::std::os::raw::c_uint = 22; -pub const AKEYCODE_DPAD_CENTER: ::std::os::raw::c_uint = 23; -pub const AKEYCODE_VOLUME_UP: ::std::os::raw::c_uint = 24; -pub const AKEYCODE_VOLUME_DOWN: ::std::os::raw::c_uint = 25; -pub const AKEYCODE_POWER: ::std::os::raw::c_uint = 26; -pub const AKEYCODE_CAMERA: ::std::os::raw::c_uint = 27; -pub const AKEYCODE_CLEAR: ::std::os::raw::c_uint = 28; -pub const AKEYCODE_A: ::std::os::raw::c_uint = 29; -pub const AKEYCODE_B: ::std::os::raw::c_uint = 30; -pub const AKEYCODE_C: ::std::os::raw::c_uint = 31; -pub const AKEYCODE_D: ::std::os::raw::c_uint = 32; -pub const AKEYCODE_E: ::std::os::raw::c_uint = 33; -pub const AKEYCODE_F: ::std::os::raw::c_uint = 34; -pub const AKEYCODE_G: ::std::os::raw::c_uint = 35; -pub const AKEYCODE_H: ::std::os::raw::c_uint = 36; -pub const AKEYCODE_I: ::std::os::raw::c_uint = 37; -pub const AKEYCODE_J: ::std::os::raw::c_uint = 38; -pub const AKEYCODE_K: ::std::os::raw::c_uint = 39; -pub const AKEYCODE_L: ::std::os::raw::c_uint = 40; -pub const AKEYCODE_M: ::std::os::raw::c_uint = 41; -pub const AKEYCODE_N: ::std::os::raw::c_uint = 42; -pub const AKEYCODE_O: ::std::os::raw::c_uint = 43; -pub const AKEYCODE_P: ::std::os::raw::c_uint = 44; -pub const AKEYCODE_Q: ::std::os::raw::c_uint = 45; -pub const AKEYCODE_R: ::std::os::raw::c_uint = 46; -pub const AKEYCODE_S: ::std::os::raw::c_uint = 47; -pub const AKEYCODE_T: ::std::os::raw::c_uint = 48; -pub const AKEYCODE_U: ::std::os::raw::c_uint = 49; -pub const AKEYCODE_V: ::std::os::raw::c_uint = 50; -pub const AKEYCODE_W: ::std::os::raw::c_uint = 51; -pub const AKEYCODE_X: ::std::os::raw::c_uint = 52; -pub const AKEYCODE_Y: ::std::os::raw::c_uint = 53; -pub const AKEYCODE_Z: ::std::os::raw::c_uint = 54; -pub const AKEYCODE_COMMA: ::std::os::raw::c_uint = 55; -pub const AKEYCODE_PERIOD: ::std::os::raw::c_uint = 56; -pub const AKEYCODE_ALT_LEFT: ::std::os::raw::c_uint = 57; -pub const AKEYCODE_ALT_RIGHT: ::std::os::raw::c_uint = 58; -pub const AKEYCODE_SHIFT_LEFT: ::std::os::raw::c_uint = 59; -pub const AKEYCODE_SHIFT_RIGHT: ::std::os::raw::c_uint = 60; -pub const AKEYCODE_TAB: ::std::os::raw::c_uint = 61; -pub const AKEYCODE_SPACE: ::std::os::raw::c_uint = 62; -pub const AKEYCODE_SYM: ::std::os::raw::c_uint = 63; -pub const AKEYCODE_EXPLORER: ::std::os::raw::c_uint = 64; -pub const AKEYCODE_ENVELOPE: ::std::os::raw::c_uint = 65; -pub const AKEYCODE_ENTER: ::std::os::raw::c_uint = 66; -pub const AKEYCODE_DEL: ::std::os::raw::c_uint = 67; -pub const AKEYCODE_GRAVE: ::std::os::raw::c_uint = 68; -pub const AKEYCODE_MINUS: ::std::os::raw::c_uint = 69; -pub const AKEYCODE_EQUALS: ::std::os::raw::c_uint = 70; -pub const AKEYCODE_LEFT_BRACKET: ::std::os::raw::c_uint = 71; -pub const AKEYCODE_RIGHT_BRACKET: ::std::os::raw::c_uint = 72; -pub const AKEYCODE_BACKSLASH: ::std::os::raw::c_uint = 73; -pub const AKEYCODE_SEMICOLON: ::std::os::raw::c_uint = 74; -pub const AKEYCODE_APOSTROPHE: ::std::os::raw::c_uint = 75; -pub const AKEYCODE_SLASH: ::std::os::raw::c_uint = 76; -pub const AKEYCODE_AT: ::std::os::raw::c_uint = 77; -pub const AKEYCODE_NUM: ::std::os::raw::c_uint = 78; -pub const AKEYCODE_HEADSETHOOK: ::std::os::raw::c_uint = 79; -pub const AKEYCODE_FOCUS: ::std::os::raw::c_uint = 80; -pub const AKEYCODE_PLUS: ::std::os::raw::c_uint = 81; -pub const AKEYCODE_MENU: ::std::os::raw::c_uint = 82; -pub const AKEYCODE_NOTIFICATION: ::std::os::raw::c_uint = 83; -pub const AKEYCODE_SEARCH: ::std::os::raw::c_uint = 84; -pub const AKEYCODE_MEDIA_PLAY_PAUSE: ::std::os::raw::c_uint = 85; -pub const AKEYCODE_MEDIA_STOP: ::std::os::raw::c_uint = 86; -pub const AKEYCODE_MEDIA_NEXT: ::std::os::raw::c_uint = 87; -pub const AKEYCODE_MEDIA_PREVIOUS: ::std::os::raw::c_uint = 88; -pub const AKEYCODE_MEDIA_REWIND: ::std::os::raw::c_uint = 89; -pub const AKEYCODE_MEDIA_FAST_FORWARD: ::std::os::raw::c_uint = 90; -pub const AKEYCODE_MUTE: ::std::os::raw::c_uint = 91; -pub const AKEYCODE_PAGE_UP: ::std::os::raw::c_uint = 92; -pub const AKEYCODE_PAGE_DOWN: ::std::os::raw::c_uint = 93; -pub const AKEYCODE_PICTSYMBOLS: ::std::os::raw::c_uint = 94; -pub const AKEYCODE_SWITCH_CHARSET: ::std::os::raw::c_uint = 95; -pub const AKEYCODE_BUTTON_A: ::std::os::raw::c_uint = 96; -pub const AKEYCODE_BUTTON_B: ::std::os::raw::c_uint = 97; -pub const AKEYCODE_BUTTON_C: ::std::os::raw::c_uint = 98; -pub const AKEYCODE_BUTTON_X: ::std::os::raw::c_uint = 99; -pub const AKEYCODE_BUTTON_Y: ::std::os::raw::c_uint = 100; -pub const AKEYCODE_BUTTON_Z: ::std::os::raw::c_uint = 101; -pub const AKEYCODE_BUTTON_L1: ::std::os::raw::c_uint = 102; -pub const AKEYCODE_BUTTON_R1: ::std::os::raw::c_uint = 103; -pub const AKEYCODE_BUTTON_L2: ::std::os::raw::c_uint = 104; -pub const AKEYCODE_BUTTON_R2: ::std::os::raw::c_uint = 105; -pub const AKEYCODE_BUTTON_THUMBL: ::std::os::raw::c_uint = 106; -pub const AKEYCODE_BUTTON_THUMBR: ::std::os::raw::c_uint = 107; -pub const AKEYCODE_BUTTON_START: ::std::os::raw::c_uint = 108; -pub const AKEYCODE_BUTTON_SELECT: ::std::os::raw::c_uint = 109; -pub const AKEYCODE_BUTTON_MODE: ::std::os::raw::c_uint = 110; -pub const AKEYCODE_ESCAPE: ::std::os::raw::c_uint = 111; -pub const AKEYCODE_FORWARD_DEL: ::std::os::raw::c_uint = 112; -pub const AKEYCODE_CTRL_LEFT: ::std::os::raw::c_uint = 113; -pub const AKEYCODE_CTRL_RIGHT: ::std::os::raw::c_uint = 114; -pub const AKEYCODE_CAPS_LOCK: ::std::os::raw::c_uint = 115; -pub const AKEYCODE_SCROLL_LOCK: ::std::os::raw::c_uint = 116; -pub const AKEYCODE_META_LEFT: ::std::os::raw::c_uint = 117; -pub const AKEYCODE_META_RIGHT: ::std::os::raw::c_uint = 118; -pub const AKEYCODE_FUNCTION: ::std::os::raw::c_uint = 119; -pub const AKEYCODE_SYSRQ: ::std::os::raw::c_uint = 120; -pub const AKEYCODE_BREAK: ::std::os::raw::c_uint = 121; -pub const AKEYCODE_MOVE_HOME: ::std::os::raw::c_uint = 122; -pub const AKEYCODE_MOVE_END: ::std::os::raw::c_uint = 123; -pub const AKEYCODE_INSERT: ::std::os::raw::c_uint = 124; -pub const AKEYCODE_FORWARD: ::std::os::raw::c_uint = 125; -pub const AKEYCODE_MEDIA_PLAY: ::std::os::raw::c_uint = 126; -pub const AKEYCODE_MEDIA_PAUSE: ::std::os::raw::c_uint = 127; -pub const AKEYCODE_MEDIA_CLOSE: ::std::os::raw::c_uint = 128; -pub const AKEYCODE_MEDIA_EJECT: ::std::os::raw::c_uint = 129; -pub const AKEYCODE_MEDIA_RECORD: ::std::os::raw::c_uint = 130; -pub const AKEYCODE_F1: ::std::os::raw::c_uint = 131; -pub const AKEYCODE_F2: ::std::os::raw::c_uint = 132; -pub const AKEYCODE_F3: ::std::os::raw::c_uint = 133; -pub const AKEYCODE_F4: ::std::os::raw::c_uint = 134; -pub const AKEYCODE_F5: ::std::os::raw::c_uint = 135; -pub const AKEYCODE_F6: ::std::os::raw::c_uint = 136; -pub const AKEYCODE_F7: ::std::os::raw::c_uint = 137; -pub const AKEYCODE_F8: ::std::os::raw::c_uint = 138; -pub const AKEYCODE_F9: ::std::os::raw::c_uint = 139; -pub const AKEYCODE_F10: ::std::os::raw::c_uint = 140; -pub const AKEYCODE_F11: ::std::os::raw::c_uint = 141; -pub const AKEYCODE_F12: ::std::os::raw::c_uint = 142; -pub const AKEYCODE_NUM_LOCK: ::std::os::raw::c_uint = 143; -pub const AKEYCODE_NUMPAD_0: ::std::os::raw::c_uint = 144; -pub const AKEYCODE_NUMPAD_1: ::std::os::raw::c_uint = 145; -pub const AKEYCODE_NUMPAD_2: ::std::os::raw::c_uint = 146; -pub const AKEYCODE_NUMPAD_3: ::std::os::raw::c_uint = 147; -pub const AKEYCODE_NUMPAD_4: ::std::os::raw::c_uint = 148; -pub const AKEYCODE_NUMPAD_5: ::std::os::raw::c_uint = 149; -pub const AKEYCODE_NUMPAD_6: ::std::os::raw::c_uint = 150; -pub const AKEYCODE_NUMPAD_7: ::std::os::raw::c_uint = 151; -pub const AKEYCODE_NUMPAD_8: ::std::os::raw::c_uint = 152; -pub const AKEYCODE_NUMPAD_9: ::std::os::raw::c_uint = 153; -pub const AKEYCODE_NUMPAD_DIVIDE: ::std::os::raw::c_uint = 154; -pub const AKEYCODE_NUMPAD_MULTIPLY: ::std::os::raw::c_uint = 155; -pub const AKEYCODE_NUMPAD_SUBTRACT: ::std::os::raw::c_uint = 156; -pub const AKEYCODE_NUMPAD_ADD: ::std::os::raw::c_uint = 157; -pub const AKEYCODE_NUMPAD_DOT: ::std::os::raw::c_uint = 158; -pub const AKEYCODE_NUMPAD_COMMA: ::std::os::raw::c_uint = 159; -pub const AKEYCODE_NUMPAD_ENTER: ::std::os::raw::c_uint = 160; -pub const AKEYCODE_NUMPAD_EQUALS: ::std::os::raw::c_uint = 161; -pub const AKEYCODE_NUMPAD_LEFT_PAREN: ::std::os::raw::c_uint = 162; -pub const AKEYCODE_NUMPAD_RIGHT_PAREN: ::std::os::raw::c_uint = 163; -pub const AKEYCODE_VOLUME_MUTE: ::std::os::raw::c_uint = 164; -pub const AKEYCODE_INFO: ::std::os::raw::c_uint = 165; -pub const AKEYCODE_CHANNEL_UP: ::std::os::raw::c_uint = 166; -pub const AKEYCODE_CHANNEL_DOWN: ::std::os::raw::c_uint = 167; -pub const AKEYCODE_ZOOM_IN: ::std::os::raw::c_uint = 168; -pub const AKEYCODE_ZOOM_OUT: ::std::os::raw::c_uint = 169; -pub const AKEYCODE_TV: ::std::os::raw::c_uint = 170; -pub const AKEYCODE_WINDOW: ::std::os::raw::c_uint = 171; -pub const AKEYCODE_GUIDE: ::std::os::raw::c_uint = 172; -pub const AKEYCODE_DVR: ::std::os::raw::c_uint = 173; -pub const AKEYCODE_BOOKMARK: ::std::os::raw::c_uint = 174; -pub const AKEYCODE_CAPTIONS: ::std::os::raw::c_uint = 175; -pub const AKEYCODE_SETTINGS: ::std::os::raw::c_uint = 176; -pub const AKEYCODE_TV_POWER: ::std::os::raw::c_uint = 177; -pub const AKEYCODE_TV_INPUT: ::std::os::raw::c_uint = 178; -pub const AKEYCODE_STB_POWER: ::std::os::raw::c_uint = 179; -pub const AKEYCODE_STB_INPUT: ::std::os::raw::c_uint = 180; -pub const AKEYCODE_AVR_POWER: ::std::os::raw::c_uint = 181; -pub const AKEYCODE_AVR_INPUT: ::std::os::raw::c_uint = 182; -pub const AKEYCODE_PROG_RED: ::std::os::raw::c_uint = 183; -pub const AKEYCODE_PROG_GREEN: ::std::os::raw::c_uint = 184; -pub const AKEYCODE_PROG_YELLOW: ::std::os::raw::c_uint = 185; -pub const AKEYCODE_PROG_BLUE: ::std::os::raw::c_uint = 186; -pub const AKEYCODE_APP_SWITCH: ::std::os::raw::c_uint = 187; -pub const AKEYCODE_BUTTON_1: ::std::os::raw::c_uint = 188; -pub const AKEYCODE_BUTTON_2: ::std::os::raw::c_uint = 189; -pub const AKEYCODE_BUTTON_3: ::std::os::raw::c_uint = 190; -pub const AKEYCODE_BUTTON_4: ::std::os::raw::c_uint = 191; -pub const AKEYCODE_BUTTON_5: ::std::os::raw::c_uint = 192; -pub const AKEYCODE_BUTTON_6: ::std::os::raw::c_uint = 193; -pub const AKEYCODE_BUTTON_7: ::std::os::raw::c_uint = 194; -pub const AKEYCODE_BUTTON_8: ::std::os::raw::c_uint = 195; -pub const AKEYCODE_BUTTON_9: ::std::os::raw::c_uint = 196; -pub const AKEYCODE_BUTTON_10: ::std::os::raw::c_uint = 197; -pub const AKEYCODE_BUTTON_11: ::std::os::raw::c_uint = 198; -pub const AKEYCODE_BUTTON_12: ::std::os::raw::c_uint = 199; -pub const AKEYCODE_BUTTON_13: ::std::os::raw::c_uint = 200; -pub const AKEYCODE_BUTTON_14: ::std::os::raw::c_uint = 201; -pub const AKEYCODE_BUTTON_15: ::std::os::raw::c_uint = 202; -pub const AKEYCODE_BUTTON_16: ::std::os::raw::c_uint = 203; -pub const AKEYCODE_LANGUAGE_SWITCH: ::std::os::raw::c_uint = 204; -pub const AKEYCODE_MANNER_MODE: ::std::os::raw::c_uint = 205; -pub const AKEYCODE_3D_MODE: ::std::os::raw::c_uint = 206; -pub const AKEYCODE_CONTACTS: ::std::os::raw::c_uint = 207; -pub const AKEYCODE_CALENDAR: ::std::os::raw::c_uint = 208; -pub const AKEYCODE_MUSIC: ::std::os::raw::c_uint = 209; -pub const AKEYCODE_CALCULATOR: ::std::os::raw::c_uint = 210; -pub const AKEYCODE_ZENKAKU_HANKAKU: ::std::os::raw::c_uint = 211; -pub const AKEYCODE_EISU: ::std::os::raw::c_uint = 212; -pub const AKEYCODE_MUHENKAN: ::std::os::raw::c_uint = 213; -pub const AKEYCODE_HENKAN: ::std::os::raw::c_uint = 214; -pub const AKEYCODE_KATAKANA_HIRAGANA: ::std::os::raw::c_uint = 215; -pub const AKEYCODE_YEN: ::std::os::raw::c_uint = 216; -pub const AKEYCODE_RO: ::std::os::raw::c_uint = 217; -pub const AKEYCODE_KANA: ::std::os::raw::c_uint = 218; -pub const AKEYCODE_ASSIST: ::std::os::raw::c_uint = 219; -pub const AKEYCODE_BRIGHTNESS_DOWN: ::std::os::raw::c_uint = 220; -pub const AKEYCODE_BRIGHTNESS_UP: ::std::os::raw::c_uint = 221; -pub const AKEYCODE_MEDIA_AUDIO_TRACK: ::std::os::raw::c_uint = 222; -pub const AKEYCODE_SLEEP: ::std::os::raw::c_uint = 223; -pub const AKEYCODE_WAKEUP: ::std::os::raw::c_uint = 224; -pub const AKEYCODE_PAIRING: ::std::os::raw::c_uint = 225; -pub const AKEYCODE_MEDIA_TOP_MENU: ::std::os::raw::c_uint = 226; -pub const AKEYCODE_11: ::std::os::raw::c_uint = 227; -pub const AKEYCODE_12: ::std::os::raw::c_uint = 228; -pub const AKEYCODE_LAST_CHANNEL: ::std::os::raw::c_uint = 229; -pub const AKEYCODE_TV_DATA_SERVICE: ::std::os::raw::c_uint = 230; -pub const AKEYCODE_VOICE_ASSIST: ::std::os::raw::c_uint = 231; -pub const AKEYCODE_TV_RADIO_SERVICE: ::std::os::raw::c_uint = 232; -pub const AKEYCODE_TV_TELETEXT: ::std::os::raw::c_uint = 233; -pub const AKEYCODE_TV_NUMBER_ENTRY: ::std::os::raw::c_uint = 234; -pub const AKEYCODE_TV_TERRESTRIAL_ANALOG: ::std::os::raw::c_uint = 235; -pub const AKEYCODE_TV_TERRESTRIAL_DIGITAL: ::std::os::raw::c_uint = 236; -pub const AKEYCODE_TV_SATELLITE: ::std::os::raw::c_uint = 237; -pub const AKEYCODE_TV_SATELLITE_BS: ::std::os::raw::c_uint = 238; -pub const AKEYCODE_TV_SATELLITE_CS: ::std::os::raw::c_uint = 239; -pub const AKEYCODE_TV_SATELLITE_SERVICE: ::std::os::raw::c_uint = 240; -pub const AKEYCODE_TV_NETWORK: ::std::os::raw::c_uint = 241; -pub const AKEYCODE_TV_ANTENNA_CABLE: ::std::os::raw::c_uint = 242; -pub const AKEYCODE_TV_INPUT_HDMI_1: ::std::os::raw::c_uint = 243; -pub const AKEYCODE_TV_INPUT_HDMI_2: ::std::os::raw::c_uint = 244; -pub const AKEYCODE_TV_INPUT_HDMI_3: ::std::os::raw::c_uint = 245; -pub const AKEYCODE_TV_INPUT_HDMI_4: ::std::os::raw::c_uint = 246; -pub const AKEYCODE_TV_INPUT_COMPOSITE_1: ::std::os::raw::c_uint = 247; -pub const AKEYCODE_TV_INPUT_COMPOSITE_2: ::std::os::raw::c_uint = 248; -pub const AKEYCODE_TV_INPUT_COMPONENT_1: ::std::os::raw::c_uint = 249; -pub const AKEYCODE_TV_INPUT_COMPONENT_2: ::std::os::raw::c_uint = 250; -pub const AKEYCODE_TV_INPUT_VGA_1: ::std::os::raw::c_uint = 251; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION: ::std::os::raw::c_uint = 252; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: ::std::os::raw::c_uint = 253; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: ::std::os::raw::c_uint = 254; -pub const AKEYCODE_TV_ZOOM_MODE: ::std::os::raw::c_uint = 255; -pub const AKEYCODE_TV_CONTENTS_MENU: ::std::os::raw::c_uint = 256; -pub const AKEYCODE_TV_MEDIA_CONTEXT_MENU: ::std::os::raw::c_uint = 257; -pub const AKEYCODE_TV_TIMER_PROGRAMMING: ::std::os::raw::c_uint = 258; -pub const AKEYCODE_HELP: ::std::os::raw::c_uint = 259; -pub const AKEYCODE_NAVIGATE_PREVIOUS: ::std::os::raw::c_uint = 260; -pub const AKEYCODE_NAVIGATE_NEXT: ::std::os::raw::c_uint = 261; -pub const AKEYCODE_NAVIGATE_IN: ::std::os::raw::c_uint = 262; -pub const AKEYCODE_NAVIGATE_OUT: ::std::os::raw::c_uint = 263; -pub const AKEYCODE_STEM_PRIMARY: ::std::os::raw::c_uint = 264; -pub const AKEYCODE_STEM_1: ::std::os::raw::c_uint = 265; -pub const AKEYCODE_STEM_2: ::std::os::raw::c_uint = 266; -pub const AKEYCODE_STEM_3: ::std::os::raw::c_uint = 267; -pub const AKEYCODE_DPAD_UP_LEFT: ::std::os::raw::c_uint = 268; -pub const AKEYCODE_DPAD_DOWN_LEFT: ::std::os::raw::c_uint = 269; -pub const AKEYCODE_DPAD_UP_RIGHT: ::std::os::raw::c_uint = 270; -pub const AKEYCODE_DPAD_DOWN_RIGHT: ::std::os::raw::c_uint = 271; -pub const AKEYCODE_MEDIA_SKIP_FORWARD: ::std::os::raw::c_uint = 272; -pub const AKEYCODE_MEDIA_SKIP_BACKWARD: ::std::os::raw::c_uint = 273; -pub const AKEYCODE_MEDIA_STEP_FORWARD: ::std::os::raw::c_uint = 274; -pub const AKEYCODE_MEDIA_STEP_BACKWARD: ::std::os::raw::c_uint = 275; -pub const AKEYCODE_SOFT_SLEEP: ::std::os::raw::c_uint = 276; -pub const AKEYCODE_CUT: ::std::os::raw::c_uint = 277; -pub const AKEYCODE_COPY: ::std::os::raw::c_uint = 278; -pub const AKEYCODE_PASTE: ::std::os::raw::c_uint = 279; -pub const AKEYCODE_SYSTEM_NAVIGATION_UP: ::std::os::raw::c_uint = 280; -pub const AKEYCODE_SYSTEM_NAVIGATION_DOWN: ::std::os::raw::c_uint = 281; -pub const AKEYCODE_SYSTEM_NAVIGATION_LEFT: ::std::os::raw::c_uint = 282; -pub const AKEYCODE_SYSTEM_NAVIGATION_RIGHT: ::std::os::raw::c_uint = 283; -pub const AKEYCODE_ALL_APPS: ::std::os::raw::c_uint = 284; -pub const AKEYCODE_REFRESH: ::std::os::raw::c_uint = 285; -pub const AKEYCODE_THUMBS_UP: ::std::os::raw::c_uint = 286; -pub const AKEYCODE_THUMBS_DOWN: ::std::os::raw::c_uint = 287; -pub const AKEYCODE_PROFILE_SWITCH: ::std::os::raw::c_uint = 288; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; -pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; -pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; -pub const AKEY_STATE_VIRTUAL: ::std::os::raw::c_int = 2; -pub type _bindgen_ty_9 = ::std::os::raw::c_int; -pub const AMETA_NONE: ::std::os::raw::c_uint = 0; -pub const AMETA_ALT_ON: ::std::os::raw::c_uint = 2; -pub const AMETA_ALT_LEFT_ON: ::std::os::raw::c_uint = 16; -pub const AMETA_ALT_RIGHT_ON: ::std::os::raw::c_uint = 32; -pub const AMETA_SHIFT_ON: ::std::os::raw::c_uint = 1; -pub const AMETA_SHIFT_LEFT_ON: ::std::os::raw::c_uint = 64; -pub const AMETA_SHIFT_RIGHT_ON: ::std::os::raw::c_uint = 128; -pub const AMETA_SYM_ON: ::std::os::raw::c_uint = 4; -pub const AMETA_FUNCTION_ON: ::std::os::raw::c_uint = 8; -pub const AMETA_CTRL_ON: ::std::os::raw::c_uint = 4096; -pub const AMETA_CTRL_LEFT_ON: ::std::os::raw::c_uint = 8192; -pub const AMETA_CTRL_RIGHT_ON: ::std::os::raw::c_uint = 16384; -pub const AMETA_META_ON: ::std::os::raw::c_uint = 65536; -pub const AMETA_META_LEFT_ON: ::std::os::raw::c_uint = 131072; -pub const AMETA_META_RIGHT_ON: ::std::os::raw::c_uint = 262144; -pub const AMETA_CAPS_LOCK_ON: ::std::os::raw::c_uint = 1048576; -pub const AMETA_NUM_LOCK_ON: ::std::os::raw::c_uint = 2097152; -pub const AMETA_SCROLL_LOCK_ON: ::std::os::raw::c_uint = 4194304; -pub type _bindgen_ty_10 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AInputEvent { - _unused: [u8; 0], -} -pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; -pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_ACTION_MULTIPLE: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_FLAG_WOKE_HERE: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_FLAG_SOFT_KEYBOARD: ::std::os::raw::c_uint = 2; -pub const AKEY_EVENT_FLAG_KEEP_TOUCH_MODE: ::std::os::raw::c_uint = 4; -pub const AKEY_EVENT_FLAG_FROM_SYSTEM: ::std::os::raw::c_uint = 8; -pub const AKEY_EVENT_FLAG_EDITOR_ACTION: ::std::os::raw::c_uint = 16; -pub const AKEY_EVENT_FLAG_CANCELED: ::std::os::raw::c_uint = 32; -pub const AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY: ::std::os::raw::c_uint = 64; -pub const AKEY_EVENT_FLAG_LONG_PRESS: ::std::os::raw::c_uint = 128; -pub const AKEY_EVENT_FLAG_CANCELED_LONG_PRESS: ::std::os::raw::c_uint = 256; -pub const AKEY_EVENT_FLAG_TRACKING: ::std::os::raw::c_uint = 512; -pub const AKEY_EVENT_FLAG_FALLBACK: ::std::os::raw::c_uint = 1024; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_ACTION_MASK: ::std::os::raw::c_uint = 255; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_MASK: ::std::os::raw::c_uint = 65280; -pub const AMOTION_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_ACTION_MOVE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_ACTION_CANCEL: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_ACTION_OUTSIDE: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_ACTION_POINTER_DOWN: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_ACTION_POINTER_UP: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_ACTION_HOVER_MOVE: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_ACTION_SCROLL: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_ACTION_HOVER_ENTER: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_ACTION_HOVER_EXIT: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_ACTION_BUTTON_PRESS: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_ACTION_BUTTON_RELEASE: ::std::os::raw::c_uint = 12; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_EDGE_FLAG_NONE: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_EDGE_FLAG_TOP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_EDGE_FLAG_BOTTOM: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_EDGE_FLAG_LEFT: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_EDGE_FLAG_RIGHT: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_AXIS_X: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_AXIS_Y: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_AXIS_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_AXIS_SIZE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_AXIS_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_AXIS_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_AXIS_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_AXIS_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_AXIS_ORIENTATION: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_AXIS_VSCROLL: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_AXIS_HSCROLL: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_AXIS_Z: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_AXIS_RX: ::std::os::raw::c_uint = 12; -pub const AMOTION_EVENT_AXIS_RY: ::std::os::raw::c_uint = 13; -pub const AMOTION_EVENT_AXIS_RZ: ::std::os::raw::c_uint = 14; -pub const AMOTION_EVENT_AXIS_HAT_X: ::std::os::raw::c_uint = 15; -pub const AMOTION_EVENT_AXIS_HAT_Y: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_AXIS_LTRIGGER: ::std::os::raw::c_uint = 17; -pub const AMOTION_EVENT_AXIS_RTRIGGER: ::std::os::raw::c_uint = 18; -pub const AMOTION_EVENT_AXIS_THROTTLE: ::std::os::raw::c_uint = 19; -pub const AMOTION_EVENT_AXIS_RUDDER: ::std::os::raw::c_uint = 20; -pub const AMOTION_EVENT_AXIS_WHEEL: ::std::os::raw::c_uint = 21; -pub const AMOTION_EVENT_AXIS_GAS: ::std::os::raw::c_uint = 22; -pub const AMOTION_EVENT_AXIS_BRAKE: ::std::os::raw::c_uint = 23; -pub const AMOTION_EVENT_AXIS_DISTANCE: ::std::os::raw::c_uint = 24; -pub const AMOTION_EVENT_AXIS_TILT: ::std::os::raw::c_uint = 25; -pub const AMOTION_EVENT_AXIS_SCROLL: ::std::os::raw::c_uint = 26; -pub const AMOTION_EVENT_AXIS_RELATIVE_X: ::std::os::raw::c_uint = 27; -pub const AMOTION_EVENT_AXIS_RELATIVE_Y: ::std::os::raw::c_uint = 28; -pub const AMOTION_EVENT_AXIS_GENERIC_1: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_AXIS_GENERIC_2: ::std::os::raw::c_uint = 33; -pub const AMOTION_EVENT_AXIS_GENERIC_3: ::std::os::raw::c_uint = 34; -pub const AMOTION_EVENT_AXIS_GENERIC_4: ::std::os::raw::c_uint = 35; -pub const AMOTION_EVENT_AXIS_GENERIC_5: ::std::os::raw::c_uint = 36; -pub const AMOTION_EVENT_AXIS_GENERIC_6: ::std::os::raw::c_uint = 37; -pub const AMOTION_EVENT_AXIS_GENERIC_7: ::std::os::raw::c_uint = 38; -pub const AMOTION_EVENT_AXIS_GENERIC_8: ::std::os::raw::c_uint = 39; -pub const AMOTION_EVENT_AXIS_GENERIC_9: ::std::os::raw::c_uint = 40; -pub const AMOTION_EVENT_AXIS_GENERIC_10: ::std::os::raw::c_uint = 41; -pub const AMOTION_EVENT_AXIS_GENERIC_11: ::std::os::raw::c_uint = 42; -pub const AMOTION_EVENT_AXIS_GENERIC_12: ::std::os::raw::c_uint = 43; -pub const AMOTION_EVENT_AXIS_GENERIC_13: ::std::os::raw::c_uint = 44; -pub const AMOTION_EVENT_AXIS_GENERIC_14: ::std::os::raw::c_uint = 45; -pub const AMOTION_EVENT_AXIS_GENERIC_15: ::std::os::raw::c_uint = 46; -pub const AMOTION_EVENT_AXIS_GENERIC_16: ::std::os::raw::c_uint = 47; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_BUTTON_PRIMARY: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_BUTTON_SECONDARY: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_BUTTON_TERTIARY: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_BUTTON_BACK: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_BUTTON_FORWARD: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_BUTTON_STYLUS_PRIMARY: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_BUTTON_STYLUS_SECONDARY: ::std::os::raw::c_uint = 64; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_TOOL_TYPE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; -pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; -pub const AINPUT_SOURCE_CLASS_POINTER: ::std::os::raw::c_uint = 2; -pub const AINPUT_SOURCE_CLASS_NAVIGATION: ::std::os::raw::c_uint = 4; -pub const AINPUT_SOURCE_CLASS_POSITION: ::std::os::raw::c_uint = 8; -pub const AINPUT_SOURCE_CLASS_JOYSTICK: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_KEYBOARD: ::std::os::raw::c_uint = 257; -pub const AINPUT_SOURCE_DPAD: ::std::os::raw::c_uint = 513; -pub const AINPUT_SOURCE_GAMEPAD: ::std::os::raw::c_uint = 1025; -pub const AINPUT_SOURCE_TOUCHSCREEN: ::std::os::raw::c_uint = 4098; -pub const AINPUT_SOURCE_MOUSE: ::std::os::raw::c_uint = 8194; -pub const AINPUT_SOURCE_STYLUS: ::std::os::raw::c_uint = 16386; -pub const AINPUT_SOURCE_BLUETOOTH_STYLUS: ::std::os::raw::c_uint = 49154; -pub const AINPUT_SOURCE_TRACKBALL: ::std::os::raw::c_uint = 65540; -pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; -pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; -pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; -pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; -pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; -pub type _bindgen_ty_21 = ::std::os::raw::c_uint; -pub const AINPUT_KEYBOARD_TYPE_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC: ::std::os::raw::c_uint = 1; -pub const AINPUT_KEYBOARD_TYPE_ALPHABETIC: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_22 = ::std::os::raw::c_uint; -pub const AINPUT_MOTION_RANGE_X: ::std::os::raw::c_uint = 0; -pub const AINPUT_MOTION_RANGE_Y: ::std::os::raw::c_uint = 1; -pub const AINPUT_MOTION_RANGE_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AINPUT_MOTION_RANGE_SIZE: ::std::os::raw::c_uint = 3; -pub const AINPUT_MOTION_RANGE_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AINPUT_MOTION_RANGE_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AINPUT_MOTION_RANGE_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AINPUT_MOTION_RANGE_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AINPUT_MOTION_RANGE_ORIENTATION: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_23 = ::std::os::raw::c_uint; -extern "C" { - pub fn AInputEvent_getType(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getDeviceId(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getFlags(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getKeyCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getScanCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getMetaState(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getRepeatCount(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getDownTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getMetaState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getButtonState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getEdgeFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getDownTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getEventTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getXOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getXPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPointerCount(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getPointerId( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> i32; -} -extern "C" { - pub fn AMotionEvent_getToolType(motion_event: *const AInputEvent, pointer_index: size_t) - -> i32; -} -extern "C" { - pub fn AMotionEvent_getRawX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getRawY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPressure(motion_event: *const AInputEvent, pointer_index: size_t) - -> f32; -} -extern "C" { - pub fn AMotionEvent_getSize(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistorySize(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getHistoricalEventTime( - motion_event: *const AInputEvent, - history_index: size_t, - ) -> i64; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalPressure( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalSize( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct imaxdiv_t { - pub quot: intmax_t, - pub rem: intmax_t, -} -#[test] -fn bindgen_test_layout_imaxdiv_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(imaxdiv_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(imaxdiv_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(quot) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(rem) - ) - ); -} -extern "C" { - pub fn imaxabs(__i: intmax_t) -> intmax_t; -} -extern "C" { - pub fn imaxdiv(__numerator: intmax_t, __denominator: intmax_t) -> imaxdiv_t; -} -extern "C" { - pub fn strtoimax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn strtoumax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -extern "C" { - pub fn wcstoimax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn wcstoumax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; -pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; -pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; -pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; -pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub type ADataSpace = ::std::os::raw::c_uint; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: AHardwareBuffer_Format = 4; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: AHardwareBuffer_Format = - 22; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: AHardwareBuffer_Format = - 43; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_BLOB: AHardwareBuffer_Format = 33; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D16_UNORM: AHardwareBuffer_Format = 48; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM: AHardwareBuffer_Format = 49; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT: AHardwareBuffer_Format = - 50; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT: AHardwareBuffer_Format = 51; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHardwareBuffer_Format = - 52; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_RARELY: - AHardwareBuffer_UsageFlags = 2; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN: - AHardwareBuffer_UsageFlags = 3; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_MASK: - AHardwareBuffer_UsageFlags = 15; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY: - AHardwareBuffer_UsageFlags = 32; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN: - AHardwareBuffer_UsageFlags = 48; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK: - AHardwareBuffer_UsageFlags = 240; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE: - AHardwareBuffer_UsageFlags = 256; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY: - AHardwareBuffer_UsageFlags = 2048; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT: - AHardwareBuffer_UsageFlags = 16384; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VIDEO_ENCODE: - AHardwareBuffer_UsageFlags = 65536; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA: - AHardwareBuffer_UsageFlags = 8388608; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER: - AHardwareBuffer_UsageFlags = 16777216; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP: - AHardwareBuffer_UsageFlags = 33554432; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE: - AHardwareBuffer_UsageFlags = 67108864; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_0: AHardwareBuffer_UsageFlags = - 268435456; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_1: AHardwareBuffer_UsageFlags = - 536870912; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_2: AHardwareBuffer_UsageFlags = - 1073741824; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_3: AHardwareBuffer_UsageFlags = - 2147483648; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_4: AHardwareBuffer_UsageFlags = - 281474976710656; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_5: AHardwareBuffer_UsageFlags = - 562949953421312; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_6: AHardwareBuffer_UsageFlags = - 1125899906842624; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_7: AHardwareBuffer_UsageFlags = - 2251799813685248; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_8: AHardwareBuffer_UsageFlags = - 4503599627370496; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_9: AHardwareBuffer_UsageFlags = - 9007199254740992; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_10: AHardwareBuffer_UsageFlags = - 18014398509481984; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_11: AHardwareBuffer_UsageFlags = - 36028797018963968; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_12: AHardwareBuffer_UsageFlags = - 72057594037927936; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_13: AHardwareBuffer_UsageFlags = - 144115188075855872; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_14: AHardwareBuffer_UsageFlags = - 288230376151711744; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_15: AHardwareBuffer_UsageFlags = - 576460752303423488; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_16: AHardwareBuffer_UsageFlags = - 1152921504606846976; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_17: AHardwareBuffer_UsageFlags = - 2305843009213693952; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_18: AHardwareBuffer_UsageFlags = - 4611686018427387904; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_19: AHardwareBuffer_UsageFlags = - 9223372036854775808; -pub type AHardwareBuffer_UsageFlags = ::std::os::raw::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Desc { - pub width: u32, - pub height: u32, - pub layers: u32, - pub format: u32, - pub usage: u64, - pub stride: u32, - pub rfu0: u32, - pub rfu1: u64, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Desc() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(width) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(height) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).layers as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(layers) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(format) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).usage as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(usage) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stride as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(stride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu0 as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu1 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Plane { - pub data: *mut ::std::os::raw::c_void, - pub pixelStride: u32, - pub rowStride: u32, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Plane() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pixelStride as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(pixelStride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rowStride as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(rowStride) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Planes { - pub planeCount: u32, - pub planes: [AHardwareBuffer_Plane; 4usize], -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Planes() { - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).planeCount as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planeCount) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).planes as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planes) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer { - _unused: [u8; 0], -} -extern "C" { - pub fn AHardwareBuffer_allocate( - desc: *const AHardwareBuffer_Desc, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_acquire(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_release(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_describe( - buffer: *const AHardwareBuffer, - outDesc: *mut AHardwareBuffer_Desc, - ); -} -extern "C" { - pub fn AHardwareBuffer_lock( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_unlock( - buffer: *mut AHardwareBuffer, - fence: *mut i32, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_sendHandleToUnixSocket( - buffer: *const AHardwareBuffer, - socketFd: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_recvHandleFromUnixSocket( - socketFd: ::std::os::raw::c_int, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockAndGetInfo( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - outBytesPerPixel: *mut i32, - outBytesPerStride: *mut i32, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -pub struct ANativeActivity { - pub callbacks: *mut ANativeActivityCallbacks, - pub vm: *mut JavaVM, - pub env: *mut JNIEnv, - pub clazz: jobject, - pub internalDataPath: *const ::std::os::raw::c_char, - pub externalDataPath: *const ::std::os::raw::c_char, - pub sdkVersion: i32, - pub instance: *mut ::std::os::raw::c_void, - pub assetManager: *mut AAssetManager, - pub obbPath: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ANativeActivity() { - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(ANativeActivity)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ANativeActivity)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).callbacks as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(callbacks) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vm as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(vm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).env as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).clazz as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(clazz) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).internalDataPath as *const _ as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(internalDataPath) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).externalDataPath as *const _ as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(externalDataPath) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sdkVersion as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(sdkVersion) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).instance as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(instance) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).assetManager as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(assetManager) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).obbPath as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(obbPath) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ANativeActivityCallbacks { - pub onStart: ::std::option::Option, - pub onResume: ::std::option::Option, - pub onSaveInstanceState: ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - outSize: *mut size_t, - ) -> *mut ::std::os::raw::c_void, - >, - pub onPause: ::std::option::Option, - pub onStop: ::std::option::Option, - pub onDestroy: ::std::option::Option, - pub onWindowFocusChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, hasFocus: ::std::os::raw::c_int), - >, - pub onNativeWindowCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowResized: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowRedrawNeeded: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onInputQueueCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onInputQueueDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onContentRectChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, rect: *const ARect), - >, - pub onConfigurationChanged: - ::std::option::Option, - pub onLowMemory: ::std::option::Option, -} -#[test] -fn bindgen_test_layout_ANativeActivityCallbacks() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onStart as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStart) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onResume as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onResume) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onSaveInstanceState as *const _ - as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onSaveInstanceState) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onPause as *const _ as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onPause) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onStop as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStop) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onDestroy as *const _ as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onDestroy) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onWindowFocusChanged as *const _ - as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onWindowFocusChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowCreated as *const _ - as usize - }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowResized as *const _ - as usize - }, - 64usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowResized) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowRedrawNeeded - as *const _ as usize - }, - 72usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowRedrawNeeded) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowDestroyed as *const _ - as usize - }, - 80usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueCreated as *const _ - as usize - }, - 88usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueDestroyed as *const _ - as usize - }, - 96usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onContentRectChanged as *const _ - as usize - }, - 104usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onContentRectChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onConfigurationChanged as *const _ - as usize - }, - 112usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onConfigurationChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onLowMemory as *const _ as usize - }, - 120usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onLowMemory) - ) - ); -} -pub type ANativeActivity_createFunc = ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ), ->; -extern "C" { - pub fn ANativeActivity_onCreate( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ); -} -extern "C" { - pub fn ANativeActivity_finish(activity: *mut ANativeActivity); -} -extern "C" { - pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: i32); -} -extern "C" { - pub fn ANativeActivity_setWindowFlags( - activity: *mut ANativeActivity, - addFlags: u32, - removeFlags: u32, - ); -} -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: u32); -} -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_25 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: u32); -} -#[doc = " Data associated with an ALooper fd that will be returned as the \"outData\""] -#[doc = " when that source has data ready."] -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct android_poll_source { - pub id: i32, - pub app: *mut android_app, - pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), - >, -} -#[test] -fn bindgen_test_layout_android_poll_source() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(android_poll_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(android_poll_source)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(id) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).app as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(app) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).process as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(process) - ) - ); -} -#[doc = " The native activity interface provided by "] -#[doc = " is based on a set of application-provided callbacks that will be called"] -#[doc = " by the Activity's main thread when certain events occur."] -#[doc = ""] -#[doc = " This means that each one of this callbacks _should_ _not_ block, or they"] -#[doc = " risk having the system force-close the application. This programming"] -#[doc = " model is direct, lightweight, but constraining."] -#[doc = ""] -#[doc = " The 'android_native_app_glue' static library is used to provide a different"] -#[doc = " execution model where the application can implement its own main event"] -#[doc = " loop in a different thread instead. Here's how it works:"] -#[doc = ""] -#[doc = " 1/ The application must provide a function named \"android_main()\" that"] -#[doc = " will be called when the activity is created, in a new thread that is"] -#[doc = " distinct from the activity's main thread."] -#[doc = ""] -#[doc = " 2/ android_main() receives a pointer to a valid \"android_app\" structure"] -#[doc = " that contains references to other important objects, e.g. the"] -#[doc = " ANativeActivity obejct instance the application is running in."] -#[doc = ""] -#[doc = " 3/ the \"android_app\" object holds an ALooper instance that already"] -#[doc = " listens to two important things:"] -#[doc = ""] -#[doc = " - activity lifecycle events (e.g. \"pause\", \"resume\"). See APP_CMD_XXX"] -#[doc = " declarations below."] -#[doc = ""] -#[doc = " - input events coming from the AInputQueue attached to the activity."] -#[doc = ""] -#[doc = " Each of these correspond to an ALooper identifier returned by"] -#[doc = " ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT,"] -#[doc = " respectively."] -#[doc = ""] -#[doc = " Your application can use the same ALooper to listen to additional"] -#[doc = " file-descriptors. They can either be callback based, or with return"] -#[doc = " identifiers starting with LOOPER_ID_USER."] -#[doc = ""] -#[doc = " 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event,"] -#[doc = " the returned data will point to an android_poll_source structure. You"] -#[doc = " can call the process() function on it, and fill in android_app->onAppCmd"] -#[doc = " and android_app->onInputEvent to be called for your own processing"] -#[doc = " of the event."] -#[doc = ""] -#[doc = " Alternatively, you can call the low-level functions to read and process"] -#[doc = " the data directly... look at the process_cmd() and process_input()"] -#[doc = " implementations in the glue to see how to do this."] -#[doc = ""] -#[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] -#[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] -#[repr(C)] -pub struct android_app { - pub userData: *mut ::std::os::raw::c_void, - pub onAppCmd: ::std::option::Option, - pub onInputEvent: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, event: *mut AInputEvent) -> i32, - >, - pub activity: *mut ANativeActivity, - pub config: *mut AConfiguration, - pub savedState: *mut ::std::os::raw::c_void, - pub savedStateSize: size_t, - pub looper: *mut ALooper, - pub inputQueue: *mut AInputQueue, - pub window: *mut ANativeWindow, - pub contentRect: ARect, - pub activityState: ::std::os::raw::c_int, - pub destroyRequested: ::std::os::raw::c_int, - pub mutex: pthread_mutex_t, - pub cond: pthread_cond_t, - pub msgread: ::std::os::raw::c_int, - pub msgwrite: ::std::os::raw::c_int, - pub thread: pthread_t, - pub cmdPollSource: android_poll_source, - pub inputPollSource: android_poll_source, - pub running: ::std::os::raw::c_int, - pub stateSaved: ::std::os::raw::c_int, - pub destroyed: ::std::os::raw::c_int, - pub redrawNeeded: ::std::os::raw::c_int, - pub pendingInputQueue: *mut AInputQueue, - pub pendingWindow: *mut ANativeWindow, - pub pendingContentRect: ARect, -} -#[test] -fn bindgen_test_layout_android_app() { - assert_eq!( - ::std::mem::size_of::(), - 304usize, - concat!("Size of: ", stringify!(android_app)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(android_app)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).userData as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(userData) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onAppCmd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onAppCmd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onInputEvent as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onInputEvent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activity as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activity) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).config as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(config) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedState as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedStateSize as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedStateSize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).looper as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(looper) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputQueue as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(window) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).contentRect as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(contentRect) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activityState as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activityState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyRequested as *const _ as usize }, - 100usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyRequested) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mutex as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(mutex) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cond as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cond) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgread as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgwrite as *const _ as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgwrite) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).thread as *const _ as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(thread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cmdPollSource as *const _ as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cmdPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputPollSource as *const _ as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).running as *const _ as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(running) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stateSaved as *const _ as usize }, - 260usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(stateSaved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyed as *const _ as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyed) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).redrawNeeded as *const _ as usize }, - 268usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(redrawNeeded) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingInputQueue as *const _ as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingInputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingWindow as *const _ as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingWindow) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingContentRect as *const _ as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingContentRect) - ) - ); -} -#[doc = " Looper data ID of commands coming from the app's main thread, which"] -#[doc = " is returned as an identifier from ALooper_pollOnce(). The data for this"] -#[doc = " identifier is a pointer to an android_poll_source structure."] -#[doc = " These can be retrieved and processed with android_app_read_cmd()"] -#[doc = " and android_app_exec_cmd()."] -pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; -#[doc = " Looper data ID of events coming from the AInputQueue of the"] -#[doc = " application's window, which is returned as an identifier from"] -#[doc = " ALooper_pollOnce(). The data for this identifier is a pointer to an"] -#[doc = " android_poll_source structure. These can be read via the inputQueue"] -#[doc = " object of android_app."] -pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; -#[doc = " Start of user-defined ALooper identifiers."] -pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_26 = ::std::os::raw::c_uint; -#[doc = " Command from main thread: the AInputQueue has changed. Upon processing"] -#[doc = " this command, android_app->inputQueue will be updated to the new queue"] -#[doc = " (or NULL)."] -pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; -#[doc = " Command from main thread: a new ANativeWindow is ready for use. Upon"] -#[doc = " receiving this command, android_app->window will contain the new window"] -#[doc = " surface."] -pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; -#[doc = " Command from main thread: the existing ANativeWindow needs to be"] -#[doc = " terminated. Upon receiving this command, android_app->window still"] -#[doc = " contains the existing window; after calling android_app_exec_cmd"] -#[doc = " it will be set to NULL."] -pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; -#[doc = " Command from main thread: the current ANativeWindow has been resized."] -#[doc = " Please redraw with its new size."] -pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; -#[doc = " Command from main thread: the system needs that the current ANativeWindow"] -#[doc = " be redrawn. You should redraw the window before handing this to"] -#[doc = " android_app_exec_cmd() in order to avoid transient drawing glitches."] -pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; -#[doc = " Command from main thread: the content area of the window has changed,"] -#[doc = " such as from the soft input window being shown or hidden. You can"] -#[doc = " find the new content rect in android_app::contentRect."] -pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; -#[doc = " Command from main thread: the app's activity window has gained"] -#[doc = " input focus."] -pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; -#[doc = " Command from main thread: the app's activity window has lost"] -#[doc = " input focus."] -pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; -#[doc = " Command from main thread: the current device configuration has changed."] -pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; -#[doc = " Command from main thread: the system is running low on memory."] -#[doc = " Try to reduce your memory use."] -pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; -#[doc = " Command from main thread: the app's activity has been started."] -pub const APP_CMD_START: ::std::os::raw::c_uint = 10; -#[doc = " Command from main thread: the app's activity has been resumed."] -pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; -#[doc = " Command from main thread: the app should generate a new saved state"] -#[doc = " for itself, to restore from later if needed. If you have saved state,"] -#[doc = " allocate it with malloc and place it in android_app.savedState with"] -#[doc = " the size in android_app.savedStateSize. The will be freed for you"] -#[doc = " later."] -pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; -#[doc = " Command from main thread: the app's activity has been paused."] -pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; -#[doc = " Command from main thread: the app's activity has been stopped."] -pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; -#[doc = " Command from main thread: the app's activity is being destroyed,"] -#[doc = " and waiting for the app thread to clean up and exit before proceeding."] -pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; -pub type _bindgen_ty_27 = ::std::os::raw::c_uint; -extern "C" { - #[doc = " Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next"] - #[doc = " app command message."] - pub fn android_app_read_cmd(android_app: *mut android_app) -> i8; -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " initial pre-processing of the given command. You can perform your own"] - #[doc = " actions for the command after calling this function."] - pub fn android_app_pre_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " final post-processing of the given command. You must have done your own"] - #[doc = " actions for the command before calling this function."] - pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn print_cur_config(android_app: *mut android_app); -} -extern "C" { - pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); -} -extern "C" { - pub fn android_app_destroy(android_app: *mut android_app); -} -pub type __uint128_t = u128; diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs deleted file mode 100644 index 30a88ef..0000000 --- a/android-activity/src/native_activity/ffi_arm.rs +++ /dev/null @@ -1,6819 +0,0 @@ -/* automatically generated by rust-bindgen 0.59.2 */ - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] -pub struct __BindgenBitfieldUnit { - storage: Storage, -} -impl __BindgenBitfieldUnit { - #[inline] - pub const fn new(storage: Storage) -> Self { - Self { storage } - } -} -impl __BindgenBitfieldUnit -where - Storage: AsRef<[u8]> + AsMut<[u8]>, -{ - #[inline] - pub fn get_bit(&self, index: usize) -> bool { - debug_assert!(index / 8 < self.storage.as_ref().len()); - let byte_index = index / 8; - let byte = self.storage.as_ref()[byte_index]; - let bit_index = if cfg!(target_endian = "big") { - 7 - (index % 8) - } else { - index % 8 - }; - let mask = 1 << bit_index; - byte & mask == mask - } - #[inline] - pub fn set_bit(&mut self, index: usize, val: bool) { - debug_assert!(index / 8 < self.storage.as_ref().len()); - let byte_index = index / 8; - let byte = &mut self.storage.as_mut()[byte_index]; - let bit_index = if cfg!(target_endian = "big") { - 7 - (index % 8) - } else { - index % 8 - }; - let mask = 1 << bit_index; - if val { - *byte |= mask; - } else { - *byte &= !mask; - } - } - #[inline] - pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { - debug_assert!(bit_width <= 64); - debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); - debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); - let mut val = 0; - for i in 0..(bit_width as usize) { - if self.get_bit(i + bit_offset) { - let index = if cfg!(target_endian = "big") { - bit_width as usize - 1 - i - } else { - i - }; - val |= 1 << index; - } - } - val - } - #[inline] - pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { - debug_assert!(bit_width <= 64); - debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); - debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); - for i in 0..(bit_width as usize) { - let mask = 1 << i; - let val_bit_is_set = val & mask == mask; - let index = if cfg!(target_endian = "big") { - bit_width as usize - 1 - i - } else { - i - }; - self.set_bit(index + bit_offset, val_bit_is_set); - } - } -} -pub const __BIONIC__: u32 = 1; -pub const __WORDSIZE: u32 = 32; -pub const __bos_level: u32 = 0; -pub const __ANDROID_API_FUTURE__: u32 = 10000; -pub const __ANDROID_API__: u32 = 10000; -pub const __ANDROID_API_G__: u32 = 9; -pub const __ANDROID_API_I__: u32 = 14; -pub const __ANDROID_API_J__: u32 = 16; -pub const __ANDROID_API_J_MR1__: u32 = 17; -pub const __ANDROID_API_J_MR2__: u32 = 18; -pub const __ANDROID_API_K__: u32 = 19; -pub const __ANDROID_API_L__: u32 = 21; -pub const __ANDROID_API_L_MR1__: u32 = 22; -pub const __ANDROID_API_M__: u32 = 23; -pub const __ANDROID_API_N__: u32 = 24; -pub const __ANDROID_API_N_MR1__: u32 = 25; -pub const __ANDROID_API_O__: u32 = 26; -pub const __ANDROID_API_O_MR1__: u32 = 27; -pub const __ANDROID_API_P__: u32 = 28; -pub const __ANDROID_API_Q__: u32 = 29; -pub const __ANDROID_API_R__: u32 = 30; -pub const __NDK_MAJOR__: u32 = 21; -pub const __NDK_MINOR__: u32 = 1; -pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 6352462; -pub const __NDK_CANARY__: u32 = 0; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const WCHAR_MIN: u8 = 0u8; -pub const INT8_MIN: i32 = -128; -pub const INT8_MAX: u32 = 127; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST8_MAX: u32 = 127; -pub const UINT8_MAX: u32 = 255; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_FAST8_MAX: u32 = 255; -pub const INT16_MIN: i32 = -32768; -pub const INT16_MAX: u32 = 32767; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const UINT16_MAX: u32 = 65535; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const INT32_MIN: i32 = -2147483648; -pub const INT32_MAX: u32 = 2147483647; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 4294967295; -pub const WINT_MIN: u32 = 0; -pub const INTPTR_MIN: i32 = -2147483648; -pub const INTPTR_MAX: u32 = 2147483647; -pub const UINTPTR_MAX: u32 = 4294967295; -pub const PTRDIFF_MIN: i32 = -2147483648; -pub const PTRDIFF_MAX: u32 = 2147483647; -pub const SIZE_MAX: u32 = 4294967295; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -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 PASS_MAX: u32 = 128; -pub const NL_ARGMAX: u32 = 9; -pub const NL_LANGMAX: u32 = 14; -pub const NL_MSGMAX: u32 = 32767; -pub const NL_NMAX: u32 = 1; -pub const NL_SETMAX: u32 = 255; -pub const NL_TEXTMAX: u32 = 255; -pub const TMP_MAX: u32 = 308915776; -pub const CHAR_BIT: u32 = 8; -pub const LONG_BIT: u32 = 32; -pub const WORD_BIT: u32 = 32; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MIN: u32 = 0; -pub const CHAR_MAX: u32 = 255; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: u32 = 4294967295; -pub const LONG_MAX: u32 = 2147483647; -pub const LONG_MIN: i32 = -2147483648; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MAX: u64 = 9223372036854775807; -pub const ULONG_LONG_MAX: i32 = -1; -pub const UID_MAX: u32 = 4294967295; -pub const GID_MAX: u32 = 4294967295; -pub const SIZE_T_MAX: u32 = 4294967295; -pub const SSIZE_MAX: u32 = 2147483647; -pub const MB_LEN_MAX: u32 = 4; -pub const NZERO: u32 = 20; -pub const IOV_MAX: u32 = 1024; -pub const SEM_VALUE_MAX: u32 = 1073741823; -pub const _POSIX_VERSION: u32 = 200809; -pub const _POSIX2_VERSION: u32 = 200809; -pub const _XOPEN_VERSION: u32 = 700; -pub const __BIONIC_POSIX_FEATURE_MISSING: i32 = -1; -pub const _POSIX_ASYNCHRONOUS_IO: i32 = -1; -pub const _POSIX_CHOWN_RESTRICTED: u32 = 1; -pub const _POSIX_CPUTIME: u32 = 200809; -pub const _POSIX_FSYNC: u32 = 200809; -pub const _POSIX_IPV6: u32 = 200809; -pub const _POSIX_MAPPED_FILES: u32 = 200809; -pub const _POSIX_MEMLOCK_RANGE: u32 = 200809; -pub const _POSIX_MEMORY_PROTECTION: u32 = 200809; -pub const _POSIX_MESSAGE_PASSING: i32 = -1; -pub const _POSIX_MONOTONIC_CLOCK: u32 = 200809; -pub const _POSIX_NO_TRUNC: u32 = 1; -pub const _POSIX_PRIORITIZED_IO: i32 = -1; -pub const _POSIX_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_RAW_SOCKETS: u32 = 200809; -pub const _POSIX_READER_WRITER_LOCKS: u32 = 200809; -pub const _POSIX_REGEXP: u32 = 1; -pub const _POSIX_SAVED_IDS: u32 = 1; -pub const _POSIX_SEMAPHORES: u32 = 200809; -pub const _POSIX_SHARED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_SHELL: u32 = 1; -pub const _POSIX_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_SYNCHRONIZED_IO: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKADDR: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKSIZE: u32 = 200809; -pub const _POSIX_THREAD_CPUTIME: u32 = 200809; -pub const _POSIX_THREAD_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_THREAD_PROCESS_SHARED: u32 = 200809; -pub const _POSIX_THREAD_ROBUST_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_ROBUST_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_SAFE_FUNCTIONS: u32 = 200809; -pub const _POSIX_THREAD_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_THREADS: u32 = 200809; -pub const _POSIX_TIMERS: u32 = 200809; -pub const _POSIX_TRACE: i32 = -1; -pub const _POSIX_TRACE_EVENT_FILTER: i32 = -1; -pub const _POSIX_TRACE_INHERIT: i32 = -1; -pub const _POSIX_TRACE_LOG: i32 = -1; -pub const _POSIX_TYPED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_VDISABLE: u8 = 0u8; -pub const _POSIX2_C_BIND: u32 = 200809; -pub const _POSIX2_C_DEV: i32 = -1; -pub const _POSIX2_CHAR_TERM: u32 = 200809; -pub const _POSIX2_FORT_DEV: i32 = -1; -pub const _POSIX2_FORT_RUN: i32 = -1; -pub const _POSIX2_LOCALEDEF: i32 = -1; -pub const _POSIX2_SW_DEV: i32 = -1; -pub const _POSIX2_UPE: i32 = -1; -pub const _POSIX_V7_ILP32_OFF32: u32 = 1; -pub const _POSIX_V7_ILP32_OFFBIG: i32 = -1; -pub const _POSIX_V7_LP64_OFF64: i32 = -1; -pub const _POSIX_V7_LPBIG_OFFBIG: i32 = -1; -pub const _XOPEN_CRYPT: i32 = -1; -pub const _XOPEN_ENH_I18N: u32 = 1; -pub const _XOPEN_LEGACY: i32 = -1; -pub const _XOPEN_REALTIME: u32 = 1; -pub const _XOPEN_REALTIME_THREADS: u32 = 1; -pub const _XOPEN_SHM: u32 = 1; -pub const _XOPEN_STREAMS: i32 = -1; -pub const _XOPEN_UNIX: 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_CLOCKRES_MIN: u32 = 20000000; -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_SS_REPL_MAX: u32 = 4; -pub const _POSIX_SYMLINK_MAX: u32 = 255; -pub const _POSIX_SYMLOOP_MAX: u32 = 8; -pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; -pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; -pub const _POSIX_TIMER_MAX: u32 = 32; -pub const _POSIX_TRACE_EVENT_NAME_MAX: u32 = 30; -pub const _POSIX_TRACE_NAME_MAX: u32 = 8; -pub const _POSIX_TRACE_SYS_MAX: u32 = 8; -pub const _POSIX_TRACE_USER_EVENT_MAX: u32 = 32; -pub const _POSIX_TTY_NAME_MAX: u32 = 9; -pub const _POSIX_TZNAME_MAX: u32 = 6; -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_CHARCLASS_NAME_MAX: u32 = 14; -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 _XOPEN_IOV_MAX: u32 = 16; -pub const _XOPEN_NAME_MAX: u32 = 255; -pub const _XOPEN_PATH_MAX: u32 = 1024; -pub const HOST_NAME_MAX: u32 = 255; -pub const LOGIN_NAME_MAX: u32 = 256; -pub const TTY_NAME_MAX: u32 = 32; -pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const PTHREAD_KEYS_MAX: u32 = 128; -pub const _KERNEL_NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const __SIGRTMIN: u32 = 32; -pub const SIGSWI: u32 = 32; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_THIRTYTWO: u32 = 33554432; -pub const SA_RESTORER: u32 = 67108864; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const NSIGSEGV: u32 = 7; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const NSIGTRAP: u32 = 5; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const NSIGSYS: u32 = 1; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const _KERNEL__NSIG: u32 = 64; -pub const _NSIG: u32 = 65; -pub const NSIG: u32 = 65; -pub const PAGE_SIZE: u32 = 4096; -pub const PAGE_MASK: i32 = -4096; -pub const NGREG: u32 = 18; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -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_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const FD_SETSIZE: u32 = 1024; -pub const CLOCKS_PER_SEC: u32 = 1000000; -pub const TIME_UTC: u32 = 1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SCHED_OTHER: u32 = 0; -pub const PTHREAD_ONCE_INIT: u32 = 0; -pub const PTHREAD_BARRIER_SERIAL_THREAD: i32 = -1; -pub const PTHREAD_STACK_MIN: u32 = 8192; -pub const PTHREAD_CREATE_DETACHED: u32 = 1; -pub const PTHREAD_CREATE_JOINABLE: u32 = 0; -pub const PTHREAD_EXPLICIT_SCHED: u32 = 0; -pub const PTHREAD_INHERIT_SCHED: u32 = 1; -pub const PTHREAD_PRIO_NONE: u32 = 0; -pub const PTHREAD_PRIO_INHERIT: u32 = 1; -pub const PTHREAD_PROCESS_PRIVATE: u32 = 0; -pub const PTHREAD_PROCESS_SHARED: u32 = 1; -pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; -pub const PTHREAD_SCOPE_PROCESS: u32 = 1; -pub const __GNUC_VA_LIST: u32 = 1; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; -pub const PRId8: &[u8; 2usize] = b"d\0"; -pub const PRId16: &[u8; 2usize] = b"d\0"; -pub const PRId32: &[u8; 2usize] = b"d\0"; -pub const PRId64: &[u8; 4usize] = b"lld\0"; -pub const PRIdLEAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST16: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST32: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST64: &[u8; 4usize] = b"lld\0"; -pub const PRIdFAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdFAST64: &[u8; 4usize] = b"lld\0"; -pub const PRIdMAX: &[u8; 3usize] = b"jd\0"; -pub const PRIi8: &[u8; 2usize] = b"i\0"; -pub const PRIi16: &[u8; 2usize] = b"i\0"; -pub const PRIi32: &[u8; 2usize] = b"i\0"; -pub const PRIi64: &[u8; 4usize] = b"lli\0"; -pub const PRIiLEAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST16: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST32: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST64: &[u8; 4usize] = b"lli\0"; -pub const PRIiFAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiFAST64: &[u8; 4usize] = b"lli\0"; -pub const PRIiMAX: &[u8; 3usize] = b"ji\0"; -pub const PRIo8: &[u8; 2usize] = b"o\0"; -pub const PRIo16: &[u8; 2usize] = b"o\0"; -pub const PRIo32: &[u8; 2usize] = b"o\0"; -pub const PRIo64: &[u8; 4usize] = b"llo\0"; -pub const PRIoLEAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST16: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST32: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST64: &[u8; 4usize] = b"llo\0"; -pub const PRIoFAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoFAST64: &[u8; 4usize] = b"llo\0"; -pub const PRIoMAX: &[u8; 3usize] = b"jo\0"; -pub const PRIu8: &[u8; 2usize] = b"u\0"; -pub const PRIu16: &[u8; 2usize] = b"u\0"; -pub const PRIu32: &[u8; 2usize] = b"u\0"; -pub const PRIu64: &[u8; 4usize] = b"llu\0"; -pub const PRIuLEAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST16: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST32: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST64: &[u8; 4usize] = b"llu\0"; -pub const PRIuFAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuFAST64: &[u8; 4usize] = b"llu\0"; -pub const PRIuMAX: &[u8; 3usize] = b"ju\0"; -pub const PRIx8: &[u8; 2usize] = b"x\0"; -pub const PRIx16: &[u8; 2usize] = b"x\0"; -pub const PRIx32: &[u8; 2usize] = b"x\0"; -pub const PRIx64: &[u8; 4usize] = b"llx\0"; -pub const PRIxLEAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST16: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST32: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST64: &[u8; 4usize] = b"llx\0"; -pub const PRIxFAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxFAST64: &[u8; 4usize] = b"llx\0"; -pub const PRIxMAX: &[u8; 3usize] = b"jx\0"; -pub const PRIX8: &[u8; 2usize] = b"X\0"; -pub const PRIX16: &[u8; 2usize] = b"X\0"; -pub const PRIX32: &[u8; 2usize] = b"X\0"; -pub const PRIX64: &[u8; 4usize] = b"llX\0"; -pub const PRIXLEAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST16: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST32: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST64: &[u8; 4usize] = b"llX\0"; -pub const PRIXFAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXFAST64: &[u8; 4usize] = b"llX\0"; -pub const PRIXMAX: &[u8; 3usize] = b"jX\0"; -pub const SCNd8: &[u8; 4usize] = b"hhd\0"; -pub const SCNd16: &[u8; 3usize] = b"hd\0"; -pub const SCNd32: &[u8; 2usize] = b"d\0"; -pub const SCNd64: &[u8; 4usize] = b"lld\0"; -pub const SCNdLEAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdLEAST16: &[u8; 3usize] = b"hd\0"; -pub const SCNdLEAST32: &[u8; 2usize] = b"d\0"; -pub const SCNdLEAST64: &[u8; 4usize] = b"lld\0"; -pub const SCNdFAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdFAST64: &[u8; 4usize] = b"lld\0"; -pub const SCNdMAX: &[u8; 3usize] = b"jd\0"; -pub const SCNi8: &[u8; 4usize] = b"hhi\0"; -pub const SCNi16: &[u8; 3usize] = b"hi\0"; -pub const SCNi32: &[u8; 2usize] = b"i\0"; -pub const SCNi64: &[u8; 4usize] = b"lli\0"; -pub const SCNiLEAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiLEAST16: &[u8; 3usize] = b"hi\0"; -pub const SCNiLEAST32: &[u8; 2usize] = b"i\0"; -pub const SCNiLEAST64: &[u8; 4usize] = b"lli\0"; -pub const SCNiFAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiFAST64: &[u8; 4usize] = b"lli\0"; -pub const SCNiMAX: &[u8; 3usize] = b"ji\0"; -pub const SCNo8: &[u8; 4usize] = b"hho\0"; -pub const SCNo16: &[u8; 3usize] = b"ho\0"; -pub const SCNo32: &[u8; 2usize] = b"o\0"; -pub const SCNo64: &[u8; 4usize] = b"llo\0"; -pub const SCNoLEAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoLEAST16: &[u8; 3usize] = b"ho\0"; -pub const SCNoLEAST32: &[u8; 2usize] = b"o\0"; -pub const SCNoLEAST64: &[u8; 4usize] = b"llo\0"; -pub const SCNoFAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoFAST64: &[u8; 4usize] = b"llo\0"; -pub const SCNoMAX: &[u8; 3usize] = b"jo\0"; -pub const SCNu8: &[u8; 4usize] = b"hhu\0"; -pub const SCNu16: &[u8; 3usize] = b"hu\0"; -pub const SCNu32: &[u8; 2usize] = b"u\0"; -pub const SCNu64: &[u8; 4usize] = b"llu\0"; -pub const SCNuLEAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuLEAST16: &[u8; 3usize] = b"hu\0"; -pub const SCNuLEAST32: &[u8; 2usize] = b"u\0"; -pub const SCNuLEAST64: &[u8; 4usize] = b"llu\0"; -pub const SCNuFAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuFAST64: &[u8; 4usize] = b"llu\0"; -pub const SCNuMAX: &[u8; 3usize] = b"ju\0"; -pub const SCNx8: &[u8; 4usize] = b"hhx\0"; -pub const SCNx16: &[u8; 3usize] = b"hx\0"; -pub const SCNx32: &[u8; 2usize] = b"x\0"; -pub const SCNx64: &[u8; 4usize] = b"llx\0"; -pub const SCNxLEAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxLEAST16: &[u8; 3usize] = b"hx\0"; -pub const SCNxLEAST32: &[u8; 2usize] = b"x\0"; -pub const SCNxLEAST64: &[u8; 4usize] = b"llx\0"; -pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxFAST64: &[u8; 4usize] = b"llx\0"; -pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; -extern "C" { - pub fn android_get_application_target_sdk_version() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn android_get_device_api_level() -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { - pub fd: ::std::os::raw::c_int, - pub events: ::std::os::raw::c_short, - pub revents: ::std::os::raw::c_short, -} -#[test] -fn bindgen_test_layout_pollfd() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pollfd)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pollfd)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(fd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).events as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(events) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).revents as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(revents) - ) - ); -} -pub type wchar_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct max_align_t { - pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, - pub __clang_max_align_nonce2: f64, -} -#[test] -fn bindgen_test_layout_max_align_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(max_align_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(max_align_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce2) - ) - ); -} -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_longlong; -pub type __uint64_t = ::std::os::raw::c_ulonglong; -pub type __intptr_t = ::std::os::raw::c_int; -pub type __uintptr_t = ::std::os::raw::c_uint; -pub type int_least8_t = i8; -pub type uint_least8_t = u8; -pub type int_least16_t = i16; -pub type uint_least16_t = u16; -pub type int_least32_t = i32; -pub type uint_least32_t = u32; -pub type int_least64_t = i64; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type uint_fast8_t = u8; -pub type int_fast64_t = i64; -pub type uint_fast64_t = u64; -pub type int_fast16_t = i32; -pub type uint_fast16_t = u32; -pub type int_fast32_t = i32; -pub type uint_fast32_t = u32; -pub type uintmax_t = u64; -pub type intmax_t = i64; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 32usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_mode_t = ::std::os::raw::c_ushort; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_ushort; -pub type __kernel_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ushort; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = ::std::os::raw::c_uint; -pub type __kernel_ssize_t = ::std::os::raw::c_int; -pub type __kernel_ptrdiff_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = ::std::os::raw::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = ::std::os::raw::c_uint; -pub type __gid_t = __kernel_gid32_t; -pub type gid_t = __gid_t; -pub type __uid_t = __kernel_uid32_t; -pub type uid_t = __uid_t; -pub type __pid_t = __kernel_pid_t; -pub type pid_t = __pid_t; -pub type __id_t = u32; -pub type id_t = __id_t; -pub type blkcnt_t = ::std::os::raw::c_ulong; -pub type blksize_t = ::std::os::raw::c_ulong; -pub type caddr_t = __kernel_caddr_t; -pub type clock_t = __kernel_clock_t; -pub type __clockid_t = __kernel_clockid_t; -pub type clockid_t = __clockid_t; -pub type daddr_t = __kernel_daddr_t; -pub type fsblkcnt_t = ::std::os::raw::c_ulong; -pub type fsfilcnt_t = ::std::os::raw::c_ulong; -pub type __mode_t = __kernel_mode_t; -pub type mode_t = __mode_t; -pub type __key_t = __kernel_key_t; -pub type key_t = __key_t; -pub type __ino_t = __kernel_ino_t; -pub type ino_t = __ino_t; -pub type ino64_t = u64; -pub type __nlink_t = u32; -pub type nlink_t = __nlink_t; -pub type __timer_t = *mut ::std::os::raw::c_void; -pub type timer_t = __timer_t; -pub type __suseconds_t = __kernel_suseconds_t; -pub type suseconds_t = __suseconds_t; -pub type __useconds_t = u32; -pub type useconds_t = __useconds_t; -pub type dev_t = u32; -pub type __time_t = __kernel_time_t; -pub type time_t = __time_t; -pub type off_t = __kernel_off_t; -pub type loff_t = __kernel_loff_t; -pub type off64_t = loff_t; -pub type __socklen_t = i32; -pub type socklen_t = __socklen_t; -pub type __va_list = u32; -pub type ssize_t = __kernel_ssize_t; -pub type uint_t = ::std::os::raw::c_uint; -pub type uint = ::std::os::raw::c_uint; -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 u_int32_t = u32; -pub type u_int16_t = u16; -pub type u_int8_t = u8; -pub type u_int64_t = u64; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext { - pub trap_no: ::std::os::raw::c_ulong, - pub error_code: ::std::os::raw::c_ulong, - pub oldmask: ::std::os::raw::c_ulong, - pub arm_r0: ::std::os::raw::c_ulong, - pub arm_r1: ::std::os::raw::c_ulong, - pub arm_r2: ::std::os::raw::c_ulong, - pub arm_r3: ::std::os::raw::c_ulong, - pub arm_r4: ::std::os::raw::c_ulong, - pub arm_r5: ::std::os::raw::c_ulong, - pub arm_r6: ::std::os::raw::c_ulong, - pub arm_r7: ::std::os::raw::c_ulong, - pub arm_r8: ::std::os::raw::c_ulong, - pub arm_r9: ::std::os::raw::c_ulong, - pub arm_r10: ::std::os::raw::c_ulong, - pub arm_fp: ::std::os::raw::c_ulong, - pub arm_ip: ::std::os::raw::c_ulong, - pub arm_sp: ::std::os::raw::c_ulong, - pub arm_lr: ::std::os::raw::c_ulong, - pub arm_pc: ::std::os::raw::c_ulong, - pub arm_cpsr: ::std::os::raw::c_ulong, - pub fault_address: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_sigcontext() { - assert_eq!( - ::std::mem::size_of::(), - 84usize, - concat!("Size of: ", stringify!(sigcontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigcontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trap_no as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(trap_no) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).error_code as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(error_code) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r0 as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r1 as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r2 as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r2) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r3 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r3) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r4 as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r4) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r5 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r5) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r6 as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r6) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r7 as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r7) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r8 as *const _ as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r8) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r9 as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r9) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_r10 as *const _ as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_r10) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_fp as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_fp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_ip as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_ip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_sp as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_lr as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_lr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_pc as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_pc) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).arm_cpsr as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(arm_cpsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fault_address as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fault_address) - ) - ); -} -pub type sigset_t = ::std::os::raw::c_ulong; -pub type __signalfn_t = ::std::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::std::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sigaction { - pub _u: __kernel_sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_ulong, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sigaction__bindgen_ty_1 { - pub _sa_handler: __sighandler_t, - pub _sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout___kernel_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction__bindgen_ty_1>(), - 4usize, - concat!("Size of: ", stringify!(__kernel_sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__kernel_sigaction__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__kernel_sigaction__bindgen_ty_1>()))._sa_handler as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction__bindgen_ty_1), - "::", - stringify!(_sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__kernel_sigaction__bindgen_ty_1>()))._sa_sigaction as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction__bindgen_ty_1), - "::", - stringify!(_sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout___kernel_sigaction() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>()))._u as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(_u) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_mask as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_restorer as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -pub struct sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_flags: ::std::os::raw::c_int, - pub ss_size: size_t, -} -#[test] -fn bindgen_test_layout_sigaltstack() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaltstack)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_sp as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_flags as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_size) - ) - ); -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_int as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_int) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_ptr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_ptr) - ) - ); -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { - pub _kill: __sifields__bindgen_ty_1, - pub _timer: __sifields__bindgen_ty_2, - pub _rt: __sifields__bindgen_ty_3, - pub _sigchld: __sifields__bindgen_ty_4, - pub _sigfault: __sifields__bindgen_ty_5, - pub _sigpoll: __sifields__bindgen_ty_6, - pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_uid) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { - pub _tid: __kernel_timer_t, - pub _overrun: ::std::os::raw::c_int, - pub _sigval: sigval_t, - pub _sys_private: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_2>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_2>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._overrun as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_overrun) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sigval) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sys_private as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sys_private) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _sigval: sigval_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_3>(), - 12usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_3>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_sigval) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _status: ::std::os::raw::c_int, - pub _utime: __kernel_clock_t, - pub _stime: __kernel_clock_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_4() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_4>(), - 20usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_4>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._status as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._utime as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_utime) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._stime as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_stime) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { - pub _addr: *mut ::std::os::raw::c_void, - pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _addr_lsb: ::std::os::raw::c_short, - pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, - pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { - pub _dummy_bnd: [::std::os::raw::c_char; 4usize], - pub _lower: *mut ::std::os::raw::c_void, - pub _upper: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>())) - ._dummy_bnd as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_dummy_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._lower - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_lower) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._upper - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_upper) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { - pub _dummy_pkey: [::std::os::raw::c_char; 4usize], - pub _pkey: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>())) - ._dummy_pkey as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_dummy_pkey) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>()))._pkey - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_lsb) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_bnd as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_pkey - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5>()))._addr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5), - "::", - stringify!(_addr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { - pub _band: ::std::os::raw::c_long, - pub _fd: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_6() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_6>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_6>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._band as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_band) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._fd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_fd) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { - pub _call_addr: *mut ::std::os::raw::c_void, - pub _syscall: ::std::os::raw::c_int, - pub _arch: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_7() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_7>(), - 12usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_7>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._call_addr as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_call_addr) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._syscall as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_syscall) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._arch as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_arch) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields() { - assert_eq!( - ::std::mem::size_of::<__sifields>(), - 20usize, - concat!("Size of: ", stringify!(__sifields)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._kill as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_kill) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._timer as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_timer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._rt as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_rt) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigchld as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigchld) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigfault as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigfault) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigpoll as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigpoll) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigsys as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigsys) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { - pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { - pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, - pub _si_pad: [::std::os::raw::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub _sifields: __sifields, -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_signo as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_signo) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_errno as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_errno) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_code as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_code) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sifields as *const _ - as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_sifields) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._si_pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1), - "::", - stringify!(_si_pad) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(siginfo)) - ); -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_value: sigval_t, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_notify: ::std::os::raw::c_int, - pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { - pub _pad: [::std::os::raw::c_int; 13usize], - pub _tid: ::std::os::raw::c_int, - pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { - pub _function: ::std::option::Option, - pub _attribute: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!( - "Size of: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._function as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_function) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._attribute as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_attribute) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_pad) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sigev_thread as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_sigev_thread) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_value as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_value) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_signo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_signo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_notify as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._sigev_un as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(_sigev_un) - ) - ); -} -pub type sigevent_t = sigevent; -pub type sig_atomic_t = ::std::os::raw::c_int; -pub type sig_t = __sighandler_t; -pub type sighandler_t = __sighandler_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigset64_t { - pub __bits: [::std::os::raw::c_ulong; 2usize], -} -#[test] -fn bindgen_test_layout_sigset64_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigset64_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigset64_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigset64_t), - "::", - stringify!(__bits) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub __bindgen_anon_1: sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_int, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction64 { - pub __bindgen_anon_1: sigaction64__bindgen_ty_1, - pub sa_flags: ::std::os::raw::c_int, - pub sa_restorer: ::std::option::Option, - pub sa_mask: sigset64_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction64__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction64() { - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(sigaction64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_restorer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_mask) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_fpregs { - pub fpregs: [user_fpregs_fp_reg; 8usize], - pub _bitfield_align_1: [u32; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>, - pub ftype: [::std::os::raw::c_uchar; 8usize], - pub init_flag: ::std::os::raw::c_uint, -} -#[repr(C)] -#[repr(align(4))] -#[derive(Debug, Copy, Clone)] -pub struct user_fpregs_fp_reg { - pub _bitfield_align_1: [u32; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 12usize]>, -} -#[test] -fn bindgen_test_layout_user_fpregs_fp_reg() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(user_fpregs_fp_reg)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_fpregs_fp_reg)) - ); -} -impl user_fpregs_fp_reg { - #[inline] - pub fn sign1(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } - } - #[inline] - pub fn set_sign1(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - #[inline] - pub fn unused(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 15u8) as u32) } - } - #[inline] - pub fn set_unused(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 15u8, val as u64) - } - } - #[inline] - pub fn sign2(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 1u8) as u32) } - } - #[inline] - pub fn set_sign2(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(16usize, 1u8, val as u64) - } - } - #[inline] - pub fn exponent(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(17usize, 14u8) as u32) } - } - #[inline] - pub fn set_exponent(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(17usize, 14u8, val as u64) - } - } - #[inline] - pub fn j(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u32) } - } - #[inline] - pub fn set_j(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(31usize, 1u8, val as u64) - } - } - #[inline] - pub fn mantissa1(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 31u8) as u32) } - } - #[inline] - pub fn set_mantissa1(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(32usize, 31u8, val as u64) - } - } - #[inline] - pub fn mantissa0(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(64usize, 32u8) as u32) } - } - #[inline] - pub fn set_mantissa0(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(64usize, 32u8, val as u64) - } - } - #[inline] - pub fn new_bitfield_1( - sign1: ::std::os::raw::c_uint, - unused: ::std::os::raw::c_uint, - sign2: ::std::os::raw::c_uint, - exponent: ::std::os::raw::c_uint, - j: ::std::os::raw::c_uint, - mantissa1: ::std::os::raw::c_uint, - mantissa0: ::std::os::raw::c_uint, - ) -> __BindgenBitfieldUnit<[u8; 12usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 12usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let sign1: u32 = unsafe { ::std::mem::transmute(sign1) }; - sign1 as u64 - }); - __bindgen_bitfield_unit.set(1usize, 15u8, { - let unused: u32 = unsafe { ::std::mem::transmute(unused) }; - unused as u64 - }); - __bindgen_bitfield_unit.set(16usize, 1u8, { - let sign2: u32 = unsafe { ::std::mem::transmute(sign2) }; - sign2 as u64 - }); - __bindgen_bitfield_unit.set(17usize, 14u8, { - let exponent: u32 = unsafe { ::std::mem::transmute(exponent) }; - exponent as u64 - }); - __bindgen_bitfield_unit.set(31usize, 1u8, { - let j: u32 = unsafe { ::std::mem::transmute(j) }; - j as u64 - }); - __bindgen_bitfield_unit.set(32usize, 31u8, { - let mantissa1: u32 = unsafe { ::std::mem::transmute(mantissa1) }; - mantissa1 as u64 - }); - __bindgen_bitfield_unit.set(64usize, 32u8, { - let mantissa0: u32 = unsafe { ::std::mem::transmute(mantissa0) }; - mantissa0 as u64 - }); - __bindgen_bitfield_unit - } -} -#[test] -fn bindgen_test_layout_user_fpregs() { - assert_eq!( - ::std::mem::size_of::(), - 116usize, - concat!("Size of: ", stringify!(user_fpregs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_fpregs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs), - "::", - stringify!(fpregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ftype as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs), - "::", - stringify!(ftype) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).init_flag as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs), - "::", - stringify!(init_flag) - ) - ); -} -impl user_fpregs { - #[inline] - pub fn fpsr(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 32u8) as u32) } - } - #[inline] - pub fn set_fpsr(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 32u8, val as u64) - } - } - #[inline] - pub fn fpcr(&self) -> ::std::os::raw::c_uint { - unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u32) } - } - #[inline] - pub fn set_fpcr(&mut self, val: ::std::os::raw::c_uint) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(32usize, 32u8, val as u64) - } - } - #[inline] - pub fn new_bitfield_1( - fpsr: ::std::os::raw::c_uint, - fpcr: ::std::os::raw::c_uint, - ) -> __BindgenBitfieldUnit<[u8; 8usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 32u8, { - let fpsr: u32 = unsafe { ::std::mem::transmute(fpsr) }; - fpsr as u64 - }); - __bindgen_bitfield_unit.set(32usize, 32u8, { - let fpcr: u32 = unsafe { ::std::mem::transmute(fpcr) }; - fpcr as u64 - }); - __bindgen_bitfield_unit - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_regs { - pub uregs: [::std::os::raw::c_ulong; 18usize], -} -#[test] -fn bindgen_test_layout_user_regs() { - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(user_regs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_regs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_regs), - "::", - stringify!(uregs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_vfp { - pub fpregs: [::std::os::raw::c_ulonglong; 32usize], - pub fpscr: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_user_vfp() { - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(user_vfp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(user_vfp)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_vfp), - "::", - stringify!(fpregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpscr as *const _ as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(user_vfp), - "::", - stringify!(fpscr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_vfp_exc { - pub fpexc: ::std::os::raw::c_ulong, - pub fpinst: ::std::os::raw::c_ulong, - pub fpinst2: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_user_vfp_exc() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(user_vfp_exc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_vfp_exc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpexc as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_vfp_exc), - "::", - stringify!(fpexc) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpinst as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(user_vfp_exc), - "::", - stringify!(fpinst) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpinst2 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_vfp_exc), - "::", - stringify!(fpinst2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user { - pub regs: user_regs, - pub u_fpvalid: ::std::os::raw::c_int, - pub u_tsize: ::std::os::raw::c_ulong, - pub u_dsize: ::std::os::raw::c_ulong, - pub u_ssize: ::std::os::raw::c_ulong, - pub start_code: ::std::os::raw::c_ulong, - pub start_stack: ::std::os::raw::c_ulong, - pub signal: ::std::os::raw::c_long, - pub reserved: ::std::os::raw::c_int, - pub u_ar0: *mut user_regs, - pub magic: ::std::os::raw::c_ulong, - pub u_comm: [::std::os::raw::c_char; 32usize], - pub u_debugreg: [::std::os::raw::c_int; 8usize], - pub u_fp: user_fpregs, - pub u_fp0: *mut user_fpregs, -} -#[test] -fn bindgen_test_layout_user() { - assert_eq!( - ::std::mem::size_of::(), - 296usize, - concat!("Size of: ", stringify!(user)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).regs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(regs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fpvalid as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fpvalid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_tsize as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_tsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_dsize as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_dsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ssize as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ssize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_code as *const _ as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_code) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_stack as *const _ as usize }, - 92usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).signal as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved as *const _ as usize }, - 100usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ar0 as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ar0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).magic as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_comm as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_comm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_debugreg as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_debugreg) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fp as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fp0 as *const _ as usize }, - 292usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fp0) - ) - ); -} -pub const REG_R0: ::std::os::raw::c_uint = 0; -pub const REG_R1: ::std::os::raw::c_uint = 1; -pub const REG_R2: ::std::os::raw::c_uint = 2; -pub const REG_R3: ::std::os::raw::c_uint = 3; -pub const REG_R4: ::std::os::raw::c_uint = 4; -pub const REG_R5: ::std::os::raw::c_uint = 5; -pub const REG_R6: ::std::os::raw::c_uint = 6; -pub const REG_R7: ::std::os::raw::c_uint = 7; -pub const REG_R8: ::std::os::raw::c_uint = 8; -pub const REG_R9: ::std::os::raw::c_uint = 9; -pub const REG_R10: ::std::os::raw::c_uint = 10; -pub const REG_R11: ::std::os::raw::c_uint = 11; -pub const REG_R12: ::std::os::raw::c_uint = 12; -pub const REG_R13: ::std::os::raw::c_uint = 13; -pub const REG_R14: ::std::os::raw::c_uint = 14; -pub const REG_R15: ::std::os::raw::c_uint = 15; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub type greg_t = ::std::os::raw::c_int; -pub type gregset_t = [greg_t; 18usize]; -pub type fpregset_t = user_fpregs; -pub type mcontext_t = sigcontext; -#[repr(C)] -#[repr(align(8))] -pub struct ucontext { - pub uc_flags: ::std::os::raw::c_ulong, - pub uc_link: *mut ucontext, - pub uc_stack: stack_t, - pub uc_mcontext: mcontext_t, - pub __bindgen_anon_1: ucontext__bindgen_ty_1, - pub __padding: [::std::os::raw::c_char; 120usize], - pub uc_regspace: [::std::os::raw::c_ulong; 128usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ucontext__bindgen_ty_1 { - pub __bindgen_anon_1: ucontext__bindgen_ty_1__bindgen_ty_1, - pub uc_sigmask64: sigset64_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucontext__bindgen_ty_1__bindgen_ty_1 { - pub uc_sigmask: sigset_t, - pub __padding_rt_sigset: u32, -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!( - "Size of: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(uc_sigmask) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__padding_rt_sigset - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(__padding_rt_sigset) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask64 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask64) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext() { - assert_eq!( - ::std::mem::size_of::(), - 744usize, - concat!("Size of: ", stringify!(ucontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ucontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_link as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_link) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_stack as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_mcontext as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_mcontext) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__padding as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(__padding) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_regspace as *const _ as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_regspace) - ) - ); -} -pub type ucontext_t = ucontext; -extern "C" { - pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int; -} -extern "C" { - pub static sys_siglist: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub static sys_signame: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub fn sigaction( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction, - __old_action: *mut sigaction, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaction64( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction64, - __old_action: *mut sigaction64, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn siginterrupt( - __signal: ::std::os::raw::c_int, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn signal(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn sigaddset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaddset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember( - __set: *const sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember64( - __set: *const sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend(__mask: *const sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend64(__mask: *const sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait( - __set: *const sigset_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait64( - __set: *const sigset64_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sighold(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigignore(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpause(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigrelse(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigset(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn raise(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn kill(__pid: pid_t, __signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn killpg( - __pgrp: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn tgkill( - __tgid: ::std::os::raw::c_int, - __tid: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaltstack( - __new_signal_stack: *const stack_t, - __old_signal_stack: *mut stack_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn psiginfo(__info: *const siginfo_t, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn sigqueue( - __pid: pid_t, - __signal: ::std::os::raw::c_int, - __value: sigval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait( - __set: *const sigset_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait64( - __set: *const sigset64_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo64(__set: *const sigset64_t, __info: *mut siginfo_t) - -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { - pub tv_sec: __kernel_time64_t, - pub tv_nsec: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___kernel_timespec() { - assert_eq!( - ::std::mem::size_of::<__kernel_timespec>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_timespec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_timespec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_nsec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { - pub it_interval: __kernel_timespec, - pub it_value: __kernel_timespec, -} -#[test] -fn bindgen_test_layout___kernel_itimerspec() { - assert_eq!( - ::std::mem::size_of::<__kernel_itimerspec>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_itimerspec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { - pub tv_sec: __kernel_long_t, - pub tv_usec: __kernel_long_t, -} -#[test] -fn bindgen_test_layout___kernel_old_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_old_timeval>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_old_timeval>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { - pub tv_sec: __s64, - pub tv_usec: __s64, -} -#[test] -fn bindgen_test_layout___kernel_sock_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_sock_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sock_timeval>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: __kernel_time_t, - pub tv_usec: __kernel_suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} -#[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::(), - 16usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[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::(), - 16usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_value) - ) - ); -} -pub type fd_mask = ::std::os::raw::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fd_set { - pub fds_bits: [fd_mask; 32usize], -} -#[test] -fn bindgen_test_layout_fd_set() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -extern "C" { - pub fn __FD_CLR_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_SET_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_ISSET_chk( - arg1: ::std::os::raw::c_int, - arg2: *const fd_set, - arg3: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn select( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *mut timeval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect64( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn gettimeofday(__tv: *mut timeval, __tz: *mut timezone) -> ::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 getitimer( - __which: ::std::os::raw::c_int, - __current_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn setitimer( - __which: ::std::os::raw::c_int, - __new_value: *const itimerval, - __old_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn utimes( - __path: *const ::std::os::raw::c_char, - __times: *const timeval, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __locale_t { - _unused: [u8; 0], -} -pub type locale_t = *mut __locale_t; -extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -extern "C" { - pub static mut timezone: ::std::os::raw::c_long; -} -#[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::(), - 44usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_min as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_min) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_hour as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_hour) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mday as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mon as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mon) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_year as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_year) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_wday as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_wday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_yday as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_yday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_isdst as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_isdst) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_gmtoff as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_gmtoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_zone as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_zone) - ) - ); -} -extern "C" { - pub fn time(__t: *mut time_t) -> time_t; -} -extern "C" { - pub fn nanosleep( - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn asctime(__tm: *const tm) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn asctime_r( - __tm: *const tm, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn difftime(__lhs: time_t, __rhs: time_t) -> f64; -} -extern "C" { - pub fn mktime(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn localtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn localtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn gmtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn gmtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn strptime( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strptime_l( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - __l: locale_t, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strftime( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - ) -> size_t; -} -extern "C" { - pub fn strftime_l( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - __l: locale_t, - ) -> size_t; -} -extern "C" { - pub fn ctime(__t: *const time_t) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn ctime_r( - __t: *const time_t, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn tzset(); -} -extern "C" { - pub fn clock() -> clock_t; -} -extern "C" { - pub fn clock_getcpuclockid(__pid: pid_t, __clock: *mut clockid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_getres(__clock: clockid_t, __resolution: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_gettime(__clock: clockid_t, __ts: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_nanosleep( - __clock: clockid_t, - __flags: ::std::os::raw::c_int, - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_settime(__clock: clockid_t, __ts: *const timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_create( - __clock: clockid_t, - __event: *mut sigevent, - __timer_ptr: *mut timer_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_delete(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_settime( - __timer: timer_t, - __flags: ::std::os::raw::c_int, - __new_value: *const itimerspec, - __old_value: *mut itimerspec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_gettime(__timer: timer_t, __ts: *mut itimerspec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_getoverrun(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timelocal(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timegm(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timespec_get( - __ts: *mut timespec, - __base: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -pub type nfds_t = ::std::os::raw::c_uint; -extern "C" { - pub fn poll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout_ms: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll64( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clone_args { - pub flags: __u64, - pub pidfd: __u64, - pub child_tid: __u64, - pub parent_tid: __u64, - pub exit_signal: __u64, - pub stack: __u64, - pub stack_size: __u64, - pub tls: __u64, -} -#[test] -fn bindgen_test_layout_clone_args() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(clone_args)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(clone_args)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pidfd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(pidfd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).child_tid as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(child_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).parent_tid as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(parent_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).exit_signal as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(exit_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tls as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(tls) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sched_param { - pub sched_priority: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sched_param() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sched_param)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sched_param)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sched_param), - "::", - stringify!(sched_priority) - ) - ); -} -extern "C" { - pub fn sched_setscheduler( - __pid: pid_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getscheduler(__pid: pid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_yield() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_max(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_min(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_setparam(__pid: pid_t, __param: *const sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getparam(__pid: pid_t, __param: *mut sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_rr_get_interval(__pid: pid_t, __quantum: *mut timespec) -> ::std::os::raw::c_int; -} -pub const PTHREAD_MUTEX_NORMAL: ::std::os::raw::c_uint = 0; -pub const PTHREAD_MUTEX_RECURSIVE: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_ERRORCHECK: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_ERRORCHECK_NP: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_RECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_DEFAULT: ::std::os::raw::c_uint = 0; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; -pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub type __pthread_cleanup_func_t = - ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __pthread_cleanup_t { - pub __cleanup_prev: *mut __pthread_cleanup_t, - pub __cleanup_routine: __pthread_cleanup_func_t, - pub __cleanup_arg: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___pthread_cleanup_t() { - assert_eq!( - ::std::mem::size_of::<__pthread_cleanup_t>(), - 12usize, - concat!("Size of: ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - ::std::mem::align_of::<__pthread_cleanup_t>(), - 4usize, - concat!("Alignment of ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_prev as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_prev) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_routine as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_routine) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_arg as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_arg) - ) - ); -} -extern "C" { - pub fn __pthread_cleanup_push( - c: *mut __pthread_cleanup_t, - arg1: __pthread_cleanup_func_t, - arg2: *mut ::std::os::raw::c_void, - ); -} -extern "C" { - pub fn __pthread_cleanup_pop(arg1: *mut __pthread_cleanup_t, arg2: ::std::os::raw::c_int); -} -pub const AASSET_MODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AASSET_MODE_RANDOM: ::std::os::raw::c_uint = 1; -pub const AASSET_MODE_STREAMING: ::std::os::raw::c_uint = 2; -pub const AASSET_MODE_BUFFER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const ACONFIGURATION_ORIENTATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_ORIENTATION_PORT: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_ORIENTATION_LAND: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_ORIENTATION_SQUARE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_TOUCHSCREEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_TOUCHSCREEN_NOTOUCH: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_TOUCHSCREEN_STYLUS: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_TOUCHSCREEN_FINGER: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_DENSITY_DEFAULT: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_DENSITY_LOW: ::std::os::raw::c_uint = 120; -pub const ACONFIGURATION_DENSITY_MEDIUM: ::std::os::raw::c_uint = 160; -pub const ACONFIGURATION_DENSITY_TV: ::std::os::raw::c_uint = 213; -pub const ACONFIGURATION_DENSITY_HIGH: ::std::os::raw::c_uint = 240; -pub const ACONFIGURATION_DENSITY_XHIGH: ::std::os::raw::c_uint = 320; -pub const ACONFIGURATION_DENSITY_XXHIGH: ::std::os::raw::c_uint = 480; -pub const ACONFIGURATION_DENSITY_XXXHIGH: ::std::os::raw::c_uint = 640; -pub const ACONFIGURATION_DENSITY_ANY: ::std::os::raw::c_uint = 65534; -pub const ACONFIGURATION_DENSITY_NONE: ::std::os::raw::c_uint = 65535; -pub const ACONFIGURATION_KEYBOARD_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYBOARD_NOKEYS: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYBOARD_QWERTY: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYBOARD_12KEY: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVIGATION_NONAV: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVIGATION_DPAD: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_NAVIGATION_TRACKBALL: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_WHEEL: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_KEYSHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYSHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYSHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYSHIDDEN_SOFT: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENSIZE_SMALL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENSIZE_NORMAL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_LARGE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_SCREENSIZE_XLARGE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_SCREENLONG_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENLONG_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENLONG_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENROUND_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENROUND_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENROUND_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_HDR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_HDR_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_HDR_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_TYPE_NORMAL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_TYPE_DESK: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_CAR: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_UI_MODE_TYPE_TELEVISION: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_UI_MODE_TYPE_APPLIANCE: ::std::os::raw::c_uint = 5; -pub const ACONFIGURATION_UI_MODE_TYPE_WATCH: ::std::os::raw::c_uint = 6; -pub const ACONFIGURATION_UI_MODE_TYPE_VR_HEADSET: ::std::os::raw::c_uint = 7; -pub const ACONFIGURATION_UI_MODE_NIGHT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_NIGHT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_NIGHT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREEN_HEIGHT_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_LTR: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_LAYOUTDIR_RTL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_MCC: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_MNC: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_LOCALE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_TOUCHSCREEN: ::std::os::raw::c_uint = 8; -pub const ACONFIGURATION_KEYBOARD: ::std::os::raw::c_uint = 16; -pub const ACONFIGURATION_KEYBOARD_HIDDEN: ::std::os::raw::c_uint = 32; -pub const ACONFIGURATION_NAVIGATION: ::std::os::raw::c_uint = 64; -pub const ACONFIGURATION_ORIENTATION: ::std::os::raw::c_uint = 128; -pub const ACONFIGURATION_DENSITY: ::std::os::raw::c_uint = 256; -pub const ACONFIGURATION_SCREEN_SIZE: ::std::os::raw::c_uint = 512; -pub const ACONFIGURATION_VERSION: ::std::os::raw::c_uint = 1024; -pub const ACONFIGURATION_SCREEN_LAYOUT: ::std::os::raw::c_uint = 2048; -pub const ACONFIGURATION_UI_MODE: ::std::os::raw::c_uint = 4096; -pub const ACONFIGURATION_SMALLEST_SCREEN_SIZE: ::std::os::raw::c_uint = 8192; -pub const ACONFIGURATION_LAYOUTDIR: ::std::os::raw::c_uint = 16384; -pub const ACONFIGURATION_SCREEN_ROUND: ::std::os::raw::c_uint = 32768; -pub const ACONFIGURATION_COLOR_MODE: ::std::os::raw::c_uint = 65536; -pub const ACONFIGURATION_MNC_ZERO: ::std::os::raw::c_uint = 65535; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const ALOOPER_PREPARE_ALLOW_NON_CALLBACKS: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const ALOOPER_POLL_WAKE: ::std::os::raw::c_int = -1; -pub const ALOOPER_POLL_CALLBACK: ::std::os::raw::c_int = -2; -pub const ALOOPER_POLL_TIMEOUT: ::std::os::raw::c_int = -3; -pub const ALOOPER_POLL_ERROR: ::std::os::raw::c_int = -4; -pub type _bindgen_ty_7 = ::std::os::raw::c_int; -pub const ALOOPER_EVENT_INPUT: ::std::os::raw::c_uint = 1; -pub const ALOOPER_EVENT_OUTPUT: ::std::os::raw::c_uint = 2; -pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; -pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; -pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub type va_list = u32; -pub type __gnuc_va_list = u32; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} -pub const AKEYCODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AKEYCODE_SOFT_LEFT: ::std::os::raw::c_uint = 1; -pub const AKEYCODE_SOFT_RIGHT: ::std::os::raw::c_uint = 2; -pub const AKEYCODE_HOME: ::std::os::raw::c_uint = 3; -pub const AKEYCODE_BACK: ::std::os::raw::c_uint = 4; -pub const AKEYCODE_CALL: ::std::os::raw::c_uint = 5; -pub const AKEYCODE_ENDCALL: ::std::os::raw::c_uint = 6; -pub const AKEYCODE_0: ::std::os::raw::c_uint = 7; -pub const AKEYCODE_1: ::std::os::raw::c_uint = 8; -pub const AKEYCODE_2: ::std::os::raw::c_uint = 9; -pub const AKEYCODE_3: ::std::os::raw::c_uint = 10; -pub const AKEYCODE_4: ::std::os::raw::c_uint = 11; -pub const AKEYCODE_5: ::std::os::raw::c_uint = 12; -pub const AKEYCODE_6: ::std::os::raw::c_uint = 13; -pub const AKEYCODE_7: ::std::os::raw::c_uint = 14; -pub const AKEYCODE_8: ::std::os::raw::c_uint = 15; -pub const AKEYCODE_9: ::std::os::raw::c_uint = 16; -pub const AKEYCODE_STAR: ::std::os::raw::c_uint = 17; -pub const AKEYCODE_POUND: ::std::os::raw::c_uint = 18; -pub const AKEYCODE_DPAD_UP: ::std::os::raw::c_uint = 19; -pub const AKEYCODE_DPAD_DOWN: ::std::os::raw::c_uint = 20; -pub const AKEYCODE_DPAD_LEFT: ::std::os::raw::c_uint = 21; -pub const AKEYCODE_DPAD_RIGHT: ::std::os::raw::c_uint = 22; -pub const AKEYCODE_DPAD_CENTER: ::std::os::raw::c_uint = 23; -pub const AKEYCODE_VOLUME_UP: ::std::os::raw::c_uint = 24; -pub const AKEYCODE_VOLUME_DOWN: ::std::os::raw::c_uint = 25; -pub const AKEYCODE_POWER: ::std::os::raw::c_uint = 26; -pub const AKEYCODE_CAMERA: ::std::os::raw::c_uint = 27; -pub const AKEYCODE_CLEAR: ::std::os::raw::c_uint = 28; -pub const AKEYCODE_A: ::std::os::raw::c_uint = 29; -pub const AKEYCODE_B: ::std::os::raw::c_uint = 30; -pub const AKEYCODE_C: ::std::os::raw::c_uint = 31; -pub const AKEYCODE_D: ::std::os::raw::c_uint = 32; -pub const AKEYCODE_E: ::std::os::raw::c_uint = 33; -pub const AKEYCODE_F: ::std::os::raw::c_uint = 34; -pub const AKEYCODE_G: ::std::os::raw::c_uint = 35; -pub const AKEYCODE_H: ::std::os::raw::c_uint = 36; -pub const AKEYCODE_I: ::std::os::raw::c_uint = 37; -pub const AKEYCODE_J: ::std::os::raw::c_uint = 38; -pub const AKEYCODE_K: ::std::os::raw::c_uint = 39; -pub const AKEYCODE_L: ::std::os::raw::c_uint = 40; -pub const AKEYCODE_M: ::std::os::raw::c_uint = 41; -pub const AKEYCODE_N: ::std::os::raw::c_uint = 42; -pub const AKEYCODE_O: ::std::os::raw::c_uint = 43; -pub const AKEYCODE_P: ::std::os::raw::c_uint = 44; -pub const AKEYCODE_Q: ::std::os::raw::c_uint = 45; -pub const AKEYCODE_R: ::std::os::raw::c_uint = 46; -pub const AKEYCODE_S: ::std::os::raw::c_uint = 47; -pub const AKEYCODE_T: ::std::os::raw::c_uint = 48; -pub const AKEYCODE_U: ::std::os::raw::c_uint = 49; -pub const AKEYCODE_V: ::std::os::raw::c_uint = 50; -pub const AKEYCODE_W: ::std::os::raw::c_uint = 51; -pub const AKEYCODE_X: ::std::os::raw::c_uint = 52; -pub const AKEYCODE_Y: ::std::os::raw::c_uint = 53; -pub const AKEYCODE_Z: ::std::os::raw::c_uint = 54; -pub const AKEYCODE_COMMA: ::std::os::raw::c_uint = 55; -pub const AKEYCODE_PERIOD: ::std::os::raw::c_uint = 56; -pub const AKEYCODE_ALT_LEFT: ::std::os::raw::c_uint = 57; -pub const AKEYCODE_ALT_RIGHT: ::std::os::raw::c_uint = 58; -pub const AKEYCODE_SHIFT_LEFT: ::std::os::raw::c_uint = 59; -pub const AKEYCODE_SHIFT_RIGHT: ::std::os::raw::c_uint = 60; -pub const AKEYCODE_TAB: ::std::os::raw::c_uint = 61; -pub const AKEYCODE_SPACE: ::std::os::raw::c_uint = 62; -pub const AKEYCODE_SYM: ::std::os::raw::c_uint = 63; -pub const AKEYCODE_EXPLORER: ::std::os::raw::c_uint = 64; -pub const AKEYCODE_ENVELOPE: ::std::os::raw::c_uint = 65; -pub const AKEYCODE_ENTER: ::std::os::raw::c_uint = 66; -pub const AKEYCODE_DEL: ::std::os::raw::c_uint = 67; -pub const AKEYCODE_GRAVE: ::std::os::raw::c_uint = 68; -pub const AKEYCODE_MINUS: ::std::os::raw::c_uint = 69; -pub const AKEYCODE_EQUALS: ::std::os::raw::c_uint = 70; -pub const AKEYCODE_LEFT_BRACKET: ::std::os::raw::c_uint = 71; -pub const AKEYCODE_RIGHT_BRACKET: ::std::os::raw::c_uint = 72; -pub const AKEYCODE_BACKSLASH: ::std::os::raw::c_uint = 73; -pub const AKEYCODE_SEMICOLON: ::std::os::raw::c_uint = 74; -pub const AKEYCODE_APOSTROPHE: ::std::os::raw::c_uint = 75; -pub const AKEYCODE_SLASH: ::std::os::raw::c_uint = 76; -pub const AKEYCODE_AT: ::std::os::raw::c_uint = 77; -pub const AKEYCODE_NUM: ::std::os::raw::c_uint = 78; -pub const AKEYCODE_HEADSETHOOK: ::std::os::raw::c_uint = 79; -pub const AKEYCODE_FOCUS: ::std::os::raw::c_uint = 80; -pub const AKEYCODE_PLUS: ::std::os::raw::c_uint = 81; -pub const AKEYCODE_MENU: ::std::os::raw::c_uint = 82; -pub const AKEYCODE_NOTIFICATION: ::std::os::raw::c_uint = 83; -pub const AKEYCODE_SEARCH: ::std::os::raw::c_uint = 84; -pub const AKEYCODE_MEDIA_PLAY_PAUSE: ::std::os::raw::c_uint = 85; -pub const AKEYCODE_MEDIA_STOP: ::std::os::raw::c_uint = 86; -pub const AKEYCODE_MEDIA_NEXT: ::std::os::raw::c_uint = 87; -pub const AKEYCODE_MEDIA_PREVIOUS: ::std::os::raw::c_uint = 88; -pub const AKEYCODE_MEDIA_REWIND: ::std::os::raw::c_uint = 89; -pub const AKEYCODE_MEDIA_FAST_FORWARD: ::std::os::raw::c_uint = 90; -pub const AKEYCODE_MUTE: ::std::os::raw::c_uint = 91; -pub const AKEYCODE_PAGE_UP: ::std::os::raw::c_uint = 92; -pub const AKEYCODE_PAGE_DOWN: ::std::os::raw::c_uint = 93; -pub const AKEYCODE_PICTSYMBOLS: ::std::os::raw::c_uint = 94; -pub const AKEYCODE_SWITCH_CHARSET: ::std::os::raw::c_uint = 95; -pub const AKEYCODE_BUTTON_A: ::std::os::raw::c_uint = 96; -pub const AKEYCODE_BUTTON_B: ::std::os::raw::c_uint = 97; -pub const AKEYCODE_BUTTON_C: ::std::os::raw::c_uint = 98; -pub const AKEYCODE_BUTTON_X: ::std::os::raw::c_uint = 99; -pub const AKEYCODE_BUTTON_Y: ::std::os::raw::c_uint = 100; -pub const AKEYCODE_BUTTON_Z: ::std::os::raw::c_uint = 101; -pub const AKEYCODE_BUTTON_L1: ::std::os::raw::c_uint = 102; -pub const AKEYCODE_BUTTON_R1: ::std::os::raw::c_uint = 103; -pub const AKEYCODE_BUTTON_L2: ::std::os::raw::c_uint = 104; -pub const AKEYCODE_BUTTON_R2: ::std::os::raw::c_uint = 105; -pub const AKEYCODE_BUTTON_THUMBL: ::std::os::raw::c_uint = 106; -pub const AKEYCODE_BUTTON_THUMBR: ::std::os::raw::c_uint = 107; -pub const AKEYCODE_BUTTON_START: ::std::os::raw::c_uint = 108; -pub const AKEYCODE_BUTTON_SELECT: ::std::os::raw::c_uint = 109; -pub const AKEYCODE_BUTTON_MODE: ::std::os::raw::c_uint = 110; -pub const AKEYCODE_ESCAPE: ::std::os::raw::c_uint = 111; -pub const AKEYCODE_FORWARD_DEL: ::std::os::raw::c_uint = 112; -pub const AKEYCODE_CTRL_LEFT: ::std::os::raw::c_uint = 113; -pub const AKEYCODE_CTRL_RIGHT: ::std::os::raw::c_uint = 114; -pub const AKEYCODE_CAPS_LOCK: ::std::os::raw::c_uint = 115; -pub const AKEYCODE_SCROLL_LOCK: ::std::os::raw::c_uint = 116; -pub const AKEYCODE_META_LEFT: ::std::os::raw::c_uint = 117; -pub const AKEYCODE_META_RIGHT: ::std::os::raw::c_uint = 118; -pub const AKEYCODE_FUNCTION: ::std::os::raw::c_uint = 119; -pub const AKEYCODE_SYSRQ: ::std::os::raw::c_uint = 120; -pub const AKEYCODE_BREAK: ::std::os::raw::c_uint = 121; -pub const AKEYCODE_MOVE_HOME: ::std::os::raw::c_uint = 122; -pub const AKEYCODE_MOVE_END: ::std::os::raw::c_uint = 123; -pub const AKEYCODE_INSERT: ::std::os::raw::c_uint = 124; -pub const AKEYCODE_FORWARD: ::std::os::raw::c_uint = 125; -pub const AKEYCODE_MEDIA_PLAY: ::std::os::raw::c_uint = 126; -pub const AKEYCODE_MEDIA_PAUSE: ::std::os::raw::c_uint = 127; -pub const AKEYCODE_MEDIA_CLOSE: ::std::os::raw::c_uint = 128; -pub const AKEYCODE_MEDIA_EJECT: ::std::os::raw::c_uint = 129; -pub const AKEYCODE_MEDIA_RECORD: ::std::os::raw::c_uint = 130; -pub const AKEYCODE_F1: ::std::os::raw::c_uint = 131; -pub const AKEYCODE_F2: ::std::os::raw::c_uint = 132; -pub const AKEYCODE_F3: ::std::os::raw::c_uint = 133; -pub const AKEYCODE_F4: ::std::os::raw::c_uint = 134; -pub const AKEYCODE_F5: ::std::os::raw::c_uint = 135; -pub const AKEYCODE_F6: ::std::os::raw::c_uint = 136; -pub const AKEYCODE_F7: ::std::os::raw::c_uint = 137; -pub const AKEYCODE_F8: ::std::os::raw::c_uint = 138; -pub const AKEYCODE_F9: ::std::os::raw::c_uint = 139; -pub const AKEYCODE_F10: ::std::os::raw::c_uint = 140; -pub const AKEYCODE_F11: ::std::os::raw::c_uint = 141; -pub const AKEYCODE_F12: ::std::os::raw::c_uint = 142; -pub const AKEYCODE_NUM_LOCK: ::std::os::raw::c_uint = 143; -pub const AKEYCODE_NUMPAD_0: ::std::os::raw::c_uint = 144; -pub const AKEYCODE_NUMPAD_1: ::std::os::raw::c_uint = 145; -pub const AKEYCODE_NUMPAD_2: ::std::os::raw::c_uint = 146; -pub const AKEYCODE_NUMPAD_3: ::std::os::raw::c_uint = 147; -pub const AKEYCODE_NUMPAD_4: ::std::os::raw::c_uint = 148; -pub const AKEYCODE_NUMPAD_5: ::std::os::raw::c_uint = 149; -pub const AKEYCODE_NUMPAD_6: ::std::os::raw::c_uint = 150; -pub const AKEYCODE_NUMPAD_7: ::std::os::raw::c_uint = 151; -pub const AKEYCODE_NUMPAD_8: ::std::os::raw::c_uint = 152; -pub const AKEYCODE_NUMPAD_9: ::std::os::raw::c_uint = 153; -pub const AKEYCODE_NUMPAD_DIVIDE: ::std::os::raw::c_uint = 154; -pub const AKEYCODE_NUMPAD_MULTIPLY: ::std::os::raw::c_uint = 155; -pub const AKEYCODE_NUMPAD_SUBTRACT: ::std::os::raw::c_uint = 156; -pub const AKEYCODE_NUMPAD_ADD: ::std::os::raw::c_uint = 157; -pub const AKEYCODE_NUMPAD_DOT: ::std::os::raw::c_uint = 158; -pub const AKEYCODE_NUMPAD_COMMA: ::std::os::raw::c_uint = 159; -pub const AKEYCODE_NUMPAD_ENTER: ::std::os::raw::c_uint = 160; -pub const AKEYCODE_NUMPAD_EQUALS: ::std::os::raw::c_uint = 161; -pub const AKEYCODE_NUMPAD_LEFT_PAREN: ::std::os::raw::c_uint = 162; -pub const AKEYCODE_NUMPAD_RIGHT_PAREN: ::std::os::raw::c_uint = 163; -pub const AKEYCODE_VOLUME_MUTE: ::std::os::raw::c_uint = 164; -pub const AKEYCODE_INFO: ::std::os::raw::c_uint = 165; -pub const AKEYCODE_CHANNEL_UP: ::std::os::raw::c_uint = 166; -pub const AKEYCODE_CHANNEL_DOWN: ::std::os::raw::c_uint = 167; -pub const AKEYCODE_ZOOM_IN: ::std::os::raw::c_uint = 168; -pub const AKEYCODE_ZOOM_OUT: ::std::os::raw::c_uint = 169; -pub const AKEYCODE_TV: ::std::os::raw::c_uint = 170; -pub const AKEYCODE_WINDOW: ::std::os::raw::c_uint = 171; -pub const AKEYCODE_GUIDE: ::std::os::raw::c_uint = 172; -pub const AKEYCODE_DVR: ::std::os::raw::c_uint = 173; -pub const AKEYCODE_BOOKMARK: ::std::os::raw::c_uint = 174; -pub const AKEYCODE_CAPTIONS: ::std::os::raw::c_uint = 175; -pub const AKEYCODE_SETTINGS: ::std::os::raw::c_uint = 176; -pub const AKEYCODE_TV_POWER: ::std::os::raw::c_uint = 177; -pub const AKEYCODE_TV_INPUT: ::std::os::raw::c_uint = 178; -pub const AKEYCODE_STB_POWER: ::std::os::raw::c_uint = 179; -pub const AKEYCODE_STB_INPUT: ::std::os::raw::c_uint = 180; -pub const AKEYCODE_AVR_POWER: ::std::os::raw::c_uint = 181; -pub const AKEYCODE_AVR_INPUT: ::std::os::raw::c_uint = 182; -pub const AKEYCODE_PROG_RED: ::std::os::raw::c_uint = 183; -pub const AKEYCODE_PROG_GREEN: ::std::os::raw::c_uint = 184; -pub const AKEYCODE_PROG_YELLOW: ::std::os::raw::c_uint = 185; -pub const AKEYCODE_PROG_BLUE: ::std::os::raw::c_uint = 186; -pub const AKEYCODE_APP_SWITCH: ::std::os::raw::c_uint = 187; -pub const AKEYCODE_BUTTON_1: ::std::os::raw::c_uint = 188; -pub const AKEYCODE_BUTTON_2: ::std::os::raw::c_uint = 189; -pub const AKEYCODE_BUTTON_3: ::std::os::raw::c_uint = 190; -pub const AKEYCODE_BUTTON_4: ::std::os::raw::c_uint = 191; -pub const AKEYCODE_BUTTON_5: ::std::os::raw::c_uint = 192; -pub const AKEYCODE_BUTTON_6: ::std::os::raw::c_uint = 193; -pub const AKEYCODE_BUTTON_7: ::std::os::raw::c_uint = 194; -pub const AKEYCODE_BUTTON_8: ::std::os::raw::c_uint = 195; -pub const AKEYCODE_BUTTON_9: ::std::os::raw::c_uint = 196; -pub const AKEYCODE_BUTTON_10: ::std::os::raw::c_uint = 197; -pub const AKEYCODE_BUTTON_11: ::std::os::raw::c_uint = 198; -pub const AKEYCODE_BUTTON_12: ::std::os::raw::c_uint = 199; -pub const AKEYCODE_BUTTON_13: ::std::os::raw::c_uint = 200; -pub const AKEYCODE_BUTTON_14: ::std::os::raw::c_uint = 201; -pub const AKEYCODE_BUTTON_15: ::std::os::raw::c_uint = 202; -pub const AKEYCODE_BUTTON_16: ::std::os::raw::c_uint = 203; -pub const AKEYCODE_LANGUAGE_SWITCH: ::std::os::raw::c_uint = 204; -pub const AKEYCODE_MANNER_MODE: ::std::os::raw::c_uint = 205; -pub const AKEYCODE_3D_MODE: ::std::os::raw::c_uint = 206; -pub const AKEYCODE_CONTACTS: ::std::os::raw::c_uint = 207; -pub const AKEYCODE_CALENDAR: ::std::os::raw::c_uint = 208; -pub const AKEYCODE_MUSIC: ::std::os::raw::c_uint = 209; -pub const AKEYCODE_CALCULATOR: ::std::os::raw::c_uint = 210; -pub const AKEYCODE_ZENKAKU_HANKAKU: ::std::os::raw::c_uint = 211; -pub const AKEYCODE_EISU: ::std::os::raw::c_uint = 212; -pub const AKEYCODE_MUHENKAN: ::std::os::raw::c_uint = 213; -pub const AKEYCODE_HENKAN: ::std::os::raw::c_uint = 214; -pub const AKEYCODE_KATAKANA_HIRAGANA: ::std::os::raw::c_uint = 215; -pub const AKEYCODE_YEN: ::std::os::raw::c_uint = 216; -pub const AKEYCODE_RO: ::std::os::raw::c_uint = 217; -pub const AKEYCODE_KANA: ::std::os::raw::c_uint = 218; -pub const AKEYCODE_ASSIST: ::std::os::raw::c_uint = 219; -pub const AKEYCODE_BRIGHTNESS_DOWN: ::std::os::raw::c_uint = 220; -pub const AKEYCODE_BRIGHTNESS_UP: ::std::os::raw::c_uint = 221; -pub const AKEYCODE_MEDIA_AUDIO_TRACK: ::std::os::raw::c_uint = 222; -pub const AKEYCODE_SLEEP: ::std::os::raw::c_uint = 223; -pub const AKEYCODE_WAKEUP: ::std::os::raw::c_uint = 224; -pub const AKEYCODE_PAIRING: ::std::os::raw::c_uint = 225; -pub const AKEYCODE_MEDIA_TOP_MENU: ::std::os::raw::c_uint = 226; -pub const AKEYCODE_11: ::std::os::raw::c_uint = 227; -pub const AKEYCODE_12: ::std::os::raw::c_uint = 228; -pub const AKEYCODE_LAST_CHANNEL: ::std::os::raw::c_uint = 229; -pub const AKEYCODE_TV_DATA_SERVICE: ::std::os::raw::c_uint = 230; -pub const AKEYCODE_VOICE_ASSIST: ::std::os::raw::c_uint = 231; -pub const AKEYCODE_TV_RADIO_SERVICE: ::std::os::raw::c_uint = 232; -pub const AKEYCODE_TV_TELETEXT: ::std::os::raw::c_uint = 233; -pub const AKEYCODE_TV_NUMBER_ENTRY: ::std::os::raw::c_uint = 234; -pub const AKEYCODE_TV_TERRESTRIAL_ANALOG: ::std::os::raw::c_uint = 235; -pub const AKEYCODE_TV_TERRESTRIAL_DIGITAL: ::std::os::raw::c_uint = 236; -pub const AKEYCODE_TV_SATELLITE: ::std::os::raw::c_uint = 237; -pub const AKEYCODE_TV_SATELLITE_BS: ::std::os::raw::c_uint = 238; -pub const AKEYCODE_TV_SATELLITE_CS: ::std::os::raw::c_uint = 239; -pub const AKEYCODE_TV_SATELLITE_SERVICE: ::std::os::raw::c_uint = 240; -pub const AKEYCODE_TV_NETWORK: ::std::os::raw::c_uint = 241; -pub const AKEYCODE_TV_ANTENNA_CABLE: ::std::os::raw::c_uint = 242; -pub const AKEYCODE_TV_INPUT_HDMI_1: ::std::os::raw::c_uint = 243; -pub const AKEYCODE_TV_INPUT_HDMI_2: ::std::os::raw::c_uint = 244; -pub const AKEYCODE_TV_INPUT_HDMI_3: ::std::os::raw::c_uint = 245; -pub const AKEYCODE_TV_INPUT_HDMI_4: ::std::os::raw::c_uint = 246; -pub const AKEYCODE_TV_INPUT_COMPOSITE_1: ::std::os::raw::c_uint = 247; -pub const AKEYCODE_TV_INPUT_COMPOSITE_2: ::std::os::raw::c_uint = 248; -pub const AKEYCODE_TV_INPUT_COMPONENT_1: ::std::os::raw::c_uint = 249; -pub const AKEYCODE_TV_INPUT_COMPONENT_2: ::std::os::raw::c_uint = 250; -pub const AKEYCODE_TV_INPUT_VGA_1: ::std::os::raw::c_uint = 251; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION: ::std::os::raw::c_uint = 252; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: ::std::os::raw::c_uint = 253; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: ::std::os::raw::c_uint = 254; -pub const AKEYCODE_TV_ZOOM_MODE: ::std::os::raw::c_uint = 255; -pub const AKEYCODE_TV_CONTENTS_MENU: ::std::os::raw::c_uint = 256; -pub const AKEYCODE_TV_MEDIA_CONTEXT_MENU: ::std::os::raw::c_uint = 257; -pub const AKEYCODE_TV_TIMER_PROGRAMMING: ::std::os::raw::c_uint = 258; -pub const AKEYCODE_HELP: ::std::os::raw::c_uint = 259; -pub const AKEYCODE_NAVIGATE_PREVIOUS: ::std::os::raw::c_uint = 260; -pub const AKEYCODE_NAVIGATE_NEXT: ::std::os::raw::c_uint = 261; -pub const AKEYCODE_NAVIGATE_IN: ::std::os::raw::c_uint = 262; -pub const AKEYCODE_NAVIGATE_OUT: ::std::os::raw::c_uint = 263; -pub const AKEYCODE_STEM_PRIMARY: ::std::os::raw::c_uint = 264; -pub const AKEYCODE_STEM_1: ::std::os::raw::c_uint = 265; -pub const AKEYCODE_STEM_2: ::std::os::raw::c_uint = 266; -pub const AKEYCODE_STEM_3: ::std::os::raw::c_uint = 267; -pub const AKEYCODE_DPAD_UP_LEFT: ::std::os::raw::c_uint = 268; -pub const AKEYCODE_DPAD_DOWN_LEFT: ::std::os::raw::c_uint = 269; -pub const AKEYCODE_DPAD_UP_RIGHT: ::std::os::raw::c_uint = 270; -pub const AKEYCODE_DPAD_DOWN_RIGHT: ::std::os::raw::c_uint = 271; -pub const AKEYCODE_MEDIA_SKIP_FORWARD: ::std::os::raw::c_uint = 272; -pub const AKEYCODE_MEDIA_SKIP_BACKWARD: ::std::os::raw::c_uint = 273; -pub const AKEYCODE_MEDIA_STEP_FORWARD: ::std::os::raw::c_uint = 274; -pub const AKEYCODE_MEDIA_STEP_BACKWARD: ::std::os::raw::c_uint = 275; -pub const AKEYCODE_SOFT_SLEEP: ::std::os::raw::c_uint = 276; -pub const AKEYCODE_CUT: ::std::os::raw::c_uint = 277; -pub const AKEYCODE_COPY: ::std::os::raw::c_uint = 278; -pub const AKEYCODE_PASTE: ::std::os::raw::c_uint = 279; -pub const AKEYCODE_SYSTEM_NAVIGATION_UP: ::std::os::raw::c_uint = 280; -pub const AKEYCODE_SYSTEM_NAVIGATION_DOWN: ::std::os::raw::c_uint = 281; -pub const AKEYCODE_SYSTEM_NAVIGATION_LEFT: ::std::os::raw::c_uint = 282; -pub const AKEYCODE_SYSTEM_NAVIGATION_RIGHT: ::std::os::raw::c_uint = 283; -pub const AKEYCODE_ALL_APPS: ::std::os::raw::c_uint = 284; -pub const AKEYCODE_REFRESH: ::std::os::raw::c_uint = 285; -pub const AKEYCODE_THUMBS_UP: ::std::os::raw::c_uint = 286; -pub const AKEYCODE_THUMBS_DOWN: ::std::os::raw::c_uint = 287; -pub const AKEYCODE_PROFILE_SWITCH: ::std::os::raw::c_uint = 288; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; -pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; -pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; -pub const AKEY_STATE_VIRTUAL: ::std::os::raw::c_int = 2; -pub type _bindgen_ty_10 = ::std::os::raw::c_int; -pub const AMETA_NONE: ::std::os::raw::c_uint = 0; -pub const AMETA_ALT_ON: ::std::os::raw::c_uint = 2; -pub const AMETA_ALT_LEFT_ON: ::std::os::raw::c_uint = 16; -pub const AMETA_ALT_RIGHT_ON: ::std::os::raw::c_uint = 32; -pub const AMETA_SHIFT_ON: ::std::os::raw::c_uint = 1; -pub const AMETA_SHIFT_LEFT_ON: ::std::os::raw::c_uint = 64; -pub const AMETA_SHIFT_RIGHT_ON: ::std::os::raw::c_uint = 128; -pub const AMETA_SYM_ON: ::std::os::raw::c_uint = 4; -pub const AMETA_FUNCTION_ON: ::std::os::raw::c_uint = 8; -pub const AMETA_CTRL_ON: ::std::os::raw::c_uint = 4096; -pub const AMETA_CTRL_LEFT_ON: ::std::os::raw::c_uint = 8192; -pub const AMETA_CTRL_RIGHT_ON: ::std::os::raw::c_uint = 16384; -pub const AMETA_META_ON: ::std::os::raw::c_uint = 65536; -pub const AMETA_META_LEFT_ON: ::std::os::raw::c_uint = 131072; -pub const AMETA_META_RIGHT_ON: ::std::os::raw::c_uint = 262144; -pub const AMETA_CAPS_LOCK_ON: ::std::os::raw::c_uint = 1048576; -pub const AMETA_NUM_LOCK_ON: ::std::os::raw::c_uint = 2097152; -pub const AMETA_SCROLL_LOCK_ON: ::std::os::raw::c_uint = 4194304; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AInputEvent { - _unused: [u8; 0], -} -pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; -pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_ACTION_MULTIPLE: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_FLAG_WOKE_HERE: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_FLAG_SOFT_KEYBOARD: ::std::os::raw::c_uint = 2; -pub const AKEY_EVENT_FLAG_KEEP_TOUCH_MODE: ::std::os::raw::c_uint = 4; -pub const AKEY_EVENT_FLAG_FROM_SYSTEM: ::std::os::raw::c_uint = 8; -pub const AKEY_EVENT_FLAG_EDITOR_ACTION: ::std::os::raw::c_uint = 16; -pub const AKEY_EVENT_FLAG_CANCELED: ::std::os::raw::c_uint = 32; -pub const AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY: ::std::os::raw::c_uint = 64; -pub const AKEY_EVENT_FLAG_LONG_PRESS: ::std::os::raw::c_uint = 128; -pub const AKEY_EVENT_FLAG_CANCELED_LONG_PRESS: ::std::os::raw::c_uint = 256; -pub const AKEY_EVENT_FLAG_TRACKING: ::std::os::raw::c_uint = 512; -pub const AKEY_EVENT_FLAG_FALLBACK: ::std::os::raw::c_uint = 1024; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_ACTION_MASK: ::std::os::raw::c_uint = 255; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_MASK: ::std::os::raw::c_uint = 65280; -pub const AMOTION_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_ACTION_MOVE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_ACTION_CANCEL: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_ACTION_OUTSIDE: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_ACTION_POINTER_DOWN: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_ACTION_POINTER_UP: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_ACTION_HOVER_MOVE: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_ACTION_SCROLL: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_ACTION_HOVER_ENTER: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_ACTION_HOVER_EXIT: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_ACTION_BUTTON_PRESS: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_ACTION_BUTTON_RELEASE: ::std::os::raw::c_uint = 12; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_EDGE_FLAG_NONE: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_EDGE_FLAG_TOP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_EDGE_FLAG_BOTTOM: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_EDGE_FLAG_LEFT: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_EDGE_FLAG_RIGHT: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_AXIS_X: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_AXIS_Y: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_AXIS_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_AXIS_SIZE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_AXIS_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_AXIS_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_AXIS_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_AXIS_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_AXIS_ORIENTATION: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_AXIS_VSCROLL: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_AXIS_HSCROLL: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_AXIS_Z: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_AXIS_RX: ::std::os::raw::c_uint = 12; -pub const AMOTION_EVENT_AXIS_RY: ::std::os::raw::c_uint = 13; -pub const AMOTION_EVENT_AXIS_RZ: ::std::os::raw::c_uint = 14; -pub const AMOTION_EVENT_AXIS_HAT_X: ::std::os::raw::c_uint = 15; -pub const AMOTION_EVENT_AXIS_HAT_Y: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_AXIS_LTRIGGER: ::std::os::raw::c_uint = 17; -pub const AMOTION_EVENT_AXIS_RTRIGGER: ::std::os::raw::c_uint = 18; -pub const AMOTION_EVENT_AXIS_THROTTLE: ::std::os::raw::c_uint = 19; -pub const AMOTION_EVENT_AXIS_RUDDER: ::std::os::raw::c_uint = 20; -pub const AMOTION_EVENT_AXIS_WHEEL: ::std::os::raw::c_uint = 21; -pub const AMOTION_EVENT_AXIS_GAS: ::std::os::raw::c_uint = 22; -pub const AMOTION_EVENT_AXIS_BRAKE: ::std::os::raw::c_uint = 23; -pub const AMOTION_EVENT_AXIS_DISTANCE: ::std::os::raw::c_uint = 24; -pub const AMOTION_EVENT_AXIS_TILT: ::std::os::raw::c_uint = 25; -pub const AMOTION_EVENT_AXIS_SCROLL: ::std::os::raw::c_uint = 26; -pub const AMOTION_EVENT_AXIS_RELATIVE_X: ::std::os::raw::c_uint = 27; -pub const AMOTION_EVENT_AXIS_RELATIVE_Y: ::std::os::raw::c_uint = 28; -pub const AMOTION_EVENT_AXIS_GENERIC_1: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_AXIS_GENERIC_2: ::std::os::raw::c_uint = 33; -pub const AMOTION_EVENT_AXIS_GENERIC_3: ::std::os::raw::c_uint = 34; -pub const AMOTION_EVENT_AXIS_GENERIC_4: ::std::os::raw::c_uint = 35; -pub const AMOTION_EVENT_AXIS_GENERIC_5: ::std::os::raw::c_uint = 36; -pub const AMOTION_EVENT_AXIS_GENERIC_6: ::std::os::raw::c_uint = 37; -pub const AMOTION_EVENT_AXIS_GENERIC_7: ::std::os::raw::c_uint = 38; -pub const AMOTION_EVENT_AXIS_GENERIC_8: ::std::os::raw::c_uint = 39; -pub const AMOTION_EVENT_AXIS_GENERIC_9: ::std::os::raw::c_uint = 40; -pub const AMOTION_EVENT_AXIS_GENERIC_10: ::std::os::raw::c_uint = 41; -pub const AMOTION_EVENT_AXIS_GENERIC_11: ::std::os::raw::c_uint = 42; -pub const AMOTION_EVENT_AXIS_GENERIC_12: ::std::os::raw::c_uint = 43; -pub const AMOTION_EVENT_AXIS_GENERIC_13: ::std::os::raw::c_uint = 44; -pub const AMOTION_EVENT_AXIS_GENERIC_14: ::std::os::raw::c_uint = 45; -pub const AMOTION_EVENT_AXIS_GENERIC_15: ::std::os::raw::c_uint = 46; -pub const AMOTION_EVENT_AXIS_GENERIC_16: ::std::os::raw::c_uint = 47; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_BUTTON_PRIMARY: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_BUTTON_SECONDARY: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_BUTTON_TERTIARY: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_BUTTON_BACK: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_BUTTON_FORWARD: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_BUTTON_STYLUS_PRIMARY: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_BUTTON_STYLUS_SECONDARY: ::std::os::raw::c_uint = 64; -pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_TOOL_TYPE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; -pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; -pub const AINPUT_SOURCE_CLASS_POINTER: ::std::os::raw::c_uint = 2; -pub const AINPUT_SOURCE_CLASS_NAVIGATION: ::std::os::raw::c_uint = 4; -pub const AINPUT_SOURCE_CLASS_POSITION: ::std::os::raw::c_uint = 8; -pub const AINPUT_SOURCE_CLASS_JOYSTICK: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_21 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_KEYBOARD: ::std::os::raw::c_uint = 257; -pub const AINPUT_SOURCE_DPAD: ::std::os::raw::c_uint = 513; -pub const AINPUT_SOURCE_GAMEPAD: ::std::os::raw::c_uint = 1025; -pub const AINPUT_SOURCE_TOUCHSCREEN: ::std::os::raw::c_uint = 4098; -pub const AINPUT_SOURCE_MOUSE: ::std::os::raw::c_uint = 8194; -pub const AINPUT_SOURCE_STYLUS: ::std::os::raw::c_uint = 16386; -pub const AINPUT_SOURCE_BLUETOOTH_STYLUS: ::std::os::raw::c_uint = 49154; -pub const AINPUT_SOURCE_TRACKBALL: ::std::os::raw::c_uint = 65540; -pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; -pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; -pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; -pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; -pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; -pub type _bindgen_ty_22 = ::std::os::raw::c_uint; -pub const AINPUT_KEYBOARD_TYPE_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC: ::std::os::raw::c_uint = 1; -pub const AINPUT_KEYBOARD_TYPE_ALPHABETIC: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_23 = ::std::os::raw::c_uint; -pub const AINPUT_MOTION_RANGE_X: ::std::os::raw::c_uint = 0; -pub const AINPUT_MOTION_RANGE_Y: ::std::os::raw::c_uint = 1; -pub const AINPUT_MOTION_RANGE_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AINPUT_MOTION_RANGE_SIZE: ::std::os::raw::c_uint = 3; -pub const AINPUT_MOTION_RANGE_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AINPUT_MOTION_RANGE_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AINPUT_MOTION_RANGE_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AINPUT_MOTION_RANGE_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AINPUT_MOTION_RANGE_ORIENTATION: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn AInputEvent_getType(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getDeviceId(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getFlags(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getKeyCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getScanCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getMetaState(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getRepeatCount(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getDownTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getMetaState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getButtonState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getEdgeFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getDownTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getEventTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getXOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getXPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPointerCount(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getPointerId( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> i32; -} -extern "C" { - pub fn AMotionEvent_getToolType(motion_event: *const AInputEvent, pointer_index: size_t) - -> i32; -} -extern "C" { - pub fn AMotionEvent_getRawX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getRawY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPressure(motion_event: *const AInputEvent, pointer_index: size_t) - -> f32; -} -extern "C" { - pub fn AMotionEvent_getSize(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistorySize(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getHistoricalEventTime( - motion_event: *const AInputEvent, - history_index: size_t, - ) -> i64; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalPressure( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalSize( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct imaxdiv_t { - pub quot: intmax_t, - pub rem: intmax_t, -} -#[test] -fn bindgen_test_layout_imaxdiv_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(imaxdiv_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(imaxdiv_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(quot) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(rem) - ) - ); -} -extern "C" { - pub fn imaxabs(__i: intmax_t) -> intmax_t; -} -extern "C" { - pub fn imaxdiv(__numerator: intmax_t, __denominator: intmax_t) -> imaxdiv_t; -} -extern "C" { - pub fn strtoimax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn strtoumax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -extern "C" { - pub fn wcstoimax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn wcstoumax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; -pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; -pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; -pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; -pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub type ADataSpace = ::std::os::raw::c_uint; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: AHardwareBuffer_Format = 4; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: AHardwareBuffer_Format = - 22; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: AHardwareBuffer_Format = - 43; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_BLOB: AHardwareBuffer_Format = 33; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D16_UNORM: AHardwareBuffer_Format = 48; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM: AHardwareBuffer_Format = 49; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT: AHardwareBuffer_Format = - 50; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT: AHardwareBuffer_Format = 51; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHardwareBuffer_Format = - 52; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_RARELY: - AHardwareBuffer_UsageFlags = 2; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN: - AHardwareBuffer_UsageFlags = 3; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_MASK: - AHardwareBuffer_UsageFlags = 15; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY: - AHardwareBuffer_UsageFlags = 32; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN: - AHardwareBuffer_UsageFlags = 48; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK: - AHardwareBuffer_UsageFlags = 240; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE: - AHardwareBuffer_UsageFlags = 256; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY: - AHardwareBuffer_UsageFlags = 2048; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT: - AHardwareBuffer_UsageFlags = 16384; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VIDEO_ENCODE: - AHardwareBuffer_UsageFlags = 65536; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA: - AHardwareBuffer_UsageFlags = 8388608; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER: - AHardwareBuffer_UsageFlags = 16777216; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP: - AHardwareBuffer_UsageFlags = 33554432; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE: - AHardwareBuffer_UsageFlags = 67108864; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_0: AHardwareBuffer_UsageFlags = - 268435456; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_1: AHardwareBuffer_UsageFlags = - 536870912; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_2: AHardwareBuffer_UsageFlags = - 1073741824; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_3: AHardwareBuffer_UsageFlags = - 2147483648; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_4: AHardwareBuffer_UsageFlags = - 281474976710656; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_5: AHardwareBuffer_UsageFlags = - 562949953421312; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_6: AHardwareBuffer_UsageFlags = - 1125899906842624; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_7: AHardwareBuffer_UsageFlags = - 2251799813685248; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_8: AHardwareBuffer_UsageFlags = - 4503599627370496; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_9: AHardwareBuffer_UsageFlags = - 9007199254740992; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_10: AHardwareBuffer_UsageFlags = - 18014398509481984; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_11: AHardwareBuffer_UsageFlags = - 36028797018963968; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_12: AHardwareBuffer_UsageFlags = - 72057594037927936; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_13: AHardwareBuffer_UsageFlags = - 144115188075855872; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_14: AHardwareBuffer_UsageFlags = - 288230376151711744; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_15: AHardwareBuffer_UsageFlags = - 576460752303423488; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_16: AHardwareBuffer_UsageFlags = - 1152921504606846976; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_17: AHardwareBuffer_UsageFlags = - 2305843009213693952; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_18: AHardwareBuffer_UsageFlags = - 4611686018427387904; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_19: AHardwareBuffer_UsageFlags = - 9223372036854775808; -pub type AHardwareBuffer_UsageFlags = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Desc { - pub width: u32, - pub height: u32, - pub layers: u32, - pub format: u32, - pub usage: u64, - pub stride: u32, - pub rfu0: u32, - pub rfu1: u64, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Desc() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(width) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(height) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).layers as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(layers) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(format) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).usage as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(usage) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stride as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(stride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu0 as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu1 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Plane { - pub data: *mut ::std::os::raw::c_void, - pub pixelStride: u32, - pub rowStride: u32, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Plane() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pixelStride as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(pixelStride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rowStride as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(rowStride) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Planes { - pub planeCount: u32, - pub planes: [AHardwareBuffer_Plane; 4usize], -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Planes() { - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).planeCount as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planeCount) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).planes as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planes) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer { - _unused: [u8; 0], -} -extern "C" { - pub fn AHardwareBuffer_allocate( - desc: *const AHardwareBuffer_Desc, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_acquire(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_release(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_describe( - buffer: *const AHardwareBuffer, - outDesc: *mut AHardwareBuffer_Desc, - ); -} -extern "C" { - pub fn AHardwareBuffer_lock( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_unlock( - buffer: *mut AHardwareBuffer, - fence: *mut i32, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_sendHandleToUnixSocket( - buffer: *const AHardwareBuffer, - socketFd: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_recvHandleFromUnixSocket( - socketFd: ::std::os::raw::c_int, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockAndGetInfo( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - outBytesPerPixel: *mut i32, - outBytesPerStride: *mut i32, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -pub struct ANativeActivity { - pub callbacks: *mut ANativeActivityCallbacks, - pub vm: *mut JavaVM, - pub env: *mut JNIEnv, - pub clazz: jobject, - pub internalDataPath: *const ::std::os::raw::c_char, - pub externalDataPath: *const ::std::os::raw::c_char, - pub sdkVersion: i32, - pub instance: *mut ::std::os::raw::c_void, - pub assetManager: *mut AAssetManager, - pub obbPath: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ANativeActivity() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ANativeActivity)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ANativeActivity)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).callbacks as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(callbacks) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vm as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(vm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).env as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).clazz as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(clazz) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).internalDataPath as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(internalDataPath) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).externalDataPath as *const _ as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(externalDataPath) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sdkVersion as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(sdkVersion) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).instance as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(instance) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).assetManager as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(assetManager) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).obbPath as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(obbPath) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ANativeActivityCallbacks { - pub onStart: ::std::option::Option, - pub onResume: ::std::option::Option, - pub onSaveInstanceState: ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - outSize: *mut size_t, - ) -> *mut ::std::os::raw::c_void, - >, - pub onPause: ::std::option::Option, - pub onStop: ::std::option::Option, - pub onDestroy: ::std::option::Option, - pub onWindowFocusChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, hasFocus: ::std::os::raw::c_int), - >, - pub onNativeWindowCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowResized: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowRedrawNeeded: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onInputQueueCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onInputQueueDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onContentRectChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, rect: *const ARect), - >, - pub onConfigurationChanged: - ::std::option::Option, - pub onLowMemory: ::std::option::Option, -} -#[test] -fn bindgen_test_layout_ANativeActivityCallbacks() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onStart as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStart) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onResume as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onResume) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onSaveInstanceState as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onSaveInstanceState) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onPause as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onPause) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onStop as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStop) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onDestroy as *const _ as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onDestroy) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onWindowFocusChanged as *const _ - as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onWindowFocusChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowCreated as *const _ - as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowResized as *const _ - as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowResized) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowRedrawNeeded - as *const _ as usize - }, - 36usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowRedrawNeeded) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowDestroyed as *const _ - as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueCreated as *const _ - as usize - }, - 44usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueDestroyed as *const _ - as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onContentRectChanged as *const _ - as usize - }, - 52usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onContentRectChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onConfigurationChanged as *const _ - as usize - }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onConfigurationChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onLowMemory as *const _ as usize - }, - 60usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onLowMemory) - ) - ); -} -pub type ANativeActivity_createFunc = ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ), ->; -extern "C" { - pub fn ANativeActivity_onCreate( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ); -} -extern "C" { - pub fn ANativeActivity_finish(activity: *mut ANativeActivity); -} -extern "C" { - pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: i32); -} -extern "C" { - pub fn ANativeActivity_setWindowFlags( - activity: *mut ANativeActivity, - addFlags: u32, - removeFlags: u32, - ); -} -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_25 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: u32); -} -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_26 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: u32); -} -#[doc = " Data associated with an ALooper fd that will be returned as the \"outData\""] -#[doc = " when that source has data ready."] -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct android_poll_source { - pub id: i32, - pub app: *mut android_app, - pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), - >, -} -#[test] -fn bindgen_test_layout_android_poll_source() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(android_poll_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(android_poll_source)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(id) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).app as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(app) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).process as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(process) - ) - ); -} -#[doc = " The native activity interface provided by "] -#[doc = " is based on a set of application-provided callbacks that will be called"] -#[doc = " by the Activity's main thread when certain events occur."] -#[doc = ""] -#[doc = " This means that each one of this callbacks _should_ _not_ block, or they"] -#[doc = " risk having the system force-close the application. This programming"] -#[doc = " model is direct, lightweight, but constraining."] -#[doc = ""] -#[doc = " The 'android_native_app_glue' static library is used to provide a different"] -#[doc = " execution model where the application can implement its own main event"] -#[doc = " loop in a different thread instead. Here's how it works:"] -#[doc = ""] -#[doc = " 1/ The application must provide a function named \"android_main()\" that"] -#[doc = " will be called when the activity is created, in a new thread that is"] -#[doc = " distinct from the activity's main thread."] -#[doc = ""] -#[doc = " 2/ android_main() receives a pointer to a valid \"android_app\" structure"] -#[doc = " that contains references to other important objects, e.g. the"] -#[doc = " ANativeActivity obejct instance the application is running in."] -#[doc = ""] -#[doc = " 3/ the \"android_app\" object holds an ALooper instance that already"] -#[doc = " listens to two important things:"] -#[doc = ""] -#[doc = " - activity lifecycle events (e.g. \"pause\", \"resume\"). See APP_CMD_XXX"] -#[doc = " declarations below."] -#[doc = ""] -#[doc = " - input events coming from the AInputQueue attached to the activity."] -#[doc = ""] -#[doc = " Each of these correspond to an ALooper identifier returned by"] -#[doc = " ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT,"] -#[doc = " respectively."] -#[doc = ""] -#[doc = " Your application can use the same ALooper to listen to additional"] -#[doc = " file-descriptors. They can either be callback based, or with return"] -#[doc = " identifiers starting with LOOPER_ID_USER."] -#[doc = ""] -#[doc = " 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event,"] -#[doc = " the returned data will point to an android_poll_source structure. You"] -#[doc = " can call the process() function on it, and fill in android_app->onAppCmd"] -#[doc = " and android_app->onInputEvent to be called for your own processing"] -#[doc = " of the event."] -#[doc = ""] -#[doc = " Alternatively, you can call the low-level functions to read and process"] -#[doc = " the data directly... look at the process_cmd() and process_input()"] -#[doc = " implementations in the glue to see how to do this."] -#[doc = ""] -#[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] -#[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] -#[repr(C)] -pub struct android_app { - pub userData: *mut ::std::os::raw::c_void, - pub onAppCmd: ::std::option::Option, - pub onInputEvent: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, event: *mut AInputEvent) -> i32, - >, - pub activity: *mut ANativeActivity, - pub config: *mut AConfiguration, - pub savedState: *mut ::std::os::raw::c_void, - pub savedStateSize: size_t, - pub looper: *mut ALooper, - pub inputQueue: *mut AInputQueue, - pub window: *mut ANativeWindow, - pub contentRect: ARect, - pub activityState: ::std::os::raw::c_int, - pub destroyRequested: ::std::os::raw::c_int, - pub mutex: pthread_mutex_t, - pub cond: pthread_cond_t, - pub msgread: ::std::os::raw::c_int, - pub msgwrite: ::std::os::raw::c_int, - pub thread: pthread_t, - pub cmdPollSource: android_poll_source, - pub inputPollSource: android_poll_source, - pub running: ::std::os::raw::c_int, - pub stateSaved: ::std::os::raw::c_int, - pub destroyed: ::std::os::raw::c_int, - pub redrawNeeded: ::std::os::raw::c_int, - pub pendingInputQueue: *mut AInputQueue, - pub pendingWindow: *mut ANativeWindow, - pub pendingContentRect: ARect, -} -#[test] -fn bindgen_test_layout_android_app() { - assert_eq!( - ::std::mem::size_of::(), - 148usize, - concat!("Size of: ", stringify!(android_app)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(android_app)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).userData as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(userData) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onAppCmd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onAppCmd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onInputEvent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onInputEvent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activity as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activity) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).config as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(config) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedState as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedStateSize as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedStateSize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).looper as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(looper) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputQueue as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(window) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).contentRect as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(contentRect) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activityState as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activityState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyRequested as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyRequested) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mutex as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(mutex) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cond as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cond) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgread as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgwrite as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgwrite) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).thread as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(thread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cmdPollSource as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cmdPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputPollSource as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).running as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(running) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stateSaved as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(stateSaved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyed as *const _ as usize }, - 116usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyed) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).redrawNeeded as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(redrawNeeded) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingInputQueue as *const _ as usize }, - 124usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingInputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingWindow as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingWindow) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingContentRect as *const _ as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingContentRect) - ) - ); -} -#[doc = " Looper data ID of commands coming from the app's main thread, which"] -#[doc = " is returned as an identifier from ALooper_pollOnce(). The data for this"] -#[doc = " identifier is a pointer to an android_poll_source structure."] -#[doc = " These can be retrieved and processed with android_app_read_cmd()"] -#[doc = " and android_app_exec_cmd()."] -pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; -#[doc = " Looper data ID of events coming from the AInputQueue of the"] -#[doc = " application's window, which is returned as an identifier from"] -#[doc = " ALooper_pollOnce(). The data for this identifier is a pointer to an"] -#[doc = " android_poll_source structure. These can be read via the inputQueue"] -#[doc = " object of android_app."] -pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; -#[doc = " Start of user-defined ALooper identifiers."] -pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_27 = ::std::os::raw::c_uint; -#[doc = " Command from main thread: the AInputQueue has changed. Upon processing"] -#[doc = " this command, android_app->inputQueue will be updated to the new queue"] -#[doc = " (or NULL)."] -pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; -#[doc = " Command from main thread: a new ANativeWindow is ready for use. Upon"] -#[doc = " receiving this command, android_app->window will contain the new window"] -#[doc = " surface."] -pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; -#[doc = " Command from main thread: the existing ANativeWindow needs to be"] -#[doc = " terminated. Upon receiving this command, android_app->window still"] -#[doc = " contains the existing window; after calling android_app_exec_cmd"] -#[doc = " it will be set to NULL."] -pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; -#[doc = " Command from main thread: the current ANativeWindow has been resized."] -#[doc = " Please redraw with its new size."] -pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; -#[doc = " Command from main thread: the system needs that the current ANativeWindow"] -#[doc = " be redrawn. You should redraw the window before handing this to"] -#[doc = " android_app_exec_cmd() in order to avoid transient drawing glitches."] -pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; -#[doc = " Command from main thread: the content area of the window has changed,"] -#[doc = " such as from the soft input window being shown or hidden. You can"] -#[doc = " find the new content rect in android_app::contentRect."] -pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; -#[doc = " Command from main thread: the app's activity window has gained"] -#[doc = " input focus."] -pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; -#[doc = " Command from main thread: the app's activity window has lost"] -#[doc = " input focus."] -pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; -#[doc = " Command from main thread: the current device configuration has changed."] -pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; -#[doc = " Command from main thread: the system is running low on memory."] -#[doc = " Try to reduce your memory use."] -pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; -#[doc = " Command from main thread: the app's activity has been started."] -pub const APP_CMD_START: ::std::os::raw::c_uint = 10; -#[doc = " Command from main thread: the app's activity has been resumed."] -pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; -#[doc = " Command from main thread: the app should generate a new saved state"] -#[doc = " for itself, to restore from later if needed. If you have saved state,"] -#[doc = " allocate it with malloc and place it in android_app.savedState with"] -#[doc = " the size in android_app.savedStateSize. The will be freed for you"] -#[doc = " later."] -pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; -#[doc = " Command from main thread: the app's activity has been paused."] -pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; -#[doc = " Command from main thread: the app's activity has been stopped."] -pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; -#[doc = " Command from main thread: the app's activity is being destroyed,"] -#[doc = " and waiting for the app thread to clean up and exit before proceeding."] -pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; -pub type _bindgen_ty_28 = ::std::os::raw::c_uint; -extern "C" { - #[doc = " Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next"] - #[doc = " app command message."] - pub fn android_app_read_cmd(android_app: *mut android_app) -> i8; -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " initial pre-processing of the given command. You can perform your own"] - #[doc = " actions for the command after calling this function."] - pub fn android_app_pre_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " final post-processing of the given command. You must have done your own"] - #[doc = " actions for the command before calling this function."] - pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn print_cur_config(android_app: *mut android_app); -} -extern "C" { - pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); -} -extern "C" { - pub fn android_app_destroy(android_app: *mut android_app); -} diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs deleted file mode 100644 index 410dca4..0000000 --- a/android-activity/src/native_activity/ffi_i686.rs +++ /dev/null @@ -1,8565 +0,0 @@ -/* automatically generated by rust-bindgen 0.59.2 */ - -pub const __BIONIC__: u32 = 1; -pub const __WORDSIZE: u32 = 32; -pub const __bos_level: u32 = 0; -pub const __ANDROID_API_FUTURE__: u32 = 10000; -pub const __ANDROID_API__: u32 = 10000; -pub const __ANDROID_API_G__: u32 = 9; -pub const __ANDROID_API_I__: u32 = 14; -pub const __ANDROID_API_J__: u32 = 16; -pub const __ANDROID_API_J_MR1__: u32 = 17; -pub const __ANDROID_API_J_MR2__: u32 = 18; -pub const __ANDROID_API_K__: u32 = 19; -pub const __ANDROID_API_L__: u32 = 21; -pub const __ANDROID_API_L_MR1__: u32 = 22; -pub const __ANDROID_API_M__: u32 = 23; -pub const __ANDROID_API_N__: u32 = 24; -pub const __ANDROID_API_N_MR1__: u32 = 25; -pub const __ANDROID_API_O__: u32 = 26; -pub const __ANDROID_API_O_MR1__: u32 = 27; -pub const __ANDROID_API_P__: u32 = 28; -pub const __ANDROID_API_Q__: u32 = 29; -pub const __ANDROID_API_R__: u32 = 30; -pub const __NDK_MAJOR__: u32 = 21; -pub const __NDK_MINOR__: u32 = 1; -pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 6352462; -pub const __NDK_CANARY__: u32 = 0; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const INT8_MIN: i32 = -128; -pub const INT8_MAX: u32 = 127; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST8_MAX: u32 = 127; -pub const UINT8_MAX: u32 = 255; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_FAST8_MAX: u32 = 255; -pub const INT16_MIN: i32 = -32768; -pub const INT16_MAX: u32 = 32767; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const UINT16_MAX: u32 = 65535; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const INT32_MIN: i32 = -2147483648; -pub const INT32_MAX: u32 = 2147483647; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 4294967295; -pub const WINT_MIN: u32 = 0; -pub const INTPTR_MIN: i32 = -2147483648; -pub const INTPTR_MAX: u32 = 2147483647; -pub const UINTPTR_MAX: u32 = 4294967295; -pub const PTRDIFF_MIN: i32 = -2147483648; -pub const PTRDIFF_MAX: u32 = 2147483647; -pub const SIZE_MAX: u32 = 4294967295; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const FP_XSTATE_MAGIC1: u32 = 1179670611; -pub const FP_XSTATE_MAGIC2: u32 = 1179670597; -pub const X86_FXSR_MAGIC: u32 = 0; -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 PASS_MAX: u32 = 128; -pub const NL_ARGMAX: u32 = 9; -pub const NL_LANGMAX: u32 = 14; -pub const NL_MSGMAX: u32 = 32767; -pub const NL_NMAX: u32 = 1; -pub const NL_SETMAX: u32 = 255; -pub const NL_TEXTMAX: u32 = 255; -pub const TMP_MAX: u32 = 308915776; -pub const CHAR_BIT: u32 = 8; -pub const LONG_BIT: u32 = 32; -pub const WORD_BIT: u32 = 32; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MAX: u32 = 127; -pub const CHAR_MIN: i32 = -128; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: u32 = 4294967295; -pub const LONG_MAX: u32 = 2147483647; -pub const LONG_MIN: i32 = -2147483648; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MAX: u64 = 9223372036854775807; -pub const ULONG_LONG_MAX: i32 = -1; -pub const UID_MAX: u32 = 4294967295; -pub const GID_MAX: u32 = 4294967295; -pub const SIZE_T_MAX: u32 = 4294967295; -pub const SSIZE_MAX: u32 = 2147483647; -pub const MB_LEN_MAX: u32 = 4; -pub const NZERO: u32 = 20; -pub const IOV_MAX: u32 = 1024; -pub const SEM_VALUE_MAX: u32 = 1073741823; -pub const _POSIX_VERSION: u32 = 200809; -pub const _POSIX2_VERSION: u32 = 200809; -pub const _XOPEN_VERSION: u32 = 700; -pub const __BIONIC_POSIX_FEATURE_MISSING: i32 = -1; -pub const _POSIX_ASYNCHRONOUS_IO: i32 = -1; -pub const _POSIX_CHOWN_RESTRICTED: u32 = 1; -pub const _POSIX_CPUTIME: u32 = 200809; -pub const _POSIX_FSYNC: u32 = 200809; -pub const _POSIX_IPV6: u32 = 200809; -pub const _POSIX_MAPPED_FILES: u32 = 200809; -pub const _POSIX_MEMLOCK_RANGE: u32 = 200809; -pub const _POSIX_MEMORY_PROTECTION: u32 = 200809; -pub const _POSIX_MESSAGE_PASSING: i32 = -1; -pub const _POSIX_MONOTONIC_CLOCK: u32 = 200809; -pub const _POSIX_NO_TRUNC: u32 = 1; -pub const _POSIX_PRIORITIZED_IO: i32 = -1; -pub const _POSIX_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_RAW_SOCKETS: u32 = 200809; -pub const _POSIX_READER_WRITER_LOCKS: u32 = 200809; -pub const _POSIX_REGEXP: u32 = 1; -pub const _POSIX_SAVED_IDS: u32 = 1; -pub const _POSIX_SEMAPHORES: u32 = 200809; -pub const _POSIX_SHARED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_SHELL: u32 = 1; -pub const _POSIX_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_SYNCHRONIZED_IO: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKADDR: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKSIZE: u32 = 200809; -pub const _POSIX_THREAD_CPUTIME: u32 = 200809; -pub const _POSIX_THREAD_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_THREAD_PROCESS_SHARED: u32 = 200809; -pub const _POSIX_THREAD_ROBUST_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_ROBUST_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_SAFE_FUNCTIONS: u32 = 200809; -pub const _POSIX_THREAD_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_THREADS: u32 = 200809; -pub const _POSIX_TIMERS: u32 = 200809; -pub const _POSIX_TRACE: i32 = -1; -pub const _POSIX_TRACE_EVENT_FILTER: i32 = -1; -pub const _POSIX_TRACE_INHERIT: i32 = -1; -pub const _POSIX_TRACE_LOG: i32 = -1; -pub const _POSIX_TYPED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_VDISABLE: u8 = 0u8; -pub const _POSIX2_C_BIND: u32 = 200809; -pub const _POSIX2_C_DEV: i32 = -1; -pub const _POSIX2_CHAR_TERM: u32 = 200809; -pub const _POSIX2_FORT_DEV: i32 = -1; -pub const _POSIX2_FORT_RUN: i32 = -1; -pub const _POSIX2_LOCALEDEF: i32 = -1; -pub const _POSIX2_SW_DEV: i32 = -1; -pub const _POSIX2_UPE: i32 = -1; -pub const _POSIX_V7_ILP32_OFF32: u32 = 1; -pub const _POSIX_V7_ILP32_OFFBIG: i32 = -1; -pub const _POSIX_V7_LP64_OFF64: i32 = -1; -pub const _POSIX_V7_LPBIG_OFFBIG: i32 = -1; -pub const _XOPEN_CRYPT: i32 = -1; -pub const _XOPEN_ENH_I18N: u32 = 1; -pub const _XOPEN_LEGACY: i32 = -1; -pub const _XOPEN_REALTIME: u32 = 1; -pub const _XOPEN_REALTIME_THREADS: u32 = 1; -pub const _XOPEN_SHM: u32 = 1; -pub const _XOPEN_STREAMS: i32 = -1; -pub const _XOPEN_UNIX: 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_CLOCKRES_MIN: u32 = 20000000; -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_SS_REPL_MAX: u32 = 4; -pub const _POSIX_SYMLINK_MAX: u32 = 255; -pub const _POSIX_SYMLOOP_MAX: u32 = 8; -pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; -pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; -pub const _POSIX_TIMER_MAX: u32 = 32; -pub const _POSIX_TRACE_EVENT_NAME_MAX: u32 = 30; -pub const _POSIX_TRACE_NAME_MAX: u32 = 8; -pub const _POSIX_TRACE_SYS_MAX: u32 = 8; -pub const _POSIX_TRACE_USER_EVENT_MAX: u32 = 32; -pub const _POSIX_TTY_NAME_MAX: u32 = 9; -pub const _POSIX_TZNAME_MAX: u32 = 6; -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_CHARCLASS_NAME_MAX: u32 = 14; -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 _XOPEN_IOV_MAX: u32 = 16; -pub const _XOPEN_NAME_MAX: u32 = 255; -pub const _XOPEN_PATH_MAX: u32 = 1024; -pub const HOST_NAME_MAX: u32 = 255; -pub const LOGIN_NAME_MAX: u32 = 256; -pub const TTY_NAME_MAX: u32 = 32; -pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const PTHREAD_KEYS_MAX: u32 = 128; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -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_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const _KERNEL_NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const __SIGRTMIN: u32 = 32; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const NSIGSEGV: u32 = 7; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const NSIGTRAP: u32 = 5; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const NSIGSYS: u32 = 1; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const _KERNEL__NSIG: u32 = 64; -pub const _NSIG: u32 = 65; -pub const NSIG: u32 = 65; -pub const PAGE_SIZE: u32 = 4096; -pub const PAGE_MASK: i32 = -4096; -pub const UPAGES: u32 = 1; -pub const FD_SETSIZE: u32 = 1024; -pub const CLOCKS_PER_SEC: u32 = 1000000; -pub const TIME_UTC: u32 = 1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SCHED_OTHER: u32 = 0; -pub const PTHREAD_ONCE_INIT: u32 = 0; -pub const PTHREAD_BARRIER_SERIAL_THREAD: i32 = -1; -pub const PTHREAD_STACK_MIN: u32 = 8192; -pub const PTHREAD_CREATE_DETACHED: u32 = 1; -pub const PTHREAD_CREATE_JOINABLE: u32 = 0; -pub const PTHREAD_EXPLICIT_SCHED: u32 = 0; -pub const PTHREAD_INHERIT_SCHED: u32 = 1; -pub const PTHREAD_PRIO_NONE: u32 = 0; -pub const PTHREAD_PRIO_INHERIT: u32 = 1; -pub const PTHREAD_PROCESS_PRIVATE: u32 = 0; -pub const PTHREAD_PROCESS_SHARED: u32 = 1; -pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; -pub const PTHREAD_SCOPE_PROCESS: u32 = 1; -pub const __GNUC_VA_LIST: u32 = 1; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const __PRI_64_prefix: &[u8; 3usize] = b"ll\0"; -pub const PRId8: &[u8; 2usize] = b"d\0"; -pub const PRId16: &[u8; 2usize] = b"d\0"; -pub const PRId32: &[u8; 2usize] = b"d\0"; -pub const PRId64: &[u8; 4usize] = b"lld\0"; -pub const PRIdLEAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST16: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST32: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST64: &[u8; 4usize] = b"lld\0"; -pub const PRIdFAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdFAST64: &[u8; 4usize] = b"lld\0"; -pub const PRIdMAX: &[u8; 3usize] = b"jd\0"; -pub const PRIi8: &[u8; 2usize] = b"i\0"; -pub const PRIi16: &[u8; 2usize] = b"i\0"; -pub const PRIi32: &[u8; 2usize] = b"i\0"; -pub const PRIi64: &[u8; 4usize] = b"lli\0"; -pub const PRIiLEAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST16: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST32: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST64: &[u8; 4usize] = b"lli\0"; -pub const PRIiFAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiFAST64: &[u8; 4usize] = b"lli\0"; -pub const PRIiMAX: &[u8; 3usize] = b"ji\0"; -pub const PRIo8: &[u8; 2usize] = b"o\0"; -pub const PRIo16: &[u8; 2usize] = b"o\0"; -pub const PRIo32: &[u8; 2usize] = b"o\0"; -pub const PRIo64: &[u8; 4usize] = b"llo\0"; -pub const PRIoLEAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST16: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST32: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST64: &[u8; 4usize] = b"llo\0"; -pub const PRIoFAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoFAST64: &[u8; 4usize] = b"llo\0"; -pub const PRIoMAX: &[u8; 3usize] = b"jo\0"; -pub const PRIu8: &[u8; 2usize] = b"u\0"; -pub const PRIu16: &[u8; 2usize] = b"u\0"; -pub const PRIu32: &[u8; 2usize] = b"u\0"; -pub const PRIu64: &[u8; 4usize] = b"llu\0"; -pub const PRIuLEAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST16: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST32: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST64: &[u8; 4usize] = b"llu\0"; -pub const PRIuFAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuFAST64: &[u8; 4usize] = b"llu\0"; -pub const PRIuMAX: &[u8; 3usize] = b"ju\0"; -pub const PRIx8: &[u8; 2usize] = b"x\0"; -pub const PRIx16: &[u8; 2usize] = b"x\0"; -pub const PRIx32: &[u8; 2usize] = b"x\0"; -pub const PRIx64: &[u8; 4usize] = b"llx\0"; -pub const PRIxLEAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST16: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST32: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST64: &[u8; 4usize] = b"llx\0"; -pub const PRIxFAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxFAST64: &[u8; 4usize] = b"llx\0"; -pub const PRIxMAX: &[u8; 3usize] = b"jx\0"; -pub const PRIX8: &[u8; 2usize] = b"X\0"; -pub const PRIX16: &[u8; 2usize] = b"X\0"; -pub const PRIX32: &[u8; 2usize] = b"X\0"; -pub const PRIX64: &[u8; 4usize] = b"llX\0"; -pub const PRIXLEAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST16: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST32: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST64: &[u8; 4usize] = b"llX\0"; -pub const PRIXFAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXFAST64: &[u8; 4usize] = b"llX\0"; -pub const PRIXMAX: &[u8; 3usize] = b"jX\0"; -pub const SCNd8: &[u8; 4usize] = b"hhd\0"; -pub const SCNd16: &[u8; 3usize] = b"hd\0"; -pub const SCNd32: &[u8; 2usize] = b"d\0"; -pub const SCNd64: &[u8; 4usize] = b"lld\0"; -pub const SCNdLEAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdLEAST16: &[u8; 3usize] = b"hd\0"; -pub const SCNdLEAST32: &[u8; 2usize] = b"d\0"; -pub const SCNdLEAST64: &[u8; 4usize] = b"lld\0"; -pub const SCNdFAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdFAST64: &[u8; 4usize] = b"lld\0"; -pub const SCNdMAX: &[u8; 3usize] = b"jd\0"; -pub const SCNi8: &[u8; 4usize] = b"hhi\0"; -pub const SCNi16: &[u8; 3usize] = b"hi\0"; -pub const SCNi32: &[u8; 2usize] = b"i\0"; -pub const SCNi64: &[u8; 4usize] = b"lli\0"; -pub const SCNiLEAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiLEAST16: &[u8; 3usize] = b"hi\0"; -pub const SCNiLEAST32: &[u8; 2usize] = b"i\0"; -pub const SCNiLEAST64: &[u8; 4usize] = b"lli\0"; -pub const SCNiFAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiFAST64: &[u8; 4usize] = b"lli\0"; -pub const SCNiMAX: &[u8; 3usize] = b"ji\0"; -pub const SCNo8: &[u8; 4usize] = b"hho\0"; -pub const SCNo16: &[u8; 3usize] = b"ho\0"; -pub const SCNo32: &[u8; 2usize] = b"o\0"; -pub const SCNo64: &[u8; 4usize] = b"llo\0"; -pub const SCNoLEAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoLEAST16: &[u8; 3usize] = b"ho\0"; -pub const SCNoLEAST32: &[u8; 2usize] = b"o\0"; -pub const SCNoLEAST64: &[u8; 4usize] = b"llo\0"; -pub const SCNoFAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoFAST64: &[u8; 4usize] = b"llo\0"; -pub const SCNoMAX: &[u8; 3usize] = b"jo\0"; -pub const SCNu8: &[u8; 4usize] = b"hhu\0"; -pub const SCNu16: &[u8; 3usize] = b"hu\0"; -pub const SCNu32: &[u8; 2usize] = b"u\0"; -pub const SCNu64: &[u8; 4usize] = b"llu\0"; -pub const SCNuLEAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuLEAST16: &[u8; 3usize] = b"hu\0"; -pub const SCNuLEAST32: &[u8; 2usize] = b"u\0"; -pub const SCNuLEAST64: &[u8; 4usize] = b"llu\0"; -pub const SCNuFAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuFAST64: &[u8; 4usize] = b"llu\0"; -pub const SCNuMAX: &[u8; 3usize] = b"ju\0"; -pub const SCNx8: &[u8; 4usize] = b"hhx\0"; -pub const SCNx16: &[u8; 3usize] = b"hx\0"; -pub const SCNx32: &[u8; 2usize] = b"x\0"; -pub const SCNx64: &[u8; 4usize] = b"llx\0"; -pub const SCNxLEAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxLEAST16: &[u8; 3usize] = b"hx\0"; -pub const SCNxLEAST32: &[u8; 2usize] = b"x\0"; -pub const SCNxLEAST64: &[u8; 4usize] = b"llx\0"; -pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxFAST64: &[u8; 4usize] = b"llx\0"; -pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; -extern "C" { - pub fn android_get_application_target_sdk_version() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn android_get_device_api_level() -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { - pub fd: ::std::os::raw::c_int, - pub events: ::std::os::raw::c_short, - pub revents: ::std::os::raw::c_short, -} -#[test] -fn bindgen_test_layout_pollfd() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pollfd)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pollfd)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(fd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).events as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(events) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).revents as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(revents) - ) - ); -} -pub type wchar_t = ::std::os::raw::c_int; -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct max_align_t { - pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, - pub __clang_max_align_nonce2: f64, -} -#[test] -fn bindgen_test_layout_max_align_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(max_align_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(max_align_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce2) - ) - ); -} -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_longlong; -pub type __uint64_t = ::std::os::raw::c_ulonglong; -pub type __intptr_t = ::std::os::raw::c_int; -pub type __uintptr_t = ::std::os::raw::c_uint; -pub type int_least8_t = i8; -pub type uint_least8_t = u8; -pub type int_least16_t = i16; -pub type uint_least16_t = u16; -pub type int_least32_t = i32; -pub type uint_least32_t = u32; -pub type int_least64_t = i64; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type uint_fast8_t = u8; -pub type int_fast64_t = i64; -pub type uint_fast64_t = u64; -pub type int_fast16_t = i32; -pub type uint_fast16_t = u32; -pub type int_fast32_t = i32; -pub type uint_fast32_t = u32; -pub type uintmax_t = u64; -pub type intmax_t = i64; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 32usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_mode_t = ::std::os::raw::c_ushort; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_ushort; -pub type __kernel_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ushort; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = ::std::os::raw::c_uint; -pub type __kernel_ssize_t = ::std::os::raw::c_int; -pub type __kernel_ptrdiff_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = ::std::os::raw::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = ::std::os::raw::c_uint; -pub type __gid_t = __kernel_gid32_t; -pub type gid_t = __gid_t; -pub type __uid_t = __kernel_uid32_t; -pub type uid_t = __uid_t; -pub type __pid_t = __kernel_pid_t; -pub type pid_t = __pid_t; -pub type __id_t = u32; -pub type id_t = __id_t; -pub type blkcnt_t = ::std::os::raw::c_ulong; -pub type blksize_t = ::std::os::raw::c_ulong; -pub type caddr_t = __kernel_caddr_t; -pub type clock_t = __kernel_clock_t; -pub type __clockid_t = __kernel_clockid_t; -pub type clockid_t = __clockid_t; -pub type daddr_t = __kernel_daddr_t; -pub type fsblkcnt_t = ::std::os::raw::c_ulong; -pub type fsfilcnt_t = ::std::os::raw::c_ulong; -pub type __mode_t = __kernel_mode_t; -pub type mode_t = __mode_t; -pub type __key_t = __kernel_key_t; -pub type key_t = __key_t; -pub type __ino_t = __kernel_ino_t; -pub type ino_t = __ino_t; -pub type ino64_t = u64; -pub type __nlink_t = u32; -pub type nlink_t = __nlink_t; -pub type __timer_t = *mut ::std::os::raw::c_void; -pub type timer_t = __timer_t; -pub type __suseconds_t = __kernel_suseconds_t; -pub type suseconds_t = __suseconds_t; -pub type __useconds_t = u32; -pub type useconds_t = __useconds_t; -pub type dev_t = u32; -pub type __time_t = __kernel_time_t; -pub type time_t = __time_t; -pub type off_t = __kernel_off_t; -pub type loff_t = __kernel_loff_t; -pub type off64_t = loff_t; -pub type __socklen_t = i32; -pub type socklen_t = __socklen_t; -pub type __va_list = __builtin_va_list; -pub type ssize_t = __kernel_ssize_t; -pub type uint_t = ::std::os::raw::c_uint; -pub type uint = ::std::os::raw::c_uint; -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 u_int32_t = u32; -pub type u_int16_t = u16; -pub type u_int8_t = u8; -pub type u_int64_t = u64; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpx_sw_bytes { - pub magic1: __u32, - pub extended_size: __u32, - pub xfeatures: __u64, - pub xstate_size: __u32, - pub padding: [__u32; 7usize], -} -#[test] -fn bindgen_test_layout__fpx_sw_bytes() { - assert_eq!( - ::std::mem::size_of::<_fpx_sw_bytes>(), - 48usize, - concat!("Size of: ", stringify!(_fpx_sw_bytes)) - ); - assert_eq!( - ::std::mem::align_of::<_fpx_sw_bytes>(), - 4usize, - concat!("Alignment of ", stringify!(_fpx_sw_bytes)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).magic1 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(magic1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).extended_size as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(extended_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xfeatures as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(xfeatures) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xstate_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(xstate_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).padding as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpreg { - pub significand: [__u16; 4usize], - pub exponent: __u16, -} -#[test] -fn bindgen_test_layout__fpreg() { - assert_eq!( - ::std::mem::size_of::<_fpreg>(), - 10usize, - concat!("Size of: ", stringify!(_fpreg)) - ); - assert_eq!( - ::std::mem::align_of::<_fpreg>(), - 2usize, - concat!("Alignment of ", stringify!(_fpreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpreg), - "::", - stringify!(exponent) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpxreg { - pub significand: [__u16; 4usize], - pub exponent: __u16, - pub padding: [__u16; 3usize], -} -#[test] -fn bindgen_test_layout__fpxreg() { - assert_eq!( - ::std::mem::size_of::<_fpxreg>(), - 16usize, - concat!("Size of: ", stringify!(_fpxreg)) - ); - assert_eq!( - ::std::mem::align_of::<_fpxreg>(), - 2usize, - concat!("Alignment of ", stringify!(_fpxreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(exponent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).padding as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _xmmreg { - pub element: [__u32; 4usize], -} -#[test] -fn bindgen_test_layout__xmmreg() { - assert_eq!( - ::std::mem::size_of::<_xmmreg>(), - 16usize, - concat!("Size of: ", stringify!(_xmmreg)) - ); - assert_eq!( - ::std::mem::align_of::<_xmmreg>(), - 4usize, - concat!("Alignment of ", stringify!(_xmmreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xmmreg>())).element as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_xmmreg), - "::", - stringify!(element) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _fpstate_32 { - pub cw: __u32, - pub sw: __u32, - pub tag: __u32, - pub ipoff: __u32, - pub cssel: __u32, - pub dataoff: __u32, - pub datasel: __u32, - pub _st: [_fpreg; 8usize], - pub status: __u16, - pub magic: __u16, - pub _fxsr_env: [__u32; 6usize], - pub mxcsr: __u32, - pub reserved: __u32, - pub _fxsr_st: [_fpxreg; 8usize], - pub _xmm: [_xmmreg; 8usize], - pub __bindgen_anon_1: _fpstate_32__bindgen_ty_1, - pub __bindgen_anon_2: _fpstate_32__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_32__bindgen_ty_1 { - pub padding1: [__u32; 44usize], - pub padding: [__u32; 44usize], -} -#[test] -fn bindgen_test_layout__fpstate_32__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32__bindgen_ty_1>(), - 176usize, - concat!("Size of: ", stringify!(_fpstate_32__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_32__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_1>())).padding1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_1), - "::", - stringify!(padding1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_1>())).padding as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_1), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_32__bindgen_ty_2 { - pub padding2: [__u32; 12usize], - pub sw_reserved: _fpx_sw_bytes, -} -#[test] -fn bindgen_test_layout__fpstate_32__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32__bindgen_ty_2>(), - 48usize, - concat!("Size of: ", stringify!(_fpstate_32__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32__bindgen_ty_2>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_32__bindgen_ty_2)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_2>())).padding2 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_2), - "::", - stringify!(padding2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_2>())).sw_reserved as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_2), - "::", - stringify!(sw_reserved) - ) - ); -} -#[test] -fn bindgen_test_layout__fpstate_32() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32>(), - 624usize, - concat!("Size of: ", stringify!(_fpstate_32)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_32)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).cw as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(cw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).sw as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(sw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).tag as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(tag) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).ipoff as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(ipoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).cssel as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(cssel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).dataoff as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(dataoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).datasel as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(datasel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._st as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).status as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).magic as *const _ as usize }, - 110usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._fxsr_env as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_fxsr_env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).mxcsr as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).reserved as *const _ as usize }, - 140usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._fxsr_st as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_fxsr_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._xmm as *const _ as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_xmm) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _fpstate_64 { - pub cwd: __u16, - pub swd: __u16, - pub twd: __u16, - pub fop: __u16, - pub rip: __u64, - pub rdp: __u64, - pub mxcsr: __u32, - pub mxcsr_mask: __u32, - pub st_space: [__u32; 32usize], - pub xmm_space: [__u32; 64usize], - pub reserved2: [__u32; 12usize], - pub __bindgen_anon_1: _fpstate_64__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_64__bindgen_ty_1 { - pub reserved3: [__u32; 12usize], - pub sw_reserved: _fpx_sw_bytes, -} -#[test] -fn bindgen_test_layout__fpstate_64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<_fpstate_64__bindgen_ty_1>(), - 48usize, - concat!("Size of: ", stringify!(_fpstate_64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_64__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_64__bindgen_ty_1>())).reserved3 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64__bindgen_ty_1), - "::", - stringify!(reserved3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_64__bindgen_ty_1>())).sw_reserved as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64__bindgen_ty_1), - "::", - stringify!(sw_reserved) - ) - ); -} -#[test] -fn bindgen_test_layout__fpstate_64() { - assert_eq!( - ::std::mem::size_of::<_fpstate_64>(), - 512usize, - concat!("Size of: ", stringify!(_fpstate_64)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_64>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).swd as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).twd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(twd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).fop as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(fop) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).rip as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).rdp as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(rdp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).mxcsr as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).mxcsr_mask as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(mxcsr_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).st_space as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(st_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).xmm_space as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(xmm_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).reserved2 as *const _ as usize }, - 416usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(reserved2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _header { - pub xfeatures: __u64, - pub reserved1: [__u64; 2usize], - pub reserved2: [__u64; 5usize], -} -#[test] -fn bindgen_test_layout__header() { - assert_eq!( - ::std::mem::size_of::<_header>(), - 64usize, - concat!("Size of: ", stringify!(_header)) - ); - assert_eq!( - ::std::mem::align_of::<_header>(), - 4usize, - concat!("Alignment of ", stringify!(_header)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).xfeatures as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(xfeatures) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).reserved1 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(reserved1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).reserved2 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(reserved2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _ymmh_state { - pub ymmh_space: [__u32; 64usize], -} -#[test] -fn bindgen_test_layout__ymmh_state() { - assert_eq!( - ::std::mem::size_of::<_ymmh_state>(), - 256usize, - concat!("Size of: ", stringify!(_ymmh_state)) - ); - assert_eq!( - ::std::mem::align_of::<_ymmh_state>(), - 4usize, - concat!("Alignment of ", stringify!(_ymmh_state)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_ymmh_state>())).ymmh_space as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_ymmh_state), - "::", - stringify!(ymmh_space) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _xstate { - pub fpstate: _fpstate_32, - pub xstate_hdr: _header, - pub ymmh: _ymmh_state, -} -#[test] -fn bindgen_test_layout__xstate() { - assert_eq!( - ::std::mem::size_of::<_xstate>(), - 944usize, - concat!("Size of: ", stringify!(_xstate)) - ); - assert_eq!( - ::std::mem::align_of::<_xstate>(), - 4usize, - concat!("Alignment of ", stringify!(_xstate)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).fpstate as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).xstate_hdr as *const _ as usize }, - 624usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(xstate_hdr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).ymmh as *const _ as usize }, - 688usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(ymmh) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext_32 { - pub gs: __u16, - pub __gsh: __u16, - pub fs: __u16, - pub __fsh: __u16, - pub es: __u16, - pub __esh: __u16, - pub ds: __u16, - pub __dsh: __u16, - pub di: __u32, - pub si: __u32, - pub bp: __u32, - pub sp: __u32, - pub bx: __u32, - pub dx: __u32, - pub cx: __u32, - pub ax: __u32, - pub trapno: __u32, - pub err: __u32, - pub ip: __u32, - pub cs: __u16, - pub __csh: __u16, - pub flags: __u32, - pub sp_at_signal: __u32, - pub ss: __u16, - pub __ssh: __u16, - pub fpstate: __u32, - pub oldmask: __u32, - pub cr2: __u32, -} -#[test] -fn bindgen_test_layout_sigcontext_32() { - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(sigcontext_32)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigcontext_32)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__gsh as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__gsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__fsh as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__fsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).es as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(es) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__esh as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__esh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ds as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ds) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__dsh as *const _ as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__dsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).di as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(di) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).si as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(si) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bp as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(bp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bx as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(bx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).dx as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(dx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cx as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ax as *const _ as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ip as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__csh as *const _ as usize }, - 62usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__csh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp_at_signal as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(sp_at_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__ssh as *const _ as usize }, - 74usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__ssh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cr2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext_64 { - pub r8: __u64, - pub r9: __u64, - pub r10: __u64, - pub r11: __u64, - pub r12: __u64, - pub r13: __u64, - pub r14: __u64, - pub r15: __u64, - pub di: __u64, - pub si: __u64, - pub bp: __u64, - pub bx: __u64, - pub dx: __u64, - pub ax: __u64, - pub cx: __u64, - pub sp: __u64, - pub ip: __u64, - pub flags: __u64, - pub cs: __u16, - pub gs: __u16, - pub fs: __u16, - pub ss: __u16, - pub err: __u64, - pub trapno: __u64, - pub oldmask: __u64, - pub cr2: __u64, - pub fpstate: __u64, - pub reserved1: [__u64; 8usize], -} -#[test] -fn bindgen_test_layout_sigcontext_64() { - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(sigcontext_64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigcontext_64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r8 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r8) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r9 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r9) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r10 as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r10) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r11 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r11) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r12 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r12) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r13 as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r13) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r14 as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r14) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r15 as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r15) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).di as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(di) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).si as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(si) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bp as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(bp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bx as *const _ as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(bx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).dx as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(dx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ax as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cx as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ip as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 146usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 148usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 150usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cr2) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(reserved1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext { - pub gs: __u16, - pub __gsh: __u16, - pub fs: __u16, - pub __fsh: __u16, - pub es: __u16, - pub __esh: __u16, - pub ds: __u16, - pub __dsh: __u16, - pub edi: __u32, - pub esi: __u32, - pub ebp: __u32, - pub esp: __u32, - pub ebx: __u32, - pub edx: __u32, - pub ecx: __u32, - pub eax: __u32, - pub trapno: __u32, - pub err: __u32, - pub eip: __u32, - pub cs: __u16, - pub __csh: __u16, - pub eflags: __u32, - pub esp_at_signal: __u32, - pub ss: __u16, - pub __ssh: __u16, - pub fpstate: *mut _fpstate_32, - pub oldmask: __u32, - pub cr2: __u32, -} -#[test] -fn bindgen_test_layout_sigcontext() { - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(sigcontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigcontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__gsh as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__gsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__fsh as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__fsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).es as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(es) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__esh as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__esh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ds as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(ds) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__dsh as *const _ as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__dsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).edi as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(edi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esi as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(esi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ebp as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(ebp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esp as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(esp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ebx as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(ebx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).edx as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(edx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ecx as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(ecx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eax as *const _ as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(eax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eip as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(eip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__csh as *const _ as usize }, - 62usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__csh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eflags as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(eflags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esp_at_signal as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(esp_at_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__ssh as *const _ as usize }, - 74usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(__ssh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(cr2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { - pub tv_sec: __kernel_time64_t, - pub tv_nsec: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___kernel_timespec() { - assert_eq!( - ::std::mem::size_of::<__kernel_timespec>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_timespec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_timespec>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_nsec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { - pub it_interval: __kernel_timespec, - pub it_value: __kernel_timespec, -} -#[test] -fn bindgen_test_layout___kernel_itimerspec() { - assert_eq!( - ::std::mem::size_of::<__kernel_itimerspec>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_itimerspec>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { - pub tv_sec: __kernel_long_t, - pub tv_usec: __kernel_long_t, -} -#[test] -fn bindgen_test_layout___kernel_old_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_old_timeval>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_old_timeval>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { - pub tv_sec: __s64, - pub tv_usec: __s64, -} -#[test] -fn bindgen_test_layout___kernel_sock_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_sock_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sock_timeval>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: __kernel_time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: __kernel_time_t, - pub tv_usec: __kernel_suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} -#[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::(), - 16usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[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::(), - 16usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_value) - ) - ); -} -pub type sigset_t = ::std::os::raw::c_ulong; -pub type __signalfn_t = ::std::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::std::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sigaction { - pub _u: __kernel_sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_ulong, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sigaction__bindgen_ty_1 { - pub _sa_handler: __sighandler_t, - pub _sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout___kernel_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction__bindgen_ty_1>(), - 4usize, - concat!("Size of: ", stringify!(__kernel_sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__kernel_sigaction__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__kernel_sigaction__bindgen_ty_1>()))._sa_handler as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction__bindgen_ty_1), - "::", - stringify!(_sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__kernel_sigaction__bindgen_ty_1>()))._sa_sigaction as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction__bindgen_ty_1), - "::", - stringify!(_sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout___kernel_sigaction() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>()))._u as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(_u) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_mask as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_restorer as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -pub struct sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_flags: ::std::os::raw::c_int, - pub ss_size: size_t, -} -#[test] -fn bindgen_test_layout_sigaltstack() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaltstack)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_sp as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_flags as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_size as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_size) - ) - ); -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_int as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_int) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_ptr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_ptr) - ) - ); -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { - pub _kill: __sifields__bindgen_ty_1, - pub _timer: __sifields__bindgen_ty_2, - pub _rt: __sifields__bindgen_ty_3, - pub _sigchld: __sifields__bindgen_ty_4, - pub _sigfault: __sifields__bindgen_ty_5, - pub _sigpoll: __sifields__bindgen_ty_6, - pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_uid) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { - pub _tid: __kernel_timer_t, - pub _overrun: ::std::os::raw::c_int, - pub _sigval: sigval_t, - pub _sys_private: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_2>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_2>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._overrun as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_overrun) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sigval) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sys_private as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sys_private) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _sigval: sigval_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_3>(), - 12usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_3>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_sigval) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _status: ::std::os::raw::c_int, - pub _utime: __kernel_clock_t, - pub _stime: __kernel_clock_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_4() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_4>(), - 20usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_4>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._status as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._utime as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_utime) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._stime as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_stime) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { - pub _addr: *mut ::std::os::raw::c_void, - pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _addr_lsb: ::std::os::raw::c_short, - pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, - pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { - pub _dummy_bnd: [::std::os::raw::c_char; 4usize], - pub _lower: *mut ::std::os::raw::c_void, - pub _upper: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>())) - ._dummy_bnd as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_dummy_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._lower - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_lower) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._upper - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_upper) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { - pub _dummy_pkey: [::std::os::raw::c_char; 4usize], - pub _pkey: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 8usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>())) - ._dummy_pkey as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_dummy_pkey) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>()))._pkey - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_lsb) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_bnd as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_pkey - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5>()))._addr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5), - "::", - stringify!(_addr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { - pub _band: ::std::os::raw::c_long, - pub _fd: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_6() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_6>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_6>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._band as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_band) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._fd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_fd) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { - pub _call_addr: *mut ::std::os::raw::c_void, - pub _syscall: ::std::os::raw::c_int, - pub _arch: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_7() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_7>(), - 12usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_7>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._call_addr as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_call_addr) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._syscall as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_syscall) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._arch as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_arch) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields() { - assert_eq!( - ::std::mem::size_of::<__sifields>(), - 20usize, - concat!("Size of: ", stringify!(__sifields)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._kill as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_kill) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._timer as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_timer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._rt as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_rt) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigchld as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigchld) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigfault as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigfault) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigpoll as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigpoll) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigsys as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigsys) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { - pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { - pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, - pub _si_pad: [::std::os::raw::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub _sifields: __sifields, -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_signo as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_signo) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_errno as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_errno) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_code as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_code) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sifields as *const _ - as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_sifields) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._si_pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1), - "::", - stringify!(_si_pad) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(siginfo)) - ); -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_value: sigval_t, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_notify: ::std::os::raw::c_int, - pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { - pub _pad: [::std::os::raw::c_int; 13usize], - pub _tid: ::std::os::raw::c_int, - pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { - pub _function: ::std::option::Option, - pub _attribute: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!( - "Size of: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._function as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_function) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._attribute as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_attribute) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_pad) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sigev_thread as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_sigev_thread) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_value as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_value) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_signo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_signo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_notify as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._sigev_un as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(_sigev_un) - ) - ); -} -pub type sigevent_t = sigevent; -pub type sig_atomic_t = ::std::os::raw::c_int; -pub type sig_t = __sighandler_t; -pub type sighandler_t = __sighandler_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigset64_t { - pub __bits: [::std::os::raw::c_ulong; 2usize], -} -#[test] -fn bindgen_test_layout_sigset64_t() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigset64_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigset64_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigset64_t), - "::", - stringify!(__bits) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub __bindgen_anon_1: sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_int, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction64 { - pub __bindgen_anon_1: sigaction64__bindgen_ty_1, - pub sa_flags: ::std::os::raw::c_int, - pub sa_restorer: ::std::option::Option, - pub sa_mask: sigset64_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction64__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction64() { - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(sigaction64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigaction64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_restorer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_mask) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_fpregs_struct { - pub cwd: ::std::os::raw::c_long, - pub swd: ::std::os::raw::c_long, - pub twd: ::std::os::raw::c_long, - pub fip: ::std::os::raw::c_long, - pub fcs: ::std::os::raw::c_long, - pub foo: ::std::os::raw::c_long, - pub fos: ::std::os::raw::c_long, - pub st_space: [::std::os::raw::c_long; 20usize], -} -#[test] -fn bindgen_test_layout_user_fpregs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 108usize, - concat!("Size of: ", stringify!(user_fpregs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_fpregs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).swd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).twd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(twd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fip as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(fip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fcs as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(fcs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).foo as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(foo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fos as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(fos) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).st_space as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(st_space) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_fpxregs_struct { - pub cwd: ::std::os::raw::c_ushort, - pub swd: ::std::os::raw::c_ushort, - pub twd: ::std::os::raw::c_ushort, - pub fop: ::std::os::raw::c_ushort, - pub fip: ::std::os::raw::c_long, - pub fcs: ::std::os::raw::c_long, - pub foo: ::std::os::raw::c_long, - pub fos: ::std::os::raw::c_long, - pub mxcsr: ::std::os::raw::c_long, - pub reserved: ::std::os::raw::c_long, - pub st_space: [::std::os::raw::c_long; 32usize], - pub xmm_space: [::std::os::raw::c_long; 32usize], - pub padding: [::std::os::raw::c_long; 56usize], -} -#[test] -fn bindgen_test_layout_user_fpxregs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 512usize, - concat!("Size of: ", stringify!(user_fpxregs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_fpxregs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).swd as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).twd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(twd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fop as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(fop) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fip as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(fip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fcs as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(fcs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).foo as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(foo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fos as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(fos) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mxcsr as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).st_space as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(st_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xmm_space as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(xmm_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(user_fpxregs_struct), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_regs_struct { - pub ebx: ::std::os::raw::c_long, - pub ecx: ::std::os::raw::c_long, - pub edx: ::std::os::raw::c_long, - pub esi: ::std::os::raw::c_long, - pub edi: ::std::os::raw::c_long, - pub ebp: ::std::os::raw::c_long, - pub eax: ::std::os::raw::c_long, - pub xds: ::std::os::raw::c_long, - pub xes: ::std::os::raw::c_long, - pub xfs: ::std::os::raw::c_long, - pub xgs: ::std::os::raw::c_long, - pub orig_eax: ::std::os::raw::c_long, - pub eip: ::std::os::raw::c_long, - pub xcs: ::std::os::raw::c_long, - pub eflags: ::std::os::raw::c_long, - pub esp: ::std::os::raw::c_long, - pub xss: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_user_regs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 68usize, - concat!("Size of: ", stringify!(user_regs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user_regs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ebx as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(ebx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ecx as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(ecx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).edx as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(edx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esi as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(esi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).edi as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(edi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ebp as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(ebp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eax as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(eax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xds as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xds) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xes as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xes) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xfs as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xfs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xgs as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xgs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).orig_eax as *const _ as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(orig_eax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eip as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(eip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xcs as *const _ as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xcs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eflags as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(eflags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).esp as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(esp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xss as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(xss) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user { - pub regs: user_regs_struct, - pub u_fpvalid: ::std::os::raw::c_int, - pub i387: user_fpregs_struct, - pub u_tsize: ::std::os::raw::c_ulong, - pub u_dsize: ::std::os::raw::c_ulong, - pub u_ssize: ::std::os::raw::c_ulong, - pub start_code: ::std::os::raw::c_ulong, - pub start_stack: ::std::os::raw::c_ulong, - pub signal: ::std::os::raw::c_long, - pub reserved: ::std::os::raw::c_int, - pub u_ar0: *mut user_regs_struct, - pub u_fpstate: *mut user_fpregs_struct, - pub magic: ::std::os::raw::c_ulong, - pub u_comm: [::std::os::raw::c_char; 32usize], - pub u_debugreg: [::std::os::raw::c_int; 8usize], -} -#[test] -fn bindgen_test_layout_user() { - assert_eq!( - ::std::mem::size_of::(), - 284usize, - concat!("Size of: ", stringify!(user)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(user)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).regs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(regs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fpvalid as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fpvalid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).i387 as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(i387) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_tsize as *const _ as usize }, - 180usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_tsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_dsize as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_dsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ssize as *const _ as usize }, - 188usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ssize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_code as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_code) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_stack as *const _ as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).signal as *const _ as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved as *const _ as usize }, - 204usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ar0 as *const _ as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ar0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fpstate as *const _ as usize }, - 212usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).magic as *const _ as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_comm as *const _ as usize }, - 220usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_comm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_debugreg as *const _ as usize }, - 252usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_debugreg) - ) - ); -} -pub const REG_GS: ::std::os::raw::c_uint = 0; -pub const REG_FS: ::std::os::raw::c_uint = 1; -pub const REG_ES: ::std::os::raw::c_uint = 2; -pub const REG_DS: ::std::os::raw::c_uint = 3; -pub const REG_EDI: ::std::os::raw::c_uint = 4; -pub const REG_ESI: ::std::os::raw::c_uint = 5; -pub const REG_EBP: ::std::os::raw::c_uint = 6; -pub const REG_ESP: ::std::os::raw::c_uint = 7; -pub const REG_EBX: ::std::os::raw::c_uint = 8; -pub const REG_EDX: ::std::os::raw::c_uint = 9; -pub const REG_ECX: ::std::os::raw::c_uint = 10; -pub const REG_EAX: ::std::os::raw::c_uint = 11; -pub const REG_TRAPNO: ::std::os::raw::c_uint = 12; -pub const REG_ERR: ::std::os::raw::c_uint = 13; -pub const REG_EIP: ::std::os::raw::c_uint = 14; -pub const REG_CS: ::std::os::raw::c_uint = 15; -pub const REG_EFL: ::std::os::raw::c_uint = 16; -pub const REG_UESP: ::std::os::raw::c_uint = 17; -pub const REG_SS: ::std::os::raw::c_uint = 18; -pub const NGREG: ::std::os::raw::c_uint = 19; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub type greg_t = ::std::os::raw::c_int; -pub type gregset_t = [greg_t; 19usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _libc_fpreg { - pub significand: [::std::os::raw::c_ushort; 4usize], - pub exponent: ::std::os::raw::c_ushort, -} -#[test] -fn bindgen_test_layout__libc_fpreg() { - assert_eq!( - ::std::mem::size_of::<_libc_fpreg>(), - 10usize, - concat!("Size of: ", stringify!(_libc_fpreg)) - ); - assert_eq!( - ::std::mem::align_of::<_libc_fpreg>(), - 2usize, - concat!("Alignment of ", stringify!(_libc_fpreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpreg), - "::", - stringify!(exponent) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _libc_fpstate { - pub cw: ::std::os::raw::c_ulong, - pub sw: ::std::os::raw::c_ulong, - pub tag: ::std::os::raw::c_ulong, - pub ipoff: ::std::os::raw::c_ulong, - pub cssel: ::std::os::raw::c_ulong, - pub dataoff: ::std::os::raw::c_ulong, - pub datasel: ::std::os::raw::c_ulong, - pub _st: [_libc_fpreg; 8usize], - pub status: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout__libc_fpstate() { - assert_eq!( - ::std::mem::size_of::<_libc_fpstate>(), - 112usize, - concat!("Size of: ", stringify!(_libc_fpstate)) - ); - assert_eq!( - ::std::mem::align_of::<_libc_fpstate>(), - 4usize, - concat!("Alignment of ", stringify!(_libc_fpstate)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).cw as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(cw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).sw as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(sw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).tag as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(tag) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).ipoff as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(ipoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).cssel as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(cssel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).dataoff as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(dataoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).datasel as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(datasel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>()))._st as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).status as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(status) - ) - ); -} -pub type fpregset_t = *mut _libc_fpstate; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mcontext_t { - pub gregs: gregset_t, - pub fpregs: fpregset_t, - pub oldmask: ::std::os::raw::c_ulong, - pub cr2: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_mcontext_t() { - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(mcontext_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(mcontext_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(gregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpregs as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(fpregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(cr2) - ) - ); -} -#[repr(C)] -pub struct ucontext { - pub uc_flags: ::std::os::raw::c_ulong, - pub uc_link: *mut ucontext, - pub uc_stack: stack_t, - pub uc_mcontext: mcontext_t, - pub __bindgen_anon_1: ucontext__bindgen_ty_1, - pub __fpregs_mem: _libc_fpstate, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ucontext__bindgen_ty_1 { - pub __bindgen_anon_1: ucontext__bindgen_ty_1__bindgen_ty_1, - pub uc_sigmask64: sigset64_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucontext__bindgen_ty_1__bindgen_ty_1 { - pub uc_sigmask: sigset_t, - pub __padding_rt_sigset: u32, -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!( - "Size of: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(uc_sigmask) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__padding_rt_sigset - as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(__padding_rt_sigset) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask64 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask64) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext() { - assert_eq!( - ::std::mem::size_of::(), - 228usize, - concat!("Size of: ", stringify!(ucontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ucontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_link as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_link) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_stack as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_mcontext as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_mcontext) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__fpregs_mem as *const _ as usize }, - 116usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(__fpregs_mem) - ) - ); -} -pub type ucontext_t = ucontext; -extern "C" { - pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int; -} -extern "C" { - pub static sys_siglist: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub static sys_signame: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub fn sigaction( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction, - __old_action: *mut sigaction, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaction64( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction64, - __old_action: *mut sigaction64, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn siginterrupt( - __signal: ::std::os::raw::c_int, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn signal(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn sigaddset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaddset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember( - __set: *const sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember64( - __set: *const sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend(__mask: *const sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend64(__mask: *const sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait( - __set: *const sigset_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait64( - __set: *const sigset64_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sighold(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigignore(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpause(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigrelse(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigset(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn raise(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn kill(__pid: pid_t, __signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn killpg( - __pgrp: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn tgkill( - __tgid: ::std::os::raw::c_int, - __tid: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaltstack( - __new_signal_stack: *const stack_t, - __old_signal_stack: *mut stack_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn psiginfo(__info: *const siginfo_t, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn sigqueue( - __pid: pid_t, - __signal: ::std::os::raw::c_int, - __value: sigval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait( - __set: *const sigset_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait64( - __set: *const sigset64_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo64(__set: *const sigset64_t, __info: *mut siginfo_t) - -> ::std::os::raw::c_int; -} -pub type fd_mask = ::std::os::raw::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fd_set { - pub fds_bits: [fd_mask; 32usize], -} -#[test] -fn bindgen_test_layout_fd_set() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -extern "C" { - pub fn __FD_CLR_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_SET_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_ISSET_chk( - arg1: ::std::os::raw::c_int, - arg2: *const fd_set, - arg3: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn select( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *mut timeval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect64( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn gettimeofday(__tv: *mut timeval, __tz: *mut timezone) -> ::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 getitimer( - __which: ::std::os::raw::c_int, - __current_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn setitimer( - __which: ::std::os::raw::c_int, - __new_value: *const itimerval, - __old_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn utimes( - __path: *const ::std::os::raw::c_char, - __times: *const timeval, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __locale_t { - _unused: [u8; 0], -} -pub type locale_t = *mut __locale_t; -extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -extern "C" { - pub static mut timezone: ::std::os::raw::c_long; -} -#[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::(), - 44usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_min as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_min) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_hour as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_hour) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mday as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mon as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mon) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_year as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_year) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_wday as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_wday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_yday as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_yday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_isdst as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_isdst) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_gmtoff as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_gmtoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_zone as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_zone) - ) - ); -} -extern "C" { - pub fn time(__t: *mut time_t) -> time_t; -} -extern "C" { - pub fn nanosleep( - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn asctime(__tm: *const tm) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn asctime_r( - __tm: *const tm, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn difftime(__lhs: time_t, __rhs: time_t) -> f64; -} -extern "C" { - pub fn mktime(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn localtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn localtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn gmtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn gmtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn strptime( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strptime_l( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - __l: locale_t, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strftime( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - ) -> size_t; -} -extern "C" { - pub fn strftime_l( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - __l: locale_t, - ) -> size_t; -} -extern "C" { - pub fn ctime(__t: *const time_t) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn ctime_r( - __t: *const time_t, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn tzset(); -} -extern "C" { - pub fn clock() -> clock_t; -} -extern "C" { - pub fn clock_getcpuclockid(__pid: pid_t, __clock: *mut clockid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_getres(__clock: clockid_t, __resolution: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_gettime(__clock: clockid_t, __ts: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_nanosleep( - __clock: clockid_t, - __flags: ::std::os::raw::c_int, - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_settime(__clock: clockid_t, __ts: *const timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_create( - __clock: clockid_t, - __event: *mut sigevent, - __timer_ptr: *mut timer_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_delete(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_settime( - __timer: timer_t, - __flags: ::std::os::raw::c_int, - __new_value: *const itimerspec, - __old_value: *mut itimerspec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_gettime(__timer: timer_t, __ts: *mut itimerspec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_getoverrun(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timelocal(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timegm(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timespec_get( - __ts: *mut timespec, - __base: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -pub type nfds_t = ::std::os::raw::c_uint; -extern "C" { - pub fn poll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout_ms: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll64( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct clone_args { - pub flags: __u64, - pub pidfd: __u64, - pub child_tid: __u64, - pub parent_tid: __u64, - pub exit_signal: __u64, - pub stack: __u64, - pub stack_size: __u64, - pub tls: __u64, -} -#[test] -fn bindgen_test_layout_clone_args() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(clone_args)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(clone_args)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pidfd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(pidfd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).child_tid as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(child_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).parent_tid as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(parent_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).exit_signal as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(exit_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tls as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(tls) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sched_param { - pub sched_priority: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sched_param() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sched_param)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sched_param)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sched_param), - "::", - stringify!(sched_priority) - ) - ); -} -extern "C" { - pub fn sched_setscheduler( - __pid: pid_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getscheduler(__pid: pid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_yield() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_max(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_min(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_setparam(__pid: pid_t, __param: *const sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getparam(__pid: pid_t, __param: *mut sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_rr_get_interval(__pid: pid_t, __quantum: *mut timespec) -> ::std::os::raw::c_int; -} -pub const PTHREAD_MUTEX_NORMAL: ::std::os::raw::c_uint = 0; -pub const PTHREAD_MUTEX_RECURSIVE: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_ERRORCHECK: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_ERRORCHECK_NP: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_RECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_DEFAULT: ::std::os::raw::c_uint = 0; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; -pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub type __pthread_cleanup_func_t = - ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __pthread_cleanup_t { - pub __cleanup_prev: *mut __pthread_cleanup_t, - pub __cleanup_routine: __pthread_cleanup_func_t, - pub __cleanup_arg: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___pthread_cleanup_t() { - assert_eq!( - ::std::mem::size_of::<__pthread_cleanup_t>(), - 12usize, - concat!("Size of: ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - ::std::mem::align_of::<__pthread_cleanup_t>(), - 4usize, - concat!("Alignment of ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_prev as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_prev) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_routine as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_routine) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_arg as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_arg) - ) - ); -} -extern "C" { - pub fn __pthread_cleanup_push( - c: *mut __pthread_cleanup_t, - arg1: __pthread_cleanup_func_t, - arg2: *mut ::std::os::raw::c_void, - ); -} -extern "C" { - pub fn __pthread_cleanup_pop(arg1: *mut __pthread_cleanup_t, arg2: ::std::os::raw::c_int); -} -pub const AASSET_MODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AASSET_MODE_RANDOM: ::std::os::raw::c_uint = 1; -pub const AASSET_MODE_STREAMING: ::std::os::raw::c_uint = 2; -pub const AASSET_MODE_BUFFER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const ACONFIGURATION_ORIENTATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_ORIENTATION_PORT: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_ORIENTATION_LAND: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_ORIENTATION_SQUARE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_TOUCHSCREEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_TOUCHSCREEN_NOTOUCH: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_TOUCHSCREEN_STYLUS: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_TOUCHSCREEN_FINGER: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_DENSITY_DEFAULT: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_DENSITY_LOW: ::std::os::raw::c_uint = 120; -pub const ACONFIGURATION_DENSITY_MEDIUM: ::std::os::raw::c_uint = 160; -pub const ACONFIGURATION_DENSITY_TV: ::std::os::raw::c_uint = 213; -pub const ACONFIGURATION_DENSITY_HIGH: ::std::os::raw::c_uint = 240; -pub const ACONFIGURATION_DENSITY_XHIGH: ::std::os::raw::c_uint = 320; -pub const ACONFIGURATION_DENSITY_XXHIGH: ::std::os::raw::c_uint = 480; -pub const ACONFIGURATION_DENSITY_XXXHIGH: ::std::os::raw::c_uint = 640; -pub const ACONFIGURATION_DENSITY_ANY: ::std::os::raw::c_uint = 65534; -pub const ACONFIGURATION_DENSITY_NONE: ::std::os::raw::c_uint = 65535; -pub const ACONFIGURATION_KEYBOARD_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYBOARD_NOKEYS: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYBOARD_QWERTY: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYBOARD_12KEY: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVIGATION_NONAV: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVIGATION_DPAD: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_NAVIGATION_TRACKBALL: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_WHEEL: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_KEYSHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYSHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYSHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYSHIDDEN_SOFT: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENSIZE_SMALL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENSIZE_NORMAL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_LARGE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_SCREENSIZE_XLARGE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_SCREENLONG_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENLONG_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENLONG_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENROUND_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENROUND_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENROUND_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_HDR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_HDR_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_HDR_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_TYPE_NORMAL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_TYPE_DESK: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_CAR: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_UI_MODE_TYPE_TELEVISION: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_UI_MODE_TYPE_APPLIANCE: ::std::os::raw::c_uint = 5; -pub const ACONFIGURATION_UI_MODE_TYPE_WATCH: ::std::os::raw::c_uint = 6; -pub const ACONFIGURATION_UI_MODE_TYPE_VR_HEADSET: ::std::os::raw::c_uint = 7; -pub const ACONFIGURATION_UI_MODE_NIGHT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_NIGHT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_NIGHT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREEN_HEIGHT_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_LTR: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_LAYOUTDIR_RTL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_MCC: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_MNC: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_LOCALE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_TOUCHSCREEN: ::std::os::raw::c_uint = 8; -pub const ACONFIGURATION_KEYBOARD: ::std::os::raw::c_uint = 16; -pub const ACONFIGURATION_KEYBOARD_HIDDEN: ::std::os::raw::c_uint = 32; -pub const ACONFIGURATION_NAVIGATION: ::std::os::raw::c_uint = 64; -pub const ACONFIGURATION_ORIENTATION: ::std::os::raw::c_uint = 128; -pub const ACONFIGURATION_DENSITY: ::std::os::raw::c_uint = 256; -pub const ACONFIGURATION_SCREEN_SIZE: ::std::os::raw::c_uint = 512; -pub const ACONFIGURATION_VERSION: ::std::os::raw::c_uint = 1024; -pub const ACONFIGURATION_SCREEN_LAYOUT: ::std::os::raw::c_uint = 2048; -pub const ACONFIGURATION_UI_MODE: ::std::os::raw::c_uint = 4096; -pub const ACONFIGURATION_SMALLEST_SCREEN_SIZE: ::std::os::raw::c_uint = 8192; -pub const ACONFIGURATION_LAYOUTDIR: ::std::os::raw::c_uint = 16384; -pub const ACONFIGURATION_SCREEN_ROUND: ::std::os::raw::c_uint = 32768; -pub const ACONFIGURATION_COLOR_MODE: ::std::os::raw::c_uint = 65536; -pub const ACONFIGURATION_MNC_ZERO: ::std::os::raw::c_uint = 65535; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const ALOOPER_PREPARE_ALLOW_NON_CALLBACKS: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const ALOOPER_POLL_WAKE: ::std::os::raw::c_int = -1; -pub const ALOOPER_POLL_CALLBACK: ::std::os::raw::c_int = -2; -pub const ALOOPER_POLL_TIMEOUT: ::std::os::raw::c_int = -3; -pub const ALOOPER_POLL_ERROR: ::std::os::raw::c_int = -4; -pub type _bindgen_ty_7 = ::std::os::raw::c_int; -pub const ALOOPER_EVENT_INPUT: ::std::os::raw::c_uint = 1; -pub const ALOOPER_EVENT_OUTPUT: ::std::os::raw::c_uint = 2; -pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; -pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; -pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub type va_list = __builtin_va_list; -pub type __gnuc_va_list = __builtin_va_list; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} -pub const AKEYCODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AKEYCODE_SOFT_LEFT: ::std::os::raw::c_uint = 1; -pub const AKEYCODE_SOFT_RIGHT: ::std::os::raw::c_uint = 2; -pub const AKEYCODE_HOME: ::std::os::raw::c_uint = 3; -pub const AKEYCODE_BACK: ::std::os::raw::c_uint = 4; -pub const AKEYCODE_CALL: ::std::os::raw::c_uint = 5; -pub const AKEYCODE_ENDCALL: ::std::os::raw::c_uint = 6; -pub const AKEYCODE_0: ::std::os::raw::c_uint = 7; -pub const AKEYCODE_1: ::std::os::raw::c_uint = 8; -pub const AKEYCODE_2: ::std::os::raw::c_uint = 9; -pub const AKEYCODE_3: ::std::os::raw::c_uint = 10; -pub const AKEYCODE_4: ::std::os::raw::c_uint = 11; -pub const AKEYCODE_5: ::std::os::raw::c_uint = 12; -pub const AKEYCODE_6: ::std::os::raw::c_uint = 13; -pub const AKEYCODE_7: ::std::os::raw::c_uint = 14; -pub const AKEYCODE_8: ::std::os::raw::c_uint = 15; -pub const AKEYCODE_9: ::std::os::raw::c_uint = 16; -pub const AKEYCODE_STAR: ::std::os::raw::c_uint = 17; -pub const AKEYCODE_POUND: ::std::os::raw::c_uint = 18; -pub const AKEYCODE_DPAD_UP: ::std::os::raw::c_uint = 19; -pub const AKEYCODE_DPAD_DOWN: ::std::os::raw::c_uint = 20; -pub const AKEYCODE_DPAD_LEFT: ::std::os::raw::c_uint = 21; -pub const AKEYCODE_DPAD_RIGHT: ::std::os::raw::c_uint = 22; -pub const AKEYCODE_DPAD_CENTER: ::std::os::raw::c_uint = 23; -pub const AKEYCODE_VOLUME_UP: ::std::os::raw::c_uint = 24; -pub const AKEYCODE_VOLUME_DOWN: ::std::os::raw::c_uint = 25; -pub const AKEYCODE_POWER: ::std::os::raw::c_uint = 26; -pub const AKEYCODE_CAMERA: ::std::os::raw::c_uint = 27; -pub const AKEYCODE_CLEAR: ::std::os::raw::c_uint = 28; -pub const AKEYCODE_A: ::std::os::raw::c_uint = 29; -pub const AKEYCODE_B: ::std::os::raw::c_uint = 30; -pub const AKEYCODE_C: ::std::os::raw::c_uint = 31; -pub const AKEYCODE_D: ::std::os::raw::c_uint = 32; -pub const AKEYCODE_E: ::std::os::raw::c_uint = 33; -pub const AKEYCODE_F: ::std::os::raw::c_uint = 34; -pub const AKEYCODE_G: ::std::os::raw::c_uint = 35; -pub const AKEYCODE_H: ::std::os::raw::c_uint = 36; -pub const AKEYCODE_I: ::std::os::raw::c_uint = 37; -pub const AKEYCODE_J: ::std::os::raw::c_uint = 38; -pub const AKEYCODE_K: ::std::os::raw::c_uint = 39; -pub const AKEYCODE_L: ::std::os::raw::c_uint = 40; -pub const AKEYCODE_M: ::std::os::raw::c_uint = 41; -pub const AKEYCODE_N: ::std::os::raw::c_uint = 42; -pub const AKEYCODE_O: ::std::os::raw::c_uint = 43; -pub const AKEYCODE_P: ::std::os::raw::c_uint = 44; -pub const AKEYCODE_Q: ::std::os::raw::c_uint = 45; -pub const AKEYCODE_R: ::std::os::raw::c_uint = 46; -pub const AKEYCODE_S: ::std::os::raw::c_uint = 47; -pub const AKEYCODE_T: ::std::os::raw::c_uint = 48; -pub const AKEYCODE_U: ::std::os::raw::c_uint = 49; -pub const AKEYCODE_V: ::std::os::raw::c_uint = 50; -pub const AKEYCODE_W: ::std::os::raw::c_uint = 51; -pub const AKEYCODE_X: ::std::os::raw::c_uint = 52; -pub const AKEYCODE_Y: ::std::os::raw::c_uint = 53; -pub const AKEYCODE_Z: ::std::os::raw::c_uint = 54; -pub const AKEYCODE_COMMA: ::std::os::raw::c_uint = 55; -pub const AKEYCODE_PERIOD: ::std::os::raw::c_uint = 56; -pub const AKEYCODE_ALT_LEFT: ::std::os::raw::c_uint = 57; -pub const AKEYCODE_ALT_RIGHT: ::std::os::raw::c_uint = 58; -pub const AKEYCODE_SHIFT_LEFT: ::std::os::raw::c_uint = 59; -pub const AKEYCODE_SHIFT_RIGHT: ::std::os::raw::c_uint = 60; -pub const AKEYCODE_TAB: ::std::os::raw::c_uint = 61; -pub const AKEYCODE_SPACE: ::std::os::raw::c_uint = 62; -pub const AKEYCODE_SYM: ::std::os::raw::c_uint = 63; -pub const AKEYCODE_EXPLORER: ::std::os::raw::c_uint = 64; -pub const AKEYCODE_ENVELOPE: ::std::os::raw::c_uint = 65; -pub const AKEYCODE_ENTER: ::std::os::raw::c_uint = 66; -pub const AKEYCODE_DEL: ::std::os::raw::c_uint = 67; -pub const AKEYCODE_GRAVE: ::std::os::raw::c_uint = 68; -pub const AKEYCODE_MINUS: ::std::os::raw::c_uint = 69; -pub const AKEYCODE_EQUALS: ::std::os::raw::c_uint = 70; -pub const AKEYCODE_LEFT_BRACKET: ::std::os::raw::c_uint = 71; -pub const AKEYCODE_RIGHT_BRACKET: ::std::os::raw::c_uint = 72; -pub const AKEYCODE_BACKSLASH: ::std::os::raw::c_uint = 73; -pub const AKEYCODE_SEMICOLON: ::std::os::raw::c_uint = 74; -pub const AKEYCODE_APOSTROPHE: ::std::os::raw::c_uint = 75; -pub const AKEYCODE_SLASH: ::std::os::raw::c_uint = 76; -pub const AKEYCODE_AT: ::std::os::raw::c_uint = 77; -pub const AKEYCODE_NUM: ::std::os::raw::c_uint = 78; -pub const AKEYCODE_HEADSETHOOK: ::std::os::raw::c_uint = 79; -pub const AKEYCODE_FOCUS: ::std::os::raw::c_uint = 80; -pub const AKEYCODE_PLUS: ::std::os::raw::c_uint = 81; -pub const AKEYCODE_MENU: ::std::os::raw::c_uint = 82; -pub const AKEYCODE_NOTIFICATION: ::std::os::raw::c_uint = 83; -pub const AKEYCODE_SEARCH: ::std::os::raw::c_uint = 84; -pub const AKEYCODE_MEDIA_PLAY_PAUSE: ::std::os::raw::c_uint = 85; -pub const AKEYCODE_MEDIA_STOP: ::std::os::raw::c_uint = 86; -pub const AKEYCODE_MEDIA_NEXT: ::std::os::raw::c_uint = 87; -pub const AKEYCODE_MEDIA_PREVIOUS: ::std::os::raw::c_uint = 88; -pub const AKEYCODE_MEDIA_REWIND: ::std::os::raw::c_uint = 89; -pub const AKEYCODE_MEDIA_FAST_FORWARD: ::std::os::raw::c_uint = 90; -pub const AKEYCODE_MUTE: ::std::os::raw::c_uint = 91; -pub const AKEYCODE_PAGE_UP: ::std::os::raw::c_uint = 92; -pub const AKEYCODE_PAGE_DOWN: ::std::os::raw::c_uint = 93; -pub const AKEYCODE_PICTSYMBOLS: ::std::os::raw::c_uint = 94; -pub const AKEYCODE_SWITCH_CHARSET: ::std::os::raw::c_uint = 95; -pub const AKEYCODE_BUTTON_A: ::std::os::raw::c_uint = 96; -pub const AKEYCODE_BUTTON_B: ::std::os::raw::c_uint = 97; -pub const AKEYCODE_BUTTON_C: ::std::os::raw::c_uint = 98; -pub const AKEYCODE_BUTTON_X: ::std::os::raw::c_uint = 99; -pub const AKEYCODE_BUTTON_Y: ::std::os::raw::c_uint = 100; -pub const AKEYCODE_BUTTON_Z: ::std::os::raw::c_uint = 101; -pub const AKEYCODE_BUTTON_L1: ::std::os::raw::c_uint = 102; -pub const AKEYCODE_BUTTON_R1: ::std::os::raw::c_uint = 103; -pub const AKEYCODE_BUTTON_L2: ::std::os::raw::c_uint = 104; -pub const AKEYCODE_BUTTON_R2: ::std::os::raw::c_uint = 105; -pub const AKEYCODE_BUTTON_THUMBL: ::std::os::raw::c_uint = 106; -pub const AKEYCODE_BUTTON_THUMBR: ::std::os::raw::c_uint = 107; -pub const AKEYCODE_BUTTON_START: ::std::os::raw::c_uint = 108; -pub const AKEYCODE_BUTTON_SELECT: ::std::os::raw::c_uint = 109; -pub const AKEYCODE_BUTTON_MODE: ::std::os::raw::c_uint = 110; -pub const AKEYCODE_ESCAPE: ::std::os::raw::c_uint = 111; -pub const AKEYCODE_FORWARD_DEL: ::std::os::raw::c_uint = 112; -pub const AKEYCODE_CTRL_LEFT: ::std::os::raw::c_uint = 113; -pub const AKEYCODE_CTRL_RIGHT: ::std::os::raw::c_uint = 114; -pub const AKEYCODE_CAPS_LOCK: ::std::os::raw::c_uint = 115; -pub const AKEYCODE_SCROLL_LOCK: ::std::os::raw::c_uint = 116; -pub const AKEYCODE_META_LEFT: ::std::os::raw::c_uint = 117; -pub const AKEYCODE_META_RIGHT: ::std::os::raw::c_uint = 118; -pub const AKEYCODE_FUNCTION: ::std::os::raw::c_uint = 119; -pub const AKEYCODE_SYSRQ: ::std::os::raw::c_uint = 120; -pub const AKEYCODE_BREAK: ::std::os::raw::c_uint = 121; -pub const AKEYCODE_MOVE_HOME: ::std::os::raw::c_uint = 122; -pub const AKEYCODE_MOVE_END: ::std::os::raw::c_uint = 123; -pub const AKEYCODE_INSERT: ::std::os::raw::c_uint = 124; -pub const AKEYCODE_FORWARD: ::std::os::raw::c_uint = 125; -pub const AKEYCODE_MEDIA_PLAY: ::std::os::raw::c_uint = 126; -pub const AKEYCODE_MEDIA_PAUSE: ::std::os::raw::c_uint = 127; -pub const AKEYCODE_MEDIA_CLOSE: ::std::os::raw::c_uint = 128; -pub const AKEYCODE_MEDIA_EJECT: ::std::os::raw::c_uint = 129; -pub const AKEYCODE_MEDIA_RECORD: ::std::os::raw::c_uint = 130; -pub const AKEYCODE_F1: ::std::os::raw::c_uint = 131; -pub const AKEYCODE_F2: ::std::os::raw::c_uint = 132; -pub const AKEYCODE_F3: ::std::os::raw::c_uint = 133; -pub const AKEYCODE_F4: ::std::os::raw::c_uint = 134; -pub const AKEYCODE_F5: ::std::os::raw::c_uint = 135; -pub const AKEYCODE_F6: ::std::os::raw::c_uint = 136; -pub const AKEYCODE_F7: ::std::os::raw::c_uint = 137; -pub const AKEYCODE_F8: ::std::os::raw::c_uint = 138; -pub const AKEYCODE_F9: ::std::os::raw::c_uint = 139; -pub const AKEYCODE_F10: ::std::os::raw::c_uint = 140; -pub const AKEYCODE_F11: ::std::os::raw::c_uint = 141; -pub const AKEYCODE_F12: ::std::os::raw::c_uint = 142; -pub const AKEYCODE_NUM_LOCK: ::std::os::raw::c_uint = 143; -pub const AKEYCODE_NUMPAD_0: ::std::os::raw::c_uint = 144; -pub const AKEYCODE_NUMPAD_1: ::std::os::raw::c_uint = 145; -pub const AKEYCODE_NUMPAD_2: ::std::os::raw::c_uint = 146; -pub const AKEYCODE_NUMPAD_3: ::std::os::raw::c_uint = 147; -pub const AKEYCODE_NUMPAD_4: ::std::os::raw::c_uint = 148; -pub const AKEYCODE_NUMPAD_5: ::std::os::raw::c_uint = 149; -pub const AKEYCODE_NUMPAD_6: ::std::os::raw::c_uint = 150; -pub const AKEYCODE_NUMPAD_7: ::std::os::raw::c_uint = 151; -pub const AKEYCODE_NUMPAD_8: ::std::os::raw::c_uint = 152; -pub const AKEYCODE_NUMPAD_9: ::std::os::raw::c_uint = 153; -pub const AKEYCODE_NUMPAD_DIVIDE: ::std::os::raw::c_uint = 154; -pub const AKEYCODE_NUMPAD_MULTIPLY: ::std::os::raw::c_uint = 155; -pub const AKEYCODE_NUMPAD_SUBTRACT: ::std::os::raw::c_uint = 156; -pub const AKEYCODE_NUMPAD_ADD: ::std::os::raw::c_uint = 157; -pub const AKEYCODE_NUMPAD_DOT: ::std::os::raw::c_uint = 158; -pub const AKEYCODE_NUMPAD_COMMA: ::std::os::raw::c_uint = 159; -pub const AKEYCODE_NUMPAD_ENTER: ::std::os::raw::c_uint = 160; -pub const AKEYCODE_NUMPAD_EQUALS: ::std::os::raw::c_uint = 161; -pub const AKEYCODE_NUMPAD_LEFT_PAREN: ::std::os::raw::c_uint = 162; -pub const AKEYCODE_NUMPAD_RIGHT_PAREN: ::std::os::raw::c_uint = 163; -pub const AKEYCODE_VOLUME_MUTE: ::std::os::raw::c_uint = 164; -pub const AKEYCODE_INFO: ::std::os::raw::c_uint = 165; -pub const AKEYCODE_CHANNEL_UP: ::std::os::raw::c_uint = 166; -pub const AKEYCODE_CHANNEL_DOWN: ::std::os::raw::c_uint = 167; -pub const AKEYCODE_ZOOM_IN: ::std::os::raw::c_uint = 168; -pub const AKEYCODE_ZOOM_OUT: ::std::os::raw::c_uint = 169; -pub const AKEYCODE_TV: ::std::os::raw::c_uint = 170; -pub const AKEYCODE_WINDOW: ::std::os::raw::c_uint = 171; -pub const AKEYCODE_GUIDE: ::std::os::raw::c_uint = 172; -pub const AKEYCODE_DVR: ::std::os::raw::c_uint = 173; -pub const AKEYCODE_BOOKMARK: ::std::os::raw::c_uint = 174; -pub const AKEYCODE_CAPTIONS: ::std::os::raw::c_uint = 175; -pub const AKEYCODE_SETTINGS: ::std::os::raw::c_uint = 176; -pub const AKEYCODE_TV_POWER: ::std::os::raw::c_uint = 177; -pub const AKEYCODE_TV_INPUT: ::std::os::raw::c_uint = 178; -pub const AKEYCODE_STB_POWER: ::std::os::raw::c_uint = 179; -pub const AKEYCODE_STB_INPUT: ::std::os::raw::c_uint = 180; -pub const AKEYCODE_AVR_POWER: ::std::os::raw::c_uint = 181; -pub const AKEYCODE_AVR_INPUT: ::std::os::raw::c_uint = 182; -pub const AKEYCODE_PROG_RED: ::std::os::raw::c_uint = 183; -pub const AKEYCODE_PROG_GREEN: ::std::os::raw::c_uint = 184; -pub const AKEYCODE_PROG_YELLOW: ::std::os::raw::c_uint = 185; -pub const AKEYCODE_PROG_BLUE: ::std::os::raw::c_uint = 186; -pub const AKEYCODE_APP_SWITCH: ::std::os::raw::c_uint = 187; -pub const AKEYCODE_BUTTON_1: ::std::os::raw::c_uint = 188; -pub const AKEYCODE_BUTTON_2: ::std::os::raw::c_uint = 189; -pub const AKEYCODE_BUTTON_3: ::std::os::raw::c_uint = 190; -pub const AKEYCODE_BUTTON_4: ::std::os::raw::c_uint = 191; -pub const AKEYCODE_BUTTON_5: ::std::os::raw::c_uint = 192; -pub const AKEYCODE_BUTTON_6: ::std::os::raw::c_uint = 193; -pub const AKEYCODE_BUTTON_7: ::std::os::raw::c_uint = 194; -pub const AKEYCODE_BUTTON_8: ::std::os::raw::c_uint = 195; -pub const AKEYCODE_BUTTON_9: ::std::os::raw::c_uint = 196; -pub const AKEYCODE_BUTTON_10: ::std::os::raw::c_uint = 197; -pub const AKEYCODE_BUTTON_11: ::std::os::raw::c_uint = 198; -pub const AKEYCODE_BUTTON_12: ::std::os::raw::c_uint = 199; -pub const AKEYCODE_BUTTON_13: ::std::os::raw::c_uint = 200; -pub const AKEYCODE_BUTTON_14: ::std::os::raw::c_uint = 201; -pub const AKEYCODE_BUTTON_15: ::std::os::raw::c_uint = 202; -pub const AKEYCODE_BUTTON_16: ::std::os::raw::c_uint = 203; -pub const AKEYCODE_LANGUAGE_SWITCH: ::std::os::raw::c_uint = 204; -pub const AKEYCODE_MANNER_MODE: ::std::os::raw::c_uint = 205; -pub const AKEYCODE_3D_MODE: ::std::os::raw::c_uint = 206; -pub const AKEYCODE_CONTACTS: ::std::os::raw::c_uint = 207; -pub const AKEYCODE_CALENDAR: ::std::os::raw::c_uint = 208; -pub const AKEYCODE_MUSIC: ::std::os::raw::c_uint = 209; -pub const AKEYCODE_CALCULATOR: ::std::os::raw::c_uint = 210; -pub const AKEYCODE_ZENKAKU_HANKAKU: ::std::os::raw::c_uint = 211; -pub const AKEYCODE_EISU: ::std::os::raw::c_uint = 212; -pub const AKEYCODE_MUHENKAN: ::std::os::raw::c_uint = 213; -pub const AKEYCODE_HENKAN: ::std::os::raw::c_uint = 214; -pub const AKEYCODE_KATAKANA_HIRAGANA: ::std::os::raw::c_uint = 215; -pub const AKEYCODE_YEN: ::std::os::raw::c_uint = 216; -pub const AKEYCODE_RO: ::std::os::raw::c_uint = 217; -pub const AKEYCODE_KANA: ::std::os::raw::c_uint = 218; -pub const AKEYCODE_ASSIST: ::std::os::raw::c_uint = 219; -pub const AKEYCODE_BRIGHTNESS_DOWN: ::std::os::raw::c_uint = 220; -pub const AKEYCODE_BRIGHTNESS_UP: ::std::os::raw::c_uint = 221; -pub const AKEYCODE_MEDIA_AUDIO_TRACK: ::std::os::raw::c_uint = 222; -pub const AKEYCODE_SLEEP: ::std::os::raw::c_uint = 223; -pub const AKEYCODE_WAKEUP: ::std::os::raw::c_uint = 224; -pub const AKEYCODE_PAIRING: ::std::os::raw::c_uint = 225; -pub const AKEYCODE_MEDIA_TOP_MENU: ::std::os::raw::c_uint = 226; -pub const AKEYCODE_11: ::std::os::raw::c_uint = 227; -pub const AKEYCODE_12: ::std::os::raw::c_uint = 228; -pub const AKEYCODE_LAST_CHANNEL: ::std::os::raw::c_uint = 229; -pub const AKEYCODE_TV_DATA_SERVICE: ::std::os::raw::c_uint = 230; -pub const AKEYCODE_VOICE_ASSIST: ::std::os::raw::c_uint = 231; -pub const AKEYCODE_TV_RADIO_SERVICE: ::std::os::raw::c_uint = 232; -pub const AKEYCODE_TV_TELETEXT: ::std::os::raw::c_uint = 233; -pub const AKEYCODE_TV_NUMBER_ENTRY: ::std::os::raw::c_uint = 234; -pub const AKEYCODE_TV_TERRESTRIAL_ANALOG: ::std::os::raw::c_uint = 235; -pub const AKEYCODE_TV_TERRESTRIAL_DIGITAL: ::std::os::raw::c_uint = 236; -pub const AKEYCODE_TV_SATELLITE: ::std::os::raw::c_uint = 237; -pub const AKEYCODE_TV_SATELLITE_BS: ::std::os::raw::c_uint = 238; -pub const AKEYCODE_TV_SATELLITE_CS: ::std::os::raw::c_uint = 239; -pub const AKEYCODE_TV_SATELLITE_SERVICE: ::std::os::raw::c_uint = 240; -pub const AKEYCODE_TV_NETWORK: ::std::os::raw::c_uint = 241; -pub const AKEYCODE_TV_ANTENNA_CABLE: ::std::os::raw::c_uint = 242; -pub const AKEYCODE_TV_INPUT_HDMI_1: ::std::os::raw::c_uint = 243; -pub const AKEYCODE_TV_INPUT_HDMI_2: ::std::os::raw::c_uint = 244; -pub const AKEYCODE_TV_INPUT_HDMI_3: ::std::os::raw::c_uint = 245; -pub const AKEYCODE_TV_INPUT_HDMI_4: ::std::os::raw::c_uint = 246; -pub const AKEYCODE_TV_INPUT_COMPOSITE_1: ::std::os::raw::c_uint = 247; -pub const AKEYCODE_TV_INPUT_COMPOSITE_2: ::std::os::raw::c_uint = 248; -pub const AKEYCODE_TV_INPUT_COMPONENT_1: ::std::os::raw::c_uint = 249; -pub const AKEYCODE_TV_INPUT_COMPONENT_2: ::std::os::raw::c_uint = 250; -pub const AKEYCODE_TV_INPUT_VGA_1: ::std::os::raw::c_uint = 251; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION: ::std::os::raw::c_uint = 252; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: ::std::os::raw::c_uint = 253; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: ::std::os::raw::c_uint = 254; -pub const AKEYCODE_TV_ZOOM_MODE: ::std::os::raw::c_uint = 255; -pub const AKEYCODE_TV_CONTENTS_MENU: ::std::os::raw::c_uint = 256; -pub const AKEYCODE_TV_MEDIA_CONTEXT_MENU: ::std::os::raw::c_uint = 257; -pub const AKEYCODE_TV_TIMER_PROGRAMMING: ::std::os::raw::c_uint = 258; -pub const AKEYCODE_HELP: ::std::os::raw::c_uint = 259; -pub const AKEYCODE_NAVIGATE_PREVIOUS: ::std::os::raw::c_uint = 260; -pub const AKEYCODE_NAVIGATE_NEXT: ::std::os::raw::c_uint = 261; -pub const AKEYCODE_NAVIGATE_IN: ::std::os::raw::c_uint = 262; -pub const AKEYCODE_NAVIGATE_OUT: ::std::os::raw::c_uint = 263; -pub const AKEYCODE_STEM_PRIMARY: ::std::os::raw::c_uint = 264; -pub const AKEYCODE_STEM_1: ::std::os::raw::c_uint = 265; -pub const AKEYCODE_STEM_2: ::std::os::raw::c_uint = 266; -pub const AKEYCODE_STEM_3: ::std::os::raw::c_uint = 267; -pub const AKEYCODE_DPAD_UP_LEFT: ::std::os::raw::c_uint = 268; -pub const AKEYCODE_DPAD_DOWN_LEFT: ::std::os::raw::c_uint = 269; -pub const AKEYCODE_DPAD_UP_RIGHT: ::std::os::raw::c_uint = 270; -pub const AKEYCODE_DPAD_DOWN_RIGHT: ::std::os::raw::c_uint = 271; -pub const AKEYCODE_MEDIA_SKIP_FORWARD: ::std::os::raw::c_uint = 272; -pub const AKEYCODE_MEDIA_SKIP_BACKWARD: ::std::os::raw::c_uint = 273; -pub const AKEYCODE_MEDIA_STEP_FORWARD: ::std::os::raw::c_uint = 274; -pub const AKEYCODE_MEDIA_STEP_BACKWARD: ::std::os::raw::c_uint = 275; -pub const AKEYCODE_SOFT_SLEEP: ::std::os::raw::c_uint = 276; -pub const AKEYCODE_CUT: ::std::os::raw::c_uint = 277; -pub const AKEYCODE_COPY: ::std::os::raw::c_uint = 278; -pub const AKEYCODE_PASTE: ::std::os::raw::c_uint = 279; -pub const AKEYCODE_SYSTEM_NAVIGATION_UP: ::std::os::raw::c_uint = 280; -pub const AKEYCODE_SYSTEM_NAVIGATION_DOWN: ::std::os::raw::c_uint = 281; -pub const AKEYCODE_SYSTEM_NAVIGATION_LEFT: ::std::os::raw::c_uint = 282; -pub const AKEYCODE_SYSTEM_NAVIGATION_RIGHT: ::std::os::raw::c_uint = 283; -pub const AKEYCODE_ALL_APPS: ::std::os::raw::c_uint = 284; -pub const AKEYCODE_REFRESH: ::std::os::raw::c_uint = 285; -pub const AKEYCODE_THUMBS_UP: ::std::os::raw::c_uint = 286; -pub const AKEYCODE_THUMBS_DOWN: ::std::os::raw::c_uint = 287; -pub const AKEYCODE_PROFILE_SWITCH: ::std::os::raw::c_uint = 288; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; -pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; -pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; -pub const AKEY_STATE_VIRTUAL: ::std::os::raw::c_int = 2; -pub type _bindgen_ty_10 = ::std::os::raw::c_int; -pub const AMETA_NONE: ::std::os::raw::c_uint = 0; -pub const AMETA_ALT_ON: ::std::os::raw::c_uint = 2; -pub const AMETA_ALT_LEFT_ON: ::std::os::raw::c_uint = 16; -pub const AMETA_ALT_RIGHT_ON: ::std::os::raw::c_uint = 32; -pub const AMETA_SHIFT_ON: ::std::os::raw::c_uint = 1; -pub const AMETA_SHIFT_LEFT_ON: ::std::os::raw::c_uint = 64; -pub const AMETA_SHIFT_RIGHT_ON: ::std::os::raw::c_uint = 128; -pub const AMETA_SYM_ON: ::std::os::raw::c_uint = 4; -pub const AMETA_FUNCTION_ON: ::std::os::raw::c_uint = 8; -pub const AMETA_CTRL_ON: ::std::os::raw::c_uint = 4096; -pub const AMETA_CTRL_LEFT_ON: ::std::os::raw::c_uint = 8192; -pub const AMETA_CTRL_RIGHT_ON: ::std::os::raw::c_uint = 16384; -pub const AMETA_META_ON: ::std::os::raw::c_uint = 65536; -pub const AMETA_META_LEFT_ON: ::std::os::raw::c_uint = 131072; -pub const AMETA_META_RIGHT_ON: ::std::os::raw::c_uint = 262144; -pub const AMETA_CAPS_LOCK_ON: ::std::os::raw::c_uint = 1048576; -pub const AMETA_NUM_LOCK_ON: ::std::os::raw::c_uint = 2097152; -pub const AMETA_SCROLL_LOCK_ON: ::std::os::raw::c_uint = 4194304; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AInputEvent { - _unused: [u8; 0], -} -pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; -pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_ACTION_MULTIPLE: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_FLAG_WOKE_HERE: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_FLAG_SOFT_KEYBOARD: ::std::os::raw::c_uint = 2; -pub const AKEY_EVENT_FLAG_KEEP_TOUCH_MODE: ::std::os::raw::c_uint = 4; -pub const AKEY_EVENT_FLAG_FROM_SYSTEM: ::std::os::raw::c_uint = 8; -pub const AKEY_EVENT_FLAG_EDITOR_ACTION: ::std::os::raw::c_uint = 16; -pub const AKEY_EVENT_FLAG_CANCELED: ::std::os::raw::c_uint = 32; -pub const AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY: ::std::os::raw::c_uint = 64; -pub const AKEY_EVENT_FLAG_LONG_PRESS: ::std::os::raw::c_uint = 128; -pub const AKEY_EVENT_FLAG_CANCELED_LONG_PRESS: ::std::os::raw::c_uint = 256; -pub const AKEY_EVENT_FLAG_TRACKING: ::std::os::raw::c_uint = 512; -pub const AKEY_EVENT_FLAG_FALLBACK: ::std::os::raw::c_uint = 1024; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_ACTION_MASK: ::std::os::raw::c_uint = 255; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_MASK: ::std::os::raw::c_uint = 65280; -pub const AMOTION_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_ACTION_MOVE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_ACTION_CANCEL: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_ACTION_OUTSIDE: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_ACTION_POINTER_DOWN: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_ACTION_POINTER_UP: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_ACTION_HOVER_MOVE: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_ACTION_SCROLL: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_ACTION_HOVER_ENTER: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_ACTION_HOVER_EXIT: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_ACTION_BUTTON_PRESS: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_ACTION_BUTTON_RELEASE: ::std::os::raw::c_uint = 12; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_EDGE_FLAG_NONE: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_EDGE_FLAG_TOP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_EDGE_FLAG_BOTTOM: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_EDGE_FLAG_LEFT: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_EDGE_FLAG_RIGHT: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_AXIS_X: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_AXIS_Y: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_AXIS_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_AXIS_SIZE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_AXIS_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_AXIS_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_AXIS_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_AXIS_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_AXIS_ORIENTATION: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_AXIS_VSCROLL: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_AXIS_HSCROLL: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_AXIS_Z: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_AXIS_RX: ::std::os::raw::c_uint = 12; -pub const AMOTION_EVENT_AXIS_RY: ::std::os::raw::c_uint = 13; -pub const AMOTION_EVENT_AXIS_RZ: ::std::os::raw::c_uint = 14; -pub const AMOTION_EVENT_AXIS_HAT_X: ::std::os::raw::c_uint = 15; -pub const AMOTION_EVENT_AXIS_HAT_Y: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_AXIS_LTRIGGER: ::std::os::raw::c_uint = 17; -pub const AMOTION_EVENT_AXIS_RTRIGGER: ::std::os::raw::c_uint = 18; -pub const AMOTION_EVENT_AXIS_THROTTLE: ::std::os::raw::c_uint = 19; -pub const AMOTION_EVENT_AXIS_RUDDER: ::std::os::raw::c_uint = 20; -pub const AMOTION_EVENT_AXIS_WHEEL: ::std::os::raw::c_uint = 21; -pub const AMOTION_EVENT_AXIS_GAS: ::std::os::raw::c_uint = 22; -pub const AMOTION_EVENT_AXIS_BRAKE: ::std::os::raw::c_uint = 23; -pub const AMOTION_EVENT_AXIS_DISTANCE: ::std::os::raw::c_uint = 24; -pub const AMOTION_EVENT_AXIS_TILT: ::std::os::raw::c_uint = 25; -pub const AMOTION_EVENT_AXIS_SCROLL: ::std::os::raw::c_uint = 26; -pub const AMOTION_EVENT_AXIS_RELATIVE_X: ::std::os::raw::c_uint = 27; -pub const AMOTION_EVENT_AXIS_RELATIVE_Y: ::std::os::raw::c_uint = 28; -pub const AMOTION_EVENT_AXIS_GENERIC_1: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_AXIS_GENERIC_2: ::std::os::raw::c_uint = 33; -pub const AMOTION_EVENT_AXIS_GENERIC_3: ::std::os::raw::c_uint = 34; -pub const AMOTION_EVENT_AXIS_GENERIC_4: ::std::os::raw::c_uint = 35; -pub const AMOTION_EVENT_AXIS_GENERIC_5: ::std::os::raw::c_uint = 36; -pub const AMOTION_EVENT_AXIS_GENERIC_6: ::std::os::raw::c_uint = 37; -pub const AMOTION_EVENT_AXIS_GENERIC_7: ::std::os::raw::c_uint = 38; -pub const AMOTION_EVENT_AXIS_GENERIC_8: ::std::os::raw::c_uint = 39; -pub const AMOTION_EVENT_AXIS_GENERIC_9: ::std::os::raw::c_uint = 40; -pub const AMOTION_EVENT_AXIS_GENERIC_10: ::std::os::raw::c_uint = 41; -pub const AMOTION_EVENT_AXIS_GENERIC_11: ::std::os::raw::c_uint = 42; -pub const AMOTION_EVENT_AXIS_GENERIC_12: ::std::os::raw::c_uint = 43; -pub const AMOTION_EVENT_AXIS_GENERIC_13: ::std::os::raw::c_uint = 44; -pub const AMOTION_EVENT_AXIS_GENERIC_14: ::std::os::raw::c_uint = 45; -pub const AMOTION_EVENT_AXIS_GENERIC_15: ::std::os::raw::c_uint = 46; -pub const AMOTION_EVENT_AXIS_GENERIC_16: ::std::os::raw::c_uint = 47; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_BUTTON_PRIMARY: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_BUTTON_SECONDARY: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_BUTTON_TERTIARY: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_BUTTON_BACK: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_BUTTON_FORWARD: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_BUTTON_STYLUS_PRIMARY: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_BUTTON_STYLUS_SECONDARY: ::std::os::raw::c_uint = 64; -pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_TOOL_TYPE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; -pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; -pub const AINPUT_SOURCE_CLASS_POINTER: ::std::os::raw::c_uint = 2; -pub const AINPUT_SOURCE_CLASS_NAVIGATION: ::std::os::raw::c_uint = 4; -pub const AINPUT_SOURCE_CLASS_POSITION: ::std::os::raw::c_uint = 8; -pub const AINPUT_SOURCE_CLASS_JOYSTICK: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_21 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_KEYBOARD: ::std::os::raw::c_uint = 257; -pub const AINPUT_SOURCE_DPAD: ::std::os::raw::c_uint = 513; -pub const AINPUT_SOURCE_GAMEPAD: ::std::os::raw::c_uint = 1025; -pub const AINPUT_SOURCE_TOUCHSCREEN: ::std::os::raw::c_uint = 4098; -pub const AINPUT_SOURCE_MOUSE: ::std::os::raw::c_uint = 8194; -pub const AINPUT_SOURCE_STYLUS: ::std::os::raw::c_uint = 16386; -pub const AINPUT_SOURCE_BLUETOOTH_STYLUS: ::std::os::raw::c_uint = 49154; -pub const AINPUT_SOURCE_TRACKBALL: ::std::os::raw::c_uint = 65540; -pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; -pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; -pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; -pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; -pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; -pub type _bindgen_ty_22 = ::std::os::raw::c_uint; -pub const AINPUT_KEYBOARD_TYPE_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC: ::std::os::raw::c_uint = 1; -pub const AINPUT_KEYBOARD_TYPE_ALPHABETIC: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_23 = ::std::os::raw::c_uint; -pub const AINPUT_MOTION_RANGE_X: ::std::os::raw::c_uint = 0; -pub const AINPUT_MOTION_RANGE_Y: ::std::os::raw::c_uint = 1; -pub const AINPUT_MOTION_RANGE_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AINPUT_MOTION_RANGE_SIZE: ::std::os::raw::c_uint = 3; -pub const AINPUT_MOTION_RANGE_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AINPUT_MOTION_RANGE_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AINPUT_MOTION_RANGE_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AINPUT_MOTION_RANGE_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AINPUT_MOTION_RANGE_ORIENTATION: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn AInputEvent_getType(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getDeviceId(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getFlags(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getKeyCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getScanCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getMetaState(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getRepeatCount(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getDownTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getMetaState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getButtonState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getEdgeFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getDownTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getEventTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getXOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getXPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPointerCount(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getPointerId( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> i32; -} -extern "C" { - pub fn AMotionEvent_getToolType(motion_event: *const AInputEvent, pointer_index: size_t) - -> i32; -} -extern "C" { - pub fn AMotionEvent_getRawX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getRawY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPressure(motion_event: *const AInputEvent, pointer_index: size_t) - -> f32; -} -extern "C" { - pub fn AMotionEvent_getSize(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistorySize(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getHistoricalEventTime( - motion_event: *const AInputEvent, - history_index: size_t, - ) -> i64; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalPressure( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalSize( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct imaxdiv_t { - pub quot: intmax_t, - pub rem: intmax_t, -} -#[test] -fn bindgen_test_layout_imaxdiv_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(imaxdiv_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(imaxdiv_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(quot) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(rem) - ) - ); -} -extern "C" { - pub fn imaxabs(__i: intmax_t) -> intmax_t; -} -extern "C" { - pub fn imaxdiv(__numerator: intmax_t, __denominator: intmax_t) -> imaxdiv_t; -} -extern "C" { - pub fn strtoimax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn strtoumax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -extern "C" { - pub fn wcstoimax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn wcstoumax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; -pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; -pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; -pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; -pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub type ADataSpace = ::std::os::raw::c_uint; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: AHardwareBuffer_Format = 4; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: AHardwareBuffer_Format = - 22; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: AHardwareBuffer_Format = - 43; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_BLOB: AHardwareBuffer_Format = 33; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D16_UNORM: AHardwareBuffer_Format = 48; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM: AHardwareBuffer_Format = 49; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT: AHardwareBuffer_Format = - 50; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT: AHardwareBuffer_Format = 51; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHardwareBuffer_Format = - 52; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_RARELY: - AHardwareBuffer_UsageFlags = 2; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN: - AHardwareBuffer_UsageFlags = 3; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_MASK: - AHardwareBuffer_UsageFlags = 15; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY: - AHardwareBuffer_UsageFlags = 32; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN: - AHardwareBuffer_UsageFlags = 48; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK: - AHardwareBuffer_UsageFlags = 240; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE: - AHardwareBuffer_UsageFlags = 256; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY: - AHardwareBuffer_UsageFlags = 2048; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT: - AHardwareBuffer_UsageFlags = 16384; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VIDEO_ENCODE: - AHardwareBuffer_UsageFlags = 65536; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA: - AHardwareBuffer_UsageFlags = 8388608; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER: - AHardwareBuffer_UsageFlags = 16777216; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP: - AHardwareBuffer_UsageFlags = 33554432; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE: - AHardwareBuffer_UsageFlags = 67108864; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_0: AHardwareBuffer_UsageFlags = - 268435456; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_1: AHardwareBuffer_UsageFlags = - 536870912; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_2: AHardwareBuffer_UsageFlags = - 1073741824; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_3: AHardwareBuffer_UsageFlags = - 2147483648; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_4: AHardwareBuffer_UsageFlags = - 281474976710656; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_5: AHardwareBuffer_UsageFlags = - 562949953421312; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_6: AHardwareBuffer_UsageFlags = - 1125899906842624; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_7: AHardwareBuffer_UsageFlags = - 2251799813685248; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_8: AHardwareBuffer_UsageFlags = - 4503599627370496; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_9: AHardwareBuffer_UsageFlags = - 9007199254740992; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_10: AHardwareBuffer_UsageFlags = - 18014398509481984; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_11: AHardwareBuffer_UsageFlags = - 36028797018963968; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_12: AHardwareBuffer_UsageFlags = - 72057594037927936; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_13: AHardwareBuffer_UsageFlags = - 144115188075855872; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_14: AHardwareBuffer_UsageFlags = - 288230376151711744; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_15: AHardwareBuffer_UsageFlags = - 576460752303423488; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_16: AHardwareBuffer_UsageFlags = - 1152921504606846976; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_17: AHardwareBuffer_UsageFlags = - 2305843009213693952; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_18: AHardwareBuffer_UsageFlags = - 4611686018427387904; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_19: AHardwareBuffer_UsageFlags = - 9223372036854775808; -pub type AHardwareBuffer_UsageFlags = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Desc { - pub width: u32, - pub height: u32, - pub layers: u32, - pub format: u32, - pub usage: u64, - pub stride: u32, - pub rfu0: u32, - pub rfu1: u64, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Desc() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(width) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(height) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).layers as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(layers) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(format) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).usage as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(usage) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stride as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(stride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu0 as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu1 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Plane { - pub data: *mut ::std::os::raw::c_void, - pub pixelStride: u32, - pub rowStride: u32, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Plane() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pixelStride as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(pixelStride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rowStride as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(rowStride) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Planes { - pub planeCount: u32, - pub planes: [AHardwareBuffer_Plane; 4usize], -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Planes() { - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).planeCount as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planeCount) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).planes as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planes) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer { - _unused: [u8; 0], -} -extern "C" { - pub fn AHardwareBuffer_allocate( - desc: *const AHardwareBuffer_Desc, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_acquire(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_release(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_describe( - buffer: *const AHardwareBuffer, - outDesc: *mut AHardwareBuffer_Desc, - ); -} -extern "C" { - pub fn AHardwareBuffer_lock( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_unlock( - buffer: *mut AHardwareBuffer, - fence: *mut i32, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_sendHandleToUnixSocket( - buffer: *const AHardwareBuffer, - socketFd: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_recvHandleFromUnixSocket( - socketFd: ::std::os::raw::c_int, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockAndGetInfo( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - outBytesPerPixel: *mut i32, - outBytesPerStride: *mut i32, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -pub struct ANativeActivity { - pub callbacks: *mut ANativeActivityCallbacks, - pub vm: *mut JavaVM, - pub env: *mut JNIEnv, - pub clazz: jobject, - pub internalDataPath: *const ::std::os::raw::c_char, - pub externalDataPath: *const ::std::os::raw::c_char, - pub sdkVersion: i32, - pub instance: *mut ::std::os::raw::c_void, - pub assetManager: *mut AAssetManager, - pub obbPath: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ANativeActivity() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ANativeActivity)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ANativeActivity)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).callbacks as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(callbacks) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vm as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(vm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).env as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).clazz as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(clazz) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).internalDataPath as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(internalDataPath) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).externalDataPath as *const _ as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(externalDataPath) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sdkVersion as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(sdkVersion) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).instance as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(instance) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).assetManager as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(assetManager) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).obbPath as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(obbPath) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ANativeActivityCallbacks { - pub onStart: ::std::option::Option, - pub onResume: ::std::option::Option, - pub onSaveInstanceState: ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - outSize: *mut size_t, - ) -> *mut ::std::os::raw::c_void, - >, - pub onPause: ::std::option::Option, - pub onStop: ::std::option::Option, - pub onDestroy: ::std::option::Option, - pub onWindowFocusChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, hasFocus: ::std::os::raw::c_int), - >, - pub onNativeWindowCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowResized: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowRedrawNeeded: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onInputQueueCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onInputQueueDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onContentRectChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, rect: *const ARect), - >, - pub onConfigurationChanged: - ::std::option::Option, - pub onLowMemory: ::std::option::Option, -} -#[test] -fn bindgen_test_layout_ANativeActivityCallbacks() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onStart as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStart) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onResume as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onResume) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onSaveInstanceState as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onSaveInstanceState) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onPause as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onPause) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onStop as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStop) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onDestroy as *const _ as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onDestroy) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onWindowFocusChanged as *const _ - as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onWindowFocusChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowCreated as *const _ - as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowResized as *const _ - as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowResized) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowRedrawNeeded - as *const _ as usize - }, - 36usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowRedrawNeeded) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowDestroyed as *const _ - as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueCreated as *const _ - as usize - }, - 44usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueDestroyed as *const _ - as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onContentRectChanged as *const _ - as usize - }, - 52usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onContentRectChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onConfigurationChanged as *const _ - as usize - }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onConfigurationChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onLowMemory as *const _ as usize - }, - 60usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onLowMemory) - ) - ); -} -pub type ANativeActivity_createFunc = ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ), ->; -extern "C" { - pub fn ANativeActivity_onCreate( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ); -} -extern "C" { - pub fn ANativeActivity_finish(activity: *mut ANativeActivity); -} -extern "C" { - pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: i32); -} -extern "C" { - pub fn ANativeActivity_setWindowFlags( - activity: *mut ANativeActivity, - addFlags: u32, - removeFlags: u32, - ); -} -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_25 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: u32); -} -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_26 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: u32); -} -#[doc = " Data associated with an ALooper fd that will be returned as the \"outData\""] -#[doc = " when that source has data ready."] -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct android_poll_source { - pub id: i32, - pub app: *mut android_app, - pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), - >, -} -#[test] -fn bindgen_test_layout_android_poll_source() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(android_poll_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(android_poll_source)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(id) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).app as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(app) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).process as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(process) - ) - ); -} -#[doc = " The native activity interface provided by "] -#[doc = " is based on a set of application-provided callbacks that will be called"] -#[doc = " by the Activity's main thread when certain events occur."] -#[doc = ""] -#[doc = " This means that each one of this callbacks _should_ _not_ block, or they"] -#[doc = " risk having the system force-close the application. This programming"] -#[doc = " model is direct, lightweight, but constraining."] -#[doc = ""] -#[doc = " The 'android_native_app_glue' static library is used to provide a different"] -#[doc = " execution model where the application can implement its own main event"] -#[doc = " loop in a different thread instead. Here's how it works:"] -#[doc = ""] -#[doc = " 1/ The application must provide a function named \"android_main()\" that"] -#[doc = " will be called when the activity is created, in a new thread that is"] -#[doc = " distinct from the activity's main thread."] -#[doc = ""] -#[doc = " 2/ android_main() receives a pointer to a valid \"android_app\" structure"] -#[doc = " that contains references to other important objects, e.g. the"] -#[doc = " ANativeActivity obejct instance the application is running in."] -#[doc = ""] -#[doc = " 3/ the \"android_app\" object holds an ALooper instance that already"] -#[doc = " listens to two important things:"] -#[doc = ""] -#[doc = " - activity lifecycle events (e.g. \"pause\", \"resume\"). See APP_CMD_XXX"] -#[doc = " declarations below."] -#[doc = ""] -#[doc = " - input events coming from the AInputQueue attached to the activity."] -#[doc = ""] -#[doc = " Each of these correspond to an ALooper identifier returned by"] -#[doc = " ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT,"] -#[doc = " respectively."] -#[doc = ""] -#[doc = " Your application can use the same ALooper to listen to additional"] -#[doc = " file-descriptors. They can either be callback based, or with return"] -#[doc = " identifiers starting with LOOPER_ID_USER."] -#[doc = ""] -#[doc = " 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event,"] -#[doc = " the returned data will point to an android_poll_source structure. You"] -#[doc = " can call the process() function on it, and fill in android_app->onAppCmd"] -#[doc = " and android_app->onInputEvent to be called for your own processing"] -#[doc = " of the event."] -#[doc = ""] -#[doc = " Alternatively, you can call the low-level functions to read and process"] -#[doc = " the data directly... look at the process_cmd() and process_input()"] -#[doc = " implementations in the glue to see how to do this."] -#[doc = ""] -#[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] -#[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] -#[repr(C)] -pub struct android_app { - pub userData: *mut ::std::os::raw::c_void, - pub onAppCmd: ::std::option::Option, - pub onInputEvent: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, event: *mut AInputEvent) -> i32, - >, - pub activity: *mut ANativeActivity, - pub config: *mut AConfiguration, - pub savedState: *mut ::std::os::raw::c_void, - pub savedStateSize: size_t, - pub looper: *mut ALooper, - pub inputQueue: *mut AInputQueue, - pub window: *mut ANativeWindow, - pub contentRect: ARect, - pub activityState: ::std::os::raw::c_int, - pub destroyRequested: ::std::os::raw::c_int, - pub mutex: pthread_mutex_t, - pub cond: pthread_cond_t, - pub msgread: ::std::os::raw::c_int, - pub msgwrite: ::std::os::raw::c_int, - pub thread: pthread_t, - pub cmdPollSource: android_poll_source, - pub inputPollSource: android_poll_source, - pub running: ::std::os::raw::c_int, - pub stateSaved: ::std::os::raw::c_int, - pub destroyed: ::std::os::raw::c_int, - pub redrawNeeded: ::std::os::raw::c_int, - pub pendingInputQueue: *mut AInputQueue, - pub pendingWindow: *mut ANativeWindow, - pub pendingContentRect: ARect, -} -#[test] -fn bindgen_test_layout_android_app() { - assert_eq!( - ::std::mem::size_of::(), - 148usize, - concat!("Size of: ", stringify!(android_app)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(android_app)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).userData as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(userData) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onAppCmd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onAppCmd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onInputEvent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onInputEvent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activity as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activity) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).config as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(config) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedState as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedStateSize as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedStateSize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).looper as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(looper) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputQueue as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(window) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).contentRect as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(contentRect) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activityState as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activityState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyRequested as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyRequested) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mutex as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(mutex) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cond as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cond) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgread as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgwrite as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgwrite) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).thread as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(thread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cmdPollSource as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cmdPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputPollSource as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).running as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(running) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stateSaved as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(stateSaved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyed as *const _ as usize }, - 116usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyed) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).redrawNeeded as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(redrawNeeded) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingInputQueue as *const _ as usize }, - 124usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingInputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingWindow as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingWindow) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingContentRect as *const _ as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingContentRect) - ) - ); -} -#[doc = " Looper data ID of commands coming from the app's main thread, which"] -#[doc = " is returned as an identifier from ALooper_pollOnce(). The data for this"] -#[doc = " identifier is a pointer to an android_poll_source structure."] -#[doc = " These can be retrieved and processed with android_app_read_cmd()"] -#[doc = " and android_app_exec_cmd()."] -pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; -#[doc = " Looper data ID of events coming from the AInputQueue of the"] -#[doc = " application's window, which is returned as an identifier from"] -#[doc = " ALooper_pollOnce(). The data for this identifier is a pointer to an"] -#[doc = " android_poll_source structure. These can be read via the inputQueue"] -#[doc = " object of android_app."] -pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; -#[doc = " Start of user-defined ALooper identifiers."] -pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_27 = ::std::os::raw::c_uint; -#[doc = " Command from main thread: the AInputQueue has changed. Upon processing"] -#[doc = " this command, android_app->inputQueue will be updated to the new queue"] -#[doc = " (or NULL)."] -pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; -#[doc = " Command from main thread: a new ANativeWindow is ready for use. Upon"] -#[doc = " receiving this command, android_app->window will contain the new window"] -#[doc = " surface."] -pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; -#[doc = " Command from main thread: the existing ANativeWindow needs to be"] -#[doc = " terminated. Upon receiving this command, android_app->window still"] -#[doc = " contains the existing window; after calling android_app_exec_cmd"] -#[doc = " it will be set to NULL."] -pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; -#[doc = " Command from main thread: the current ANativeWindow has been resized."] -#[doc = " Please redraw with its new size."] -pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; -#[doc = " Command from main thread: the system needs that the current ANativeWindow"] -#[doc = " be redrawn. You should redraw the window before handing this to"] -#[doc = " android_app_exec_cmd() in order to avoid transient drawing glitches."] -pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; -#[doc = " Command from main thread: the content area of the window has changed,"] -#[doc = " such as from the soft input window being shown or hidden. You can"] -#[doc = " find the new content rect in android_app::contentRect."] -pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; -#[doc = " Command from main thread: the app's activity window has gained"] -#[doc = " input focus."] -pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; -#[doc = " Command from main thread: the app's activity window has lost"] -#[doc = " input focus."] -pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; -#[doc = " Command from main thread: the current device configuration has changed."] -pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; -#[doc = " Command from main thread: the system is running low on memory."] -#[doc = " Try to reduce your memory use."] -pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; -#[doc = " Command from main thread: the app's activity has been started."] -pub const APP_CMD_START: ::std::os::raw::c_uint = 10; -#[doc = " Command from main thread: the app's activity has been resumed."] -pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; -#[doc = " Command from main thread: the app should generate a new saved state"] -#[doc = " for itself, to restore from later if needed. If you have saved state,"] -#[doc = " allocate it with malloc and place it in android_app.savedState with"] -#[doc = " the size in android_app.savedStateSize. The will be freed for you"] -#[doc = " later."] -pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; -#[doc = " Command from main thread: the app's activity has been paused."] -pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; -#[doc = " Command from main thread: the app's activity has been stopped."] -pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; -#[doc = " Command from main thread: the app's activity is being destroyed,"] -#[doc = " and waiting for the app thread to clean up and exit before proceeding."] -pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; -pub type _bindgen_ty_28 = ::std::os::raw::c_uint; -extern "C" { - #[doc = " Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next"] - #[doc = " app command message."] - pub fn android_app_read_cmd(android_app: *mut android_app) -> i8; -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " initial pre-processing of the given command. You can perform your own"] - #[doc = " actions for the command after calling this function."] - pub fn android_app_pre_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " final post-processing of the given command. You must have done your own"] - #[doc = " actions for the command before calling this function."] - pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn print_cur_config(android_app: *mut android_app); -} -extern "C" { - pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); -} -extern "C" { - pub fn android_app_destroy(android_app: *mut android_app); -} -pub type __builtin_va_list = *mut ::std::os::raw::c_char; diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs deleted file mode 100644 index c0288f9..0000000 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ /dev/null @@ -1,8644 +0,0 @@ -/* automatically generated by rust-bindgen 0.59.2 */ - -pub const __BIONIC__: u32 = 1; -pub const __WORDSIZE: u32 = 64; -pub const __bos_level: u32 = 0; -pub const __ANDROID_API_FUTURE__: u32 = 10000; -pub const __ANDROID_API__: u32 = 10000; -pub const __ANDROID_API_G__: u32 = 9; -pub const __ANDROID_API_I__: u32 = 14; -pub const __ANDROID_API_J__: u32 = 16; -pub const __ANDROID_API_J_MR1__: u32 = 17; -pub const __ANDROID_API_J_MR2__: u32 = 18; -pub const __ANDROID_API_K__: u32 = 19; -pub const __ANDROID_API_L__: u32 = 21; -pub const __ANDROID_API_L_MR1__: u32 = 22; -pub const __ANDROID_API_M__: u32 = 23; -pub const __ANDROID_API_N__: u32 = 24; -pub const __ANDROID_API_N_MR1__: u32 = 25; -pub const __ANDROID_API_O__: u32 = 26; -pub const __ANDROID_API_O_MR1__: u32 = 27; -pub const __ANDROID_API_P__: u32 = 28; -pub const __ANDROID_API_Q__: u32 = 29; -pub const __ANDROID_API_R__: u32 = 30; -pub const __NDK_MAJOR__: u32 = 21; -pub const __NDK_MINOR__: u32 = 1; -pub const __NDK_BETA__: u32 = 0; -pub const __NDK_BUILD__: u32 = 6352462; -pub const __NDK_CANARY__: u32 = 0; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const INT8_MIN: i32 = -128; -pub const INT8_MAX: u32 = 127; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST8_MAX: u32 = 127; -pub const UINT8_MAX: u32 = 255; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_FAST8_MAX: u32 = 255; -pub const INT16_MIN: i32 = -32768; -pub const INT16_MAX: u32 = 32767; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const UINT16_MAX: u32 = 65535; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const INT32_MIN: i32 = -2147483648; -pub const INT32_MAX: u32 = 2147483647; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 4294967295; -pub const WINT_MIN: u32 = 0; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const FP_XSTATE_MAGIC1: u32 = 1179670611; -pub const FP_XSTATE_MAGIC2: u32 = 1179670597; -pub const X86_FXSR_MAGIC: u32 = 0; -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 PASS_MAX: u32 = 128; -pub const NL_ARGMAX: u32 = 9; -pub const NL_LANGMAX: u32 = 14; -pub const NL_MSGMAX: u32 = 32767; -pub const NL_NMAX: u32 = 1; -pub const NL_SETMAX: u32 = 255; -pub const NL_TEXTMAX: u32 = 255; -pub const TMP_MAX: u32 = 308915776; -pub const CHAR_BIT: u32 = 8; -pub const LONG_BIT: u32 = 64; -pub const WORD_BIT: u32 = 32; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MAX: u32 = 127; -pub const CHAR_MIN: i32 = -128; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: i32 = -1; -pub const LONG_MAX: u64 = 9223372036854775807; -pub const LONG_MIN: i64 = -9223372036854775808; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MIN: i64 = -9223372036854775808; -pub const LONG_LONG_MAX: u64 = 9223372036854775807; -pub const ULONG_LONG_MAX: i32 = -1; -pub const UID_MAX: u32 = 4294967295; -pub const GID_MAX: u32 = 4294967295; -pub const SIZE_T_MAX: i32 = -1; -pub const SSIZE_MAX: u64 = 9223372036854775807; -pub const MB_LEN_MAX: u32 = 4; -pub const NZERO: u32 = 20; -pub const IOV_MAX: u32 = 1024; -pub const SEM_VALUE_MAX: u32 = 1073741823; -pub const _POSIX_VERSION: u32 = 200809; -pub const _POSIX2_VERSION: u32 = 200809; -pub const _XOPEN_VERSION: u32 = 700; -pub const __BIONIC_POSIX_FEATURE_MISSING: i32 = -1; -pub const _POSIX_ASYNCHRONOUS_IO: i32 = -1; -pub const _POSIX_CHOWN_RESTRICTED: u32 = 1; -pub const _POSIX_CPUTIME: u32 = 200809; -pub const _POSIX_FSYNC: u32 = 200809; -pub const _POSIX_IPV6: u32 = 200809; -pub const _POSIX_MAPPED_FILES: u32 = 200809; -pub const _POSIX_MEMLOCK_RANGE: u32 = 200809; -pub const _POSIX_MEMORY_PROTECTION: u32 = 200809; -pub const _POSIX_MESSAGE_PASSING: i32 = -1; -pub const _POSIX_MONOTONIC_CLOCK: u32 = 200809; -pub const _POSIX_NO_TRUNC: u32 = 1; -pub const _POSIX_PRIORITIZED_IO: i32 = -1; -pub const _POSIX_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_RAW_SOCKETS: u32 = 200809; -pub const _POSIX_READER_WRITER_LOCKS: u32 = 200809; -pub const _POSIX_REGEXP: u32 = 1; -pub const _POSIX_SAVED_IDS: u32 = 1; -pub const _POSIX_SEMAPHORES: u32 = 200809; -pub const _POSIX_SHARED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_SHELL: u32 = 1; -pub const _POSIX_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_SYNCHRONIZED_IO: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKADDR: u32 = 200809; -pub const _POSIX_THREAD_ATTR_STACKSIZE: u32 = 200809; -pub const _POSIX_THREAD_CPUTIME: u32 = 200809; -pub const _POSIX_THREAD_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_PRIORITY_SCHEDULING: u32 = 200809; -pub const _POSIX_THREAD_PROCESS_SHARED: u32 = 200809; -pub const _POSIX_THREAD_ROBUST_PRIO_INHERIT: i32 = -1; -pub const _POSIX_THREAD_ROBUST_PRIO_PROTECT: i32 = -1; -pub const _POSIX_THREAD_SAFE_FUNCTIONS: u32 = 200809; -pub const _POSIX_THREAD_SPORADIC_SERVER: i32 = -1; -pub const _POSIX_THREADS: u32 = 200809; -pub const _POSIX_TIMERS: u32 = 200809; -pub const _POSIX_TRACE: i32 = -1; -pub const _POSIX_TRACE_EVENT_FILTER: i32 = -1; -pub const _POSIX_TRACE_INHERIT: i32 = -1; -pub const _POSIX_TRACE_LOG: i32 = -1; -pub const _POSIX_TYPED_MEMORY_OBJECTS: i32 = -1; -pub const _POSIX_VDISABLE: u8 = 0u8; -pub const _POSIX2_C_BIND: u32 = 200809; -pub const _POSIX2_C_DEV: i32 = -1; -pub const _POSIX2_CHAR_TERM: u32 = 200809; -pub const _POSIX2_FORT_DEV: i32 = -1; -pub const _POSIX2_FORT_RUN: i32 = -1; -pub const _POSIX2_LOCALEDEF: i32 = -1; -pub const _POSIX2_SW_DEV: i32 = -1; -pub const _POSIX2_UPE: i32 = -1; -pub const _POSIX_V7_ILP32_OFF32: i32 = -1; -pub const _POSIX_V7_ILP32_OFFBIG: i32 = -1; -pub const _POSIX_V7_LP64_OFF64: u32 = 1; -pub const _POSIX_V7_LPBIG_OFFBIG: u32 = 1; -pub const _XOPEN_CRYPT: i32 = -1; -pub const _XOPEN_ENH_I18N: u32 = 1; -pub const _XOPEN_LEGACY: i32 = -1; -pub const _XOPEN_REALTIME: u32 = 1; -pub const _XOPEN_REALTIME_THREADS: u32 = 1; -pub const _XOPEN_SHM: u32 = 1; -pub const _XOPEN_STREAMS: i32 = -1; -pub const _XOPEN_UNIX: 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_CLOCKRES_MIN: u32 = 20000000; -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_SS_REPL_MAX: u32 = 4; -pub const _POSIX_SYMLINK_MAX: u32 = 255; -pub const _POSIX_SYMLOOP_MAX: u32 = 8; -pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; -pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; -pub const _POSIX_TIMER_MAX: u32 = 32; -pub const _POSIX_TRACE_EVENT_NAME_MAX: u32 = 30; -pub const _POSIX_TRACE_NAME_MAX: u32 = 8; -pub const _POSIX_TRACE_SYS_MAX: u32 = 8; -pub const _POSIX_TRACE_USER_EVENT_MAX: u32 = 32; -pub const _POSIX_TTY_NAME_MAX: u32 = 9; -pub const _POSIX_TZNAME_MAX: u32 = 6; -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_CHARCLASS_NAME_MAX: u32 = 14; -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 _XOPEN_IOV_MAX: u32 = 16; -pub const _XOPEN_NAME_MAX: u32 = 255; -pub const _XOPEN_PATH_MAX: u32 = 1024; -pub const HOST_NAME_MAX: u32 = 255; -pub const LOGIN_NAME_MAX: u32 = 256; -pub const TTY_NAME_MAX: u32 = 32; -pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const PTHREAD_KEYS_MAX: u32 = 128; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -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_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const _KERNEL_NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const __SIGRTMIN: u32 = 32; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const NSIGSEGV: u32 = 7; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const NSIGTRAP: u32 = 5; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const NSIGSYS: u32 = 1; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const _KERNEL__NSIG: u32 = 64; -pub const _NSIG: u32 = 65; -pub const NSIG: u32 = 65; -pub const PAGE_SIZE: u32 = 4096; -pub const PAGE_MASK: i32 = -4096; -pub const FD_SETSIZE: u32 = 1024; -pub const CLOCKS_PER_SEC: u32 = 1000000; -pub const TIME_UTC: u32 = 1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SCHED_OTHER: u32 = 0; -pub const PTHREAD_ONCE_INIT: u32 = 0; -pub const PTHREAD_BARRIER_SERIAL_THREAD: i32 = -1; -pub const PTHREAD_STACK_MIN: u32 = 16384; -pub const PTHREAD_CREATE_DETACHED: u32 = 1; -pub const PTHREAD_CREATE_JOINABLE: u32 = 0; -pub const PTHREAD_EXPLICIT_SCHED: u32 = 0; -pub const PTHREAD_INHERIT_SCHED: u32 = 1; -pub const PTHREAD_PRIO_NONE: u32 = 0; -pub const PTHREAD_PRIO_INHERIT: u32 = 1; -pub const PTHREAD_PROCESS_PRIVATE: u32 = 0; -pub const PTHREAD_PROCESS_SHARED: u32 = 1; -pub const PTHREAD_SCOPE_SYSTEM: u32 = 0; -pub const PTHREAD_SCOPE_PROCESS: u32 = 1; -pub const __GNUC_VA_LIST: u32 = 1; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT: u32 = 8; -pub const __PRI_64_prefix: &[u8; 2usize] = b"l\0"; -pub const __PRI_PTR_prefix: &[u8; 2usize] = b"l\0"; -pub const __PRI_FAST_prefix: &[u8; 2usize] = b"l\0"; -pub const PRId8: &[u8; 2usize] = b"d\0"; -pub const PRId16: &[u8; 2usize] = b"d\0"; -pub const PRId32: &[u8; 2usize] = b"d\0"; -pub const PRId64: &[u8; 3usize] = b"ld\0"; -pub const PRIdLEAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST16: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST32: &[u8; 2usize] = b"d\0"; -pub const PRIdLEAST64: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST8: &[u8; 2usize] = b"d\0"; -pub const PRIdFAST16: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST32: &[u8; 3usize] = b"ld\0"; -pub const PRIdFAST64: &[u8; 3usize] = b"ld\0"; -pub const PRIdMAX: &[u8; 3usize] = b"jd\0"; -pub const PRIdPTR: &[u8; 3usize] = b"ld\0"; -pub const PRIi8: &[u8; 2usize] = b"i\0"; -pub const PRIi16: &[u8; 2usize] = b"i\0"; -pub const PRIi32: &[u8; 2usize] = b"i\0"; -pub const PRIi64: &[u8; 3usize] = b"li\0"; -pub const PRIiLEAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST16: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST32: &[u8; 2usize] = b"i\0"; -pub const PRIiLEAST64: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST8: &[u8; 2usize] = b"i\0"; -pub const PRIiFAST16: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST32: &[u8; 3usize] = b"li\0"; -pub const PRIiFAST64: &[u8; 3usize] = b"li\0"; -pub const PRIiMAX: &[u8; 3usize] = b"ji\0"; -pub const PRIiPTR: &[u8; 3usize] = b"li\0"; -pub const PRIo8: &[u8; 2usize] = b"o\0"; -pub const PRIo16: &[u8; 2usize] = b"o\0"; -pub const PRIo32: &[u8; 2usize] = b"o\0"; -pub const PRIo64: &[u8; 3usize] = b"lo\0"; -pub const PRIoLEAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST16: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST32: &[u8; 2usize] = b"o\0"; -pub const PRIoLEAST64: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST8: &[u8; 2usize] = b"o\0"; -pub const PRIoFAST16: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST32: &[u8; 3usize] = b"lo\0"; -pub const PRIoFAST64: &[u8; 3usize] = b"lo\0"; -pub const PRIoMAX: &[u8; 3usize] = b"jo\0"; -pub const PRIoPTR: &[u8; 3usize] = b"lo\0"; -pub const PRIu8: &[u8; 2usize] = b"u\0"; -pub const PRIu16: &[u8; 2usize] = b"u\0"; -pub const PRIu32: &[u8; 2usize] = b"u\0"; -pub const PRIu64: &[u8; 3usize] = b"lu\0"; -pub const PRIuLEAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST16: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST32: &[u8; 2usize] = b"u\0"; -pub const PRIuLEAST64: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST8: &[u8; 2usize] = b"u\0"; -pub const PRIuFAST16: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST32: &[u8; 3usize] = b"lu\0"; -pub const PRIuFAST64: &[u8; 3usize] = b"lu\0"; -pub const PRIuMAX: &[u8; 3usize] = b"ju\0"; -pub const PRIuPTR: &[u8; 3usize] = b"lu\0"; -pub const PRIx8: &[u8; 2usize] = b"x\0"; -pub const PRIx16: &[u8; 2usize] = b"x\0"; -pub const PRIx32: &[u8; 2usize] = b"x\0"; -pub const PRIx64: &[u8; 3usize] = b"lx\0"; -pub const PRIxLEAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST16: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST32: &[u8; 2usize] = b"x\0"; -pub const PRIxLEAST64: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST8: &[u8; 2usize] = b"x\0"; -pub const PRIxFAST16: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST32: &[u8; 3usize] = b"lx\0"; -pub const PRIxFAST64: &[u8; 3usize] = b"lx\0"; -pub const PRIxMAX: &[u8; 3usize] = b"jx\0"; -pub const PRIxPTR: &[u8; 3usize] = b"lx\0"; -pub const PRIX8: &[u8; 2usize] = b"X\0"; -pub const PRIX16: &[u8; 2usize] = b"X\0"; -pub const PRIX32: &[u8; 2usize] = b"X\0"; -pub const PRIX64: &[u8; 3usize] = b"lX\0"; -pub const PRIXLEAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST16: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST32: &[u8; 2usize] = b"X\0"; -pub const PRIXLEAST64: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST8: &[u8; 2usize] = b"X\0"; -pub const PRIXFAST16: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST32: &[u8; 3usize] = b"lX\0"; -pub const PRIXFAST64: &[u8; 3usize] = b"lX\0"; -pub const PRIXMAX: &[u8; 3usize] = b"jX\0"; -pub const PRIXPTR: &[u8; 3usize] = b"lX\0"; -pub const SCNd8: &[u8; 4usize] = b"hhd\0"; -pub const SCNd16: &[u8; 3usize] = b"hd\0"; -pub const SCNd32: &[u8; 2usize] = b"d\0"; -pub const SCNd64: &[u8; 3usize] = b"ld\0"; -pub const SCNdLEAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdLEAST16: &[u8; 3usize] = b"hd\0"; -pub const SCNdLEAST32: &[u8; 2usize] = b"d\0"; -pub const SCNdLEAST64: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST8: &[u8; 4usize] = b"hhd\0"; -pub const SCNdFAST16: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST32: &[u8; 3usize] = b"ld\0"; -pub const SCNdFAST64: &[u8; 3usize] = b"ld\0"; -pub const SCNdMAX: &[u8; 3usize] = b"jd\0"; -pub const SCNdPTR: &[u8; 3usize] = b"ld\0"; -pub const SCNi8: &[u8; 4usize] = b"hhi\0"; -pub const SCNi16: &[u8; 3usize] = b"hi\0"; -pub const SCNi32: &[u8; 2usize] = b"i\0"; -pub const SCNi64: &[u8; 3usize] = b"li\0"; -pub const SCNiLEAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiLEAST16: &[u8; 3usize] = b"hi\0"; -pub const SCNiLEAST32: &[u8; 2usize] = b"i\0"; -pub const SCNiLEAST64: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST8: &[u8; 4usize] = b"hhi\0"; -pub const SCNiFAST16: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST32: &[u8; 3usize] = b"li\0"; -pub const SCNiFAST64: &[u8; 3usize] = b"li\0"; -pub const SCNiMAX: &[u8; 3usize] = b"ji\0"; -pub const SCNiPTR: &[u8; 3usize] = b"li\0"; -pub const SCNo8: &[u8; 4usize] = b"hho\0"; -pub const SCNo16: &[u8; 3usize] = b"ho\0"; -pub const SCNo32: &[u8; 2usize] = b"o\0"; -pub const SCNo64: &[u8; 3usize] = b"lo\0"; -pub const SCNoLEAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoLEAST16: &[u8; 3usize] = b"ho\0"; -pub const SCNoLEAST32: &[u8; 2usize] = b"o\0"; -pub const SCNoLEAST64: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST8: &[u8; 4usize] = b"hho\0"; -pub const SCNoFAST16: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST32: &[u8; 3usize] = b"lo\0"; -pub const SCNoFAST64: &[u8; 3usize] = b"lo\0"; -pub const SCNoMAX: &[u8; 3usize] = b"jo\0"; -pub const SCNoPTR: &[u8; 3usize] = b"lo\0"; -pub const SCNu8: &[u8; 4usize] = b"hhu\0"; -pub const SCNu16: &[u8; 3usize] = b"hu\0"; -pub const SCNu32: &[u8; 2usize] = b"u\0"; -pub const SCNu64: &[u8; 3usize] = b"lu\0"; -pub const SCNuLEAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuLEAST16: &[u8; 3usize] = b"hu\0"; -pub const SCNuLEAST32: &[u8; 2usize] = b"u\0"; -pub const SCNuLEAST64: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST8: &[u8; 4usize] = b"hhu\0"; -pub const SCNuFAST16: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST32: &[u8; 3usize] = b"lu\0"; -pub const SCNuFAST64: &[u8; 3usize] = b"lu\0"; -pub const SCNuMAX: &[u8; 3usize] = b"ju\0"; -pub const SCNuPTR: &[u8; 3usize] = b"lu\0"; -pub const SCNx8: &[u8; 4usize] = b"hhx\0"; -pub const SCNx16: &[u8; 3usize] = b"hx\0"; -pub const SCNx32: &[u8; 2usize] = b"x\0"; -pub const SCNx64: &[u8; 3usize] = b"lx\0"; -pub const SCNxLEAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxLEAST16: &[u8; 3usize] = b"hx\0"; -pub const SCNxLEAST32: &[u8; 2usize] = b"x\0"; -pub const SCNxLEAST64: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST8: &[u8; 4usize] = b"hhx\0"; -pub const SCNxFAST16: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST32: &[u8; 3usize] = b"lx\0"; -pub const SCNxFAST64: &[u8; 3usize] = b"lx\0"; -pub const SCNxMAX: &[u8; 3usize] = b"jx\0"; -pub const SCNxPTR: &[u8; 3usize] = b"lx\0"; -extern "C" { - pub fn android_get_application_target_sdk_version() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn android_get_device_api_level() -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { - pub fd: ::std::os::raw::c_int, - pub events: ::std::os::raw::c_short, - pub revents: ::std::os::raw::c_short, -} -#[test] -fn bindgen_test_layout_pollfd() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pollfd)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pollfd)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(fd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).events as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(events) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).revents as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(pollfd), - "::", - stringify!(revents) - ) - ); -} -pub type wchar_t = ::std::os::raw::c_int; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct max_align_t { - pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, - pub __bindgen_padding_0: u64, - pub __clang_max_align_nonce2: u128, -} -#[test] -fn bindgen_test_layout_max_align_t() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(max_align_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(max_align_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).__clang_max_align_nonce2 as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(max_align_t), - "::", - stringify!(__clang_max_align_nonce2) - ) - ); -} -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 __intptr_t = ::std::os::raw::c_long; -pub type __uintptr_t = ::std::os::raw::c_ulong; -pub type int_least8_t = i8; -pub type uint_least8_t = u8; -pub type int_least16_t = i16; -pub type uint_least16_t = u16; -pub type int_least32_t = i32; -pub type uint_least32_t = u32; -pub type int_least64_t = i64; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type uint_fast8_t = u8; -pub type int_fast64_t = i64; -pub type uint_fast64_t = u64; -pub type int_fast16_t = i64; -pub type uint_fast16_t = u64; -pub type int_fast32_t = i64; -pub type uint_fast32_t = u64; -pub type uintmax_t = u64; -pub type intmax_t = i64; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 16usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ulong; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = ::std::os::raw::c_uint; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; -pub type __kernel_uid_t = ::std::os::raw::c_uint; -pub type __kernel_gid_t = ::std::os::raw::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = ::std::os::raw::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = ::std::os::raw::c_uint; -pub type __gid_t = __kernel_gid32_t; -pub type gid_t = __gid_t; -pub type __uid_t = __kernel_uid32_t; -pub type uid_t = __uid_t; -pub type __pid_t = __kernel_pid_t; -pub type pid_t = __pid_t; -pub type __id_t = u32; -pub type id_t = __id_t; -pub type blkcnt_t = ::std::os::raw::c_ulong; -pub type blksize_t = ::std::os::raw::c_ulong; -pub type caddr_t = __kernel_caddr_t; -pub type clock_t = __kernel_clock_t; -pub type __clockid_t = __kernel_clockid_t; -pub type clockid_t = __clockid_t; -pub type daddr_t = __kernel_daddr_t; -pub type fsblkcnt_t = ::std::os::raw::c_ulong; -pub type fsfilcnt_t = ::std::os::raw::c_ulong; -pub type __mode_t = __kernel_mode_t; -pub type mode_t = __mode_t; -pub type __key_t = __kernel_key_t; -pub type key_t = __key_t; -pub type __ino_t = __kernel_ino_t; -pub type ino_t = __ino_t; -pub type ino64_t = u64; -pub type __nlink_t = u32; -pub type nlink_t = __nlink_t; -pub type __timer_t = *mut ::std::os::raw::c_void; -pub type timer_t = __timer_t; -pub type __suseconds_t = __kernel_suseconds_t; -pub type suseconds_t = __suseconds_t; -pub type __useconds_t = u32; -pub type useconds_t = __useconds_t; -pub type dev_t = u64; -pub type __time_t = __kernel_time_t; -pub type time_t = __time_t; -pub type off_t = i64; -pub type loff_t = off_t; -pub type off64_t = loff_t; -pub type __socklen_t = u32; -pub type socklen_t = __socklen_t; -pub type __va_list = __builtin_va_list; -pub type ssize_t = __kernel_ssize_t; -pub type uint_t = ::std::os::raw::c_uint; -pub type uint = ::std::os::raw::c_uint; -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 u_int32_t = u32; -pub type u_int16_t = u16; -pub type u_int8_t = u8; -pub type u_int64_t = u64; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpx_sw_bytes { - pub magic1: __u32, - pub extended_size: __u32, - pub xfeatures: __u64, - pub xstate_size: __u32, - pub padding: [__u32; 7usize], -} -#[test] -fn bindgen_test_layout__fpx_sw_bytes() { - assert_eq!( - ::std::mem::size_of::<_fpx_sw_bytes>(), - 48usize, - concat!("Size of: ", stringify!(_fpx_sw_bytes)) - ); - assert_eq!( - ::std::mem::align_of::<_fpx_sw_bytes>(), - 8usize, - concat!("Alignment of ", stringify!(_fpx_sw_bytes)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).magic1 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(magic1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).extended_size as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(extended_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xfeatures as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(xfeatures) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xstate_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(xstate_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).padding as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(_fpx_sw_bytes), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpreg { - pub significand: [__u16; 4usize], - pub exponent: __u16, -} -#[test] -fn bindgen_test_layout__fpreg() { - assert_eq!( - ::std::mem::size_of::<_fpreg>(), - 10usize, - concat!("Size of: ", stringify!(_fpreg)) - ); - assert_eq!( - ::std::mem::align_of::<_fpreg>(), - 2usize, - concat!("Alignment of ", stringify!(_fpreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpreg), - "::", - stringify!(exponent) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _fpxreg { - pub significand: [__u16; 4usize], - pub exponent: __u16, - pub padding: [__u16; 3usize], -} -#[test] -fn bindgen_test_layout__fpxreg() { - assert_eq!( - ::std::mem::size_of::<_fpxreg>(), - 16usize, - concat!("Size of: ", stringify!(_fpxreg)) - ); - assert_eq!( - ::std::mem::align_of::<_fpxreg>(), - 2usize, - concat!("Alignment of ", stringify!(_fpxreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(exponent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpxreg>())).padding as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(_fpxreg), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _xmmreg { - pub element: [__u32; 4usize], -} -#[test] -fn bindgen_test_layout__xmmreg() { - assert_eq!( - ::std::mem::size_of::<_xmmreg>(), - 16usize, - concat!("Size of: ", stringify!(_xmmreg)) - ); - assert_eq!( - ::std::mem::align_of::<_xmmreg>(), - 4usize, - concat!("Alignment of ", stringify!(_xmmreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xmmreg>())).element as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_xmmreg), - "::", - stringify!(element) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _fpstate_32 { - pub cw: __u32, - pub sw: __u32, - pub tag: __u32, - pub ipoff: __u32, - pub cssel: __u32, - pub dataoff: __u32, - pub datasel: __u32, - pub _st: [_fpreg; 8usize], - pub status: __u16, - pub magic: __u16, - pub _fxsr_env: [__u32; 6usize], - pub mxcsr: __u32, - pub reserved: __u32, - pub _fxsr_st: [_fpxreg; 8usize], - pub _xmm: [_xmmreg; 8usize], - pub __bindgen_anon_1: _fpstate_32__bindgen_ty_1, - pub __bindgen_anon_2: _fpstate_32__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_32__bindgen_ty_1 { - pub padding1: [__u32; 44usize], - pub padding: [__u32; 44usize], -} -#[test] -fn bindgen_test_layout__fpstate_32__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32__bindgen_ty_1>(), - 176usize, - concat!("Size of: ", stringify!(_fpstate_32__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(_fpstate_32__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_1>())).padding1 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_1), - "::", - stringify!(padding1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_1>())).padding as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_1), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_32__bindgen_ty_2 { - pub padding2: [__u32; 12usize], - pub sw_reserved: _fpx_sw_bytes, -} -#[test] -fn bindgen_test_layout__fpstate_32__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32__bindgen_ty_2>(), - 48usize, - concat!("Size of: ", stringify!(_fpstate_32__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32__bindgen_ty_2>(), - 8usize, - concat!("Alignment of ", stringify!(_fpstate_32__bindgen_ty_2)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_2>())).padding2 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_2), - "::", - stringify!(padding2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_32__bindgen_ty_2>())).sw_reserved as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32__bindgen_ty_2), - "::", - stringify!(sw_reserved) - ) - ); -} -#[test] -fn bindgen_test_layout__fpstate_32() { - assert_eq!( - ::std::mem::size_of::<_fpstate_32>(), - 624usize, - concat!("Size of: ", stringify!(_fpstate_32)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_32>(), - 8usize, - concat!("Alignment of ", stringify!(_fpstate_32)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).cw as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(cw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).sw as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(sw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).tag as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(tag) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).ipoff as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(ipoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).cssel as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(cssel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).dataoff as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(dataoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).datasel as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(datasel) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._st as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).status as *const _ as usize }, - 108usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).magic as *const _ as usize }, - 110usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._fxsr_env as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_fxsr_env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).mxcsr as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>())).reserved as *const _ as usize }, - 140usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._fxsr_st as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_fxsr_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_32>()))._xmm as *const _ as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_32), - "::", - stringify!(_xmm) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _fpstate_64 { - pub cwd: __u16, - pub swd: __u16, - pub twd: __u16, - pub fop: __u16, - pub rip: __u64, - pub rdp: __u64, - pub mxcsr: __u32, - pub mxcsr_mask: __u32, - pub st_space: [__u32; 32usize], - pub xmm_space: [__u32; 64usize], - pub reserved2: [__u32; 12usize], - pub __bindgen_anon_1: _fpstate_64__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union _fpstate_64__bindgen_ty_1 { - pub reserved3: [__u32; 12usize], - pub sw_reserved: _fpx_sw_bytes, -} -#[test] -fn bindgen_test_layout__fpstate_64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<_fpstate_64__bindgen_ty_1>(), - 48usize, - concat!("Size of: ", stringify!(_fpstate_64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_64__bindgen_ty_1>(), - 8usize, - concat!("Alignment of ", stringify!(_fpstate_64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_64__bindgen_ty_1>())).reserved3 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64__bindgen_ty_1), - "::", - stringify!(reserved3) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<_fpstate_64__bindgen_ty_1>())).sw_reserved as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64__bindgen_ty_1), - "::", - stringify!(sw_reserved) - ) - ); -} -#[test] -fn bindgen_test_layout__fpstate_64() { - assert_eq!( - ::std::mem::size_of::<_fpstate_64>(), - 512usize, - concat!("Size of: ", stringify!(_fpstate_64)) - ); - assert_eq!( - ::std::mem::align_of::<_fpstate_64>(), - 8usize, - concat!("Alignment of ", stringify!(_fpstate_64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).swd as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).twd as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(twd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).fop as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(fop) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).rip as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).rdp as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(rdp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).mxcsr as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).mxcsr_mask as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(mxcsr_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).st_space as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(st_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).xmm_space as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(xmm_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_fpstate_64>())).reserved2 as *const _ as usize }, - 416usize, - concat!( - "Offset of field: ", - stringify!(_fpstate_64), - "::", - stringify!(reserved2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _header { - pub xfeatures: __u64, - pub reserved1: [__u64; 2usize], - pub reserved2: [__u64; 5usize], -} -#[test] -fn bindgen_test_layout__header() { - assert_eq!( - ::std::mem::size_of::<_header>(), - 64usize, - concat!("Size of: ", stringify!(_header)) - ); - assert_eq!( - ::std::mem::align_of::<_header>(), - 8usize, - concat!("Alignment of ", stringify!(_header)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).xfeatures as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(xfeatures) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).reserved1 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(reserved1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_header>())).reserved2 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_header), - "::", - stringify!(reserved2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _ymmh_state { - pub ymmh_space: [__u32; 64usize], -} -#[test] -fn bindgen_test_layout__ymmh_state() { - assert_eq!( - ::std::mem::size_of::<_ymmh_state>(), - 256usize, - concat!("Size of: ", stringify!(_ymmh_state)) - ); - assert_eq!( - ::std::mem::align_of::<_ymmh_state>(), - 4usize, - concat!("Alignment of ", stringify!(_ymmh_state)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_ymmh_state>())).ymmh_space as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_ymmh_state), - "::", - stringify!(ymmh_space) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _xstate { - pub fpstate: _fpstate_64, - pub xstate_hdr: _header, - pub ymmh: _ymmh_state, -} -#[test] -fn bindgen_test_layout__xstate() { - assert_eq!( - ::std::mem::size_of::<_xstate>(), - 832usize, - concat!("Size of: ", stringify!(_xstate)) - ); - assert_eq!( - ::std::mem::align_of::<_xstate>(), - 8usize, - concat!("Alignment of ", stringify!(_xstate)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).fpstate as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).xstate_hdr as *const _ as usize }, - 512usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(xstate_hdr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_xstate>())).ymmh as *const _ as usize }, - 576usize, - concat!( - "Offset of field: ", - stringify!(_xstate), - "::", - stringify!(ymmh) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext_32 { - pub gs: __u16, - pub __gsh: __u16, - pub fs: __u16, - pub __fsh: __u16, - pub es: __u16, - pub __esh: __u16, - pub ds: __u16, - pub __dsh: __u16, - pub di: __u32, - pub si: __u32, - pub bp: __u32, - pub sp: __u32, - pub bx: __u32, - pub dx: __u32, - pub cx: __u32, - pub ax: __u32, - pub trapno: __u32, - pub err: __u32, - pub ip: __u32, - pub cs: __u16, - pub __csh: __u16, - pub flags: __u32, - pub sp_at_signal: __u32, - pub ss: __u16, - pub __ssh: __u16, - pub fpstate: __u32, - pub oldmask: __u32, - pub cr2: __u32, -} -#[test] -fn bindgen_test_layout_sigcontext_32() { - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(sigcontext_32)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sigcontext_32)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__gsh as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__gsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__fsh as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__fsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).es as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(es) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__esh as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__esh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ds as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ds) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__dsh as *const _ as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__dsh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).di as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(di) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).si as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(si) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bp as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(bp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bx as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(bx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).dx as *const _ as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(dx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cx as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ax as *const _ as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ip as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__csh as *const _ as usize }, - 62usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__csh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp_at_signal as *const _ as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(sp_at_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__ssh as *const _ as usize }, - 74usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(__ssh) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_32), - "::", - stringify!(cr2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext_64 { - pub r8: __u64, - pub r9: __u64, - pub r10: __u64, - pub r11: __u64, - pub r12: __u64, - pub r13: __u64, - pub r14: __u64, - pub r15: __u64, - pub di: __u64, - pub si: __u64, - pub bp: __u64, - pub bx: __u64, - pub dx: __u64, - pub ax: __u64, - pub cx: __u64, - pub sp: __u64, - pub ip: __u64, - pub flags: __u64, - pub cs: __u16, - pub gs: __u16, - pub fs: __u16, - pub ss: __u16, - pub err: __u64, - pub trapno: __u64, - pub oldmask: __u64, - pub cr2: __u64, - pub fpstate: __u64, - pub reserved1: [__u64; 8usize], -} -#[test] -fn bindgen_test_layout_sigcontext_64() { - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(sigcontext_64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigcontext_64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r8 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r8) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r9 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r9) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r10 as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r10) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r11 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r11) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r12 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r12) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r13 as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r13) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r14 as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r14) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r15 as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(r15) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).di as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(di) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).si as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(si) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bp as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(bp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).bx as *const _ as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(bx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).dx as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(dx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ax as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cx as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sp as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ip as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 146usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 148usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 150usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(cr2) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(sigcontext_64), - "::", - stringify!(reserved1) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigcontext { - pub r8: __u64, - pub r9: __u64, - pub r10: __u64, - pub r11: __u64, - pub r12: __u64, - pub r13: __u64, - pub r14: __u64, - pub r15: __u64, - pub rdi: __u64, - pub rsi: __u64, - pub rbp: __u64, - pub rbx: __u64, - pub rdx: __u64, - pub rax: __u64, - pub rcx: __u64, - pub rsp: __u64, - pub rip: __u64, - pub eflags: __u64, - pub cs: __u16, - pub gs: __u16, - pub fs: __u16, - pub __bindgen_anon_1: sigcontext__bindgen_ty_1, - pub err: __u64, - pub trapno: __u64, - pub oldmask: __u64, - pub cr2: __u64, - pub fpstate: *mut _fpstate_64, - pub reserved1: [__u64; 8usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigcontext__bindgen_ty_1 { - pub ss: __u16, - pub __pad0: __u16, -} -#[test] -fn bindgen_test_layout_sigcontext__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 2usize, - concat!("Size of: ", stringify!(sigcontext__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(sigcontext__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext__bindgen_ty_1), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__pad0 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext__bindgen_ty_1), - "::", - stringify!(__pad0) - ) - ); -} -#[test] -fn bindgen_test_layout_sigcontext() { - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(sigcontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigcontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r8 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r8) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r9 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r9) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r10 as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r10) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r11 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r11) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r12 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r12) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r13 as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r13) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r14 as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r14) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r15 as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(r15) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rdi as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rdi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rsi as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rsi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rbp as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rbp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rbx as *const _ as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rbx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rdx as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rdx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rax as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rcx as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rcx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rsp as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rsp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rip as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eflags as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(eflags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 146usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(gs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 148usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).err as *const _ as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(err) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).trapno as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(trapno) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).oldmask as *const _ as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(oldmask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cr2 as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(cr2) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpstate as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved1 as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(reserved1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { - pub tv_sec: __kernel_time64_t, - pub tv_nsec: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___kernel_timespec() { - assert_eq!( - ::std::mem::size_of::<__kernel_timespec>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_timespec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_timespec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_timespec>())).tv_nsec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_timespec), - "::", - stringify!(tv_nsec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { - pub it_interval: __kernel_timespec, - pub it_value: __kernel_timespec, -} -#[test] -fn bindgen_test_layout___kernel_itimerspec() { - assert_eq!( - ::std::mem::size_of::<__kernel_itimerspec>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_itimerspec>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_itimerspec>())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { - pub tv_sec: __kernel_long_t, - pub tv_usec: __kernel_long_t, -} -#[test] -fn bindgen_test_layout___kernel_old_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_old_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_old_timeval>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_old_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_old_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_old_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { - pub tv_sec: __s64, - pub tv_usec: __s64, -} -#[test] -fn bindgen_test_layout___kernel_sock_timeval() { - assert_eq!( - ::std::mem::size_of::<__kernel_sock_timeval>(), - 16usize, - concat!("Size of: ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sock_timeval>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_sock_timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sock_timeval>())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sock_timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: __kernel_time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timespec), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).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: __kernel_time_t, - pub tv_usec: __kernel_suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(timeval), - "::", - stringify!(tv_usec) - ) - ); -} -#[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::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_minuteswest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tz_dsttime as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_dsttime) - ) - ); -} -#[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::(), - 32usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_value) - ) - ); -} -#[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::(), - 32usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_interval as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).it_value as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_value) - ) - ); -} -pub type sigset_t = ::std::os::raw::c_ulong; -pub type __signalfn_t = ::std::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::std::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sigaction { - pub sa_handler: __sighandler_t, - pub sa_flags: ::std::os::raw::c_ulong, - pub sa_restorer: __sigrestore_t, - pub sa_mask: sigset_t, -} -#[test] -fn bindgen_test_layout___kernel_sigaction() { - assert_eq!( - ::std::mem::size_of::<__kernel_sigaction>(), - 32usize, - concat!("Size of: ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_sigaction>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_handler as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_restorer as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_restorer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_sigaction>())).sa_mask as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__kernel_sigaction), - "::", - stringify!(sa_mask) - ) - ); -} -#[repr(C)] -pub struct sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_flags: ::std::os::raw::c_int, - pub ss_size: size_t, -} -#[test] -fn bindgen_test_layout_sigaltstack() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaltstack)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_sp as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_sp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_flags as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss_size as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaltstack), - "::", - stringify!(ss_size) - ) - ); -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_int as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_int) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sival_ptr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigval), - "::", - stringify!(sival_ptr) - ) - ); -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { - pub _kill: __sifields__bindgen_ty_1, - pub _timer: __sifields__bindgen_ty_2, - pub _rt: __sifields__bindgen_ty_3, - pub _sigchld: __sifields__bindgen_ty_4, - pub _sigfault: __sifields__bindgen_ty_5, - pub _sigpoll: __sifields__bindgen_ty_6, - pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_1>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_1), - "::", - stringify!(_uid) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { - pub _tid: __kernel_timer_t, - pub _overrun: ::std::os::raw::c_int, - pub _sigval: sigval_t, - pub _sys_private: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_2>(), - 24usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_2>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_2)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._overrun as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_overrun) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sigval) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_2>()))._sys_private as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_2), - "::", - stringify!(_sys_private) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _sigval: sigval_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_3() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_3>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_3>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_3)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_3>()))._sigval as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_3), - "::", - stringify!(_sigval) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { - pub _pid: __kernel_pid_t, - pub _uid: __kernel_uid32_t, - pub _status: ::std::os::raw::c_int, - pub _utime: __kernel_clock_t, - pub _stime: __kernel_clock_t, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_4() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_4>(), - 32usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_4>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_4)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._pid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_pid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._uid as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_uid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._status as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_status) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._utime as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_utime) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_4>()))._stime as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_4), - "::", - stringify!(_stime) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { - pub _addr: *mut ::std::os::raw::c_void, - pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { - pub _addr_lsb: ::std::os::raw::c_short, - pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, - pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { - pub _dummy_bnd: [::std::os::raw::c_char; 8usize], - pub _lower: *mut ::std::os::raw::c_void, - pub _upper: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 24usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>())) - ._dummy_bnd as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_dummy_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._lower - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_lower) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>()))._upper - as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_upper) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { - pub _dummy_pkey: [::std::os::raw::c_char; 8usize], - pub _pkey: __u32, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 12usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>())) - ._dummy_pkey as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_dummy_pkey) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2>()))._pkey - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 24usize, - concat!( - "Size of: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5__bindgen_ty_1>(), - 8usize, - concat!( - "Alignment of ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_lsb as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_lsb) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_bnd as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_bnd) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_5__bindgen_ty_1>()))._addr_pkey - as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5__bindgen_ty_1), - "::", - stringify!(_addr_pkey) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_5() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_5>(), - 32usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_5>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_5)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_5>()))._addr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_5), - "::", - stringify!(_addr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { - pub _band: ::std::os::raw::c_long, - pub _fd: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_6() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_6>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_6>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_6)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._band as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_band) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_6>()))._fd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_6), - "::", - stringify!(_fd) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { - pub _call_addr: *mut ::std::os::raw::c_void, - pub _syscall: ::std::os::raw::c_int, - pub _arch: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___sifields__bindgen_ty_7() { - assert_eq!( - ::std::mem::size_of::<__sifields__bindgen_ty_7>(), - 16usize, - concat!("Size of: ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields__bindgen_ty_7>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields__bindgen_ty_7)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._call_addr as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_call_addr) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._syscall as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_syscall) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields__bindgen_ty_7>()))._arch as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__sifields__bindgen_ty_7), - "::", - stringify!(_arch) - ) - ); -} -#[test] -fn bindgen_test_layout___sifields() { - assert_eq!( - ::std::mem::size_of::<__sifields>(), - 32usize, - concat!("Size of: ", stringify!(__sifields)) - ); - assert_eq!( - ::std::mem::align_of::<__sifields>(), - 8usize, - concat!("Alignment of ", stringify!(__sifields)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._kill as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_kill) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._timer as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_timer) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._rt as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_rt) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigchld as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigchld) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigfault as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigfault) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigpoll as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigpoll) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__sifields>()))._sigsys as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sifields), - "::", - stringify!(_sigsys) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { - pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { - pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, - pub _si_pad: [::std::os::raw::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub _sifields: __sifields, -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!( - "Alignment of ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_signo as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_signo) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_errno as *const _ - as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_errno) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).si_code as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(si_code) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sifields as *const _ - as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_sifields) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(siginfo__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._si_pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(siginfo__bindgen_ty_1), - "::", - stringify!(_si_pad) - ) - ); -} -#[test] -fn bindgen_test_layout_siginfo() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(siginfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(siginfo)) - ); -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_value: sigval_t, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_notify: ::std::os::raw::c_int, - pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { - pub _pad: [::std::os::raw::c_int; 12usize], - pub _tid: ::std::os::raw::c_int, - pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { - pub _function: ::std::option::Option, - pub _attribute: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!( - "Size of: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!( - "Alignment of ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._function as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_function) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._attribute as *const _ - as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_attribute) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._pad as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_pad) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._tid as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_tid) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::()))._sigev_thread as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_sigev_thread) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_value as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_value) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_signo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_signo) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sigev_notify as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::()))._sigev_un as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(_sigev_un) - ) - ); -} -pub type sigevent_t = sigevent; -pub type sig_atomic_t = ::std::os::raw::c_int; -pub type sig_t = __sighandler_t; -pub type sighandler_t = __sighandler_t; -pub type sigset64_t = sigset_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub sa_flags: ::std::os::raw::c_int, - pub __bindgen_anon_1: sigaction__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction64 { - pub sa_flags: ::std::os::raw::c_int, - pub __bindgen_anon_1: sigaction64__bindgen_ty_1, - pub sa_mask: sigset_t, - pub sa_restorer: ::std::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction64__bindgen_ty_1 { - pub sa_handler: sighandler_t, - pub sa_sigaction: ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: *mut siginfo, - arg3: *mut ::std::os::raw::c_void, - ), - >, -} -#[test] -fn bindgen_test_layout_sigaction64__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction64__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_handler as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_handler) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sa_sigaction as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64__bindgen_ty_1), - "::", - stringify!(sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction64() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigaction64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction64)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_mask as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sa_restorer as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigaction64), - "::", - stringify!(sa_restorer) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_fpregs_struct { - pub cwd: ::std::os::raw::c_ushort, - pub swd: ::std::os::raw::c_ushort, - pub ftw: ::std::os::raw::c_ushort, - pub fop: ::std::os::raw::c_ushort, - pub rip: ::std::os::raw::c_ulong, - pub rdp: ::std::os::raw::c_ulong, - pub mxcsr: ::std::os::raw::c_uint, - pub mxcr_mask: ::std::os::raw::c_uint, - pub st_space: [::std::os::raw::c_uint; 32usize], - pub xmm_space: [::std::os::raw::c_uint; 64usize], - pub padding: [::std::os::raw::c_uint; 24usize], -} -#[test] -fn bindgen_test_layout_user_fpregs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 512usize, - concat!("Size of: ", stringify!(user_fpregs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(user_fpregs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).swd as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ftw as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(ftw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fop as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(fop) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rip as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rdp as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(rdp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mxcsr as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mxcr_mask as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(mxcr_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).st_space as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(st_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).xmm_space as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(xmm_space) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, - 416usize, - concat!( - "Offset of field: ", - stringify!(user_fpregs_struct), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_regs_struct { - pub r15: ::std::os::raw::c_ulong, - pub r14: ::std::os::raw::c_ulong, - pub r13: ::std::os::raw::c_ulong, - pub r12: ::std::os::raw::c_ulong, - pub rbp: ::std::os::raw::c_ulong, - pub rbx: ::std::os::raw::c_ulong, - pub r11: ::std::os::raw::c_ulong, - pub r10: ::std::os::raw::c_ulong, - pub r9: ::std::os::raw::c_ulong, - pub r8: ::std::os::raw::c_ulong, - pub rax: ::std::os::raw::c_ulong, - pub rcx: ::std::os::raw::c_ulong, - pub rdx: ::std::os::raw::c_ulong, - pub rsi: ::std::os::raw::c_ulong, - pub rdi: ::std::os::raw::c_ulong, - pub orig_rax: ::std::os::raw::c_ulong, - pub rip: ::std::os::raw::c_ulong, - pub cs: ::std::os::raw::c_ulong, - pub eflags: ::std::os::raw::c_ulong, - pub rsp: ::std::os::raw::c_ulong, - pub ss: ::std::os::raw::c_ulong, - pub fs_base: ::std::os::raw::c_ulong, - pub gs_base: ::std::os::raw::c_ulong, - pub ds: ::std::os::raw::c_ulong, - pub es: ::std::os::raw::c_ulong, - pub fs: ::std::os::raw::c_ulong, - pub gs: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_user_regs_struct() { - assert_eq!( - ::std::mem::size_of::(), - 216usize, - concat!("Size of: ", stringify!(user_regs_struct)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(user_regs_struct)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r15 as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r15) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r14 as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r14) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r13 as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r13) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r12 as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r12) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rbp as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rbp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rbx as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rbx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r11 as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r11) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r10 as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r10) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r9 as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r9) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).r8 as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(r8) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rax as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rcx as *const _ as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rcx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rdx as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rdx) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rsi as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rsi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rdi as *const _ as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rdi) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).orig_rax as *const _ as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(orig_rax) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rip as *const _ as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cs as *const _ as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(cs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).eflags as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(eflags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rsp as *const _ as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(rsp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ss as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(ss) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs_base as *const _ as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(fs_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs_base as *const _ as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(gs_base) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ds as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(ds) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).es as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(es) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fs as *const _ as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(fs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gs as *const _ as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(user_regs_struct), - "::", - stringify!(gs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user { - pub regs: user_regs_struct, - pub u_fpvalid: ::std::os::raw::c_int, - pub pad0: ::std::os::raw::c_int, - pub i387: user_fpregs_struct, - pub u_tsize: ::std::os::raw::c_ulong, - pub u_dsize: ::std::os::raw::c_ulong, - pub u_ssize: ::std::os::raw::c_ulong, - pub start_code: ::std::os::raw::c_ulong, - pub start_stack: ::std::os::raw::c_ulong, - pub signal: ::std::os::raw::c_long, - pub reserved: ::std::os::raw::c_int, - pub pad1: ::std::os::raw::c_int, - pub u_ar0: *mut user_regs_struct, - pub u_fpstate: *mut user_fpregs_struct, - pub magic: ::std::os::raw::c_ulong, - pub u_comm: [::std::os::raw::c_char; 32usize], - pub u_debugreg: [::std::os::raw::c_ulong; 8usize], - pub error_code: ::std::os::raw::c_ulong, - pub fault_address: ::std::os::raw::c_ulong, -} -#[test] -fn bindgen_test_layout_user() { - assert_eq!( - ::std::mem::size_of::(), - 928usize, - concat!("Size of: ", stringify!(user)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(user)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).regs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(regs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fpvalid as *const _ as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fpvalid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pad0 as *const _ as usize }, - 220usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(pad0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).i387 as *const _ as usize }, - 224usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(i387) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_tsize as *const _ as usize }, - 736usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_tsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_dsize as *const _ as usize }, - 744usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_dsize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ssize as *const _ as usize }, - 752usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ssize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_code as *const _ as usize }, - 760usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_code) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).start_stack as *const _ as usize }, - 768usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(start_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).signal as *const _ as usize }, - 776usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).reserved as *const _ as usize }, - 784usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pad1 as *const _ as usize }, - 788usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(pad1) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_ar0 as *const _ as usize }, - 792usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_ar0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_fpstate as *const _ as usize }, - 800usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_fpstate) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).magic as *const _ as usize }, - 808usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(magic) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_comm as *const _ as usize }, - 816usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_comm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).u_debugreg as *const _ as usize }, - 848usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(u_debugreg) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).error_code as *const _ as usize }, - 912usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(error_code) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fault_address as *const _ as usize }, - 920usize, - concat!( - "Offset of field: ", - stringify!(user), - "::", - stringify!(fault_address) - ) - ); -} -pub const REG_R8: ::std::os::raw::c_uint = 0; -pub const REG_R9: ::std::os::raw::c_uint = 1; -pub const REG_R10: ::std::os::raw::c_uint = 2; -pub const REG_R11: ::std::os::raw::c_uint = 3; -pub const REG_R12: ::std::os::raw::c_uint = 4; -pub const REG_R13: ::std::os::raw::c_uint = 5; -pub const REG_R14: ::std::os::raw::c_uint = 6; -pub const REG_R15: ::std::os::raw::c_uint = 7; -pub const REG_RDI: ::std::os::raw::c_uint = 8; -pub const REG_RSI: ::std::os::raw::c_uint = 9; -pub const REG_RBP: ::std::os::raw::c_uint = 10; -pub const REG_RBX: ::std::os::raw::c_uint = 11; -pub const REG_RDX: ::std::os::raw::c_uint = 12; -pub const REG_RAX: ::std::os::raw::c_uint = 13; -pub const REG_RCX: ::std::os::raw::c_uint = 14; -pub const REG_RSP: ::std::os::raw::c_uint = 15; -pub const REG_RIP: ::std::os::raw::c_uint = 16; -pub const REG_EFL: ::std::os::raw::c_uint = 17; -pub const REG_CSGSFS: ::std::os::raw::c_uint = 18; -pub const REG_ERR: ::std::os::raw::c_uint = 19; -pub const REG_TRAPNO: ::std::os::raw::c_uint = 20; -pub const REG_OLDMASK: ::std::os::raw::c_uint = 21; -pub const REG_CR2: ::std::os::raw::c_uint = 22; -pub const NGREG: ::std::os::raw::c_uint = 23; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub type greg_t = ::std::os::raw::c_long; -pub type gregset_t = [greg_t; 23usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _libc_fpxreg { - pub significand: [::std::os::raw::c_ushort; 4usize], - pub exponent: ::std::os::raw::c_ushort, - pub padding: [::std::os::raw::c_ushort; 3usize], -} -#[test] -fn bindgen_test_layout__libc_fpxreg() { - assert_eq!( - ::std::mem::size_of::<_libc_fpxreg>(), - 16usize, - concat!("Size of: ", stringify!(_libc_fpxreg)) - ); - assert_eq!( - ::std::mem::align_of::<_libc_fpxreg>(), - 2usize, - concat!("Alignment of ", stringify!(_libc_fpxreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).significand as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpxreg), - "::", - stringify!(significand) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).exponent as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpxreg), - "::", - stringify!(exponent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).padding as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpxreg), - "::", - stringify!(padding) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _libc_xmmreg { - pub element: [u32; 4usize], -} -#[test] -fn bindgen_test_layout__libc_xmmreg() { - assert_eq!( - ::std::mem::size_of::<_libc_xmmreg>(), - 16usize, - concat!("Size of: ", stringify!(_libc_xmmreg)) - ); - assert_eq!( - ::std::mem::align_of::<_libc_xmmreg>(), - 4usize, - concat!("Alignment of ", stringify!(_libc_xmmreg)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_xmmreg>())).element as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_libc_xmmreg), - "::", - stringify!(element) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _libc_fpstate { - pub cwd: u16, - pub swd: u16, - pub ftw: u16, - pub fop: u16, - pub rip: u64, - pub rdp: u64, - pub mxcsr: u32, - pub mxcr_mask: u32, - pub _st: [_libc_fpxreg; 8usize], - pub _xmm: [_libc_xmmreg; 16usize], - pub padding: [u32; 24usize], -} -#[test] -fn bindgen_test_layout__libc_fpstate() { - assert_eq!( - ::std::mem::size_of::<_libc_fpstate>(), - 512usize, - concat!("Size of: ", stringify!(_libc_fpstate)) - ); - assert_eq!( - ::std::mem::align_of::<_libc_fpstate>(), - 8usize, - concat!("Alignment of ", stringify!(_libc_fpstate)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).cwd as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(cwd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).swd as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(swd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).ftw as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(ftw) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).fop as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(fop) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).rip as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(rip) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).rdp as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(rdp) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).mxcsr as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(mxcsr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).mxcr_mask as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(mxcr_mask) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>()))._st as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(_st) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>()))._xmm as *const _ as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(_xmm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).padding as *const _ as usize }, - 416usize, - concat!( - "Offset of field: ", - stringify!(_libc_fpstate), - "::", - stringify!(padding) - ) - ); -} -pub type fpregset_t = *mut _libc_fpstate; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mcontext_t { - pub gregs: gregset_t, - pub fpregs: fpregset_t, - pub __reserved1: [::std::os::raw::c_ulong; 8usize], -} -#[test] -fn bindgen_test_layout_mcontext_t() { - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(mcontext_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(mcontext_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gregs as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(gregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fpregs as *const _ as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(fpregs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__reserved1 as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(mcontext_t), - "::", - stringify!(__reserved1) - ) - ); -} -#[repr(C)] -pub struct ucontext { - pub uc_flags: ::std::os::raw::c_ulong, - pub uc_link: *mut ucontext, - pub uc_stack: stack_t, - pub uc_mcontext: mcontext_t, - pub __bindgen_anon_1: ucontext__bindgen_ty_1, - pub __fpregs_mem: _libc_fpstate, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ucontext__bindgen_ty_1 { - pub uc_sigmask: sigset_t, - pub uc_sigmask64: sigset64_t, -} -#[test] -fn bindgen_test_layout_ucontext__bindgen_ty_1() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ucontext__bindgen_ty_1)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).uc_sigmask64 as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext__bindgen_ty_1), - "::", - stringify!(uc_sigmask64) - ) - ); -} -#[test] -fn bindgen_test_layout_ucontext() { - assert_eq!( - ::std::mem::size_of::(), - 816usize, - concat!("Size of: ", stringify!(ucontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ucontext)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_link as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_link) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_stack as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).uc_mcontext as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(uc_mcontext) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).__fpregs_mem as *const _ as usize }, - 304usize, - concat!( - "Offset of field: ", - stringify!(ucontext), - "::", - stringify!(__fpregs_mem) - ) - ); -} -pub type ucontext_t = ucontext; -extern "C" { - pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int; -} -extern "C" { - pub static sys_siglist: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub static sys_signame: [*const ::std::os::raw::c_char; 65usize]; -} -extern "C" { - pub fn sigaction( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction, - __old_action: *mut sigaction, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaction64( - __signal: ::std::os::raw::c_int, - __new_action: *const sigaction64, - __old_action: *mut sigaction64, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn siginterrupt( - __signal: ::std::os::raw::c_int, - __flag: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn signal(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn sigaddset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaddset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset( - __set: *mut sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigdelset64( - __set: *mut sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigemptyset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigfillset64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember( - __set: *const sigset_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigismember64( - __set: *const sigset64_t, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpending64(__set: *mut sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask( - __how: ::std::os::raw::c_int, - __new_set: *const sigset_t, - __old_set: *mut sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigprocmask64( - __how: ::std::os::raw::c_int, - __new_set: *const sigset64_t, - __old_set: *mut sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend(__mask: *const sigset_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigsuspend64(__mask: *const sigset64_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait( - __set: *const sigset_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwait64( - __set: *const sigset64_t, - __signal: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sighold(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigignore(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigpause(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigrelse(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigset(__signal: ::std::os::raw::c_int, __handler: sighandler_t) -> sighandler_t; -} -extern "C" { - pub fn raise(__signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn kill(__pid: pid_t, __signal: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn killpg( - __pgrp: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn tgkill( - __tgid: ::std::os::raw::c_int, - __tid: ::std::os::raw::c_int, - __signal: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigaltstack( - __new_signal_stack: *const stack_t, - __old_signal_stack: *mut stack_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn psiginfo(__info: *const siginfo_t, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn psignal(__signal: ::std::os::raw::c_int, __msg: *const ::std::os::raw::c_char); -} -extern "C" { - pub fn sigqueue( - __pid: pid_t, - __signal: ::std::os::raw::c_int, - __value: sigval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait( - __set: *const sigset_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigtimedwait64( - __set: *const sigset64_t, - __info: *mut siginfo_t, - __timeout: *const timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sigwaitinfo64(__set: *const sigset64_t, __info: *mut siginfo_t) - -> ::std::os::raw::c_int; -} -pub type fd_mask = ::std::os::raw::c_ulong; -#[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::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -extern "C" { - pub fn __FD_CLR_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_SET_chk(arg1: ::std::os::raw::c_int, arg2: *mut fd_set, arg3: size_t); -} -extern "C" { - pub fn __FD_ISSET_chk( - arg1: ::std::os::raw::c_int, - arg2: *const fd_set, - arg3: size_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn select( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *mut timeval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn pselect64( - __fd_count: ::std::os::raw::c_int, - __read_fds: *mut fd_set, - __write_fds: *mut fd_set, - __exception_fds: *mut fd_set, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn gettimeofday(__tv: *mut timeval, __tz: *mut timezone) -> ::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 getitimer( - __which: ::std::os::raw::c_int, - __current_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn setitimer( - __which: ::std::os::raw::c_int, - __new_value: *const itimerval, - __old_value: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn utimes( - __path: *const ::std::os::raw::c_char, - __times: *const timeval, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __locale_t { - _unused: [u8; 0], -} -pub type locale_t = *mut __locale_t; -extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -extern "C" { - pub static mut timezone: ::std::os::raw::c_long; -} -#[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::(), - 56usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_sec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_sec) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_min as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_min) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_hour as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_hour) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mday as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_mon as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_mon) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_year as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_year) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_wday as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_wday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_yday as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_yday) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_isdst as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_isdst) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_gmtoff as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_gmtoff) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tm_zone as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(tm), - "::", - stringify!(tm_zone) - ) - ); -} -extern "C" { - pub fn time(__t: *mut time_t) -> time_t; -} -extern "C" { - pub fn nanosleep( - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn asctime(__tm: *const tm) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn asctime_r( - __tm: *const tm, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn difftime(__lhs: time_t, __rhs: time_t) -> f64; -} -extern "C" { - pub fn mktime(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn localtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn localtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn gmtime(__t: *const time_t) -> *mut tm; -} -extern "C" { - pub fn gmtime_r(__t: *const time_t, __tm: *mut tm) -> *mut tm; -} -extern "C" { - pub fn strptime( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strptime_l( - __s: *const ::std::os::raw::c_char, - __fmt: *const ::std::os::raw::c_char, - __tm: *mut tm, - __l: locale_t, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn strftime( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - ) -> size_t; -} -extern "C" { - pub fn strftime_l( - __buf: *mut ::std::os::raw::c_char, - __n: size_t, - __fmt: *const ::std::os::raw::c_char, - __tm: *const tm, - __l: locale_t, - ) -> size_t; -} -extern "C" { - pub fn ctime(__t: *const time_t) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn ctime_r( - __t: *const time_t, - __buf: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -extern "C" { - pub fn tzset(); -} -extern "C" { - pub fn clock() -> clock_t; -} -extern "C" { - pub fn clock_getcpuclockid(__pid: pid_t, __clock: *mut clockid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_getres(__clock: clockid_t, __resolution: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_gettime(__clock: clockid_t, __ts: *mut timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_nanosleep( - __clock: clockid_t, - __flags: ::std::os::raw::c_int, - __request: *const timespec, - __remainder: *mut timespec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn clock_settime(__clock: clockid_t, __ts: *const timespec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_create( - __clock: clockid_t, - __event: *mut sigevent, - __timer_ptr: *mut timer_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_delete(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_settime( - __timer: timer_t, - __flags: ::std::os::raw::c_int, - __new_value: *const itimerspec, - __old_value: *mut itimerspec, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_gettime(__timer: timer_t, __ts: *mut itimerspec) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timer_getoverrun(__timer: timer_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn timelocal(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timegm(__tm: *mut tm) -> time_t; -} -extern "C" { - pub fn timespec_get( - __ts: *mut timespec, - __base: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -pub type nfds_t = ::std::os::raw::c_uint; -extern "C" { - pub fn poll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout_ms: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn ppoll64( - __fds: *mut pollfd, - __count: nfds_t, - __timeout: *const timespec, - __mask: *const sigset64_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clone_args { - pub flags: __u64, - pub pidfd: __u64, - pub child_tid: __u64, - pub parent_tid: __u64, - pub exit_signal: __u64, - pub stack: __u64, - pub stack_size: __u64, - pub tls: __u64, -} -#[test] -fn bindgen_test_layout_clone_args() { - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(clone_args)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(clone_args)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pidfd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(pidfd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).child_tid as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(child_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).parent_tid as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(parent_tid) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).exit_signal as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(exit_signal) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stack_size as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(stack_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).tls as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(clone_args), - "::", - stringify!(tls) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sched_param { - pub sched_priority: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sched_param() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sched_param)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sched_param)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sched_priority as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sched_param), - "::", - stringify!(sched_priority) - ) - ); -} -extern "C" { - pub fn sched_setscheduler( - __pid: pid_t, - __policy: ::std::os::raw::c_int, - __param: *const sched_param, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getscheduler(__pid: pid_t) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_yield() -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_max(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_get_priority_min(__policy: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_setparam(__pid: pid_t, __param: *const sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_getparam(__pid: pid_t, __param: *mut sched_param) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn sched_rr_get_interval(__pid: pid_t, __quantum: *mut timespec) -> ::std::os::raw::c_int; -} -pub const PTHREAD_MUTEX_NORMAL: ::std::os::raw::c_uint = 0; -pub const PTHREAD_MUTEX_RECURSIVE: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_ERRORCHECK: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_ERRORCHECK_NP: ::std::os::raw::c_uint = 2; -pub const PTHREAD_MUTEX_RECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub const PTHREAD_MUTEX_DEFAULT: ::std::os::raw::c_uint = 0; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PTHREAD_RWLOCK_PREFER_READER_NP: ::std::os::raw::c_uint = 0; -pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub type __pthread_cleanup_func_t = - ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __pthread_cleanup_t { - pub __cleanup_prev: *mut __pthread_cleanup_t, - pub __cleanup_routine: __pthread_cleanup_func_t, - pub __cleanup_arg: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___pthread_cleanup_t() { - assert_eq!( - ::std::mem::size_of::<__pthread_cleanup_t>(), - 24usize, - concat!("Size of: ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - ::std::mem::align_of::<__pthread_cleanup_t>(), - 8usize, - concat!("Alignment of ", stringify!(__pthread_cleanup_t)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_prev as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_prev) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_routine as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_routine) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::<__pthread_cleanup_t>())).__cleanup_arg as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__pthread_cleanup_t), - "::", - stringify!(__cleanup_arg) - ) - ); -} -extern "C" { - pub fn __pthread_cleanup_push( - c: *mut __pthread_cleanup_t, - arg1: __pthread_cleanup_func_t, - arg2: *mut ::std::os::raw::c_void, - ); -} -extern "C" { - pub fn __pthread_cleanup_pop(arg1: *mut __pthread_cleanup_t, arg2: ::std::os::raw::c_int); -} -pub const AASSET_MODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AASSET_MODE_RANDOM: ::std::os::raw::c_uint = 1; -pub const AASSET_MODE_STREAMING: ::std::os::raw::c_uint = 2; -pub const AASSET_MODE_BUFFER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const ACONFIGURATION_ORIENTATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_ORIENTATION_PORT: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_ORIENTATION_LAND: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_ORIENTATION_SQUARE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_TOUCHSCREEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_TOUCHSCREEN_NOTOUCH: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_TOUCHSCREEN_STYLUS: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_TOUCHSCREEN_FINGER: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_DENSITY_DEFAULT: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_DENSITY_LOW: ::std::os::raw::c_uint = 120; -pub const ACONFIGURATION_DENSITY_MEDIUM: ::std::os::raw::c_uint = 160; -pub const ACONFIGURATION_DENSITY_TV: ::std::os::raw::c_uint = 213; -pub const ACONFIGURATION_DENSITY_HIGH: ::std::os::raw::c_uint = 240; -pub const ACONFIGURATION_DENSITY_XHIGH: ::std::os::raw::c_uint = 320; -pub const ACONFIGURATION_DENSITY_XXHIGH: ::std::os::raw::c_uint = 480; -pub const ACONFIGURATION_DENSITY_XXXHIGH: ::std::os::raw::c_uint = 640; -pub const ACONFIGURATION_DENSITY_ANY: ::std::os::raw::c_uint = 65534; -pub const ACONFIGURATION_DENSITY_NONE: ::std::os::raw::c_uint = 65535; -pub const ACONFIGURATION_KEYBOARD_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYBOARD_NOKEYS: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYBOARD_QWERTY: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYBOARD_12KEY: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVIGATION_NONAV: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVIGATION_DPAD: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_NAVIGATION_TRACKBALL: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVIGATION_WHEEL: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_KEYSHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_KEYSHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_KEYSHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_KEYSHIDDEN_SOFT: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_NAVHIDDEN_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_NAVHIDDEN_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_NAVHIDDEN_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENSIZE_SMALL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENSIZE_NORMAL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENSIZE_LARGE: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_SCREENSIZE_XLARGE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_SCREENLONG_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENLONG_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENLONG_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREENROUND_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREENROUND_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_SCREENROUND_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_WIDE_COLOR_GAMUT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_HDR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_HDR_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_HDR_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_TYPE_NORMAL: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_TYPE_DESK: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_UI_MODE_TYPE_CAR: ::std::os::raw::c_uint = 3; -pub const ACONFIGURATION_UI_MODE_TYPE_TELEVISION: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_UI_MODE_TYPE_APPLIANCE: ::std::os::raw::c_uint = 5; -pub const ACONFIGURATION_UI_MODE_TYPE_WATCH: ::std::os::raw::c_uint = 6; -pub const ACONFIGURATION_UI_MODE_TYPE_VR_HEADSET: ::std::os::raw::c_uint = 7; -pub const ACONFIGURATION_UI_MODE_NIGHT_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_UI_MODE_NIGHT_NO: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_UI_MODE_NIGHT_YES: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SCREEN_HEIGHT_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_ANY: ::std::os::raw::c_uint = 0; -pub const ACONFIGURATION_LAYOUTDIR_LTR: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_LAYOUTDIR_RTL: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_MCC: ::std::os::raw::c_uint = 1; -pub const ACONFIGURATION_MNC: ::std::os::raw::c_uint = 2; -pub const ACONFIGURATION_LOCALE: ::std::os::raw::c_uint = 4; -pub const ACONFIGURATION_TOUCHSCREEN: ::std::os::raw::c_uint = 8; -pub const ACONFIGURATION_KEYBOARD: ::std::os::raw::c_uint = 16; -pub const ACONFIGURATION_KEYBOARD_HIDDEN: ::std::os::raw::c_uint = 32; -pub const ACONFIGURATION_NAVIGATION: ::std::os::raw::c_uint = 64; -pub const ACONFIGURATION_ORIENTATION: ::std::os::raw::c_uint = 128; -pub const ACONFIGURATION_DENSITY: ::std::os::raw::c_uint = 256; -pub const ACONFIGURATION_SCREEN_SIZE: ::std::os::raw::c_uint = 512; -pub const ACONFIGURATION_VERSION: ::std::os::raw::c_uint = 1024; -pub const ACONFIGURATION_SCREEN_LAYOUT: ::std::os::raw::c_uint = 2048; -pub const ACONFIGURATION_UI_MODE: ::std::os::raw::c_uint = 4096; -pub const ACONFIGURATION_SMALLEST_SCREEN_SIZE: ::std::os::raw::c_uint = 8192; -pub const ACONFIGURATION_LAYOUTDIR: ::std::os::raw::c_uint = 16384; -pub const ACONFIGURATION_SCREEN_ROUND: ::std::os::raw::c_uint = 32768; -pub const ACONFIGURATION_COLOR_MODE: ::std::os::raw::c_uint = 65536; -pub const ACONFIGURATION_MNC_ZERO: ::std::os::raw::c_uint = 65535; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const ALOOPER_PREPARE_ALLOW_NON_CALLBACKS: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const ALOOPER_POLL_WAKE: ::std::os::raw::c_int = -1; -pub const ALOOPER_POLL_CALLBACK: ::std::os::raw::c_int = -2; -pub const ALOOPER_POLL_TIMEOUT: ::std::os::raw::c_int = -3; -pub const ALOOPER_POLL_ERROR: ::std::os::raw::c_int = -4; -pub type _bindgen_ty_7 = ::std::os::raw::c_int; -pub const ALOOPER_EVENT_INPUT: ::std::os::raw::c_uint = 1; -pub const ALOOPER_EVENT_OUTPUT: ::std::os::raw::c_uint = 2; -pub const ALOOPER_EVENT_ERROR: ::std::os::raw::c_uint = 4; -pub const ALOOPER_EVENT_HANGUP: ::std::os::raw::c_uint = 8; -pub const ALOOPER_EVENT_INVALID: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub type va_list = __builtin_va_list; -pub type __gnuc_va_list = __builtin_va_list; -#[repr(C)] -pub struct JavaVMAttachArgs { - pub version: jint, - pub name: *const ::std::os::raw::c_char, - pub group: jobject, -} -#[test] -fn bindgen_test_layout_JavaVMAttachArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMAttachArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(name) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).group as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMAttachArgs), - "::", - stringify!(group) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct JavaVMOption { - pub optionString: *const ::std::os::raw::c_char, - pub extraInfo: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_JavaVMOption() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(JavaVMOption)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMOption)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).optionString as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(optionString) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).extraInfo as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMOption), - "::", - stringify!(extraInfo) - ) - ); -} -#[repr(C)] -pub struct JavaVMInitArgs { - pub version: jint, - pub nOptions: jint, - pub options: *mut JavaVMOption, - pub ignoreUnrecognized: jboolean, -} -#[test] -fn bindgen_test_layout_JavaVMInitArgs() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(JavaVMInitArgs)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).nOptions as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(nOptions) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).options as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(options) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).ignoreUnrecognized as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(JavaVMInitArgs), - "::", - stringify!(ignoreUnrecognized) - ) - ); -} -pub const AKEYCODE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AKEYCODE_SOFT_LEFT: ::std::os::raw::c_uint = 1; -pub const AKEYCODE_SOFT_RIGHT: ::std::os::raw::c_uint = 2; -pub const AKEYCODE_HOME: ::std::os::raw::c_uint = 3; -pub const AKEYCODE_BACK: ::std::os::raw::c_uint = 4; -pub const AKEYCODE_CALL: ::std::os::raw::c_uint = 5; -pub const AKEYCODE_ENDCALL: ::std::os::raw::c_uint = 6; -pub const AKEYCODE_0: ::std::os::raw::c_uint = 7; -pub const AKEYCODE_1: ::std::os::raw::c_uint = 8; -pub const AKEYCODE_2: ::std::os::raw::c_uint = 9; -pub const AKEYCODE_3: ::std::os::raw::c_uint = 10; -pub const AKEYCODE_4: ::std::os::raw::c_uint = 11; -pub const AKEYCODE_5: ::std::os::raw::c_uint = 12; -pub const AKEYCODE_6: ::std::os::raw::c_uint = 13; -pub const AKEYCODE_7: ::std::os::raw::c_uint = 14; -pub const AKEYCODE_8: ::std::os::raw::c_uint = 15; -pub const AKEYCODE_9: ::std::os::raw::c_uint = 16; -pub const AKEYCODE_STAR: ::std::os::raw::c_uint = 17; -pub const AKEYCODE_POUND: ::std::os::raw::c_uint = 18; -pub const AKEYCODE_DPAD_UP: ::std::os::raw::c_uint = 19; -pub const AKEYCODE_DPAD_DOWN: ::std::os::raw::c_uint = 20; -pub const AKEYCODE_DPAD_LEFT: ::std::os::raw::c_uint = 21; -pub const AKEYCODE_DPAD_RIGHT: ::std::os::raw::c_uint = 22; -pub const AKEYCODE_DPAD_CENTER: ::std::os::raw::c_uint = 23; -pub const AKEYCODE_VOLUME_UP: ::std::os::raw::c_uint = 24; -pub const AKEYCODE_VOLUME_DOWN: ::std::os::raw::c_uint = 25; -pub const AKEYCODE_POWER: ::std::os::raw::c_uint = 26; -pub const AKEYCODE_CAMERA: ::std::os::raw::c_uint = 27; -pub const AKEYCODE_CLEAR: ::std::os::raw::c_uint = 28; -pub const AKEYCODE_A: ::std::os::raw::c_uint = 29; -pub const AKEYCODE_B: ::std::os::raw::c_uint = 30; -pub const AKEYCODE_C: ::std::os::raw::c_uint = 31; -pub const AKEYCODE_D: ::std::os::raw::c_uint = 32; -pub const AKEYCODE_E: ::std::os::raw::c_uint = 33; -pub const AKEYCODE_F: ::std::os::raw::c_uint = 34; -pub const AKEYCODE_G: ::std::os::raw::c_uint = 35; -pub const AKEYCODE_H: ::std::os::raw::c_uint = 36; -pub const AKEYCODE_I: ::std::os::raw::c_uint = 37; -pub const AKEYCODE_J: ::std::os::raw::c_uint = 38; -pub const AKEYCODE_K: ::std::os::raw::c_uint = 39; -pub const AKEYCODE_L: ::std::os::raw::c_uint = 40; -pub const AKEYCODE_M: ::std::os::raw::c_uint = 41; -pub const AKEYCODE_N: ::std::os::raw::c_uint = 42; -pub const AKEYCODE_O: ::std::os::raw::c_uint = 43; -pub const AKEYCODE_P: ::std::os::raw::c_uint = 44; -pub const AKEYCODE_Q: ::std::os::raw::c_uint = 45; -pub const AKEYCODE_R: ::std::os::raw::c_uint = 46; -pub const AKEYCODE_S: ::std::os::raw::c_uint = 47; -pub const AKEYCODE_T: ::std::os::raw::c_uint = 48; -pub const AKEYCODE_U: ::std::os::raw::c_uint = 49; -pub const AKEYCODE_V: ::std::os::raw::c_uint = 50; -pub const AKEYCODE_W: ::std::os::raw::c_uint = 51; -pub const AKEYCODE_X: ::std::os::raw::c_uint = 52; -pub const AKEYCODE_Y: ::std::os::raw::c_uint = 53; -pub const AKEYCODE_Z: ::std::os::raw::c_uint = 54; -pub const AKEYCODE_COMMA: ::std::os::raw::c_uint = 55; -pub const AKEYCODE_PERIOD: ::std::os::raw::c_uint = 56; -pub const AKEYCODE_ALT_LEFT: ::std::os::raw::c_uint = 57; -pub const AKEYCODE_ALT_RIGHT: ::std::os::raw::c_uint = 58; -pub const AKEYCODE_SHIFT_LEFT: ::std::os::raw::c_uint = 59; -pub const AKEYCODE_SHIFT_RIGHT: ::std::os::raw::c_uint = 60; -pub const AKEYCODE_TAB: ::std::os::raw::c_uint = 61; -pub const AKEYCODE_SPACE: ::std::os::raw::c_uint = 62; -pub const AKEYCODE_SYM: ::std::os::raw::c_uint = 63; -pub const AKEYCODE_EXPLORER: ::std::os::raw::c_uint = 64; -pub const AKEYCODE_ENVELOPE: ::std::os::raw::c_uint = 65; -pub const AKEYCODE_ENTER: ::std::os::raw::c_uint = 66; -pub const AKEYCODE_DEL: ::std::os::raw::c_uint = 67; -pub const AKEYCODE_GRAVE: ::std::os::raw::c_uint = 68; -pub const AKEYCODE_MINUS: ::std::os::raw::c_uint = 69; -pub const AKEYCODE_EQUALS: ::std::os::raw::c_uint = 70; -pub const AKEYCODE_LEFT_BRACKET: ::std::os::raw::c_uint = 71; -pub const AKEYCODE_RIGHT_BRACKET: ::std::os::raw::c_uint = 72; -pub const AKEYCODE_BACKSLASH: ::std::os::raw::c_uint = 73; -pub const AKEYCODE_SEMICOLON: ::std::os::raw::c_uint = 74; -pub const AKEYCODE_APOSTROPHE: ::std::os::raw::c_uint = 75; -pub const AKEYCODE_SLASH: ::std::os::raw::c_uint = 76; -pub const AKEYCODE_AT: ::std::os::raw::c_uint = 77; -pub const AKEYCODE_NUM: ::std::os::raw::c_uint = 78; -pub const AKEYCODE_HEADSETHOOK: ::std::os::raw::c_uint = 79; -pub const AKEYCODE_FOCUS: ::std::os::raw::c_uint = 80; -pub const AKEYCODE_PLUS: ::std::os::raw::c_uint = 81; -pub const AKEYCODE_MENU: ::std::os::raw::c_uint = 82; -pub const AKEYCODE_NOTIFICATION: ::std::os::raw::c_uint = 83; -pub const AKEYCODE_SEARCH: ::std::os::raw::c_uint = 84; -pub const AKEYCODE_MEDIA_PLAY_PAUSE: ::std::os::raw::c_uint = 85; -pub const AKEYCODE_MEDIA_STOP: ::std::os::raw::c_uint = 86; -pub const AKEYCODE_MEDIA_NEXT: ::std::os::raw::c_uint = 87; -pub const AKEYCODE_MEDIA_PREVIOUS: ::std::os::raw::c_uint = 88; -pub const AKEYCODE_MEDIA_REWIND: ::std::os::raw::c_uint = 89; -pub const AKEYCODE_MEDIA_FAST_FORWARD: ::std::os::raw::c_uint = 90; -pub const AKEYCODE_MUTE: ::std::os::raw::c_uint = 91; -pub const AKEYCODE_PAGE_UP: ::std::os::raw::c_uint = 92; -pub const AKEYCODE_PAGE_DOWN: ::std::os::raw::c_uint = 93; -pub const AKEYCODE_PICTSYMBOLS: ::std::os::raw::c_uint = 94; -pub const AKEYCODE_SWITCH_CHARSET: ::std::os::raw::c_uint = 95; -pub const AKEYCODE_BUTTON_A: ::std::os::raw::c_uint = 96; -pub const AKEYCODE_BUTTON_B: ::std::os::raw::c_uint = 97; -pub const AKEYCODE_BUTTON_C: ::std::os::raw::c_uint = 98; -pub const AKEYCODE_BUTTON_X: ::std::os::raw::c_uint = 99; -pub const AKEYCODE_BUTTON_Y: ::std::os::raw::c_uint = 100; -pub const AKEYCODE_BUTTON_Z: ::std::os::raw::c_uint = 101; -pub const AKEYCODE_BUTTON_L1: ::std::os::raw::c_uint = 102; -pub const AKEYCODE_BUTTON_R1: ::std::os::raw::c_uint = 103; -pub const AKEYCODE_BUTTON_L2: ::std::os::raw::c_uint = 104; -pub const AKEYCODE_BUTTON_R2: ::std::os::raw::c_uint = 105; -pub const AKEYCODE_BUTTON_THUMBL: ::std::os::raw::c_uint = 106; -pub const AKEYCODE_BUTTON_THUMBR: ::std::os::raw::c_uint = 107; -pub const AKEYCODE_BUTTON_START: ::std::os::raw::c_uint = 108; -pub const AKEYCODE_BUTTON_SELECT: ::std::os::raw::c_uint = 109; -pub const AKEYCODE_BUTTON_MODE: ::std::os::raw::c_uint = 110; -pub const AKEYCODE_ESCAPE: ::std::os::raw::c_uint = 111; -pub const AKEYCODE_FORWARD_DEL: ::std::os::raw::c_uint = 112; -pub const AKEYCODE_CTRL_LEFT: ::std::os::raw::c_uint = 113; -pub const AKEYCODE_CTRL_RIGHT: ::std::os::raw::c_uint = 114; -pub const AKEYCODE_CAPS_LOCK: ::std::os::raw::c_uint = 115; -pub const AKEYCODE_SCROLL_LOCK: ::std::os::raw::c_uint = 116; -pub const AKEYCODE_META_LEFT: ::std::os::raw::c_uint = 117; -pub const AKEYCODE_META_RIGHT: ::std::os::raw::c_uint = 118; -pub const AKEYCODE_FUNCTION: ::std::os::raw::c_uint = 119; -pub const AKEYCODE_SYSRQ: ::std::os::raw::c_uint = 120; -pub const AKEYCODE_BREAK: ::std::os::raw::c_uint = 121; -pub const AKEYCODE_MOVE_HOME: ::std::os::raw::c_uint = 122; -pub const AKEYCODE_MOVE_END: ::std::os::raw::c_uint = 123; -pub const AKEYCODE_INSERT: ::std::os::raw::c_uint = 124; -pub const AKEYCODE_FORWARD: ::std::os::raw::c_uint = 125; -pub const AKEYCODE_MEDIA_PLAY: ::std::os::raw::c_uint = 126; -pub const AKEYCODE_MEDIA_PAUSE: ::std::os::raw::c_uint = 127; -pub const AKEYCODE_MEDIA_CLOSE: ::std::os::raw::c_uint = 128; -pub const AKEYCODE_MEDIA_EJECT: ::std::os::raw::c_uint = 129; -pub const AKEYCODE_MEDIA_RECORD: ::std::os::raw::c_uint = 130; -pub const AKEYCODE_F1: ::std::os::raw::c_uint = 131; -pub const AKEYCODE_F2: ::std::os::raw::c_uint = 132; -pub const AKEYCODE_F3: ::std::os::raw::c_uint = 133; -pub const AKEYCODE_F4: ::std::os::raw::c_uint = 134; -pub const AKEYCODE_F5: ::std::os::raw::c_uint = 135; -pub const AKEYCODE_F6: ::std::os::raw::c_uint = 136; -pub const AKEYCODE_F7: ::std::os::raw::c_uint = 137; -pub const AKEYCODE_F8: ::std::os::raw::c_uint = 138; -pub const AKEYCODE_F9: ::std::os::raw::c_uint = 139; -pub const AKEYCODE_F10: ::std::os::raw::c_uint = 140; -pub const AKEYCODE_F11: ::std::os::raw::c_uint = 141; -pub const AKEYCODE_F12: ::std::os::raw::c_uint = 142; -pub const AKEYCODE_NUM_LOCK: ::std::os::raw::c_uint = 143; -pub const AKEYCODE_NUMPAD_0: ::std::os::raw::c_uint = 144; -pub const AKEYCODE_NUMPAD_1: ::std::os::raw::c_uint = 145; -pub const AKEYCODE_NUMPAD_2: ::std::os::raw::c_uint = 146; -pub const AKEYCODE_NUMPAD_3: ::std::os::raw::c_uint = 147; -pub const AKEYCODE_NUMPAD_4: ::std::os::raw::c_uint = 148; -pub const AKEYCODE_NUMPAD_5: ::std::os::raw::c_uint = 149; -pub const AKEYCODE_NUMPAD_6: ::std::os::raw::c_uint = 150; -pub const AKEYCODE_NUMPAD_7: ::std::os::raw::c_uint = 151; -pub const AKEYCODE_NUMPAD_8: ::std::os::raw::c_uint = 152; -pub const AKEYCODE_NUMPAD_9: ::std::os::raw::c_uint = 153; -pub const AKEYCODE_NUMPAD_DIVIDE: ::std::os::raw::c_uint = 154; -pub const AKEYCODE_NUMPAD_MULTIPLY: ::std::os::raw::c_uint = 155; -pub const AKEYCODE_NUMPAD_SUBTRACT: ::std::os::raw::c_uint = 156; -pub const AKEYCODE_NUMPAD_ADD: ::std::os::raw::c_uint = 157; -pub const AKEYCODE_NUMPAD_DOT: ::std::os::raw::c_uint = 158; -pub const AKEYCODE_NUMPAD_COMMA: ::std::os::raw::c_uint = 159; -pub const AKEYCODE_NUMPAD_ENTER: ::std::os::raw::c_uint = 160; -pub const AKEYCODE_NUMPAD_EQUALS: ::std::os::raw::c_uint = 161; -pub const AKEYCODE_NUMPAD_LEFT_PAREN: ::std::os::raw::c_uint = 162; -pub const AKEYCODE_NUMPAD_RIGHT_PAREN: ::std::os::raw::c_uint = 163; -pub const AKEYCODE_VOLUME_MUTE: ::std::os::raw::c_uint = 164; -pub const AKEYCODE_INFO: ::std::os::raw::c_uint = 165; -pub const AKEYCODE_CHANNEL_UP: ::std::os::raw::c_uint = 166; -pub const AKEYCODE_CHANNEL_DOWN: ::std::os::raw::c_uint = 167; -pub const AKEYCODE_ZOOM_IN: ::std::os::raw::c_uint = 168; -pub const AKEYCODE_ZOOM_OUT: ::std::os::raw::c_uint = 169; -pub const AKEYCODE_TV: ::std::os::raw::c_uint = 170; -pub const AKEYCODE_WINDOW: ::std::os::raw::c_uint = 171; -pub const AKEYCODE_GUIDE: ::std::os::raw::c_uint = 172; -pub const AKEYCODE_DVR: ::std::os::raw::c_uint = 173; -pub const AKEYCODE_BOOKMARK: ::std::os::raw::c_uint = 174; -pub const AKEYCODE_CAPTIONS: ::std::os::raw::c_uint = 175; -pub const AKEYCODE_SETTINGS: ::std::os::raw::c_uint = 176; -pub const AKEYCODE_TV_POWER: ::std::os::raw::c_uint = 177; -pub const AKEYCODE_TV_INPUT: ::std::os::raw::c_uint = 178; -pub const AKEYCODE_STB_POWER: ::std::os::raw::c_uint = 179; -pub const AKEYCODE_STB_INPUT: ::std::os::raw::c_uint = 180; -pub const AKEYCODE_AVR_POWER: ::std::os::raw::c_uint = 181; -pub const AKEYCODE_AVR_INPUT: ::std::os::raw::c_uint = 182; -pub const AKEYCODE_PROG_RED: ::std::os::raw::c_uint = 183; -pub const AKEYCODE_PROG_GREEN: ::std::os::raw::c_uint = 184; -pub const AKEYCODE_PROG_YELLOW: ::std::os::raw::c_uint = 185; -pub const AKEYCODE_PROG_BLUE: ::std::os::raw::c_uint = 186; -pub const AKEYCODE_APP_SWITCH: ::std::os::raw::c_uint = 187; -pub const AKEYCODE_BUTTON_1: ::std::os::raw::c_uint = 188; -pub const AKEYCODE_BUTTON_2: ::std::os::raw::c_uint = 189; -pub const AKEYCODE_BUTTON_3: ::std::os::raw::c_uint = 190; -pub const AKEYCODE_BUTTON_4: ::std::os::raw::c_uint = 191; -pub const AKEYCODE_BUTTON_5: ::std::os::raw::c_uint = 192; -pub const AKEYCODE_BUTTON_6: ::std::os::raw::c_uint = 193; -pub const AKEYCODE_BUTTON_7: ::std::os::raw::c_uint = 194; -pub const AKEYCODE_BUTTON_8: ::std::os::raw::c_uint = 195; -pub const AKEYCODE_BUTTON_9: ::std::os::raw::c_uint = 196; -pub const AKEYCODE_BUTTON_10: ::std::os::raw::c_uint = 197; -pub const AKEYCODE_BUTTON_11: ::std::os::raw::c_uint = 198; -pub const AKEYCODE_BUTTON_12: ::std::os::raw::c_uint = 199; -pub const AKEYCODE_BUTTON_13: ::std::os::raw::c_uint = 200; -pub const AKEYCODE_BUTTON_14: ::std::os::raw::c_uint = 201; -pub const AKEYCODE_BUTTON_15: ::std::os::raw::c_uint = 202; -pub const AKEYCODE_BUTTON_16: ::std::os::raw::c_uint = 203; -pub const AKEYCODE_LANGUAGE_SWITCH: ::std::os::raw::c_uint = 204; -pub const AKEYCODE_MANNER_MODE: ::std::os::raw::c_uint = 205; -pub const AKEYCODE_3D_MODE: ::std::os::raw::c_uint = 206; -pub const AKEYCODE_CONTACTS: ::std::os::raw::c_uint = 207; -pub const AKEYCODE_CALENDAR: ::std::os::raw::c_uint = 208; -pub const AKEYCODE_MUSIC: ::std::os::raw::c_uint = 209; -pub const AKEYCODE_CALCULATOR: ::std::os::raw::c_uint = 210; -pub const AKEYCODE_ZENKAKU_HANKAKU: ::std::os::raw::c_uint = 211; -pub const AKEYCODE_EISU: ::std::os::raw::c_uint = 212; -pub const AKEYCODE_MUHENKAN: ::std::os::raw::c_uint = 213; -pub const AKEYCODE_HENKAN: ::std::os::raw::c_uint = 214; -pub const AKEYCODE_KATAKANA_HIRAGANA: ::std::os::raw::c_uint = 215; -pub const AKEYCODE_YEN: ::std::os::raw::c_uint = 216; -pub const AKEYCODE_RO: ::std::os::raw::c_uint = 217; -pub const AKEYCODE_KANA: ::std::os::raw::c_uint = 218; -pub const AKEYCODE_ASSIST: ::std::os::raw::c_uint = 219; -pub const AKEYCODE_BRIGHTNESS_DOWN: ::std::os::raw::c_uint = 220; -pub const AKEYCODE_BRIGHTNESS_UP: ::std::os::raw::c_uint = 221; -pub const AKEYCODE_MEDIA_AUDIO_TRACK: ::std::os::raw::c_uint = 222; -pub const AKEYCODE_SLEEP: ::std::os::raw::c_uint = 223; -pub const AKEYCODE_WAKEUP: ::std::os::raw::c_uint = 224; -pub const AKEYCODE_PAIRING: ::std::os::raw::c_uint = 225; -pub const AKEYCODE_MEDIA_TOP_MENU: ::std::os::raw::c_uint = 226; -pub const AKEYCODE_11: ::std::os::raw::c_uint = 227; -pub const AKEYCODE_12: ::std::os::raw::c_uint = 228; -pub const AKEYCODE_LAST_CHANNEL: ::std::os::raw::c_uint = 229; -pub const AKEYCODE_TV_DATA_SERVICE: ::std::os::raw::c_uint = 230; -pub const AKEYCODE_VOICE_ASSIST: ::std::os::raw::c_uint = 231; -pub const AKEYCODE_TV_RADIO_SERVICE: ::std::os::raw::c_uint = 232; -pub const AKEYCODE_TV_TELETEXT: ::std::os::raw::c_uint = 233; -pub const AKEYCODE_TV_NUMBER_ENTRY: ::std::os::raw::c_uint = 234; -pub const AKEYCODE_TV_TERRESTRIAL_ANALOG: ::std::os::raw::c_uint = 235; -pub const AKEYCODE_TV_TERRESTRIAL_DIGITAL: ::std::os::raw::c_uint = 236; -pub const AKEYCODE_TV_SATELLITE: ::std::os::raw::c_uint = 237; -pub const AKEYCODE_TV_SATELLITE_BS: ::std::os::raw::c_uint = 238; -pub const AKEYCODE_TV_SATELLITE_CS: ::std::os::raw::c_uint = 239; -pub const AKEYCODE_TV_SATELLITE_SERVICE: ::std::os::raw::c_uint = 240; -pub const AKEYCODE_TV_NETWORK: ::std::os::raw::c_uint = 241; -pub const AKEYCODE_TV_ANTENNA_CABLE: ::std::os::raw::c_uint = 242; -pub const AKEYCODE_TV_INPUT_HDMI_1: ::std::os::raw::c_uint = 243; -pub const AKEYCODE_TV_INPUT_HDMI_2: ::std::os::raw::c_uint = 244; -pub const AKEYCODE_TV_INPUT_HDMI_3: ::std::os::raw::c_uint = 245; -pub const AKEYCODE_TV_INPUT_HDMI_4: ::std::os::raw::c_uint = 246; -pub const AKEYCODE_TV_INPUT_COMPOSITE_1: ::std::os::raw::c_uint = 247; -pub const AKEYCODE_TV_INPUT_COMPOSITE_2: ::std::os::raw::c_uint = 248; -pub const AKEYCODE_TV_INPUT_COMPONENT_1: ::std::os::raw::c_uint = 249; -pub const AKEYCODE_TV_INPUT_COMPONENT_2: ::std::os::raw::c_uint = 250; -pub const AKEYCODE_TV_INPUT_VGA_1: ::std::os::raw::c_uint = 251; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION: ::std::os::raw::c_uint = 252; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: ::std::os::raw::c_uint = 253; -pub const AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: ::std::os::raw::c_uint = 254; -pub const AKEYCODE_TV_ZOOM_MODE: ::std::os::raw::c_uint = 255; -pub const AKEYCODE_TV_CONTENTS_MENU: ::std::os::raw::c_uint = 256; -pub const AKEYCODE_TV_MEDIA_CONTEXT_MENU: ::std::os::raw::c_uint = 257; -pub const AKEYCODE_TV_TIMER_PROGRAMMING: ::std::os::raw::c_uint = 258; -pub const AKEYCODE_HELP: ::std::os::raw::c_uint = 259; -pub const AKEYCODE_NAVIGATE_PREVIOUS: ::std::os::raw::c_uint = 260; -pub const AKEYCODE_NAVIGATE_NEXT: ::std::os::raw::c_uint = 261; -pub const AKEYCODE_NAVIGATE_IN: ::std::os::raw::c_uint = 262; -pub const AKEYCODE_NAVIGATE_OUT: ::std::os::raw::c_uint = 263; -pub const AKEYCODE_STEM_PRIMARY: ::std::os::raw::c_uint = 264; -pub const AKEYCODE_STEM_1: ::std::os::raw::c_uint = 265; -pub const AKEYCODE_STEM_2: ::std::os::raw::c_uint = 266; -pub const AKEYCODE_STEM_3: ::std::os::raw::c_uint = 267; -pub const AKEYCODE_DPAD_UP_LEFT: ::std::os::raw::c_uint = 268; -pub const AKEYCODE_DPAD_DOWN_LEFT: ::std::os::raw::c_uint = 269; -pub const AKEYCODE_DPAD_UP_RIGHT: ::std::os::raw::c_uint = 270; -pub const AKEYCODE_DPAD_DOWN_RIGHT: ::std::os::raw::c_uint = 271; -pub const AKEYCODE_MEDIA_SKIP_FORWARD: ::std::os::raw::c_uint = 272; -pub const AKEYCODE_MEDIA_SKIP_BACKWARD: ::std::os::raw::c_uint = 273; -pub const AKEYCODE_MEDIA_STEP_FORWARD: ::std::os::raw::c_uint = 274; -pub const AKEYCODE_MEDIA_STEP_BACKWARD: ::std::os::raw::c_uint = 275; -pub const AKEYCODE_SOFT_SLEEP: ::std::os::raw::c_uint = 276; -pub const AKEYCODE_CUT: ::std::os::raw::c_uint = 277; -pub const AKEYCODE_COPY: ::std::os::raw::c_uint = 278; -pub const AKEYCODE_PASTE: ::std::os::raw::c_uint = 279; -pub const AKEYCODE_SYSTEM_NAVIGATION_UP: ::std::os::raw::c_uint = 280; -pub const AKEYCODE_SYSTEM_NAVIGATION_DOWN: ::std::os::raw::c_uint = 281; -pub const AKEYCODE_SYSTEM_NAVIGATION_LEFT: ::std::os::raw::c_uint = 282; -pub const AKEYCODE_SYSTEM_NAVIGATION_RIGHT: ::std::os::raw::c_uint = 283; -pub const AKEYCODE_ALL_APPS: ::std::os::raw::c_uint = 284; -pub const AKEYCODE_REFRESH: ::std::os::raw::c_uint = 285; -pub const AKEYCODE_THUMBS_UP: ::std::os::raw::c_uint = 286; -pub const AKEYCODE_THUMBS_DOWN: ::std::os::raw::c_uint = 287; -pub const AKEYCODE_PROFILE_SWITCH: ::std::os::raw::c_uint = 288; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const AKEY_STATE_UNKNOWN: ::std::os::raw::c_int = -1; -pub const AKEY_STATE_UP: ::std::os::raw::c_int = 0; -pub const AKEY_STATE_DOWN: ::std::os::raw::c_int = 1; -pub const AKEY_STATE_VIRTUAL: ::std::os::raw::c_int = 2; -pub type _bindgen_ty_10 = ::std::os::raw::c_int; -pub const AMETA_NONE: ::std::os::raw::c_uint = 0; -pub const AMETA_ALT_ON: ::std::os::raw::c_uint = 2; -pub const AMETA_ALT_LEFT_ON: ::std::os::raw::c_uint = 16; -pub const AMETA_ALT_RIGHT_ON: ::std::os::raw::c_uint = 32; -pub const AMETA_SHIFT_ON: ::std::os::raw::c_uint = 1; -pub const AMETA_SHIFT_LEFT_ON: ::std::os::raw::c_uint = 64; -pub const AMETA_SHIFT_RIGHT_ON: ::std::os::raw::c_uint = 128; -pub const AMETA_SYM_ON: ::std::os::raw::c_uint = 4; -pub const AMETA_FUNCTION_ON: ::std::os::raw::c_uint = 8; -pub const AMETA_CTRL_ON: ::std::os::raw::c_uint = 4096; -pub const AMETA_CTRL_LEFT_ON: ::std::os::raw::c_uint = 8192; -pub const AMETA_CTRL_RIGHT_ON: ::std::os::raw::c_uint = 16384; -pub const AMETA_META_ON: ::std::os::raw::c_uint = 65536; -pub const AMETA_META_LEFT_ON: ::std::os::raw::c_uint = 131072; -pub const AMETA_META_RIGHT_ON: ::std::os::raw::c_uint = 262144; -pub const AMETA_CAPS_LOCK_ON: ::std::os::raw::c_uint = 1048576; -pub const AMETA_NUM_LOCK_ON: ::std::os::raw::c_uint = 2097152; -pub const AMETA_SCROLL_LOCK_ON: ::std::os::raw::c_uint = 4194304; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AInputEvent { - _unused: [u8; 0], -} -pub const AINPUT_EVENT_TYPE_KEY: ::std::os::raw::c_uint = 1; -pub const AINPUT_EVENT_TYPE_MOTION: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AKEY_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_ACTION_MULTIPLE: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -pub const AKEY_EVENT_FLAG_WOKE_HERE: ::std::os::raw::c_uint = 1; -pub const AKEY_EVENT_FLAG_SOFT_KEYBOARD: ::std::os::raw::c_uint = 2; -pub const AKEY_EVENT_FLAG_KEEP_TOUCH_MODE: ::std::os::raw::c_uint = 4; -pub const AKEY_EVENT_FLAG_FROM_SYSTEM: ::std::os::raw::c_uint = 8; -pub const AKEY_EVENT_FLAG_EDITOR_ACTION: ::std::os::raw::c_uint = 16; -pub const AKEY_EVENT_FLAG_CANCELED: ::std::os::raw::c_uint = 32; -pub const AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY: ::std::os::raw::c_uint = 64; -pub const AKEY_EVENT_FLAG_LONG_PRESS: ::std::os::raw::c_uint = 128; -pub const AKEY_EVENT_FLAG_CANCELED_LONG_PRESS: ::std::os::raw::c_uint = 256; -pub const AKEY_EVENT_FLAG_TRACKING: ::std::os::raw::c_uint = 512; -pub const AKEY_EVENT_FLAG_FALLBACK: ::std::os::raw::c_uint = 1024; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_ACTION_MASK: ::std::os::raw::c_uint = 255; -pub const AMOTION_EVENT_ACTION_POINTER_INDEX_MASK: ::std::os::raw::c_uint = 65280; -pub const AMOTION_EVENT_ACTION_DOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_ACTION_UP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_ACTION_MOVE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_ACTION_CANCEL: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_ACTION_OUTSIDE: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_ACTION_POINTER_DOWN: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_ACTION_POINTER_UP: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_ACTION_HOVER_MOVE: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_ACTION_SCROLL: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_ACTION_HOVER_ENTER: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_ACTION_HOVER_EXIT: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_ACTION_BUTTON_PRESS: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_ACTION_BUTTON_RELEASE: ::std::os::raw::c_uint = 12; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED: ::std::os::raw::c_uint = 1; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_EDGE_FLAG_NONE: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_EDGE_FLAG_TOP: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_EDGE_FLAG_BOTTOM: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_EDGE_FLAG_LEFT: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_EDGE_FLAG_RIGHT: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_AXIS_X: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_AXIS_Y: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_AXIS_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_AXIS_SIZE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_AXIS_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_AXIS_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AMOTION_EVENT_AXIS_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AMOTION_EVENT_AXIS_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AMOTION_EVENT_AXIS_ORIENTATION: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_AXIS_VSCROLL: ::std::os::raw::c_uint = 9; -pub const AMOTION_EVENT_AXIS_HSCROLL: ::std::os::raw::c_uint = 10; -pub const AMOTION_EVENT_AXIS_Z: ::std::os::raw::c_uint = 11; -pub const AMOTION_EVENT_AXIS_RX: ::std::os::raw::c_uint = 12; -pub const AMOTION_EVENT_AXIS_RY: ::std::os::raw::c_uint = 13; -pub const AMOTION_EVENT_AXIS_RZ: ::std::os::raw::c_uint = 14; -pub const AMOTION_EVENT_AXIS_HAT_X: ::std::os::raw::c_uint = 15; -pub const AMOTION_EVENT_AXIS_HAT_Y: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_AXIS_LTRIGGER: ::std::os::raw::c_uint = 17; -pub const AMOTION_EVENT_AXIS_RTRIGGER: ::std::os::raw::c_uint = 18; -pub const AMOTION_EVENT_AXIS_THROTTLE: ::std::os::raw::c_uint = 19; -pub const AMOTION_EVENT_AXIS_RUDDER: ::std::os::raw::c_uint = 20; -pub const AMOTION_EVENT_AXIS_WHEEL: ::std::os::raw::c_uint = 21; -pub const AMOTION_EVENT_AXIS_GAS: ::std::os::raw::c_uint = 22; -pub const AMOTION_EVENT_AXIS_BRAKE: ::std::os::raw::c_uint = 23; -pub const AMOTION_EVENT_AXIS_DISTANCE: ::std::os::raw::c_uint = 24; -pub const AMOTION_EVENT_AXIS_TILT: ::std::os::raw::c_uint = 25; -pub const AMOTION_EVENT_AXIS_SCROLL: ::std::os::raw::c_uint = 26; -pub const AMOTION_EVENT_AXIS_RELATIVE_X: ::std::os::raw::c_uint = 27; -pub const AMOTION_EVENT_AXIS_RELATIVE_Y: ::std::os::raw::c_uint = 28; -pub const AMOTION_EVENT_AXIS_GENERIC_1: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_AXIS_GENERIC_2: ::std::os::raw::c_uint = 33; -pub const AMOTION_EVENT_AXIS_GENERIC_3: ::std::os::raw::c_uint = 34; -pub const AMOTION_EVENT_AXIS_GENERIC_4: ::std::os::raw::c_uint = 35; -pub const AMOTION_EVENT_AXIS_GENERIC_5: ::std::os::raw::c_uint = 36; -pub const AMOTION_EVENT_AXIS_GENERIC_6: ::std::os::raw::c_uint = 37; -pub const AMOTION_EVENT_AXIS_GENERIC_7: ::std::os::raw::c_uint = 38; -pub const AMOTION_EVENT_AXIS_GENERIC_8: ::std::os::raw::c_uint = 39; -pub const AMOTION_EVENT_AXIS_GENERIC_9: ::std::os::raw::c_uint = 40; -pub const AMOTION_EVENT_AXIS_GENERIC_10: ::std::os::raw::c_uint = 41; -pub const AMOTION_EVENT_AXIS_GENERIC_11: ::std::os::raw::c_uint = 42; -pub const AMOTION_EVENT_AXIS_GENERIC_12: ::std::os::raw::c_uint = 43; -pub const AMOTION_EVENT_AXIS_GENERIC_13: ::std::os::raw::c_uint = 44; -pub const AMOTION_EVENT_AXIS_GENERIC_14: ::std::os::raw::c_uint = 45; -pub const AMOTION_EVENT_AXIS_GENERIC_15: ::std::os::raw::c_uint = 46; -pub const AMOTION_EVENT_AXIS_GENERIC_16: ::std::os::raw::c_uint = 47; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_BUTTON_PRIMARY: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_BUTTON_SECONDARY: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_BUTTON_TERTIARY: ::std::os::raw::c_uint = 4; -pub const AMOTION_EVENT_BUTTON_BACK: ::std::os::raw::c_uint = 8; -pub const AMOTION_EVENT_BUTTON_FORWARD: ::std::os::raw::c_uint = 16; -pub const AMOTION_EVENT_BUTTON_STYLUS_PRIMARY: ::std::os::raw::c_uint = 32; -pub const AMOTION_EVENT_BUTTON_STYLUS_SECONDARY: ::std::os::raw::c_uint = 64; -pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -pub const AMOTION_EVENT_TOOL_TYPE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AMOTION_EVENT_TOOL_TYPE_FINGER: ::std::os::raw::c_uint = 1; -pub const AMOTION_EVENT_TOOL_TYPE_STYLUS: ::std::os::raw::c_uint = 2; -pub const AMOTION_EVENT_TOOL_TYPE_MOUSE: ::std::os::raw::c_uint = 3; -pub const AMOTION_EVENT_TOOL_TYPE_ERASER: ::std::os::raw::c_uint = 4; -pub type _bindgen_ty_20 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_CLASS_MASK: ::std::os::raw::c_uint = 255; -pub const AINPUT_SOURCE_CLASS_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_CLASS_BUTTON: ::std::os::raw::c_uint = 1; -pub const AINPUT_SOURCE_CLASS_POINTER: ::std::os::raw::c_uint = 2; -pub const AINPUT_SOURCE_CLASS_NAVIGATION: ::std::os::raw::c_uint = 4; -pub const AINPUT_SOURCE_CLASS_POSITION: ::std::os::raw::c_uint = 8; -pub const AINPUT_SOURCE_CLASS_JOYSTICK: ::std::os::raw::c_uint = 16; -pub type _bindgen_ty_21 = ::std::os::raw::c_uint; -pub const AINPUT_SOURCE_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const AINPUT_SOURCE_KEYBOARD: ::std::os::raw::c_uint = 257; -pub const AINPUT_SOURCE_DPAD: ::std::os::raw::c_uint = 513; -pub const AINPUT_SOURCE_GAMEPAD: ::std::os::raw::c_uint = 1025; -pub const AINPUT_SOURCE_TOUCHSCREEN: ::std::os::raw::c_uint = 4098; -pub const AINPUT_SOURCE_MOUSE: ::std::os::raw::c_uint = 8194; -pub const AINPUT_SOURCE_STYLUS: ::std::os::raw::c_uint = 16386; -pub const AINPUT_SOURCE_BLUETOOTH_STYLUS: ::std::os::raw::c_uint = 49154; -pub const AINPUT_SOURCE_TRACKBALL: ::std::os::raw::c_uint = 65540; -pub const AINPUT_SOURCE_MOUSE_RELATIVE: ::std::os::raw::c_uint = 131076; -pub const AINPUT_SOURCE_TOUCHPAD: ::std::os::raw::c_uint = 1048584; -pub const AINPUT_SOURCE_TOUCH_NAVIGATION: ::std::os::raw::c_uint = 2097152; -pub const AINPUT_SOURCE_JOYSTICK: ::std::os::raw::c_uint = 16777232; -pub const AINPUT_SOURCE_ROTARY_ENCODER: ::std::os::raw::c_uint = 4194304; -pub const AINPUT_SOURCE_ANY: ::std::os::raw::c_uint = 4294967040; -pub type _bindgen_ty_22 = ::std::os::raw::c_uint; -pub const AINPUT_KEYBOARD_TYPE_NONE: ::std::os::raw::c_uint = 0; -pub const AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC: ::std::os::raw::c_uint = 1; -pub const AINPUT_KEYBOARD_TYPE_ALPHABETIC: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_23 = ::std::os::raw::c_uint; -pub const AINPUT_MOTION_RANGE_X: ::std::os::raw::c_uint = 0; -pub const AINPUT_MOTION_RANGE_Y: ::std::os::raw::c_uint = 1; -pub const AINPUT_MOTION_RANGE_PRESSURE: ::std::os::raw::c_uint = 2; -pub const AINPUT_MOTION_RANGE_SIZE: ::std::os::raw::c_uint = 3; -pub const AINPUT_MOTION_RANGE_TOUCH_MAJOR: ::std::os::raw::c_uint = 4; -pub const AINPUT_MOTION_RANGE_TOUCH_MINOR: ::std::os::raw::c_uint = 5; -pub const AINPUT_MOTION_RANGE_TOOL_MAJOR: ::std::os::raw::c_uint = 6; -pub const AINPUT_MOTION_RANGE_TOOL_MINOR: ::std::os::raw::c_uint = 7; -pub const AINPUT_MOTION_RANGE_ORIENTATION: ::std::os::raw::c_uint = 8; -pub type _bindgen_ty_24 = ::std::os::raw::c_uint; -extern "C" { - pub fn AInputEvent_getType(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getDeviceId(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AInputEvent_getSource(event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getAction(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getFlags(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getKeyCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getScanCode(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getMetaState(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getRepeatCount(key_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AKeyEvent_getDownTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AKeyEvent_getEventTime(key_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getAction(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getMetaState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getButtonState(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getEdgeFlags(motion_event: *const AInputEvent) -> i32; -} -extern "C" { - pub fn AMotionEvent_getDownTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getEventTime(motion_event: *const AInputEvent) -> i64; -} -extern "C" { - pub fn AMotionEvent_getXOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYOffset(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getXPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getYPrecision(motion_event: *const AInputEvent) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPointerCount(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getPointerId( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> i32; -} -extern "C" { - pub fn AMotionEvent_getToolType(motion_event: *const AInputEvent, pointer_index: size_t) - -> i32; -} -extern "C" { - pub fn AMotionEvent_getRawX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getRawY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getX(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getY(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getPressure(motion_event: *const AInputEvent, pointer_index: size_t) - -> f32; -} -extern "C" { - pub fn AMotionEvent_getSize(motion_event: *const AInputEvent, pointer_index: size_t) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistorySize(motion_event: *const AInputEvent) -> size_t; -} -extern "C" { - pub fn AMotionEvent_getHistoricalEventTime( - motion_event: *const AInputEvent, - history_index: size_t, - ) -> i64; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalRawY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalX( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalY( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalPressure( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalSize( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalTouchMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMajor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalToolMinor( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalOrientation( - motion_event: *const AInputEvent, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -extern "C" { - pub fn AMotionEvent_getHistoricalAxisValue( - motion_event: *const AInputEvent, - axis: i32, - pointer_index: size_t, - history_index: size_t, - ) -> f32; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct imaxdiv_t { - pub quot: intmax_t, - pub rem: intmax_t, -} -#[test] -fn bindgen_test_layout_imaxdiv_t() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(imaxdiv_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(imaxdiv_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(quot) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(imaxdiv_t), - "::", - stringify!(rem) - ) - ); -} -extern "C" { - pub fn imaxabs(__i: intmax_t) -> intmax_t; -} -extern "C" { - pub fn imaxdiv(__numerator: intmax_t, __denominator: intmax_t) -> imaxdiv_t; -} -extern "C" { - pub fn strtoimax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn strtoumax( - __s: *const ::std::os::raw::c_char, - __end_ptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -extern "C" { - pub fn wcstoimax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> intmax_t; -} -extern "C" { - pub fn wcstoumax( - __s: *const wchar_t, - __end_ptr: *mut *mut wchar_t, - __base: ::std::os::raw::c_int, - ) -> uintmax_t; -} -pub const ADataSpace_ADATASPACE_UNKNOWN: ADataSpace = 0; -pub const ADataSpace_ADATASPACE_SCRGB_LINEAR: ADataSpace = 406913024; -pub const ADataSpace_ADATASPACE_SRGB: ADataSpace = 142671872; -pub const ADataSpace_ADATASPACE_SCRGB: ADataSpace = 411107328; -pub const ADataSpace_ADATASPACE_DISPLAY_P3: ADataSpace = 143261696; -pub const ADataSpace_ADATASPACE_BT2020_PQ: ADataSpace = 163971072; -pub type ADataSpace = ::std::os::raw::c_uint; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: AHardwareBuffer_Format = 1; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: AHardwareBuffer_Format = 2; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: AHardwareBuffer_Format = 3; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: AHardwareBuffer_Format = 4; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: AHardwareBuffer_Format = - 22; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: AHardwareBuffer_Format = - 43; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_BLOB: AHardwareBuffer_Format = 33; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D16_UNORM: AHardwareBuffer_Format = 48; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM: AHardwareBuffer_Format = 49; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT: AHardwareBuffer_Format = - 50; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT: AHardwareBuffer_Format = 51; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT: AHardwareBuffer_Format = - 52; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_S8_UINT: AHardwareBuffer_Format = 53; -pub const AHardwareBuffer_Format_AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420: AHardwareBuffer_Format = 35; -pub type AHardwareBuffer_Format = ::std::os::raw::c_uint; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_RARELY: - AHardwareBuffer_UsageFlags = 2; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN: - AHardwareBuffer_UsageFlags = 3; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_READ_MASK: - AHardwareBuffer_UsageFlags = 15; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER: - AHardwareBuffer_UsageFlags = 0; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY: - AHardwareBuffer_UsageFlags = 32; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN: - AHardwareBuffer_UsageFlags = 48; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK: - AHardwareBuffer_UsageFlags = 240; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE: - AHardwareBuffer_UsageFlags = 256; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT: - AHardwareBuffer_UsageFlags = 512; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY: - AHardwareBuffer_UsageFlags = 2048; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT: - AHardwareBuffer_UsageFlags = 16384; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VIDEO_ENCODE: - AHardwareBuffer_UsageFlags = 65536; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA: - AHardwareBuffer_UsageFlags = 8388608; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER: - AHardwareBuffer_UsageFlags = 16777216; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP: - AHardwareBuffer_UsageFlags = 33554432; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE: - AHardwareBuffer_UsageFlags = 67108864; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_0: AHardwareBuffer_UsageFlags = - 268435456; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_1: AHardwareBuffer_UsageFlags = - 536870912; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_2: AHardwareBuffer_UsageFlags = - 1073741824; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_3: AHardwareBuffer_UsageFlags = - 2147483648; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_4: AHardwareBuffer_UsageFlags = - 281474976710656; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_5: AHardwareBuffer_UsageFlags = - 562949953421312; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_6: AHardwareBuffer_UsageFlags = - 1125899906842624; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_7: AHardwareBuffer_UsageFlags = - 2251799813685248; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_8: AHardwareBuffer_UsageFlags = - 4503599627370496; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_9: AHardwareBuffer_UsageFlags = - 9007199254740992; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_10: AHardwareBuffer_UsageFlags = - 18014398509481984; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_11: AHardwareBuffer_UsageFlags = - 36028797018963968; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_12: AHardwareBuffer_UsageFlags = - 72057594037927936; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_13: AHardwareBuffer_UsageFlags = - 144115188075855872; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_14: AHardwareBuffer_UsageFlags = - 288230376151711744; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_15: AHardwareBuffer_UsageFlags = - 576460752303423488; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_16: AHardwareBuffer_UsageFlags = - 1152921504606846976; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_17: AHardwareBuffer_UsageFlags = - 2305843009213693952; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_18: AHardwareBuffer_UsageFlags = - 4611686018427387904; -pub const AHardwareBuffer_UsageFlags_AHARDWAREBUFFER_USAGE_VENDOR_19: AHardwareBuffer_UsageFlags = - 9223372036854775808; -pub type AHardwareBuffer_UsageFlags = ::std::os::raw::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Desc { - pub width: u32, - pub height: u32, - pub layers: u32, - pub format: u32, - pub usage: u64, - pub stride: u32, - pub rfu0: u32, - pub rfu1: u64, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Desc() { - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Desc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(width) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(height) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).layers as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(layers) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(format) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).usage as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(usage) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stride as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(stride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu0 as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu0) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rfu1 as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Desc), - "::", - stringify!(rfu1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Plane { - pub data: *mut ::std::os::raw::c_void, - pub pixelStride: u32, - pub rowStride: u32, -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Plane() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Plane)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).pixelStride as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(pixelStride) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).rowStride as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Plane), - "::", - stringify!(rowStride) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer_Planes { - pub planeCount: u32, - pub planes: [AHardwareBuffer_Plane; 4usize], -} -#[test] -fn bindgen_test_layout_AHardwareBuffer_Planes() { - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(AHardwareBuffer_Planes)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).planeCount as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planeCount) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).planes as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(AHardwareBuffer_Planes), - "::", - stringify!(planes) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct AHardwareBuffer { - _unused: [u8; 0], -} -extern "C" { - pub fn AHardwareBuffer_allocate( - desc: *const AHardwareBuffer_Desc, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_acquire(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_release(buffer: *mut AHardwareBuffer); -} -extern "C" { - pub fn AHardwareBuffer_describe( - buffer: *const AHardwareBuffer, - outDesc: *mut AHardwareBuffer_Desc, - ); -} -extern "C" { - pub fn AHardwareBuffer_lock( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockPlanes( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outPlanes: *mut AHardwareBuffer_Planes, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_unlock( - buffer: *mut AHardwareBuffer, - fence: *mut i32, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_sendHandleToUnixSocket( - buffer: *const AHardwareBuffer, - socketFd: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_recvHandleFromUnixSocket( - socketFd: ::std::os::raw::c_int, - outBuffer: *mut *mut AHardwareBuffer, - ) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_isSupported(desc: *const AHardwareBuffer_Desc) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn AHardwareBuffer_lockAndGetInfo( - buffer: *mut AHardwareBuffer, - usage: u64, - fence: i32, - rect: *const ARect, - outVirtualAddress: *mut *mut ::std::os::raw::c_void, - outBytesPerPixel: *mut i32, - outBytesPerStride: *mut i32, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -pub struct ANativeActivity { - pub callbacks: *mut ANativeActivityCallbacks, - pub vm: *mut JavaVM, - pub env: *mut JNIEnv, - pub clazz: jobject, - pub internalDataPath: *const ::std::os::raw::c_char, - pub externalDataPath: *const ::std::os::raw::c_char, - pub sdkVersion: i32, - pub instance: *mut ::std::os::raw::c_void, - pub assetManager: *mut AAssetManager, - pub obbPath: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_ANativeActivity() { - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(ANativeActivity)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ANativeActivity)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).callbacks as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(callbacks) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).vm as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(vm) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).env as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(env) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).clazz as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(clazz) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).internalDataPath as *const _ as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(internalDataPath) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).externalDataPath as *const _ as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(externalDataPath) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sdkVersion as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(sdkVersion) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).instance as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(instance) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).assetManager as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(assetManager) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).obbPath as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivity), - "::", - stringify!(obbPath) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ANativeActivityCallbacks { - pub onStart: ::std::option::Option, - pub onResume: ::std::option::Option, - pub onSaveInstanceState: ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - outSize: *mut size_t, - ) -> *mut ::std::os::raw::c_void, - >, - pub onPause: ::std::option::Option, - pub onStop: ::std::option::Option, - pub onDestroy: ::std::option::Option, - pub onWindowFocusChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, hasFocus: ::std::os::raw::c_int), - >, - pub onNativeWindowCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowResized: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowRedrawNeeded: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onNativeWindowDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, window: *mut ANativeWindow), - >, - pub onInputQueueCreated: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onInputQueueDestroyed: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, queue: *mut AInputQueue), - >, - pub onContentRectChanged: ::std::option::Option< - unsafe extern "C" fn(activity: *mut ANativeActivity, rect: *const ARect), - >, - pub onConfigurationChanged: - ::std::option::Option, - pub onLowMemory: ::std::option::Option, -} -#[test] -fn bindgen_test_layout_ANativeActivityCallbacks() { - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ANativeActivityCallbacks)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onStart as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStart) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onResume as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onResume) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onSaveInstanceState as *const _ - as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onSaveInstanceState) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onPause as *const _ as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onPause) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onStop as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onStop) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onDestroy as *const _ as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onDestroy) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onWindowFocusChanged as *const _ - as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onWindowFocusChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowCreated as *const _ - as usize - }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowResized as *const _ - as usize - }, - 64usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowResized) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowRedrawNeeded - as *const _ as usize - }, - 72usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowRedrawNeeded) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onNativeWindowDestroyed as *const _ - as usize - }, - 80usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onNativeWindowDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueCreated as *const _ - as usize - }, - 88usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueCreated) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onInputQueueDestroyed as *const _ - as usize - }, - 96usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onInputQueueDestroyed) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onContentRectChanged as *const _ - as usize - }, - 104usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onContentRectChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onConfigurationChanged as *const _ - as usize - }, - 112usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onConfigurationChanged) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).onLowMemory as *const _ as usize - }, - 120usize, - concat!( - "Offset of field: ", - stringify!(ANativeActivityCallbacks), - "::", - stringify!(onLowMemory) - ) - ); -} -pub type ANativeActivity_createFunc = ::std::option::Option< - unsafe extern "C" fn( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ), ->; -extern "C" { - pub fn ANativeActivity_onCreate( - activity: *mut ANativeActivity, - savedState: *mut ::std::os::raw::c_void, - savedStateSize: size_t, - ); -} -extern "C" { - pub fn ANativeActivity_finish(activity: *mut ANativeActivity); -} -extern "C" { - pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: i32); -} -extern "C" { - pub fn ANativeActivity_setWindowFlags( - activity: *mut ANativeActivity, - addFlags: u32, - removeFlags: u32, - ); -} -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_25 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: u32); -} -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY: ::std::os::raw::c_uint = 1; -pub const ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS: ::std::os::raw::c_uint = 2; -pub type _bindgen_ty_26 = ::std::os::raw::c_uint; -extern "C" { - pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: u32); -} -#[doc = " Data associated with an ALooper fd that will be returned as the \"outData\""] -#[doc = " when that source has data ready."] -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct android_poll_source { - pub id: i32, - pub app: *mut android_app, - pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), - >, -} -#[test] -fn bindgen_test_layout_android_poll_source() { - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(android_poll_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(android_poll_source)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(id) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).app as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(app) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).process as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_poll_source), - "::", - stringify!(process) - ) - ); -} -#[doc = " The native activity interface provided by "] -#[doc = " is based on a set of application-provided callbacks that will be called"] -#[doc = " by the Activity's main thread when certain events occur."] -#[doc = ""] -#[doc = " This means that each one of this callbacks _should_ _not_ block, or they"] -#[doc = " risk having the system force-close the application. This programming"] -#[doc = " model is direct, lightweight, but constraining."] -#[doc = ""] -#[doc = " The 'android_native_app_glue' static library is used to provide a different"] -#[doc = " execution model where the application can implement its own main event"] -#[doc = " loop in a different thread instead. Here's how it works:"] -#[doc = ""] -#[doc = " 1/ The application must provide a function named \"android_main()\" that"] -#[doc = " will be called when the activity is created, in a new thread that is"] -#[doc = " distinct from the activity's main thread."] -#[doc = ""] -#[doc = " 2/ android_main() receives a pointer to a valid \"android_app\" structure"] -#[doc = " that contains references to other important objects, e.g. the"] -#[doc = " ANativeActivity obejct instance the application is running in."] -#[doc = ""] -#[doc = " 3/ the \"android_app\" object holds an ALooper instance that already"] -#[doc = " listens to two important things:"] -#[doc = ""] -#[doc = " - activity lifecycle events (e.g. \"pause\", \"resume\"). See APP_CMD_XXX"] -#[doc = " declarations below."] -#[doc = ""] -#[doc = " - input events coming from the AInputQueue attached to the activity."] -#[doc = ""] -#[doc = " Each of these correspond to an ALooper identifier returned by"] -#[doc = " ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT,"] -#[doc = " respectively."] -#[doc = ""] -#[doc = " Your application can use the same ALooper to listen to additional"] -#[doc = " file-descriptors. They can either be callback based, or with return"] -#[doc = " identifiers starting with LOOPER_ID_USER."] -#[doc = ""] -#[doc = " 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event,"] -#[doc = " the returned data will point to an android_poll_source structure. You"] -#[doc = " can call the process() function on it, and fill in android_app->onAppCmd"] -#[doc = " and android_app->onInputEvent to be called for your own processing"] -#[doc = " of the event."] -#[doc = ""] -#[doc = " Alternatively, you can call the low-level functions to read and process"] -#[doc = " the data directly... look at the process_cmd() and process_input()"] -#[doc = " implementations in the glue to see how to do this."] -#[doc = ""] -#[doc = " See the sample named \"native-activity\" that comes with the NDK with a"] -#[doc = " full usage example. Also look at the JavaDoc of NativeActivity."] -#[repr(C)] -pub struct android_app { - pub userData: *mut ::std::os::raw::c_void, - pub onAppCmd: ::std::option::Option, - pub onInputEvent: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, event: *mut AInputEvent) -> i32, - >, - pub activity: *mut ANativeActivity, - pub config: *mut AConfiguration, - pub savedState: *mut ::std::os::raw::c_void, - pub savedStateSize: size_t, - pub looper: *mut ALooper, - pub inputQueue: *mut AInputQueue, - pub window: *mut ANativeWindow, - pub contentRect: ARect, - pub activityState: ::std::os::raw::c_int, - pub destroyRequested: ::std::os::raw::c_int, - pub mutex: pthread_mutex_t, - pub cond: pthread_cond_t, - pub msgread: ::std::os::raw::c_int, - pub msgwrite: ::std::os::raw::c_int, - pub thread: pthread_t, - pub cmdPollSource: android_poll_source, - pub inputPollSource: android_poll_source, - pub running: ::std::os::raw::c_int, - pub stateSaved: ::std::os::raw::c_int, - pub destroyed: ::std::os::raw::c_int, - pub redrawNeeded: ::std::os::raw::c_int, - pub pendingInputQueue: *mut AInputQueue, - pub pendingWindow: *mut ANativeWindow, - pub pendingContentRect: ARect, -} -#[test] -fn bindgen_test_layout_android_app() { - assert_eq!( - ::std::mem::size_of::(), - 304usize, - concat!("Size of: ", stringify!(android_app)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(android_app)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).userData as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(userData) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onAppCmd as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onAppCmd) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).onInputEvent as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(onInputEvent) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activity as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activity) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).config as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(config) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedState as *const _ as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).savedStateSize as *const _ as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(savedStateSize) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).looper as *const _ as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(looper) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputQueue as *const _ as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(window) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).contentRect as *const _ as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(contentRect) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).activityState as *const _ as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(activityState) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyRequested as *const _ as usize }, - 100usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyRequested) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mutex as *const _ as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(mutex) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cond as *const _ as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cond) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgread as *const _ as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).msgwrite as *const _ as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(msgwrite) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).thread as *const _ as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(thread) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cmdPollSource as *const _ as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(cmdPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).inputPollSource as *const _ as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(inputPollSource) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).running as *const _ as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(running) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).stateSaved as *const _ as usize }, - 260usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(stateSaved) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).destroyed as *const _ as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(destroyed) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).redrawNeeded as *const _ as usize }, - 268usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(redrawNeeded) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingInputQueue as *const _ as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingInputQueue) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingWindow as *const _ as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingWindow) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).pendingContentRect as *const _ as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(android_app), - "::", - stringify!(pendingContentRect) - ) - ); -} -#[doc = " Looper data ID of commands coming from the app's main thread, which"] -#[doc = " is returned as an identifier from ALooper_pollOnce(). The data for this"] -#[doc = " identifier is a pointer to an android_poll_source structure."] -#[doc = " These can be retrieved and processed with android_app_read_cmd()"] -#[doc = " and android_app_exec_cmd()."] -pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; -#[doc = " Looper data ID of events coming from the AInputQueue of the"] -#[doc = " application's window, which is returned as an identifier from"] -#[doc = " ALooper_pollOnce(). The data for this identifier is a pointer to an"] -#[doc = " android_poll_source structure. These can be read via the inputQueue"] -#[doc = " object of android_app."] -pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; -#[doc = " Start of user-defined ALooper identifiers."] -pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; -pub type _bindgen_ty_27 = ::std::os::raw::c_uint; -#[doc = " Command from main thread: the AInputQueue has changed. Upon processing"] -#[doc = " this command, android_app->inputQueue will be updated to the new queue"] -#[doc = " (or NULL)."] -pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; -#[doc = " Command from main thread: a new ANativeWindow is ready for use. Upon"] -#[doc = " receiving this command, android_app->window will contain the new window"] -#[doc = " surface."] -pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; -#[doc = " Command from main thread: the existing ANativeWindow needs to be"] -#[doc = " terminated. Upon receiving this command, android_app->window still"] -#[doc = " contains the existing window; after calling android_app_exec_cmd"] -#[doc = " it will be set to NULL."] -pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; -#[doc = " Command from main thread: the current ANativeWindow has been resized."] -#[doc = " Please redraw with its new size."] -pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; -#[doc = " Command from main thread: the system needs that the current ANativeWindow"] -#[doc = " be redrawn. You should redraw the window before handing this to"] -#[doc = " android_app_exec_cmd() in order to avoid transient drawing glitches."] -pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; -#[doc = " Command from main thread: the content area of the window has changed,"] -#[doc = " such as from the soft input window being shown or hidden. You can"] -#[doc = " find the new content rect in android_app::contentRect."] -pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; -#[doc = " Command from main thread: the app's activity window has gained"] -#[doc = " input focus."] -pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; -#[doc = " Command from main thread: the app's activity window has lost"] -#[doc = " input focus."] -pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; -#[doc = " Command from main thread: the current device configuration has changed."] -pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; -#[doc = " Command from main thread: the system is running low on memory."] -#[doc = " Try to reduce your memory use."] -pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; -#[doc = " Command from main thread: the app's activity has been started."] -pub const APP_CMD_START: ::std::os::raw::c_uint = 10; -#[doc = " Command from main thread: the app's activity has been resumed."] -pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; -#[doc = " Command from main thread: the app should generate a new saved state"] -#[doc = " for itself, to restore from later if needed. If you have saved state,"] -#[doc = " allocate it with malloc and place it in android_app.savedState with"] -#[doc = " the size in android_app.savedStateSize. The will be freed for you"] -#[doc = " later."] -pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; -#[doc = " Command from main thread: the app's activity has been paused."] -pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; -#[doc = " Command from main thread: the app's activity has been stopped."] -pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; -#[doc = " Command from main thread: the app's activity is being destroyed,"] -#[doc = " and waiting for the app thread to clean up and exit before proceeding."] -pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; -pub type _bindgen_ty_28 = ::std::os::raw::c_uint; -extern "C" { - #[doc = " Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next"] - #[doc = " app command message."] - pub fn android_app_read_cmd(android_app: *mut android_app) -> i8; -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " initial pre-processing of the given command. You can perform your own"] - #[doc = " actions for the command after calling this function."] - pub fn android_app_pre_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - #[doc = " Call with the command returned by android_app_read_cmd() to do the"] - #[doc = " final post-processing of the given command. You must have done your own"] - #[doc = " actions for the command before calling this function."] - pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); -} -extern "C" { - pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); -} -extern "C" { - pub fn print_cur_config(android_app: *mut android_app); -} -extern "C" { - pub fn process_cmd(app: *mut android_app, source: *mut android_poll_source); -} -extern "C" { - pub fn android_app_destroy(android_app: *mut android_app); -} -pub type __builtin_va_list = [__va_list_tag; 1usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __va_list_tag { - pub gp_offset: ::std::os::raw::c_uint, - pub fp_offset: ::std::os::raw::c_uint, - pub overflow_arg_area: *mut ::std::os::raw::c_void, - pub reg_save_area: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___va_list_tag() { - assert_eq!( - ::std::mem::size_of::<__va_list_tag>(), - 24usize, - concat!("Size of: ", stringify!(__va_list_tag)) - ); - assert_eq!( - ::std::mem::align_of::<__va_list_tag>(), - 8usize, - concat!("Alignment of ", stringify!(__va_list_tag)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(gp_offset) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(fp_offset) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(overflow_arg_area) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(reg_save_area) - ) - ); -} diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 6281265..e923a4a 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -25,8 +25,6 @@ use crate::{ util, AndroidApp, ConfigurationRef, InputStatus, MainEvent, PollEvent, Rect, WindowManagerFlags, }; -mod ffi; - pub mod input { pub use ndk::event::{ Axis, ButtonState, EdgeFlags, KeyAction, KeyEvent, KeyEventFlags, Keycode, MetaState, @@ -128,6 +126,73 @@ impl AndroidAppWaker { } } +/// These are the original C structs / constants from android_native_app_glue.c naively +/// ported to Rust via bindgen. +/// +/// TODO: start integrating all this state directly into `AndroidApp`/`NativeAppGlue` +mod ffi { + pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; + pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; + //pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; + + pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; + pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; + pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; + pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; + pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; + pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; + pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; + pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; + pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; + pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; + pub const APP_CMD_START: ::std::os::raw::c_uint = 10; + pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; + pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; + pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; + pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; + pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; + + pub struct android_poll_source { + pub id: i32, + pub app: *mut android_app, + pub process: ::std::option::Option< + unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), + >, + } + + pub struct android_app { + pub userData: *mut ::std::os::raw::c_void, + pub onAppCmd: ::std::option::Option, + pub onInputEvent: ::std::option::Option< + unsafe extern "C" fn(app: *mut android_app, event: *mut ndk_sys::AInputEvent) -> i32, + >, + pub activity: *mut ndk_sys::ANativeActivity, + pub config: *mut ndk_sys::AConfiguration, + pub savedState: *mut ::std::os::raw::c_void, + pub savedStateSize: libc::size_t, + pub looper: *mut ndk_sys::ALooper, + pub inputQueue: *mut ndk_sys::AInputQueue, + pub window: *mut ndk_sys::ANativeWindow, + pub contentRect: ndk_sys::ARect, + pub activityState: ::std::os::raw::c_int, + pub destroyRequested: ::std::os::raw::c_int, + pub mutex: libc::pthread_mutex_t, + pub cond: libc::pthread_cond_t, + pub msgread: ::std::os::raw::c_int, + pub msgwrite: ::std::os::raw::c_int, + pub thread: libc::pthread_t, + pub cmdPollSource: android_poll_source, + pub inputPollSource: android_poll_source, + pub running: ::std::os::raw::c_int, + pub stateSaved: ::std::os::raw::c_int, + pub destroyed: ::std::os::raw::c_int, + pub redrawNeeded: ::std::os::raw::c_int, + pub pendingInputQueue: *mut ndk_sys::AInputQueue, + pub pendingWindow: *mut ndk_sys::ANativeWindow, + pub pendingContentRect: ndk_sys::ARect, + } +} + impl AndroidApp { pub(crate) unsafe fn from_ptr(ptr: NonNull) -> AndroidApp { // Note: we don't use from_ptr since we don't own the android_app.config @@ -205,20 +270,20 @@ impl AndroidAppInner { ); info!("pollAll id = {id}"); match id { - ffi::ALOOPER_POLL_WAKE => { + ndk_sys::ALOOPER_POLL_WAKE => { trace!("ALooper_pollAll returned POLL_WAKE"); callback(PollEvent::Wake); } - ffi::ALOOPER_POLL_CALLBACK => { + ndk_sys::ALOOPER_POLL_CALLBACK => { // ALooper_pollAll is documented to handle all callback sources internally so it should // never return a _CALLBACK source id... error!("Spurious ALOOPER_POLL_CALLBACK from ALopper_pollAll() (ignored)"); } - ffi::ALOOPER_POLL_TIMEOUT => { + ndk_sys::ALOOPER_POLL_TIMEOUT => { trace!("ALooper_pollAll returned POLL_TIMEOUT"); callback(PollEvent::Timeout); } - ffi::ALOOPER_POLL_ERROR => { + ndk_sys::ALOOPER_POLL_ERROR => { // If we have an IO error with our pipe to the main Java thread that's surely // not something we can recover from panic!("ALooper_pollAll returned POLL_ERROR"); @@ -229,81 +294,81 @@ impl AndroidAppInner { trace!("ALooper_pollAll returned ID_MAIN"); let source: *mut ffi::android_poll_source = source.cast(); if source != ptr::null_mut() { - let cmd_i = ffi::android_app_read_cmd(native_app.as_ptr()); + if let Some(cmd_i) = android_app_read_cmd(native_app.as_ptr()) { + let cmd = match cmd_i as libc::c_uint { + // We don't forward info about the AInputQueue to apps since it's + // an implementation details that's also not compatible with + // GameActivity + ffi::APP_CMD_INPUT_CHANGED => None, - let cmd = match cmd_i as u32 { - // We don't forward info about the AInputQueue to apps since it's - // an implementation details that's also not compatible with - // GameActivity - ffi::APP_CMD_INPUT_CHANGED => None, - - ffi::APP_CMD_INIT_WINDOW => Some(MainEvent::InitWindow {}), - ffi::APP_CMD_TERM_WINDOW => Some(MainEvent::TerminateWindow {}), - ffi::APP_CMD_WINDOW_RESIZED => { - Some(MainEvent::WindowResized {}) - } - ffi::APP_CMD_WINDOW_REDRAW_NEEDED => { - Some(MainEvent::RedrawNeeded {}) - } - ffi::APP_CMD_CONTENT_RECT_CHANGED => { - Some(MainEvent::ContentRectChanged {}) - } - ffi::APP_CMD_GAINED_FOCUS => Some(MainEvent::GainedFocus), - ffi::APP_CMD_LOST_FOCUS => Some(MainEvent::LostFocus), - ffi::APP_CMD_CONFIG_CHANGED => { - Some(MainEvent::ConfigChanged {}) - } - ffi::APP_CMD_LOW_MEMORY => Some(MainEvent::LowMemory), - ffi::APP_CMD_START => Some(MainEvent::Start), - ffi::APP_CMD_RESUME => Some(MainEvent::Resume { - loader: StateLoader { app: &self }, - }), - ffi::APP_CMD_SAVE_STATE => Some(MainEvent::SaveState { - saver: StateSaver { app: &self }, - }), - ffi::APP_CMD_PAUSE => Some(MainEvent::Pause), - ffi::APP_CMD_STOP => Some(MainEvent::Stop), - ffi::APP_CMD_DESTROY => Some(MainEvent::Destroy), - - //ffi::NativeAppGlueAppCmd_APP_CMD_WINDOW_INSETS_CHANGED => MainEvent::InsetsChanged {}, - _ => unreachable!(), - }; - - trace!("Calling android_app_pre_exec_cmd({cmd_i})"); - ffi::android_app_pre_exec_cmd(native_app.as_ptr(), cmd_i); - - if let Some(cmd) = cmd { - trace!("Read ID_MAIN command {cmd_i} = {cmd:?}"); - match cmd { - MainEvent::ConfigChanged { .. } => { - self.config.replace(Configuration::clone_from_ptr( - NonNull::new_unchecked( - (*native_app.as_ptr()).config, - ), - )); + ffi::APP_CMD_INIT_WINDOW => Some(MainEvent::InitWindow {}), + ffi::APP_CMD_TERM_WINDOW => Some(MainEvent::TerminateWindow {}), + ffi::APP_CMD_WINDOW_RESIZED => { + Some(MainEvent::WindowResized {}) } - MainEvent::InitWindow { .. } => { - let win_ptr = (*native_app.as_ptr()).window; - // It's important that we use ::clone_from_ptr() here - // because NativeWindow has a Drop implementation that - // will unconditionally _release() the native window - *self.native_window.write().unwrap() = - Some(NativeWindow::clone_from_ptr( - NonNull::new(win_ptr).unwrap(), + ffi::APP_CMD_WINDOW_REDRAW_NEEDED => { + Some(MainEvent::RedrawNeeded {}) + } + ffi::APP_CMD_CONTENT_RECT_CHANGED => { + Some(MainEvent::ContentRectChanged {}) + } + ffi::APP_CMD_GAINED_FOCUS => Some(MainEvent::GainedFocus), + ffi::APP_CMD_LOST_FOCUS => Some(MainEvent::LostFocus), + ffi::APP_CMD_CONFIG_CHANGED => { + Some(MainEvent::ConfigChanged {}) + } + ffi::APP_CMD_LOW_MEMORY => Some(MainEvent::LowMemory), + ffi::APP_CMD_START => Some(MainEvent::Start), + ffi::APP_CMD_RESUME => Some(MainEvent::Resume { + loader: StateLoader { app: &self }, + }), + ffi::APP_CMD_SAVE_STATE => Some(MainEvent::SaveState { + saver: StateSaver { app: &self }, + }), + ffi::APP_CMD_PAUSE => Some(MainEvent::Pause), + ffi::APP_CMD_STOP => Some(MainEvent::Stop), + ffi::APP_CMD_DESTROY => Some(MainEvent::Destroy), + + //ffi::NativeAppGlueAppCmd_APP_CMD_WINDOW_INSETS_CHANGED => MainEvent::InsetsChanged {}, + _ => unreachable!(), + }; + + trace!("Calling android_app_pre_exec_cmd({cmd_i})"); + android_app_pre_exec_cmd(native_app.as_ptr(), cmd_i); + + if let Some(cmd) = cmd { + trace!("Read ID_MAIN command {cmd_i} = {cmd:?}"); + match cmd { + MainEvent::ConfigChanged { .. } => { + self.config.replace(Configuration::clone_from_ptr( + NonNull::new_unchecked( + (*native_app.as_ptr()).config, + ), )); + } + MainEvent::InitWindow { .. } => { + let win_ptr = (*native_app.as_ptr()).window; + // It's important that we use ::clone_from_ptr() here + // because NativeWindow has a Drop implementation that + // will unconditionally _release() the native window + *self.native_window.write().unwrap() = + Some(NativeWindow::clone_from_ptr( + NonNull::new(win_ptr).unwrap(), + )); + } + MainEvent::TerminateWindow { .. } => { + *self.native_window.write().unwrap() = None; + } + _ => {} } - MainEvent::TerminateWindow { .. } => { - *self.native_window.write().unwrap() = None; - } - _ => {} + + trace!("Invoking callback for ID_MAIN command = {:?}", cmd); + callback(PollEvent::Main(cmd)); } - trace!("Invoking callback for ID_MAIN command = {:?}", cmd); - callback(PollEvent::Main(cmd)); + trace!("Calling android_app_post_exec_cmd({cmd_i})"); + android_app_post_exec_cmd(native_app.as_ptr(), cmd_i); } - - trace!("Calling android_app_post_exec_cmd({cmd_i})"); - ffi::android_app_post_exec_cmd(native_app.as_ptr(), cmd_i); } else { panic!("ALooper_pollAll returned ID_MAIN event with NULL android_poll_source!"); } @@ -315,7 +380,7 @@ impl AndroidAppInner { // input events then we only send one `InputAvailable` per iteration of input // handling. We re-attach the looper when the application calls // `AndroidApp::input_events()` - ffi::android_app_detach_input_queue_looper(native_app.as_ptr()); + android_app_detach_input_queue_looper(native_app.as_ptr()); callback(PollEvent::Main(MainEvent::InputAvailable)) } _ => { @@ -373,7 +438,7 @@ impl AndroidAppInner { let na = self.native_activity(); let na_mut = na as *mut ndk_sys::ANativeActivity; unsafe { - ffi::ANativeActivity_setWindowFlags( + ndk_sys::ANativeActivity_setWindowFlags( na_mut.cast(), add_flags.bits(), remove_flags.bits(), @@ -386,11 +451,11 @@ impl AndroidAppInner { let na = self.native_activity(); unsafe { let flags = if show_implicit { - ffi::ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT + ndk_sys::ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT } else { 0 }; - ffi::ANativeActivity_showSoftInput(na as *mut _, flags); + ndk_sys::ANativeActivity_showSoftInput(na as *mut _, flags); } } @@ -399,11 +464,11 @@ impl AndroidAppInner { let na = self.native_activity(); unsafe { let flags = if hide_implicit_only { - ffi::ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY + ndk_sys::ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY } else { 0 }; - ffi::ANativeActivity_hideSoftInput(na as *mut _, flags); + ndk_sys::ANativeActivity_hideSoftInput(na as *mut _, flags); } } @@ -427,7 +492,7 @@ impl AndroidAppInner { // Reattach the input queue to the looper so future input will again deliver an // `InputAvailable` event. - ffi::android_app_attach_input_queue_looper(app_ptr); + android_app_attach_input_queue_looper(app_ptr); let queue = NonNull::new_unchecked((*app_ptr).inputQueue); InputQueue::from_ptr(queue) @@ -484,6 +549,175 @@ impl AndroidAppInner { // Rust-side event loop //////////////////////////// +unsafe fn free_saved_state(android_app: *mut ffi::android_app) { + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + if (*android_app).savedState != ptr::null_mut() { + libc::free((*android_app).savedState); + (*android_app).savedState = ptr::null_mut(); + (*android_app).savedStateSize = 0; + } + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); +} + +unsafe fn android_app_read_cmd(android_app: *mut ffi::android_app) -> Option { + let mut cmd: i8 = 0; + loop { + match libc::read((*android_app).msgread, &mut cmd as *mut _ as *mut _, 1) { + 1 => { + match cmd as libc::c_uint { + ffi::APP_CMD_SAVE_STATE => { + free_saved_state(android_app); + } + _ => {} + } + return Some(cmd); + } + -1 => { + let err = std::io::Error::last_os_error(); + if err.kind() != std::io::ErrorKind::Interrupted { + log::error!("Failure reading android_app cmd: {}", err); + return None; + } + } + count => { + log::error!("Spurious read of {count} bytes while reading android_app cmd"); + return None; + } + } + } +} + +unsafe fn print_cur_config(android_app: *mut ffi::android_app) { + let mut lang = [0u8; 2]; + ndk_sys::AConfiguration_getLanguage((*android_app).config, lang[..].as_mut_ptr()); + let lang = if lang[0] == 0 { + " ".to_owned() + } else { + std::str::from_utf8(&lang[..]).unwrap().to_owned() + }; + let mut country = " ".to_owned(); + ndk_sys::AConfiguration_getCountry((*android_app).config, country.as_mut_ptr() as *mut _); + + ndk_sys::AConfiguration_getCountry((*android_app).config, country[..].as_mut_ptr()); + + log::debug!("Config: mcc={} mnc={} lang={} cnt={} orien={} touch={} dens={} keys={} nav={} keysHid={} navHid={} sdk={} size={} long={} modetype={} modenight={}", + ndk_sys::AConfiguration_getMcc((*android_app).config), + ndk_sys::AConfiguration_getMnc((*android_app).config), + lang, + country, + ndk_sys::AConfiguration_getOrientation((*android_app).config), + ndk_sys::AConfiguration_getTouchscreen((*android_app).config), + ndk_sys::AConfiguration_getDensity((*android_app).config), + ndk_sys::AConfiguration_getKeyboard((*android_app).config), + ndk_sys::AConfiguration_getNavigation((*android_app).config), + ndk_sys::AConfiguration_getKeysHidden((*android_app).config), + ndk_sys::AConfiguration_getNavHidden((*android_app).config), + ndk_sys::AConfiguration_getSdkVersion((*android_app).config), + ndk_sys::AConfiguration_getScreenSize((*android_app).config), + ndk_sys::AConfiguration_getScreenLong((*android_app).config), + ndk_sys::AConfiguration_getUiModeType((*android_app).config), + ndk_sys::AConfiguration_getUiModeNight((*android_app).config)); +} + +unsafe fn android_app_attach_input_queue_looper(android_app: *mut ffi::android_app) { + if (*android_app).inputQueue != ptr::null_mut() { + log::debug!("Attaching input queue to looper"); + ndk_sys::AInputQueue_attachLooper((*android_app).inputQueue, + (*android_app).looper, ffi::LOOPER_ID_INPUT as libc::c_int, None, + &mut (*android_app).inputPollSource as *mut _ as *mut _); + } +} + +unsafe fn android_app_detach_input_queue_looper(android_app: *mut ffi::android_app) { + if (*android_app).inputQueue != ptr::null_mut() { + log::debug!("Detaching input queue from looper"); + ndk_sys::AInputQueue_detachLooper((*android_app).inputQueue); + } +} + +unsafe fn android_app_pre_exec_cmd(android_app: *mut ffi::android_app, cmd: i8) { + match cmd as libc::c_uint { + ffi::APP_CMD_INPUT_CHANGED => { + log::debug!("APP_CMD_INPUT_CHANGED\n"); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + if (*android_app).inputQueue != ptr::null_mut() { + android_app_detach_input_queue_looper(android_app); + } + (*android_app).inputQueue = (*android_app).pendingInputQueue; + if (*android_app).inputQueue != ptr::null_mut() { + android_app_attach_input_queue_looper(android_app); + } + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + } + ffi::APP_CMD_INIT_WINDOW => { + log::debug!("APP_CMD_INIT_WINDOW"); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).window = (*android_app).pendingWindow; + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + } + ffi::APP_CMD_TERM_WINDOW => { + log::debug!("APP_CMD_TERM_WINDOW"); + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + } + ffi::APP_CMD_RESUME | ffi::APP_CMD_START | ffi::APP_CMD_PAUSE | ffi::APP_CMD_STOP => { + log::debug!("activityState={}", cmd); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).activityState = cmd as i32; + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + } + ffi::APP_CMD_CONFIG_CHANGED => { + log::debug!("APP_CMD_CONFIG_CHANGED"); + ndk_sys::AConfiguration_fromAssetManager((*android_app).config, + (*(*android_app).activity).assetManager); + print_cur_config(android_app); + } + ffi::APP_CMD_DESTROY => { + log::debug!("APP_CMD_DESTROY"); + (*android_app).destroyRequested = 1; + } + _ => {} + } +} + +unsafe fn android_app_post_exec_cmd(android_app: *mut ffi::android_app, cmd: i8) { + match cmd as libc::c_uint { + ffi::APP_CMD_TERM_WINDOW => { + log::debug!("APP_CMD_TERM_WINDOW"); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).window = ptr::null_mut(); + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + } + ffi::APP_CMD_SAVE_STATE => { + log::debug!("APP_CMD_SAVE_STATE"); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + (*android_app).stateSaved = 1; + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + } + ffi::APP_CMD_RESUME => { + free_saved_state(android_app); + } + _ => { } + } +} + +unsafe fn android_app_destroy(android_app: *mut ffi::android_app) { + log::debug!("android_app_destroy!"); + free_saved_state(android_app); + libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); + if (*android_app).inputQueue != ptr::null_mut() { + ndk_sys::AInputQueue_detachLooper((*android_app).inputQueue); + } + ndk_sys::AConfiguration_delete((*android_app).config); + (*android_app).destroyed = 1; + libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); + libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); + // Can't touch android_app object after this. +} extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { unsafe { @@ -492,11 +726,11 @@ extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { (*android_app).config = ndk_sys::AConfiguration_new(); ndk_sys::AConfiguration_fromAssetManager((*android_app).config, (*(*android_app).activity).assetManager); - ffi::print_cur_config(android_app); + print_cur_config(android_app); (*android_app).cmdPollSource.id = ffi::LOOPER_ID_MAIN as i32; (*android_app).cmdPollSource.app = android_app; - (*android_app).cmdPollSource.process = Some(ffi::process_cmd); + (*android_app).cmdPollSource.process = None; let looper = ndk_sys::ALooper_prepare(ndk_sys::ALOOPER_PREPARE_ALLOW_NON_CALLBACKS as libc::c_int); ndk_sys::ALooper_addFd(looper, (*android_app).msgread, ffi::LOOPER_ID_MAIN as libc::c_int, ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, None, @@ -510,7 +744,7 @@ extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { _rust_glue_entry(android_app); - ffi::android_app_destroy(android_app); + android_app_destroy(android_app); ptr::null_mut() } @@ -522,7 +756,7 @@ extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { /////////////////////////////// -unsafe fn android_app_create(activity: *mut ffi::ANativeActivity, +unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::android_app { let mut msgpipe: [libc::c_int; 2] = [ -1, -1 ]; @@ -660,7 +894,7 @@ unsafe fn android_app_set_activity_state(android_app: *mut ffi::android_app, cmd libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } -unsafe extern "C" fn on_destroy(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Destroy: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); @@ -668,20 +902,20 @@ unsafe extern "C" fn on_destroy(activity: *mut ffi::ANativeActivity) { android_app_drop(android_app); } -unsafe extern "C" fn on_start(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_start(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Start: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_activity_state(android_app, ffi::APP_CMD_START as i8); } -unsafe extern "C" fn on_resume(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_resume(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Resume: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); } -unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, out_len: *mut libc::size_t) -> *mut libc::c_void { +unsafe extern "C" fn on_save_instance_state(activity: *mut ndk_sys::ANativeActivity, out_len: *mut ndk_sys::size_t) -> *mut libc::c_void { let android_app: *mut ffi::android_app = (*activity).instance.cast(); let mut saved_state: *mut libc::c_void = ptr::null_mut(); @@ -695,7 +929,7 @@ unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, if (*android_app).savedState != ptr::null_mut() { saved_state = (*android_app).savedState; - *out_len = (*android_app).savedStateSize; + *out_len = (*android_app).savedStateSize as _; (*android_app).savedState = ptr::null_mut(); (*android_app).savedStateSize = 0; } @@ -705,56 +939,56 @@ unsafe extern "C" fn on_save_instance_state(activity: *mut ffi::ANativeActivity, return saved_state; } -unsafe extern "C" fn on_pause(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_pause(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Pause: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_activity_state(android_app, ffi::APP_CMD_PAUSE as i8); } -unsafe extern "C" fn on_stop(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_stop(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Stop: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_activity_state(android_app, ffi::APP_CMD_STOP as i8); } -unsafe extern "C" fn on_configuration_changed(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_configuration_changed(activity: *mut ndk_sys::ANativeActivity) { log::debug!("ConfigurationChanged: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_write_cmd(android_app, ffi::APP_CMD_CONFIG_CHANGED as i8); } -unsafe extern "C" fn on_low_memory(activity: *mut ffi::ANativeActivity) { +unsafe extern "C" fn on_low_memory(activity: *mut ndk_sys::ANativeActivity) { log::debug!("LowMemory: {:p}\n", activity); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_write_cmd(android_app, ffi::APP_CMD_LOW_MEMORY as i8); } -unsafe extern "C" fn on_window_focus_changed(activity: *mut ffi::ANativeActivity, focused: libc::c_int) { +unsafe extern "C" fn on_window_focus_changed(activity: *mut ndk_sys::ANativeActivity, focused: libc::c_int) { log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_write_cmd(android_app, if focused != 0 { ffi::APP_CMD_GAINED_FOCUS as i8 } else { ffi::APP_CMD_LOST_FOCUS as i8}); } -unsafe extern "C" fn on_native_window_created(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { +unsafe extern "C" fn on_native_window_created(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_window(android_app, window); } -unsafe extern "C" fn on_native_window_destroyed(activity: *mut ffi::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { +unsafe extern "C" fn on_native_window_destroyed(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_window(android_app, ptr::null_mut()); } -unsafe extern "C" fn on_input_queue_created(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { +unsafe extern "C" fn on_input_queue_created(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_input(android_app, queue); } -unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ffi::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { +unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); let android_app: *mut ffi::android_app = (*activity).instance.cast(); android_app_set_input(android_app, ptr::null_mut()); @@ -762,7 +996,7 @@ unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ffi::ANativeActivit #[no_mangle] unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut ffi::ANativeActivity, + activity: *mut ndk_sys::ANativeActivity, saved_state: *const libc::c_void, saved_state_size: libc::size_t, ) { From 2870a84fbef984627469a4b09ffdd2660ff6ffb5 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sun, 2 Oct 2022 16:35:29 +0100 Subject: [PATCH 06/12] native-activity: rename ported android_app state to be more idiomatic --- android-activity/src/native_activity/mod.rs | 482 ++++++++++---------- 1 file changed, 252 insertions(+), 230 deletions(-) diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index e923a4a..3753362 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -60,10 +60,10 @@ impl<'a> StateSaver<'a> { // In case the application calls store() multiple times for some reason we // make sure to free any pre-existing state... - if (*app_ptr).savedState != ptr::null_mut() { - libc::free((*app_ptr).savedState); - (*app_ptr).savedState = ptr::null_mut(); - (*app_ptr).savedStateSize = 0; + if (*app_ptr).saved_state != ptr::null_mut() { + libc::free((*app_ptr).saved_state); + (*app_ptr).saved_state = ptr::null_mut(); + (*app_ptr).saved_state_size = 0; } let buf = libc::malloc(state.len()); @@ -80,8 +80,8 @@ impl<'a> StateSaver<'a> { buf.copy_from_slice(state); } - (*app_ptr).savedState = buf; - (*app_ptr).savedStateSize = state.len() as _; + (*app_ptr).saved_state = buf; + (*app_ptr).saved_state_size = state.len() as _; } } } @@ -94,10 +94,10 @@ impl<'a> StateLoader<'a> { pub fn load(&self) -> Option> { unsafe { let app_ptr = self.app.native_app.as_ptr(); - if (*app_ptr).savedState != ptr::null_mut() && (*app_ptr).savedStateSize > 0 { + if (*app_ptr).saved_state != ptr::null_mut() && (*app_ptr).saved_state_size > 0 { let buf: &mut [u8] = std::slice::from_raw_parts_mut( - (*app_ptr).savedState.cast(), - (*app_ptr).savedStateSize as usize, + (*app_ptr).saved_state.cast(), + (*app_ptr).saved_state_size as usize, ); let state = buf.to_vec(); Some(state) @@ -127,74 +127,97 @@ impl AndroidAppWaker { } /// These are the original C structs / constants from android_native_app_glue.c naively -/// ported to Rust via bindgen. +/// ported to Rust. /// /// TODO: start integrating all this state directly into `AndroidApp`/`NativeAppGlue` mod ffi { - pub const LOOPER_ID_MAIN: ::std::os::raw::c_uint = 1; - pub const LOOPER_ID_INPUT: ::std::os::raw::c_uint = 2; + pub const LOOPER_ID_MAIN: libc::c_uint = 1; + pub const LOOPER_ID_INPUT: libc::c_uint = 2; //pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; - pub const APP_CMD_INPUT_CHANGED: ::std::os::raw::c_uint = 0; - pub const APP_CMD_INIT_WINDOW: ::std::os::raw::c_uint = 1; - pub const APP_CMD_TERM_WINDOW: ::std::os::raw::c_uint = 2; - pub const APP_CMD_WINDOW_RESIZED: ::std::os::raw::c_uint = 3; - pub const APP_CMD_WINDOW_REDRAW_NEEDED: ::std::os::raw::c_uint = 4; - pub const APP_CMD_CONTENT_RECT_CHANGED: ::std::os::raw::c_uint = 5; - pub const APP_CMD_GAINED_FOCUS: ::std::os::raw::c_uint = 6; - pub const APP_CMD_LOST_FOCUS: ::std::os::raw::c_uint = 7; - pub const APP_CMD_CONFIG_CHANGED: ::std::os::raw::c_uint = 8; - pub const APP_CMD_LOW_MEMORY: ::std::os::raw::c_uint = 9; - pub const APP_CMD_START: ::std::os::raw::c_uint = 10; - pub const APP_CMD_RESUME: ::std::os::raw::c_uint = 11; - pub const APP_CMD_SAVE_STATE: ::std::os::raw::c_uint = 12; - pub const APP_CMD_PAUSE: ::std::os::raw::c_uint = 13; - pub const APP_CMD_STOP: ::std::os::raw::c_uint = 14; - pub const APP_CMD_DESTROY: ::std::os::raw::c_uint = 15; + #[derive(Clone, Copy, Eq, PartialEq, Debug)] + pub enum AppCmd { + InputChanged = 0, + InitWindow = 1, + TermWindow = 2, + WindowResized = 3, + WindowRedrawNeeded = 4, + ContentRectChanged = 5, + GainedFocus = 6, + LostFocus = 7, + ConfigChanged = 8, + LowMemory = 9, + Start = 10, + Resume = 11, + SaveState = 12, + Pause = 13, + Stop = 14, + Destroy = 15, + } + impl TryFrom for AppCmd { + type Error = (); - pub struct android_poll_source { + fn try_from(value: i8) -> Result { + match value { + 0 => Ok(AppCmd::InputChanged), + 1 => Ok(AppCmd::InitWindow), + 2 => Ok(AppCmd::TermWindow), + 3 => Ok(AppCmd::WindowResized), + 4 => Ok(AppCmd::WindowRedrawNeeded), + 5 => Ok(AppCmd::ContentRectChanged), + 6 => Ok(AppCmd::GainedFocus), + 7 => Ok(AppCmd::LostFocus), + 8 => Ok(AppCmd::ConfigChanged), + 9 => Ok(AppCmd::LowMemory), + 10 => Ok(AppCmd::Start), + 11 => Ok(AppCmd::Resume), + 12 => Ok(AppCmd::SaveState), + 13 => Ok(AppCmd::Pause), + 14 => Ok(AppCmd::Stop), + 15 => Ok(AppCmd::Destroy), + _ => Err(()) + } + } + } + + pub struct NativeActivityPollSource { pub id: i32, - pub app: *mut android_app, + pub app: *mut NativeActivityGlue, pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, source: *mut android_poll_source), + unsafe extern "C" fn(app: *mut NativeActivityGlue, source: *mut NativeActivityPollSource), >, } - pub struct android_app { - pub userData: *mut ::std::os::raw::c_void, - pub onAppCmd: ::std::option::Option, - pub onInputEvent: ::std::option::Option< - unsafe extern "C" fn(app: *mut android_app, event: *mut ndk_sys::AInputEvent) -> i32, - >, + pub struct NativeActivityGlue { pub activity: *mut ndk_sys::ANativeActivity, pub config: *mut ndk_sys::AConfiguration, - pub savedState: *mut ::std::os::raw::c_void, - pub savedStateSize: libc::size_t, + pub saved_state: *mut libc::c_void, + pub saved_state_size: libc::size_t, pub looper: *mut ndk_sys::ALooper, - pub inputQueue: *mut ndk_sys::AInputQueue, + pub input_queue: *mut ndk_sys::AInputQueue, pub window: *mut ndk_sys::ANativeWindow, - pub contentRect: ndk_sys::ARect, - pub activityState: ::std::os::raw::c_int, - pub destroyRequested: ::std::os::raw::c_int, + pub content_rect: ndk_sys::ARect, + pub activity_state: libc::c_int, + pub destroy_requested: bool, pub mutex: libc::pthread_mutex_t, pub cond: libc::pthread_cond_t, - pub msgread: ::std::os::raw::c_int, - pub msgwrite: ::std::os::raw::c_int, + pub msg_read: libc::c_int, + pub msg_write: libc::c_int, pub thread: libc::pthread_t, - pub cmdPollSource: android_poll_source, - pub inputPollSource: android_poll_source, - pub running: ::std::os::raw::c_int, - pub stateSaved: ::std::os::raw::c_int, - pub destroyed: ::std::os::raw::c_int, - pub redrawNeeded: ::std::os::raw::c_int, - pub pendingInputQueue: *mut ndk_sys::AInputQueue, - pub pendingWindow: *mut ndk_sys::ANativeWindow, - pub pendingContentRect: ndk_sys::ARect, + pub cmd_poll_source: NativeActivityPollSource, + pub input_poll_source: NativeActivityPollSource, + pub running: bool, + pub state_saved: bool, + pub destroyed: bool, + pub redraw_needed: bool, + pub pending_input_queue: *mut ndk_sys::AInputQueue, + pub pending_window: *mut ndk_sys::ANativeWindow, + pub pending_content_rect: ndk_sys::ARect, } } impl AndroidApp { - pub(crate) unsafe fn from_ptr(ptr: NonNull) -> AndroidApp { + pub(crate) unsafe fn from_ptr(ptr: NonNull) -> AndroidApp { // Note: we don't use from_ptr since we don't own the android_app.config // and need to keep in mind that the Drop handler is going to call // AConfiguration_delete() @@ -212,10 +235,10 @@ impl AndroidApp { #[derive(Debug)] struct NativeAppGlue { - ptr: NonNull, + ptr: NonNull, } impl Deref for NativeAppGlue { - type Target = NonNull; + type Target = NonNull; fn deref(&self) -> &Self::Target { &self.ptr @@ -292,53 +315,50 @@ impl AndroidAppInner { match id as u32 { ffi::LOOPER_ID_MAIN => { trace!("ALooper_pollAll returned ID_MAIN"); - let source: *mut ffi::android_poll_source = source.cast(); + let source: *mut ffi::NativeActivityPollSource = source.cast(); if source != ptr::null_mut() { - if let Some(cmd_i) = android_app_read_cmd(native_app.as_ptr()) { - let cmd = match cmd_i as libc::c_uint { + if let Some(ipc_cmd) = android_app_read_cmd(native_app.as_ptr()) { + let main_cmd = match ipc_cmd { // We don't forward info about the AInputQueue to apps since it's // an implementation details that's also not compatible with // GameActivity - ffi::APP_CMD_INPUT_CHANGED => None, + ffi::AppCmd::InputChanged => None, - ffi::APP_CMD_INIT_WINDOW => Some(MainEvent::InitWindow {}), - ffi::APP_CMD_TERM_WINDOW => Some(MainEvent::TerminateWindow {}), - ffi::APP_CMD_WINDOW_RESIZED => { + ffi::AppCmd::InitWindow => Some(MainEvent::InitWindow {}), + ffi::AppCmd::TermWindow => Some(MainEvent::TerminateWindow {}), + ffi::AppCmd::WindowResized => { Some(MainEvent::WindowResized {}) } - ffi::APP_CMD_WINDOW_REDRAW_NEEDED => { + ffi::AppCmd::WindowRedrawNeeded => { Some(MainEvent::RedrawNeeded {}) } - ffi::APP_CMD_CONTENT_RECT_CHANGED => { + ffi::AppCmd::ContentRectChanged => { Some(MainEvent::ContentRectChanged {}) } - ffi::APP_CMD_GAINED_FOCUS => Some(MainEvent::GainedFocus), - ffi::APP_CMD_LOST_FOCUS => Some(MainEvent::LostFocus), - ffi::APP_CMD_CONFIG_CHANGED => { + ffi::AppCmd::GainedFocus => Some(MainEvent::GainedFocus), + ffi::AppCmd::LostFocus => Some(MainEvent::LostFocus), + ffi::AppCmd::ConfigChanged => { Some(MainEvent::ConfigChanged {}) } - ffi::APP_CMD_LOW_MEMORY => Some(MainEvent::LowMemory), - ffi::APP_CMD_START => Some(MainEvent::Start), - ffi::APP_CMD_RESUME => Some(MainEvent::Resume { + ffi::AppCmd::LowMemory => Some(MainEvent::LowMemory), + ffi::AppCmd::Start => Some(MainEvent::Start), + ffi::AppCmd::Resume => Some(MainEvent::Resume { loader: StateLoader { app: &self }, }), - ffi::APP_CMD_SAVE_STATE => Some(MainEvent::SaveState { + ffi::AppCmd::SaveState => Some(MainEvent::SaveState { saver: StateSaver { app: &self }, }), - ffi::APP_CMD_PAUSE => Some(MainEvent::Pause), - ffi::APP_CMD_STOP => Some(MainEvent::Stop), - ffi::APP_CMD_DESTROY => Some(MainEvent::Destroy), - - //ffi::NativeAppGlueAppCmd_APP_CMD_WINDOW_INSETS_CHANGED => MainEvent::InsetsChanged {}, - _ => unreachable!(), + ffi::AppCmd::Pause => Some(MainEvent::Pause), + ffi::AppCmd::Stop => Some(MainEvent::Stop), + ffi::AppCmd::Destroy => Some(MainEvent::Destroy), }; - trace!("Calling android_app_pre_exec_cmd({cmd_i})"); - android_app_pre_exec_cmd(native_app.as_ptr(), cmd_i); + trace!("Calling android_app_pre_exec_cmd({ipc_cmd:#?})"); + android_app_pre_exec_cmd(native_app.as_ptr(), ipc_cmd); - if let Some(cmd) = cmd { - trace!("Read ID_MAIN command {cmd_i} = {cmd:?}"); - match cmd { + if let Some(main_cmd) = main_cmd { + trace!("Read ID_MAIN command {ipc_cmd:#?} = {main_cmd:#?}"); + match main_cmd { MainEvent::ConfigChanged { .. } => { self.config.replace(Configuration::clone_from_ptr( NonNull::new_unchecked( @@ -362,12 +382,12 @@ impl AndroidAppInner { _ => {} } - trace!("Invoking callback for ID_MAIN command = {:?}", cmd); - callback(PollEvent::Main(cmd)); + trace!("Invoking callback for ID_MAIN command = {main_cmd:?}"); + callback(PollEvent::Main(main_cmd)); } - trace!("Calling android_app_post_exec_cmd({cmd_i})"); - android_app_post_exec_cmd(native_app.as_ptr(), cmd_i); + trace!("Calling android_app_post_exec_cmd({ipc_cmd:#?})"); + android_app_post_exec_cmd(native_app.as_ptr(), ipc_cmd); } } else { panic!("ALooper_pollAll returned ID_MAIN event with NULL android_poll_source!"); @@ -414,10 +434,10 @@ impl AndroidAppInner { unsafe { let app_ptr = self.native_app.as_ptr(); Rect { - left: (*app_ptr).contentRect.left, - right: (*app_ptr).contentRect.right, - top: (*app_ptr).contentRect.top, - bottom: (*app_ptr).contentRect.bottom, + left: (*app_ptr).content_rect.left, + right: (*app_ptr).content_rect.right, + top: (*app_ptr).content_rect.top, + bottom: (*app_ptr).content_rect.bottom, } } } @@ -486,7 +506,7 @@ impl AndroidAppInner { { let queue = unsafe { let app_ptr = self.native_app.as_ptr(); - if (*app_ptr).inputQueue == ptr::null_mut() { + if (*app_ptr).input_queue == ptr::null_mut() { return; } @@ -494,7 +514,7 @@ impl AndroidAppInner { // `InputAvailable` event. android_app_attach_input_queue_looper(app_ptr); - let queue = NonNull::new_unchecked((*app_ptr).inputQueue); + let queue = NonNull::new_unchecked((*app_ptr).input_queue); InputQueue::from_ptr(queue) }; @@ -549,45 +569,50 @@ impl AndroidAppInner { // Rust-side event loop //////////////////////////// -unsafe fn free_saved_state(android_app: *mut ffi::android_app) { +unsafe fn free_saved_state(android_app: *mut ffi::NativeActivityGlue) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).savedState != ptr::null_mut() { - libc::free((*android_app).savedState); - (*android_app).savedState = ptr::null_mut(); - (*android_app).savedStateSize = 0; + if (*android_app).saved_state != ptr::null_mut() { + libc::free((*android_app).saved_state); + (*android_app).saved_state = ptr::null_mut(); + (*android_app).saved_state_size = 0; } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } -unsafe fn android_app_read_cmd(android_app: *mut ffi::android_app) -> Option { - let mut cmd: i8 = 0; +unsafe fn android_app_read_cmd(android_app: *mut ffi::NativeActivityGlue) -> Option { + let mut cmd_i: i8 = 0; loop { - match libc::read((*android_app).msgread, &mut cmd as *mut _ as *mut _, 1) { + match libc::read((*android_app).msg_read, &mut cmd_i as *mut _ as *mut _, 1) { 1 => { - match cmd as libc::c_uint { - ffi::APP_CMD_SAVE_STATE => { + let cmd = ffi::AppCmd::try_from(cmd_i); + return match cmd { + Ok(ffi::AppCmd::SaveState) => { free_saved_state(android_app); + Some(ffi::AppCmd::SaveState) } - _ => {} - } - return Some(cmd); + Ok(cmd) => Some(cmd), + Err(_) => { + log::error!("Spurious, unknown NativeActivityGlue cmd: {}", cmd_i); + None + } + }; } -1 => { let err = std::io::Error::last_os_error(); if err.kind() != std::io::ErrorKind::Interrupted { - log::error!("Failure reading android_app cmd: {}", err); + log::error!("Failure reading NativeActivityGlue cmd: {}", err); return None; } } count => { - log::error!("Spurious read of {count} bytes while reading android_app cmd"); + log::error!("Spurious read of {count} bytes while reading NativeActivityGlue cmd"); return None; } } } } -unsafe fn print_cur_config(android_app: *mut ffi::android_app) { +unsafe fn print_cur_config(android_app: *mut ffi::NativeActivityGlue) { let mut lang = [0u8; 2]; ndk_sys::AConfiguration_getLanguage((*android_app).config, lang[..].as_mut_ptr()); let lang = if lang[0] == 0 { @@ -619,101 +644,101 @@ unsafe fn print_cur_config(android_app: *mut ffi::android_app) { ndk_sys::AConfiguration_getUiModeNight((*android_app).config)); } -unsafe fn android_app_attach_input_queue_looper(android_app: *mut ffi::android_app) { - if (*android_app).inputQueue != ptr::null_mut() { +unsafe fn android_app_attach_input_queue_looper(android_app: *mut ffi::NativeActivityGlue) { + if (*android_app).input_queue != ptr::null_mut() { log::debug!("Attaching input queue to looper"); - ndk_sys::AInputQueue_attachLooper((*android_app).inputQueue, + ndk_sys::AInputQueue_attachLooper((*android_app).input_queue, (*android_app).looper, ffi::LOOPER_ID_INPUT as libc::c_int, None, - &mut (*android_app).inputPollSource as *mut _ as *mut _); + &mut (*android_app).input_poll_source as *mut _ as *mut _); } } -unsafe fn android_app_detach_input_queue_looper(android_app: *mut ffi::android_app) { - if (*android_app).inputQueue != ptr::null_mut() { +unsafe fn android_app_detach_input_queue_looper(android_app: *mut ffi::NativeActivityGlue) { + if (*android_app).input_queue != ptr::null_mut() { log::debug!("Detaching input queue from looper"); - ndk_sys::AInputQueue_detachLooper((*android_app).inputQueue); + ndk_sys::AInputQueue_detachLooper((*android_app).input_queue); } } -unsafe fn android_app_pre_exec_cmd(android_app: *mut ffi::android_app, cmd: i8) { - match cmd as libc::c_uint { - ffi::APP_CMD_INPUT_CHANGED => { - log::debug!("APP_CMD_INPUT_CHANGED\n"); +unsafe fn android_app_pre_exec_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: ffi::AppCmd) { + match cmd { + ffi::AppCmd::InputChanged => { + log::debug!("AppCmd::INPUT_CHANGED\n"); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).inputQueue != ptr::null_mut() { + if (*android_app).input_queue != ptr::null_mut() { android_app_detach_input_queue_looper(android_app); } - (*android_app).inputQueue = (*android_app).pendingInputQueue; - if (*android_app).inputQueue != ptr::null_mut() { + (*android_app).input_queue = (*android_app).pending_input_queue; + if (*android_app).input_queue != ptr::null_mut() { android_app_attach_input_queue_looper(android_app); } libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } - ffi::APP_CMD_INIT_WINDOW => { - log::debug!("APP_CMD_INIT_WINDOW"); + ffi::AppCmd::InitWindow => { + log::debug!("AppCmd::INIT_WINDOW"); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).window = (*android_app).pendingWindow; + (*android_app).window = (*android_app).pending_window; libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } - ffi::APP_CMD_TERM_WINDOW => { - log::debug!("APP_CMD_TERM_WINDOW"); + ffi::AppCmd::TermWindow => { + log::debug!("AppCmd::TERM_WINDOW"); libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); } - ffi::APP_CMD_RESUME | ffi::APP_CMD_START | ffi::APP_CMD_PAUSE | ffi::APP_CMD_STOP => { - log::debug!("activityState={}", cmd); + ffi::AppCmd::Resume | ffi::AppCmd::Start | ffi::AppCmd::Pause | ffi::AppCmd::Stop => { + log::debug!("activityState={:#?}", cmd); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).activityState = cmd as i32; + (*android_app).activity_state = cmd as i32; libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } - ffi::APP_CMD_CONFIG_CHANGED => { - log::debug!("APP_CMD_CONFIG_CHANGED"); + ffi::AppCmd::ConfigChanged => { + log::debug!("AppCmd::CONFIG_CHANGED"); ndk_sys::AConfiguration_fromAssetManager((*android_app).config, (*(*android_app).activity).assetManager); print_cur_config(android_app); } - ffi::APP_CMD_DESTROY => { - log::debug!("APP_CMD_DESTROY"); - (*android_app).destroyRequested = 1; + ffi::AppCmd::Destroy => { + log::debug!("AppCmd::DESTROY"); + (*android_app).destroy_requested = true; } - _ => {} + _ => { } } } -unsafe fn android_app_post_exec_cmd(android_app: *mut ffi::android_app, cmd: i8) { - match cmd as libc::c_uint { - ffi::APP_CMD_TERM_WINDOW => { - log::debug!("APP_CMD_TERM_WINDOW"); +unsafe fn android_app_post_exec_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: ffi::AppCmd) { + match cmd { + ffi::AppCmd::TermWindow => { + log::debug!("AppCmd::TERM_WINDOW"); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); (*android_app).window = ptr::null_mut(); libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } - ffi::APP_CMD_SAVE_STATE => { - log::debug!("APP_CMD_SAVE_STATE"); + ffi::AppCmd::SaveState => { + log::debug!("AppCmd::SAVE_STATE"); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).stateSaved = 1; + (*android_app).state_saved = true; libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } - ffi::APP_CMD_RESUME => { + ffi::AppCmd::Resume => { free_saved_state(android_app); } _ => { } } } -unsafe fn android_app_destroy(android_app: *mut ffi::android_app) { +unsafe fn android_app_destroy(android_app: *mut ffi::NativeActivityGlue) { log::debug!("android_app_destroy!"); free_saved_state(android_app); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).inputQueue != ptr::null_mut() { - ndk_sys::AInputQueue_detachLooper((*android_app).inputQueue); + if (*android_app).input_queue != ptr::null_mut() { + ndk_sys::AInputQueue_detachLooper((*android_app).input_queue); } ndk_sys::AConfiguration_delete((*android_app).config); - (*android_app).destroyed = 1; + (*android_app).destroyed = true; libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); // Can't touch android_app object after this. @@ -721,24 +746,24 @@ unsafe fn android_app_destroy(android_app: *mut ffi::android_app) { extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { unsafe { - let android_app: *mut ffi::android_app = arg.cast(); + let android_app: *mut ffi::NativeActivityGlue = arg.cast(); (*android_app).config = ndk_sys::AConfiguration_new(); ndk_sys::AConfiguration_fromAssetManager((*android_app).config, (*(*android_app).activity).assetManager); print_cur_config(android_app); - (*android_app).cmdPollSource.id = ffi::LOOPER_ID_MAIN as i32; - (*android_app).cmdPollSource.app = android_app; - (*android_app).cmdPollSource.process = None; + (*android_app).cmd_poll_source.id = ffi::LOOPER_ID_MAIN as i32; + (*android_app).cmd_poll_source.app = android_app; + (*android_app).cmd_poll_source.process = None; let looper = ndk_sys::ALooper_prepare(ndk_sys::ALOOPER_PREPARE_ALLOW_NON_CALLBACKS as libc::c_int); - ndk_sys::ALooper_addFd(looper, (*android_app).msgread, ffi::LOOPER_ID_MAIN as libc::c_int, ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, None, - &mut (*android_app).cmdPollSource as *mut _ as *mut _); + ndk_sys::ALooper_addFd(looper, (*android_app).msg_read, ffi::LOOPER_ID_MAIN as libc::c_int, ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, None, + &mut (*android_app).cmd_poll_source as *mut _ as *mut _); (*android_app).looper = looper; libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).running = 1; + (*android_app).running = true; libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); @@ -757,7 +782,7 @@ extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, - saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::android_app + saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::NativeActivityGlue { let mut msgpipe: [libc::c_int; 2] = [ -1, -1 ]; if libc::pipe(msgpipe.as_mut_ptr()) != 0 { @@ -773,34 +798,31 @@ unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, libc::memcpy(saved_state, saved_state_in, saved_state_size); } - let android_app = Box::into_raw(Box::new(ffi::android_app { - userData: ptr::null_mut(), - onAppCmd: None, - onInputEvent: None, + let android_app = Box::into_raw(Box::new(ffi::NativeActivityGlue { activity, config: ptr::null_mut(), - savedState: saved_state, - savedStateSize: saved_state_size, + saved_state, + saved_state_size, looper: ptr::null_mut(), - inputQueue: ptr::null_mut(), + input_queue: ptr::null_mut(), window: ptr::null_mut(), - contentRect: Rect::empty().into(), - activityState: 0, - destroyRequested: 0, + content_rect: Rect::empty().into(), + activity_state: 0, + destroy_requested: false, mutex: libc::PTHREAD_MUTEX_INITIALIZER, cond: libc::PTHREAD_COND_INITIALIZER, - msgread: msgpipe[0], - msgwrite: msgpipe[1], + msg_read: msgpipe[0], + msg_write: msgpipe[1], thread: 0, - cmdPollSource: ffi::android_poll_source { id: 0, app: ptr::null_mut(), process: None }, - inputPollSource: ffi::android_poll_source { id: 0, app: ptr::null_mut(), process: None }, - running: 0, - stateSaved: 0, - destroyed: 0, - redrawNeeded: 0, - pendingInputQueue: ptr::null_mut(), - pendingWindow: ptr::null_mut(), - pendingContentRect: Rect::empty().into(), + cmd_poll_source: ffi::NativeActivityPollSource { id: 0, app: ptr::null_mut(), process: None }, + input_poll_source: ffi::NativeActivityPollSource { id: 0, app: ptr::null_mut(), process: None }, + running: false, + state_saved: false, + destroyed: false, + redraw_needed: false, + pending_input_queue: ptr::null_mut(), + pending_window: ptr::null_mut(), + pending_content_rect: Rect::empty().into(), })); // TODO: use std::os::spawn and drop the handle to detach instead of directly @@ -816,7 +838,7 @@ unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, // TODO: switch to std::sync::Condvar // Wait for thread to start. libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - while (*android_app).running == 0 { + while (*android_app).running == false { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); @@ -824,16 +846,16 @@ unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, android_app } -unsafe fn android_app_drop(android_app: *mut ffi::android_app) { +unsafe fn android_app_drop(android_app: *mut ffi::NativeActivityGlue) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - android_app_write_cmd(android_app, ffi::APP_CMD_DESTROY as i8); - while !(*android_app).destroyed == 0 { + android_app_write_cmd(android_app, ffi::AppCmd::Destroy as i8); + while !(*android_app).destroyed == false { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - libc::close((*android_app).msgread); - libc::close((*android_app).msgwrite); + libc::close((*android_app).msg_read); + libc::close((*android_app).msg_write); libc::pthread_cond_destroy(&mut (*android_app).cond as *mut _); libc::pthread_mutex_destroy(&mut (*android_app).mutex as *mut _); @@ -841,54 +863,54 @@ unsafe fn android_app_drop(android_app: *mut ffi::android_app) { // Box dropped here } -unsafe fn android_app_write_cmd(android_app: *mut ffi::android_app, cmd: i8) { +unsafe fn android_app_write_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: i8) { loop { - match libc::write((*android_app).msgwrite, &cmd as *const _ as *const _, 1) { + match libc::write((*android_app).msg_write, &cmd as *const _ as *const _, 1) { 1 => break, -1 => { let err = std::io::Error::last_os_error(); if err.kind() != std::io::ErrorKind::Interrupted { - log::error!("Failure writing android_app cmd: {}", err); + log::error!("Failure writing NativeActivityGlue cmd: {}", err); return; } } count => { - log::error!("Spurious write of {count} bytes while writing android_app cmd"); + log::error!("Spurious write of {count} bytes while writing NativeActivityGlue cmd"); return; } } } } -unsafe fn android_app_set_input(android_app: *mut ffi::android_app, input_queue: *mut ndk_sys::AInputQueue) { +unsafe fn android_app_set_input(android_app: *mut ffi::NativeActivityGlue, input_queue: *mut ndk_sys::AInputQueue) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).pendingInputQueue = input_queue; - android_app_write_cmd(android_app, ffi::APP_CMD_INPUT_CHANGED as i8); - while (*android_app).inputQueue != (*android_app).pendingInputQueue { + (*android_app).pending_input_queue = input_queue; + android_app_write_cmd(android_app, ffi::AppCmd::InputChanged as i8); + while (*android_app).input_queue != (*android_app).pending_input_queue { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } -unsafe fn android_app_set_window(android_app: *mut ffi::android_app, window: *mut ndk_sys::ANativeWindow) { +unsafe fn android_app_set_window(android_app: *mut ffi::NativeActivityGlue, window: *mut ndk_sys::ANativeWindow) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).pendingWindow != ptr::null_mut() { - android_app_write_cmd(android_app, ffi::APP_CMD_TERM_WINDOW as i8); + if (*android_app).pending_window != ptr::null_mut() { + android_app_write_cmd(android_app, ffi::AppCmd::TermWindow as i8); } - (*android_app).pendingWindow = window; + (*android_app).pending_window = window; if window != ptr::null_mut() { - android_app_write_cmd(android_app, ffi::APP_CMD_INIT_WINDOW as i8); + android_app_write_cmd(android_app, ffi::AppCmd::InitWindow as i8); } - while (*android_app).window != (*android_app).pendingWindow { + while (*android_app).window != (*android_app).pending_window { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); } -unsafe fn android_app_set_activity_state(android_app: *mut ffi::android_app, cmd: i8) { +unsafe fn android_app_set_activity_state(android_app: *mut ffi::NativeActivityGlue, cmd: i8) { libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); android_app_write_cmd(android_app, cmd); - while (*android_app).activityState as i8 != cmd { + while (*android_app).activity_state as i8 != cmd { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); @@ -897,7 +919,7 @@ unsafe fn android_app_set_activity_state(android_app: *mut ffi::android_app, cmd unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Destroy: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); (*activity).instance = ptr::null_mut(); android_app_drop(android_app); } @@ -905,33 +927,33 @@ unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { unsafe extern "C" fn on_start(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Start: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::APP_CMD_START as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_set_activity_state(android_app, ffi::AppCmd::Start as i8); } unsafe extern "C" fn on_resume(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Resume: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::APP_CMD_RESUME as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_set_activity_state(android_app, ffi::AppCmd::Resume as i8); } unsafe extern "C" fn on_save_instance_state(activity: *mut ndk_sys::ANativeActivity, out_len: *mut ndk_sys::size_t) -> *mut libc::c_void { - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); let mut saved_state: *mut libc::c_void = ptr::null_mut(); log::debug!("SaveInstanceState: {:p}\n", activity); libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).stateSaved = 0; - android_app_write_cmd(android_app, ffi::APP_CMD_SAVE_STATE as i8); - while (*android_app).stateSaved == 0 { + (*android_app).state_saved = false; + android_app_write_cmd(android_app, ffi::AppCmd::SaveState as i8); + while (*android_app).state_saved == false { libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); } - if (*android_app).savedState != ptr::null_mut() { - saved_state = (*android_app).savedState; - *out_len = (*android_app).savedStateSize as _; - (*android_app).savedState = ptr::null_mut(); - (*android_app).savedStateSize = 0; + if (*android_app).saved_state != ptr::null_mut() { + saved_state = (*android_app).saved_state; + *out_len = (*android_app).saved_state_size as _; + (*android_app).saved_state = ptr::null_mut(); + (*android_app).saved_state_size = 0; } libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); @@ -941,56 +963,56 @@ unsafe extern "C" fn on_save_instance_state(activity: *mut ndk_sys::ANativeActiv unsafe extern "C" fn on_pause(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Pause: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::APP_CMD_PAUSE as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_set_activity_state(android_app, ffi::AppCmd::Pause as i8); } unsafe extern "C" fn on_stop(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Stop: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::APP_CMD_STOP as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_set_activity_state(android_app, ffi::AppCmd::Stop as i8); } unsafe extern "C" fn on_configuration_changed(activity: *mut ndk_sys::ANativeActivity) { log::debug!("ConfigurationChanged: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_write_cmd(android_app, ffi::APP_CMD_CONFIG_CHANGED as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_write_cmd(android_app, ffi::AppCmd::ConfigChanged as i8); } unsafe extern "C" fn on_low_memory(activity: *mut ndk_sys::ANativeActivity) { log::debug!("LowMemory: {:p}\n", activity); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); - android_app_write_cmd(android_app, ffi::APP_CMD_LOW_MEMORY as i8); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); + android_app_write_cmd(android_app, ffi::AppCmd::LowMemory as i8); } unsafe extern "C" fn on_window_focus_changed(activity: *mut ndk_sys::ANativeActivity, focused: libc::c_int) { log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); android_app_write_cmd(android_app, - if focused != 0 { ffi::APP_CMD_GAINED_FOCUS as i8 } else { ffi::APP_CMD_LOST_FOCUS as i8}); + if focused != 0 { ffi::AppCmd::GainedFocus as i8 } else { ffi::AppCmd::LostFocus as i8}); } unsafe extern "C" fn on_native_window_created(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); android_app_set_window(android_app, window); } unsafe extern "C" fn on_native_window_destroyed(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); android_app_set_window(android_app, ptr::null_mut()); } unsafe extern "C" fn on_input_queue_created(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); android_app_set_input(android_app, queue); } unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); - let android_app: *mut ffi::android_app = (*activity).instance.cast(); + let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); android_app_set_input(android_app, ptr::null_mut()); } @@ -1039,7 +1061,7 @@ extern "Rust" { // This is a spring board between android_native_app_glue and the user's // `app_main` function. This is run on a dedicated thread spawned // by android_native_app_glue. -pub unsafe fn _rust_glue_entry(app: *mut ffi::android_app) { +pub unsafe fn _rust_glue_entry(app: *mut ffi::NativeActivityGlue) { // Maybe make this stdout/stderr redirection an optional / opt-in feature?... let mut logpipe: [RawFd; 2] = Default::default(); libc::pipe(logpipe.as_mut_ptr()); From cd32b4a064bb07175985b631b14d48aa1346f3ad Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Fri, 7 Oct 2022 02:21:02 +0100 Subject: [PATCH 07/12] native-activity: re-work ported glue code into idiomatic Rust This is a fairly thorough re-working of all the code that was initially naively ported from android_native_app_glue.c to be more idiomatic Rust code (though by it's nature it still involves a lot of unsafe code) Most of the glue code now lives in src/native_activity/glue.rs as part of a NativeActivityGlue API The design as far as the threading model, IPC and synchronization goes is unchanged. --- android-activity/src/game_activity/ffi.rs | 4 +- android-activity/src/game_activity/mod.rs | 6 +- android-activity/src/lib.rs | 27 +- android-activity/src/native_activity/glue.rs | 876 +++++++++++++++++ android-activity/src/native_activity/mod.rs | 959 +++---------------- 5 files changed, 1023 insertions(+), 849 deletions(-) create mode 100644 android-activity/src/native_activity/glue.rs diff --git a/android-activity/src/game_activity/ffi.rs b/android-activity/src/game_activity/ffi.rs index 40ecc1d..3196865 100644 --- a/android-activity/src/game_activity/ffi.rs +++ b/android-activity/src/game_activity/ffi.rs @@ -13,8 +13,8 @@ #![allow(dead_code)] use jni_sys::*; -use ndk_sys::{ARect, AConfiguration, ALooper, ALooper_callbackFunc, AAssetManager, ANativeWindow}; -use libc::{size_t, pthread_t, pthread_mutex_t, pthread_cond_t}; +use libc::{pthread_cond_t, pthread_mutex_t, pthread_t, size_t}; +use ndk_sys::{AAssetManager, AConfiguration, ALooper, ALooper_callbackFunc, ANativeWindow, ARect}; #[cfg(all( any(target_os = "android", feature = "test"), diff --git a/android-activity/src/game_activity/mod.rs b/android-activity/src/game_activity/mod.rs index 21755ef..54beb45 100644 --- a/android-activity/src/game_activity/mod.rs +++ b/android-activity/src/game_activity/mod.rs @@ -71,7 +71,7 @@ impl<'a> StateSaver<'a> { } (*app_ptr).savedState = buf; - (*app_ptr).savedStateSize = state.len() as ffi::size_t; + (*app_ptr).savedStateSize = state.len() as _; } } } @@ -549,7 +549,7 @@ extern "C" { pub fn GameActivity_onCreate_C( activity: *mut ffi::GameActivity, savedState: *mut ::std::os::raw::c_void, - savedStateSize: ffi::size_t, + savedStateSize: libc::size_t, ); } @@ -582,7 +582,7 @@ pub unsafe extern "C" fn Java_com_google_androidgamesdk_GameActivity_loadNativeC pub unsafe extern "C" fn GameActivity_onCreate( activity: *mut ffi::GameActivity, saved_state: *mut ::std::os::raw::c_void, - saved_state_size: ffi::size_t, + saved_state_size: libc::size_t, ) { GameActivity_onCreate_C(activity, saved_state, saved_state_size); } diff --git a/android-activity/src/lib.rs b/android-activity/src/lib.rs index 787be40..ed10481 100644 --- a/android-activity/src/lib.rs +++ b/android-activity/src/lib.rs @@ -72,19 +72,34 @@ pub struct Rect { impl Rect { /// An empty `Rect` with all components set to zero. pub fn empty() -> Self { - Self { left: 0, top: 0, right: 0, bottom: 0 } + Self { + left: 0, + top: 0, + right: 0, + bottom: 0, + } } } impl Into for Rect { fn into(self) -> ndk_sys::ARect { - ndk_sys::ARect { left: self.left, right: self.right, top: self.top, bottom: self.bottom } + ndk_sys::ARect { + left: self.left, + right: self.right, + top: self.top, + bottom: self.bottom, + } } } impl From for Rect { fn from(arect: ndk_sys::ARect) -> Self { - Self { left: arect.left, right: arect.right, top: arect.top, bottom: arect.bottom } + Self { + left: arect.left, + right: arect.right, + top: arect.top, + bottom: arect.bottom, + } } } @@ -384,12 +399,6 @@ impl Hash for AndroidApp { } impl AndroidApp { - #[cfg_attr(docsrs, doc(cfg(feature = "native-activity")))] - #[cfg(feature = "native-activity")] - pub(crate) fn native_activity(&self) -> *const ndk_sys::ANativeActivity { - self.inner.read().unwrap().native_activity() - } - /// Queries the current [`NativeWindow`] for the application. /// /// This will only return `Some(window)` between diff --git a/android-activity/src/native_activity/glue.rs b/android-activity/src/native_activity/glue.rs new file mode 100644 index 0000000..9cb529f --- /dev/null +++ b/android-activity/src/native_activity/glue.rs @@ -0,0 +1,876 @@ +//! This 'glue' layer acts as an IPC shim between the JVM main thread and the Rust +//! main thread. Notifying Rust of lifecycle events from the JVM and handling +//! synchronization between the two threads. + +use std::{ + ffi::{CStr, CString}, + fs::File, + io::{BufRead, BufReader}, + ops::Deref, + os::unix::prelude::{FromRawFd, RawFd}, + ptr::{self, NonNull}, + sync::{Arc, Condvar, Mutex, Weak}, +}; + +use libc; + +use log::Level; +use ndk::{configuration::Configuration, input_queue::InputQueue, native_window::NativeWindow}; +use ndk_sys::ANativeActivity; + +use crate::ConfigurationRef; + +use super::{AndroidApp, Rect}; + +#[derive(Clone, Copy, Eq, PartialEq, Debug)] +pub enum AppCmd { + InputQueueChanged = 0, + InitWindow = 1, + TermWindow = 2, + WindowResized = 3, + WindowRedrawNeeded = 4, + ContentRectChanged = 5, + GainedFocus = 6, + LostFocus = 7, + ConfigChanged = 8, + LowMemory = 9, + Start = 10, + Resume = 11, + SaveState = 12, + Pause = 13, + Stop = 14, + Destroy = 15, +} +impl TryFrom for AppCmd { + type Error = (); + + fn try_from(value: i8) -> Result { + match value { + 0 => Ok(AppCmd::InputQueueChanged), + 1 => Ok(AppCmd::InitWindow), + 2 => Ok(AppCmd::TermWindow), + 3 => Ok(AppCmd::WindowResized), + 4 => Ok(AppCmd::WindowRedrawNeeded), + 5 => Ok(AppCmd::ContentRectChanged), + 6 => Ok(AppCmd::GainedFocus), + 7 => Ok(AppCmd::LostFocus), + 8 => Ok(AppCmd::ConfigChanged), + 9 => Ok(AppCmd::LowMemory), + 10 => Ok(AppCmd::Start), + 11 => Ok(AppCmd::Resume), + 12 => Ok(AppCmd::SaveState), + 13 => Ok(AppCmd::Pause), + 14 => Ok(AppCmd::Stop), + 15 => Ok(AppCmd::Destroy), + _ => Err(()), + } + } +} + +#[derive(Clone, Copy, Eq, PartialEq, Default, Debug)] +pub enum State { + #[default] + Init, + Start, + Resume, + Pause, + Stop, +} + +#[derive(Debug)] +pub struct WaitableNativeActivityState { + pub activity: *mut ndk_sys::ANativeActivity, + + pub mutex: Mutex, + pub cond: Condvar, +} + +#[derive(Debug, Clone)] +pub struct NativeActivityGlue { + pub inner: Arc, +} +unsafe impl Send for NativeActivityGlue {} +unsafe impl Sync for NativeActivityGlue {} + +impl Deref for NativeActivityGlue { + type Target = WaitableNativeActivityState; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl NativeActivityGlue { + pub fn new( + activity: *mut ANativeActivity, + saved_state: *const libc::c_void, + saved_state_size: libc::size_t, + ) -> Self { + let glue = Self { + inner: Arc::new(WaitableNativeActivityState::new( + activity, + saved_state, + saved_state_size, + )), + }; + + let weak_ref = Arc::downgrade(&glue.inner); + let weak_ptr = Weak::into_raw(weak_ref); + unsafe { + (*activity).instance = weak_ptr as *mut _; + + (*(*activity).callbacks).onDestroy = Some(on_destroy); + (*(*activity).callbacks).onStart = Some(on_start); + (*(*activity).callbacks).onResume = Some(on_resume); + (*(*activity).callbacks).onSaveInstanceState = Some(on_save_instance_state); + (*(*activity).callbacks).onPause = Some(on_pause); + (*(*activity).callbacks).onStop = Some(on_stop); + (*(*activity).callbacks).onConfigurationChanged = Some(on_configuration_changed); + (*(*activity).callbacks).onLowMemory = Some(on_low_memory); + (*(*activity).callbacks).onWindowFocusChanged = Some(on_window_focus_changed); + (*(*activity).callbacks).onNativeWindowCreated = Some(on_native_window_created); + (*(*activity).callbacks).onNativeWindowDestroyed = Some(on_native_window_destroyed); + (*(*activity).callbacks).onInputQueueCreated = Some(on_input_queue_created); + (*(*activity).callbacks).onInputQueueDestroyed = Some(on_input_queue_destroyed); + } + + glue + } + + /// Returns the file descriptor that needs to be polled by the Rust main thread + /// for events/commands from the JVM thread + pub fn cmd_read_fd(&self) -> libc::c_int { + self.mutex.lock().unwrap().msg_read + } + + /// For the Rust main thread to read a single pending command sent from the JVM main thread + pub fn read_cmd(&self) -> Option { + self.inner.mutex.lock().unwrap().read_cmd() + } + + /// For the Rust main thread to get an ndk::InputQueue that wraps the AInputQueue pointer + /// we have and at the same time ensure that the input queue is attached to the given looper. + /// + /// NB: it's expected that the input queue is detached as soon as we know there is new + /// input (knowing the app will be notified) and only re-attached when the application + /// reads the input (to avoid lots of redundant wake ups) + pub fn looper_attached_input_queue( + &self, + looper: *mut ndk_sys::ALooper, + ident: libc::c_int, + ) -> Option { + let mut guard = self.mutex.lock().unwrap(); + + if guard.input_queue == ptr::null_mut() { + return None; + } + + unsafe { + // Reattach the input queue to the looper so future input will again deliver an + // `InputAvailable` event. + guard.attach_input_queue_to_looper(looper, ident); + Some(InputQueue::from_ptr(NonNull::new_unchecked( + guard.input_queue, + ))) + } + } + + pub fn detach_input_queue_from_looper(&self) { + unsafe { + self.inner + .mutex + .lock() + .unwrap() + .detach_input_queue_from_looper(); + } + } + + pub fn config(&self) -> ConfigurationRef { + self.mutex.lock().unwrap().config.clone() + } + + pub fn content_rect(&self) -> Rect { + self.mutex.lock().unwrap().content_rect.into() + } +} + +#[derive(Debug)] +pub struct NativeActivityState { + pub msg_read: libc::c_int, + pub msg_write: libc::c_int, + pub config: super::ConfigurationRef, + pub saved_state: *mut libc::c_void, + pub saved_state_size: libc::size_t, + pub input_queue: *mut ndk_sys::AInputQueue, + pub window: Option, + pub content_rect: ndk_sys::ARect, + pub activity_state: State, + pub destroy_requested: bool, + pub running: bool, + pub state_saved: bool, + pub destroyed: bool, + pub redraw_needed: bool, + pub pending_input_queue: *mut ndk_sys::AInputQueue, + pub pending_window: Option, + pub pending_content_rect: ndk_sys::ARect, +} + +impl NativeActivityState { + pub fn read_cmd(&mut self) -> Option { + let mut cmd_i: i8 = 0; + loop { + match unsafe { libc::read(self.msg_read, &mut cmd_i as *mut _ as *mut _, 1) } { + 1 => { + let cmd = AppCmd::try_from(cmd_i); + return match cmd { + Ok(AppCmd::SaveState) => { + self.free_saved_state(); + Some(AppCmd::SaveState) + } + Ok(cmd) => Some(cmd), + Err(_) => { + log::error!("Spurious, unknown NativeActivityGlue cmd: {}", cmd_i); + None + } + }; + } + -1 => { + let err = std::io::Error::last_os_error(); + if err.kind() != std::io::ErrorKind::Interrupted { + log::error!("Failure reading NativeActivityGlue cmd: {}", err); + return None; + } + } + count => { + log::error!( + "Spurious read of {count} bytes while reading NativeActivityGlue cmd" + ); + return None; + } + } + } + } + + fn write_cmd(&mut self, cmd: AppCmd) { + let cmd = cmd as i8; + loop { + match unsafe { libc::write(self.msg_write, &cmd as *const _ as *const _, 1) } { + 1 => break, + -1 => { + let err = std::io::Error::last_os_error(); + if err.kind() != std::io::ErrorKind::Interrupted { + log::error!("Failure writing NativeActivityGlue cmd: {}", err); + return; + } + } + count => { + log::error!( + "Spurious write of {count} bytes while writing NativeActivityGlue cmd" + ); + return; + } + } + } + } + + fn free_saved_state(&mut self) { + if self.saved_state != ptr::null_mut() { + unsafe { libc::free(self.saved_state) }; + self.saved_state = ptr::null_mut(); + self.saved_state_size = 0; + } + } + + pub unsafe fn attach_input_queue_to_looper( + &mut self, + looper: *mut ndk_sys::ALooper, + ident: libc::c_int, + ) { + if self.input_queue != ptr::null_mut() { + log::trace!("Attaching input queue to looper"); + ndk_sys::AInputQueue_attachLooper( + self.input_queue, + looper, + ident, + None, + ptr::null_mut(), + ); + } + } + + pub unsafe fn detach_input_queue_from_looper(&mut self) { + if self.input_queue != ptr::null_mut() { + log::trace!("Detaching input queue from looper"); + ndk_sys::AInputQueue_detachLooper(self.input_queue); + } + } +} + +impl Drop for WaitableNativeActivityState { + fn drop(&mut self) { + log::debug!("WaitableNativeActivityState::drop!"); + unsafe { + let mut guard = self.mutex.lock().unwrap(); + guard.free_saved_state(); + guard.detach_input_queue_from_looper(); + guard.destroyed = true; + self.cond.notify_one(); + } + } +} + +impl WaitableNativeActivityState { + /////////////////////////////// + // Java-side callback handling + /////////////////////////////// + + pub fn new( + activity: *mut ndk_sys::ANativeActivity, + saved_state_in: *const libc::c_void, + saved_state_size: libc::size_t, + ) -> Self { + let mut msgpipe: [libc::c_int; 2] = [-1, -1]; + unsafe { + if libc::pipe(msgpipe.as_mut_ptr()) != 0 { + panic!( + "could not create Rust <-> Java IPC pipe: {}", + std::io::Error::last_os_error() + ); + } + } + + // NB: The implementation for `ANativeActivity` explicitly documents that save_state must + // be tracked via `malloc()` and `free()`, since `ANativeActivity` may need to free state + // that it is given via its `onSaveInstanceState` callback. + let mut saved_state = ptr::null_mut(); + unsafe { + if saved_state_in != ptr::null() && saved_state_size > 0 { + saved_state = libc::malloc(saved_state_size); + assert!( + saved_state != ptr::null_mut(), + "Failed to allocate {} bytes for restoring saved application state", + saved_state_size + ); + libc::memcpy(saved_state, saved_state_in, saved_state_size); + } + } + + let config = unsafe { + let config = ndk_sys::AConfiguration_new(); + ndk_sys::AConfiguration_fromAssetManager(config, (*activity).assetManager); + + let config = super::ConfigurationRef::new(Configuration::from_ptr( + NonNull::new_unchecked(config), + )); + log::debug!("Config: {:#?}", config); + config + }; + + Self { + activity, + mutex: Mutex::new(NativeActivityState { + msg_read: msgpipe[0], + msg_write: msgpipe[1], + config, + saved_state, + saved_state_size, + input_queue: ptr::null_mut(), + window: None, + content_rect: Rect::empty().into(), + activity_state: State::Init, + destroy_requested: false, + running: false, + state_saved: false, + destroyed: false, + redraw_needed: false, + pending_input_queue: ptr::null_mut(), + pending_window: None, + pending_content_rect: Rect::empty().into(), + }), + cond: Condvar::new(), + } + } + + pub fn notify_destroyed(&self) { + let mut guard = self.mutex.lock().unwrap(); + + unsafe { + guard.write_cmd(AppCmd::Destroy); + while !guard.destroyed { + guard = self.cond.wait(guard).unwrap(); + } + + libc::close(guard.msg_read); + guard.msg_read = -1; + libc::close(guard.msg_write); + guard.msg_write = -1; + } + } + + pub fn notify_config_changed(&self) { + let mut guard = self.mutex.lock().unwrap(); + guard.write_cmd(AppCmd::ConfigChanged); + } + + pub fn notify_low_memory(&self) { + let mut guard = self.mutex.lock().unwrap(); + guard.write_cmd(AppCmd::LowMemory); + } + + pub fn notify_focus_changed(&self, focused: bool) { + let mut guard = self.mutex.lock().unwrap(); + guard.write_cmd(if focused { + AppCmd::GainedFocus + } else { + AppCmd::LostFocus + }); + } + + unsafe fn set_input(&self, input_queue: *mut ndk_sys::AInputQueue) { + let mut guard = self.mutex.lock().unwrap(); + + // The pending_input_queue state should only be set while in this method, and since + // it doesn't allow re-entrance and is cleared before returning then we expect + // this to be null + debug_assert!( + guard.pending_input_queue.is_null(), + "InputQueue update clash" + ); + + guard.pending_input_queue = input_queue; + guard.write_cmd(AppCmd::InputQueueChanged); + while guard.input_queue != guard.pending_input_queue { + guard = self.cond.wait(guard).unwrap(); + } + guard.pending_input_queue = ptr::null_mut(); + } + + unsafe fn set_window(&self, window: Option) { + let mut guard = self.mutex.lock().unwrap(); + + // The pending_window state should only be set while in this method, and since + // it doesn't allow re-entrance and is cleared before returning then we expect + // this to be None + debug_assert!(guard.pending_window.is_none(), "NativeWindow update clash"); + + if guard.window.is_some() { + guard.write_cmd(AppCmd::TermWindow); + } + guard.pending_window = window; + if guard.pending_window.is_some() { + guard.write_cmd(AppCmd::InitWindow); + } + while guard.window != guard.pending_window { + guard = self.cond.wait(guard).unwrap(); + } + guard.pending_window = None; + } + + unsafe fn set_activity_state(&self, state: State) { + let mut guard = self.mutex.lock().unwrap(); + + let cmd = match state { + State::Init => panic!("Can't explicitly transition into 'init' state"), + State::Start => AppCmd::Start, + State::Resume => AppCmd::Resume, + State::Pause => AppCmd::Pause, + State::Stop => AppCmd::Stop, + }; + guard.write_cmd(cmd); + + while guard.activity_state != state { + guard = self.cond.wait(guard).unwrap(); + } + } + + unsafe fn request_save_state(&self) -> (*mut libc::c_void, libc::size_t) { + let mut guard = self.mutex.lock().unwrap(); + + guard.state_saved = false; + guard.write_cmd(AppCmd::SaveState); + while guard.state_saved == false { + guard = self.cond.wait(guard).unwrap(); + } + + let saved_state = std::mem::replace(&mut guard.saved_state, ptr::null_mut()); + let saved_state_size = std::mem::take(&mut guard.saved_state_size); + if saved_state != ptr::null_mut() && saved_state_size > 0 { + (saved_state, saved_state_size) + } else { + (ptr::null_mut(), 0) + } + } + + pub fn saved_state(&self) -> Option> { + let guard = self.mutex.lock().unwrap(); + + unsafe { + if guard.saved_state != ptr::null_mut() && guard.saved_state_size > 0 { + let buf: &mut [u8] = std::slice::from_raw_parts_mut( + guard.saved_state.cast(), + guard.saved_state_size as usize, + ); + let state = buf.to_vec(); + Some(state) + } else { + None + } + } + } + + pub fn set_saved_state(&self, state: &[u8]) { + let mut guard = self.mutex.lock().unwrap(); + + // ANativeActivity specifically expects the state to have been allocated + // via libc::malloc since it will automatically handle freeing the data. + + unsafe { + // In case the application calls store() multiple times for some reason we + // make sure to free any pre-existing state... + if guard.saved_state != ptr::null_mut() { + libc::free(guard.saved_state); + guard.saved_state = ptr::null_mut(); + guard.saved_state_size = 0; + } + + let buf = libc::malloc(state.len()); + if buf == ptr::null_mut() { + panic!("Failed to allocate save_state buffer"); + } + + // Since it's a byte array there's no special alignment requirement here. + // + // Since we re-define `buf` we ensure it's not possible to access the buffer + // via its original pointer for the lifetime of the slice. + { + let buf: &mut [u8] = std::slice::from_raw_parts_mut(buf.cast(), state.len()); + buf.copy_from_slice(state); + } + + guard.saved_state = buf; + guard.saved_state_size = state.len() as _; + } + } + + //////////////////////////// + // Rust-side event loop + //////////////////////////// + + pub fn notify_main_thread_running(&self) { + let mut guard = self.mutex.lock().unwrap(); + guard.running = true; + self.cond.notify_one(); + } + + pub unsafe fn pre_exec_cmd( + &self, + cmd: AppCmd, + looper: *mut ndk_sys::ALooper, + input_queue_ident: libc::c_int, + ) { + log::trace!("Pre: AppCmd::{:#?}", cmd); + match cmd { + AppCmd::InputQueueChanged => { + let mut guard = self.mutex.lock().unwrap(); + guard.detach_input_queue_from_looper(); + guard.input_queue = guard.pending_input_queue; + if guard.input_queue != ptr::null_mut() { + guard.attach_input_queue_to_looper(looper, input_queue_ident); + } + self.cond.notify_one(); + } + AppCmd::InitWindow => { + let mut guard = self.mutex.lock().unwrap(); + guard.window = guard.pending_window.clone(); + self.cond.notify_one(); + } + AppCmd::Resume | AppCmd::Start | AppCmd::Pause | AppCmd::Stop => { + let mut guard = self.mutex.lock().unwrap(); + guard.activity_state = match cmd { + AppCmd::Start => State::Start, + AppCmd::Pause => State::Pause, + AppCmd::Resume => State::Resume, + AppCmd::Stop => State::Stop, + _ => unreachable!(), + }; + self.cond.notify_one(); + } + AppCmd::ConfigChanged => { + let guard = self.mutex.lock().unwrap(); + let config = ndk_sys::AConfiguration_new(); + ndk_sys::AConfiguration_fromAssetManager(config, (*self.activity).assetManager); + let config = Configuration::from_ptr(NonNull::new_unchecked(config)); + guard.config.replace(config); + log::debug!("Config: {:#?}", guard.config); + } + AppCmd::Destroy => { + let mut guard = self.mutex.lock().unwrap(); + guard.destroy_requested = true; + } + _ => {} + } + } + + pub unsafe fn post_exec_cmd(&self, cmd: AppCmd) { + log::trace!("Post: AppCmd::{:#?}", cmd); + match cmd { + AppCmd::TermWindow => { + let mut guard = self.mutex.lock().unwrap(); + guard.window = None; + self.cond.notify_one(); + } + AppCmd::SaveState => { + let mut guard = self.mutex.lock().unwrap(); + guard.state_saved = true; + self.cond.notify_one(); + } + AppCmd::Resume => { + let mut guard = self.mutex.lock().unwrap(); + guard.free_saved_state(); + } + _ => {} + } + } +} + +extern "Rust" { + pub fn android_main(app: AndroidApp); +} + +fn android_log(level: Level, tag: &CStr, msg: &CStr) { + let prio = match level { + Level::Error => ndk_sys::android_LogPriority::ANDROID_LOG_ERROR, + Level::Warn => ndk_sys::android_LogPriority::ANDROID_LOG_WARN, + Level::Info => ndk_sys::android_LogPriority::ANDROID_LOG_INFO, + Level::Debug => ndk_sys::android_LogPriority::ANDROID_LOG_DEBUG, + Level::Trace => ndk_sys::android_LogPriority::ANDROID_LOG_VERBOSE, + }; + unsafe { + ndk_sys::__android_log_write(prio.0 as libc::c_int, tag.as_ptr(), msg.as_ptr()); + } +} + +unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("Destroy: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.notify_destroyed() + } +} + +unsafe extern "C" fn on_start(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("Start: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_activity_state(State::Start); + } +} + +unsafe extern "C" fn on_resume(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("Resume: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_activity_state(State::Resume); + } +} + +unsafe extern "C" fn on_save_instance_state( + activity: *mut ndk_sys::ANativeActivity, + out_len: *mut ndk_sys::size_t, +) -> *mut libc::c_void { + log::debug!("SaveInstanceState: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + let (state, len) = waitable_activity.request_save_state(); + *out_len = len as ndk_sys::size_t; + state + } else { + *out_len = 0; + ptr::null_mut() + } +} + +unsafe extern "C" fn on_pause(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("Pause: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_activity_state(State::Pause); + } +} + +unsafe extern "C" fn on_stop(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("Stop: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_activity_state(State::Stop); + } +} + +unsafe extern "C" fn on_configuration_changed(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("ConfigurationChanged: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.notify_config_changed(); + } +} + +unsafe extern "C" fn on_low_memory(activity: *mut ndk_sys::ANativeActivity) { + log::debug!("LowMemory: {:p}\n", activity); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.notify_low_memory(); + } +} + +unsafe extern "C" fn on_window_focus_changed( + activity: *mut ndk_sys::ANativeActivity, + focused: libc::c_int, +) { + log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.notify_focus_changed(focused != 0); + } +} + +unsafe extern "C" fn on_native_window_created( + activity: *mut ndk_sys::ANativeActivity, + window: *mut ndk_sys::ANativeWindow, +) { + log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + // It's important that we use ::clone_from_ptr() here because NativeWindow + // has a Drop implementation that will unconditionally _release() the native window + let window = NativeWindow::clone_from_ptr(NonNull::new_unchecked(window)); + waitable_activity.set_window(Some(window)); + } +} + +unsafe extern "C" fn on_native_window_destroyed( + activity: *mut ndk_sys::ANativeActivity, + window: *mut ndk_sys::ANativeWindow, +) { + log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_window(None); + } +} + +unsafe extern "C" fn on_input_queue_created( + activity: *mut ndk_sys::ANativeActivity, + queue: *mut ndk_sys::AInputQueue, +) { + log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_input(queue); + } +} + +unsafe extern "C" fn on_input_queue_destroyed( + activity: *mut ndk_sys::ANativeActivity, + queue: *mut ndk_sys::AInputQueue, +) { + log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + waitable_activity.set_input(ptr::null_mut()); + } +} + +/// This is the native entrypoint for our cdylib library that `ANativeActivity` will look for via `dlsym` +#[no_mangle] +extern "C" fn ANativeActivity_onCreate( + activity: *mut ndk_sys::ANativeActivity, + saved_state: *const libc::c_void, + saved_state_size: libc::size_t, +) { + log::debug!("Creating: {:p}", activity); + + // Maybe make this stdout/stderr redirection an optional / opt-in feature?... + unsafe { + let mut logpipe: [RawFd; 2] = Default::default(); + libc::pipe(logpipe.as_mut_ptr()); + libc::dup2(logpipe[1], libc::STDOUT_FILENO); + libc::dup2(logpipe[1], libc::STDERR_FILENO); + std::thread::spawn(move || { + let tag = CStr::from_bytes_with_nul(b"RustStdoutStderr\0").unwrap(); + let file = File::from_raw_fd(logpipe[0]); + let mut reader = BufReader::new(file); + let mut buffer = String::new(); + loop { + buffer.clear(); + if let Ok(len) = reader.read_line(&mut buffer) { + if len == 0 { + break; + } else if let Ok(msg) = CString::new(buffer.clone()) { + android_log(Level::Info, tag, &msg); + } + } + } + }); + } + + // Conceptually we associate a glue reference with the JVM main thread, and another + // reference with the Rust main thread + let jvm_glue = NativeActivityGlue::new(activity, saved_state, saved_state_size); + + let rust_glue = jvm_glue.clone(); + // Let us Send the NativeActivity pointer to the Rust main() thread without a wrapper type + let activity_ptr: libc::intptr_t = activity as _; + + // Note: we drop the thread handle which will detach the thread + std::thread::spawn(move || { + let activity: *mut ANativeActivity = activity_ptr as *mut _; + + let jvm = unsafe { + let na = activity; + let jvm = (*na).vm; + let activity = (*na).clazz; // Completely bogus name; this is the _instance_ not class pointer + ndk_context::initialize_android_context(jvm.cast(), activity.cast()); + + // Since this is a newly spawned thread then the JVM hasn't been attached + // to the thread yet. Attach before calling the applications main function + // so they can safely make JNI calls + let mut jenv_out: *mut core::ffi::c_void = std::ptr::null_mut(); + if let Some(attach_current_thread) = (*(*jvm)).AttachCurrentThread { + attach_current_thread(jvm, &mut jenv_out, std::ptr::null_mut()); + } + + jvm + }; + + let app = AndroidApp::new(rust_glue.clone()); + + rust_glue.notify_main_thread_running(); + + unsafe { + // XXX: If we were in control of the Java Activity subclass then + // we could potentially run the android_main function via a Java native method + // springboard (e.g. call an Activity subclass method that calls a jni native + // method that then just calls android_main()) that would make sure there was + // a Java frame at the base of our call stack which would then be recognised + // when calling FindClass to lookup a suitable classLoader, instead of + // defaulting to the system loader. Without this then it's difficult for native + // code to look up non-standard Java classes. + android_main(app); + + // Since this is a newly spawned thread then the JVM hasn't been attached + // to the thread yet. Attach before calling the applications main function + // so they can safely make JNI calls + if let Some(detach_current_thread) = (*(*jvm)).DetachCurrentThread { + detach_current_thread(jvm); + } + + ndk_context::release_android_context(); + } + }); + + // Wait for thread to start. + let mut guard = jvm_glue.mutex.lock().unwrap(); + while !guard.running { + guard = jvm_glue.cond.wait(guard).unwrap(); + } +} diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 3753362..0712d68 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -1,30 +1,24 @@ #![cfg(any(feature = "native-activity", doc))] -use std::ffi::{CStr, CString}; -use std::fs::File; -use std::io::{BufRead, BufReader}; -use std::ops::Deref; -use std::os::raw; -use std::os::unix::prelude::*; +use std::ptr; use std::ptr::NonNull; use std::sync::{Arc, RwLock}; use std::time::Duration; -use std::{ptr, thread}; -use log::{error, info, trace, Level}; +use log::{error, info, trace}; use ndk_sys::ALooper_wake; use ndk_sys::{ALooper, ALooper_pollAll}; use ndk::asset::AssetManager; -use ndk::configuration::Configuration; -use ndk::input_queue::InputQueue; use ndk::native_window::NativeWindow; use crate::{ util, AndroidApp, ConfigurationRef, InputStatus, MainEvent, PollEvent, Rect, WindowManagerFlags, }; +use self::glue::NativeActivityGlue; + pub mod input { pub use ndk::event::{ Axis, ButtonState, EdgeFlags, KeyAction, KeyEvent, KeyEventFlags, Keycode, MetaState, @@ -42,9 +36,15 @@ pub mod input { } } -// The only time it's safe to update the android_app->savedState pointer is +mod glue; + +pub const LOOPER_ID_MAIN: libc::c_int = 1; +pub const LOOPER_ID_INPUT: libc::c_int = 2; +//pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; + +// The only time it's safe to update the saved_state pointer is // while handling a SaveState event, so this API is only exposed for those -// events... +// events #[derive(Debug)] pub struct StateSaver<'a> { app: &'a AndroidAppInner, @@ -52,37 +52,7 @@ pub struct StateSaver<'a> { impl<'a> StateSaver<'a> { pub fn store(&self, state: &'a [u8]) { - // android_native_app_glue specifically expects savedState to have been allocated - // via libc::malloc since it will automatically handle freeing the data once it - // has been handed over to the Java Activity / main thread. - unsafe { - let app_ptr = self.app.native_app.as_ptr(); - - // In case the application calls store() multiple times for some reason we - // make sure to free any pre-existing state... - if (*app_ptr).saved_state != ptr::null_mut() { - libc::free((*app_ptr).saved_state); - (*app_ptr).saved_state = ptr::null_mut(); - (*app_ptr).saved_state_size = 0; - } - - let buf = libc::malloc(state.len()); - if buf == ptr::null_mut() { - panic!("Failed to allocate save_state buffer"); - } - - // Since it's a byte array there's no special alignment requirement here. - // - // Since we re-define `buf` we ensure it's not possible to access the buffer - // via its original pointer for the lifetime of the slice. - { - let buf: &mut [u8] = std::slice::from_raw_parts_mut(buf.cast(), state.len()); - buf.copy_from_slice(state); - } - - (*app_ptr).saved_state = buf; - (*app_ptr).saved_state_size = state.len() as _; - } + self.app.native_activity.set_saved_state(state); } } @@ -92,19 +62,7 @@ pub struct StateLoader<'a> { } impl<'a> StateLoader<'a> { pub fn load(&self) -> Option> { - unsafe { - let app_ptr = self.app.native_app.as_ptr(); - if (*app_ptr).saved_state != ptr::null_mut() && (*app_ptr).saved_state_size > 0 { - let buf: &mut [u8] = std::slice::from_raw_parts_mut( - (*app_ptr).saved_state.cast(), - (*app_ptr).saved_state_size as usize, - ); - let state = buf.to_vec(); - Some(state) - } else { - None - } - } + self.app.native_activity.saved_state() } } @@ -126,144 +84,65 @@ impl AndroidAppWaker { } } -/// These are the original C structs / constants from android_native_app_glue.c naively -/// ported to Rust. -/// -/// TODO: start integrating all this state directly into `AndroidApp`/`NativeAppGlue` -mod ffi { - pub const LOOPER_ID_MAIN: libc::c_uint = 1; - pub const LOOPER_ID_INPUT: libc::c_uint = 2; - //pub const LOOPER_ID_USER: ::std::os::raw::c_uint = 3; +impl AndroidApp { + pub(crate) fn new(native_activity: NativeActivityGlue) -> Self { + let app = Self { + inner: Arc::new(RwLock::new(AndroidAppInner { + native_activity, + looper: Looper { + ptr: ptr::null_mut(), + }, + })), + }; - #[derive(Clone, Copy, Eq, PartialEq, Debug)] - pub enum AppCmd { - InputChanged = 0, - InitWindow = 1, - TermWindow = 2, - WindowResized = 3, - WindowRedrawNeeded = 4, - ContentRectChanged = 5, - GainedFocus = 6, - LostFocus = 7, - ConfigChanged = 8, - LowMemory = 9, - Start = 10, - Resume = 11, - SaveState = 12, - Pause = 13, - Stop = 14, - Destroy = 15, - } - impl TryFrom for AppCmd { - type Error = (); + { + let mut guard = app.inner.write().unwrap(); - fn try_from(value: i8) -> Result { - match value { - 0 => Ok(AppCmd::InputChanged), - 1 => Ok(AppCmd::InitWindow), - 2 => Ok(AppCmd::TermWindow), - 3 => Ok(AppCmd::WindowResized), - 4 => Ok(AppCmd::WindowRedrawNeeded), - 5 => Ok(AppCmd::ContentRectChanged), - 6 => Ok(AppCmd::GainedFocus), - 7 => Ok(AppCmd::LostFocus), - 8 => Ok(AppCmd::ConfigChanged), - 9 => Ok(AppCmd::LowMemory), - 10 => Ok(AppCmd::Start), - 11 => Ok(AppCmd::Resume), - 12 => Ok(AppCmd::SaveState), - 13 => Ok(AppCmd::Pause), - 14 => Ok(AppCmd::Stop), - 15 => Ok(AppCmd::Destroy), - _ => Err(()) + let main_fd = guard.native_activity.cmd_read_fd(); + unsafe { + guard.looper.ptr = ndk_sys::ALooper_prepare( + ndk_sys::ALOOPER_PREPARE_ALLOW_NON_CALLBACKS as libc::c_int, + ); + ndk_sys::ALooper_addFd( + guard.looper.ptr, + main_fd, + LOOPER_ID_MAIN, + ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, + None, + //&mut guard.cmd_poll_source as *mut _ as *mut _); + ptr::null_mut(), + ); } } - } - pub struct NativeActivityPollSource { - pub id: i32, - pub app: *mut NativeActivityGlue, - pub process: ::std::option::Option< - unsafe extern "C" fn(app: *mut NativeActivityGlue, source: *mut NativeActivityPollSource), - >, - } - - pub struct NativeActivityGlue { - pub activity: *mut ndk_sys::ANativeActivity, - pub config: *mut ndk_sys::AConfiguration, - pub saved_state: *mut libc::c_void, - pub saved_state_size: libc::size_t, - pub looper: *mut ndk_sys::ALooper, - pub input_queue: *mut ndk_sys::AInputQueue, - pub window: *mut ndk_sys::ANativeWindow, - pub content_rect: ndk_sys::ARect, - pub activity_state: libc::c_int, - pub destroy_requested: bool, - pub mutex: libc::pthread_mutex_t, - pub cond: libc::pthread_cond_t, - pub msg_read: libc::c_int, - pub msg_write: libc::c_int, - pub thread: libc::pthread_t, - pub cmd_poll_source: NativeActivityPollSource, - pub input_poll_source: NativeActivityPollSource, - pub running: bool, - pub state_saved: bool, - pub destroyed: bool, - pub redraw_needed: bool, - pub pending_input_queue: *mut ndk_sys::AInputQueue, - pub pending_window: *mut ndk_sys::ANativeWindow, - pub pending_content_rect: ndk_sys::ARect, - } -} - -impl AndroidApp { - pub(crate) unsafe fn from_ptr(ptr: NonNull) -> AndroidApp { - // Note: we don't use from_ptr since we don't own the android_app.config - // and need to keep in mind that the Drop handler is going to call - // AConfiguration_delete() - let config = Configuration::clone_from_ptr(NonNull::new_unchecked((*ptr.as_ptr()).config)); - - AndroidApp { - inner: Arc::new(RwLock::new(AndroidAppInner { - native_app: NativeAppGlue { ptr }, - config: ConfigurationRef::new(config), - native_window: Default::default(), - })), - } + app } } #[derive(Debug)] -struct NativeAppGlue { - ptr: NonNull, +struct Looper { + pub ptr: *mut ALooper, } -impl Deref for NativeAppGlue { - type Target = NonNull; - - fn deref(&self) -> &Self::Target { - &self.ptr - } -} -unsafe impl Send for NativeAppGlue {} -unsafe impl Sync for NativeAppGlue {} +unsafe impl Send for Looper {} +unsafe impl Sync for Looper {} #[derive(Debug)] pub(crate) struct AndroidAppInner { - native_app: NativeAppGlue, - config: ConfigurationRef, - native_window: RwLock>, + pub(crate) native_activity: NativeActivityGlue, + looper: Looper, } impl AndroidAppInner { pub(crate) fn native_activity(&self) -> *const ndk_sys::ANativeActivity { - unsafe { - let app_ptr = self.native_app.as_ptr(); - (*app_ptr).activity.cast() - } + self.native_activity.activity + } + + pub(crate) fn looper(&self) -> *mut ndk_sys::ALooper { + self.looper.ptr } pub fn native_window<'a>(&self) -> Option { - self.native_window.read().unwrap().clone() + self.native_activity.mutex.lock().unwrap().window.clone() } pub fn poll_events(&self, timeout: Option, mut callback: F) @@ -273,8 +152,6 @@ impl AndroidAppInner { trace!("poll_events"); unsafe { - let native_app = &self.native_app; - let mut fd: i32 = 0; let mut events: i32 = 0; let mut source: *mut core::ffi::c_void = ptr::null_mut(); @@ -284,7 +161,12 @@ impl AndroidAppInner { } else { -1 }; + info!("Calling ALooper_pollAll, timeout = {timeout_milliseconds}"); + assert!( + ndk_sys::ALooper_forThread() != ptr::null_mut(), + "Application tried to poll events from non-main thread" + ); let id = ALooper_pollAll( timeout_milliseconds, &mut fd, @@ -312,95 +194,69 @@ impl AndroidAppInner { panic!("ALooper_pollAll returned POLL_ERROR"); } id if id >= 0 => { - match id as u32 { - ffi::LOOPER_ID_MAIN => { + match id { + LOOPER_ID_MAIN => { trace!("ALooper_pollAll returned ID_MAIN"); - let source: *mut ffi::NativeActivityPollSource = source.cast(); - if source != ptr::null_mut() { - if let Some(ipc_cmd) = android_app_read_cmd(native_app.as_ptr()) { - let main_cmd = match ipc_cmd { - // We don't forward info about the AInputQueue to apps since it's - // an implementation details that's also not compatible with - // GameActivity - ffi::AppCmd::InputChanged => None, + if let Some(ipc_cmd) = self.native_activity.read_cmd() { + let main_cmd = match ipc_cmd { + // We don't forward info about the AInputQueue to apps since it's + // an implementation details that's also not compatible with + // GameActivity + glue::AppCmd::InputQueueChanged => None, - ffi::AppCmd::InitWindow => Some(MainEvent::InitWindow {}), - ffi::AppCmd::TermWindow => Some(MainEvent::TerminateWindow {}), - ffi::AppCmd::WindowResized => { - Some(MainEvent::WindowResized {}) - } - ffi::AppCmd::WindowRedrawNeeded => { - Some(MainEvent::RedrawNeeded {}) - } - ffi::AppCmd::ContentRectChanged => { - Some(MainEvent::ContentRectChanged {}) - } - ffi::AppCmd::GainedFocus => Some(MainEvent::GainedFocus), - ffi::AppCmd::LostFocus => Some(MainEvent::LostFocus), - ffi::AppCmd::ConfigChanged => { - Some(MainEvent::ConfigChanged {}) - } - ffi::AppCmd::LowMemory => Some(MainEvent::LowMemory), - ffi::AppCmd::Start => Some(MainEvent::Start), - ffi::AppCmd::Resume => Some(MainEvent::Resume { - loader: StateLoader { app: &self }, - }), - ffi::AppCmd::SaveState => Some(MainEvent::SaveState { - saver: StateSaver { app: &self }, - }), - ffi::AppCmd::Pause => Some(MainEvent::Pause), - ffi::AppCmd::Stop => Some(MainEvent::Stop), - ffi::AppCmd::Destroy => Some(MainEvent::Destroy), - }; - - trace!("Calling android_app_pre_exec_cmd({ipc_cmd:#?})"); - android_app_pre_exec_cmd(native_app.as_ptr(), ipc_cmd); - - if let Some(main_cmd) = main_cmd { - trace!("Read ID_MAIN command {ipc_cmd:#?} = {main_cmd:#?}"); - match main_cmd { - MainEvent::ConfigChanged { .. } => { - self.config.replace(Configuration::clone_from_ptr( - NonNull::new_unchecked( - (*native_app.as_ptr()).config, - ), - )); - } - MainEvent::InitWindow { .. } => { - let win_ptr = (*native_app.as_ptr()).window; - // It's important that we use ::clone_from_ptr() here - // because NativeWindow has a Drop implementation that - // will unconditionally _release() the native window - *self.native_window.write().unwrap() = - Some(NativeWindow::clone_from_ptr( - NonNull::new(win_ptr).unwrap(), - )); - } - MainEvent::TerminateWindow { .. } => { - *self.native_window.write().unwrap() = None; - } - _ => {} - } - - trace!("Invoking callback for ID_MAIN command = {main_cmd:?}"); - callback(PollEvent::Main(main_cmd)); + glue::AppCmd::InitWindow => Some(MainEvent::InitWindow {}), + glue::AppCmd::TermWindow => Some(MainEvent::TerminateWindow {}), + glue::AppCmd::WindowResized => { + Some(MainEvent::WindowResized {}) } + glue::AppCmd::WindowRedrawNeeded => { + Some(MainEvent::RedrawNeeded {}) + } + glue::AppCmd::ContentRectChanged => { + Some(MainEvent::ContentRectChanged {}) + } + glue::AppCmd::GainedFocus => Some(MainEvent::GainedFocus), + glue::AppCmd::LostFocus => Some(MainEvent::LostFocus), + glue::AppCmd::ConfigChanged => { + Some(MainEvent::ConfigChanged {}) + } + glue::AppCmd::LowMemory => Some(MainEvent::LowMemory), + glue::AppCmd::Start => Some(MainEvent::Start), + glue::AppCmd::Resume => Some(MainEvent::Resume { + loader: StateLoader { app: &self }, + }), + glue::AppCmd::SaveState => Some(MainEvent::SaveState { + saver: StateSaver { app: &self }, + }), + glue::AppCmd::Pause => Some(MainEvent::Pause), + glue::AppCmd::Stop => Some(MainEvent::Stop), + glue::AppCmd::Destroy => Some(MainEvent::Destroy), + }; - trace!("Calling android_app_post_exec_cmd({ipc_cmd:#?})"); - android_app_post_exec_cmd(native_app.as_ptr(), ipc_cmd); + trace!("Calling pre_exec_cmd({ipc_cmd:#?})"); + self.native_activity.pre_exec_cmd( + ipc_cmd, + self.looper(), + LOOPER_ID_INPUT, + ); + + if let Some(main_cmd) = main_cmd { + trace!("Invoking callback for ID_MAIN command = {main_cmd:?}"); + callback(PollEvent::Main(main_cmd)); } - } else { - panic!("ALooper_pollAll returned ID_MAIN event with NULL android_poll_source!"); + + trace!("Calling post_exec_cmd({ipc_cmd:#?})"); + self.native_activity.post_exec_cmd(ipc_cmd); } } - ffi::LOOPER_ID_INPUT => { + LOOPER_ID_INPUT => { trace!("ALooper_pollAll returned ID_INPUT"); // To avoid spamming the application with event loop iterations notifying them of // input events then we only send one `InputAvailable` per iteration of input // handling. We re-attach the looper when the application calls // `AndroidApp::input_events()` - android_app_detach_input_queue_looper(native_app.as_ptr()); + self.native_activity.detach_input_queue_from_looper(); callback(PollEvent::Main(MainEvent::InputAvailable)) } _ => { @@ -417,35 +273,26 @@ impl AndroidAppInner { pub fn create_waker(&self) -> AndroidAppWaker { unsafe { - // From the application's pov we assume the app_ptr and looper pointer - // have static lifetimes and we can safely assume they are never NULL. - let app_ptr = self.native_app.as_ptr(); + // From the application's pov we assume the looper pointer has a static + // lifetimes and we can safely assume it is never NULL. AndroidAppWaker { - looper: NonNull::new_unchecked((*app_ptr).looper), + looper: NonNull::new_unchecked(self.looper.ptr), } } } pub fn config(&self) -> ConfigurationRef { - self.config.clone() + self.native_activity.config() } pub fn content_rect(&self) -> Rect { - unsafe { - let app_ptr = self.native_app.as_ptr(); - Rect { - left: (*app_ptr).content_rect.left, - right: (*app_ptr).content_rect.right, - top: (*app_ptr).content_rect.top, - bottom: (*app_ptr).content_rect.bottom, - } - } + self.native_activity.content_rect() } pub fn asset_manager(&self) -> AssetManager { unsafe { - let app_ptr = self.native_app.as_ptr(); - let am_ptr = NonNull::new_unchecked((*(*app_ptr).activity).assetManager); + let activity_ptr = self.native_activity.activity; + let am_ptr = NonNull::new_unchecked((*activity_ptr).assetManager); AssetManager::from_ptr(am_ptr) } } @@ -504,18 +351,15 @@ impl AndroidAppInner { where F: FnMut(&input::InputEvent) -> InputStatus, { - let queue = unsafe { - let app_ptr = self.native_app.as_ptr(); - if (*app_ptr).input_queue == ptr::null_mut() { - return; - } - - // Reattach the input queue to the looper so future input will again deliver an - // `InputAvailable` event. - android_app_attach_input_queue_looper(app_ptr); - - let queue = NonNull::new_unchecked((*app_ptr).input_queue); - InputQueue::from_ptr(queue) + // Get the InputQueue for the NativeActivity (if there is one) and also ensure + // the queue is re-attached to our event Looper (so new input events will again + // trigger a wake up) + let queue = self + .native_activity + .looper_attached_input_queue(self.looper(), LOOPER_ID_INPUT); + let queue = match queue { + Some(queue) => queue, + None => return, }; // Note: we basically ignore errors from get_event() currently. Looking @@ -563,558 +407,3 @@ impl AndroidAppInner { unsafe { util::try_get_path_from_ptr((*na).obbPath) } } } - - -//////////////////////////// -// Rust-side event loop -//////////////////////////// - -unsafe fn free_saved_state(android_app: *mut ffi::NativeActivityGlue) { - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).saved_state != ptr::null_mut() { - libc::free((*android_app).saved_state); - (*android_app).saved_state = ptr::null_mut(); - (*android_app).saved_state_size = 0; - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); -} - -unsafe fn android_app_read_cmd(android_app: *mut ffi::NativeActivityGlue) -> Option { - let mut cmd_i: i8 = 0; - loop { - match libc::read((*android_app).msg_read, &mut cmd_i as *mut _ as *mut _, 1) { - 1 => { - let cmd = ffi::AppCmd::try_from(cmd_i); - return match cmd { - Ok(ffi::AppCmd::SaveState) => { - free_saved_state(android_app); - Some(ffi::AppCmd::SaveState) - } - Ok(cmd) => Some(cmd), - Err(_) => { - log::error!("Spurious, unknown NativeActivityGlue cmd: {}", cmd_i); - None - } - }; - } - -1 => { - let err = std::io::Error::last_os_error(); - if err.kind() != std::io::ErrorKind::Interrupted { - log::error!("Failure reading NativeActivityGlue cmd: {}", err); - return None; - } - } - count => { - log::error!("Spurious read of {count} bytes while reading NativeActivityGlue cmd"); - return None; - } - } - } -} - -unsafe fn print_cur_config(android_app: *mut ffi::NativeActivityGlue) { - let mut lang = [0u8; 2]; - ndk_sys::AConfiguration_getLanguage((*android_app).config, lang[..].as_mut_ptr()); - let lang = if lang[0] == 0 { - " ".to_owned() - } else { - std::str::from_utf8(&lang[..]).unwrap().to_owned() - }; - let mut country = " ".to_owned(); - ndk_sys::AConfiguration_getCountry((*android_app).config, country.as_mut_ptr() as *mut _); - - ndk_sys::AConfiguration_getCountry((*android_app).config, country[..].as_mut_ptr()); - - log::debug!("Config: mcc={} mnc={} lang={} cnt={} orien={} touch={} dens={} keys={} nav={} keysHid={} navHid={} sdk={} size={} long={} modetype={} modenight={}", - ndk_sys::AConfiguration_getMcc((*android_app).config), - ndk_sys::AConfiguration_getMnc((*android_app).config), - lang, - country, - ndk_sys::AConfiguration_getOrientation((*android_app).config), - ndk_sys::AConfiguration_getTouchscreen((*android_app).config), - ndk_sys::AConfiguration_getDensity((*android_app).config), - ndk_sys::AConfiguration_getKeyboard((*android_app).config), - ndk_sys::AConfiguration_getNavigation((*android_app).config), - ndk_sys::AConfiguration_getKeysHidden((*android_app).config), - ndk_sys::AConfiguration_getNavHidden((*android_app).config), - ndk_sys::AConfiguration_getSdkVersion((*android_app).config), - ndk_sys::AConfiguration_getScreenSize((*android_app).config), - ndk_sys::AConfiguration_getScreenLong((*android_app).config), - ndk_sys::AConfiguration_getUiModeType((*android_app).config), - ndk_sys::AConfiguration_getUiModeNight((*android_app).config)); -} - -unsafe fn android_app_attach_input_queue_looper(android_app: *mut ffi::NativeActivityGlue) { - if (*android_app).input_queue != ptr::null_mut() { - log::debug!("Attaching input queue to looper"); - ndk_sys::AInputQueue_attachLooper((*android_app).input_queue, - (*android_app).looper, ffi::LOOPER_ID_INPUT as libc::c_int, None, - &mut (*android_app).input_poll_source as *mut _ as *mut _); - } -} - -unsafe fn android_app_detach_input_queue_looper(android_app: *mut ffi::NativeActivityGlue) { - if (*android_app).input_queue != ptr::null_mut() { - log::debug!("Detaching input queue from looper"); - ndk_sys::AInputQueue_detachLooper((*android_app).input_queue); - } -} - -unsafe fn android_app_pre_exec_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: ffi::AppCmd) { - match cmd { - ffi::AppCmd::InputChanged => { - log::debug!("AppCmd::INPUT_CHANGED\n"); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).input_queue != ptr::null_mut() { - android_app_detach_input_queue_looper(android_app); - } - (*android_app).input_queue = (*android_app).pending_input_queue; - if (*android_app).input_queue != ptr::null_mut() { - android_app_attach_input_queue_looper(android_app); - } - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - } - ffi::AppCmd::InitWindow => { - log::debug!("AppCmd::INIT_WINDOW"); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).window = (*android_app).pending_window; - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - } - ffi::AppCmd::TermWindow => { - log::debug!("AppCmd::TERM_WINDOW"); - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - } - ffi::AppCmd::Resume | ffi::AppCmd::Start | ffi::AppCmd::Pause | ffi::AppCmd::Stop => { - log::debug!("activityState={:#?}", cmd); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).activity_state = cmd as i32; - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - } - ffi::AppCmd::ConfigChanged => { - log::debug!("AppCmd::CONFIG_CHANGED"); - ndk_sys::AConfiguration_fromAssetManager((*android_app).config, - (*(*android_app).activity).assetManager); - print_cur_config(android_app); - } - ffi::AppCmd::Destroy => { - log::debug!("AppCmd::DESTROY"); - (*android_app).destroy_requested = true; - } - _ => { } - } -} - -unsafe fn android_app_post_exec_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: ffi::AppCmd) { - match cmd { - ffi::AppCmd::TermWindow => { - log::debug!("AppCmd::TERM_WINDOW"); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).window = ptr::null_mut(); - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - } - ffi::AppCmd::SaveState => { - log::debug!("AppCmd::SAVE_STATE"); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).state_saved = true; - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - } - ffi::AppCmd::Resume => { - free_saved_state(android_app); - } - _ => { } - } -} - -unsafe fn android_app_destroy(android_app: *mut ffi::NativeActivityGlue) { - log::debug!("android_app_destroy!"); - free_saved_state(android_app); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).input_queue != ptr::null_mut() { - ndk_sys::AInputQueue_detachLooper((*android_app).input_queue); - } - ndk_sys::AConfiguration_delete((*android_app).config); - (*android_app).destroyed = true; - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - // Can't touch android_app object after this. -} - -extern "C" fn android_app_main(arg: *mut libc::c_void) -> *mut libc::c_void { - unsafe { - let android_app: *mut ffi::NativeActivityGlue = arg.cast(); - - (*android_app).config = ndk_sys::AConfiguration_new(); - ndk_sys::AConfiguration_fromAssetManager((*android_app).config, (*(*android_app).activity).assetManager); - - print_cur_config(android_app); - - (*android_app).cmd_poll_source.id = ffi::LOOPER_ID_MAIN as i32; - (*android_app).cmd_poll_source.app = android_app; - (*android_app).cmd_poll_source.process = None; - - let looper = ndk_sys::ALooper_prepare(ndk_sys::ALOOPER_PREPARE_ALLOW_NON_CALLBACKS as libc::c_int); - ndk_sys::ALooper_addFd(looper, (*android_app).msg_read, ffi::LOOPER_ID_MAIN as libc::c_int, ndk_sys::ALOOPER_EVENT_INPUT as libc::c_int, None, - &mut (*android_app).cmd_poll_source as *mut _ as *mut _); - (*android_app).looper = looper; - - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).running = true; - libc::pthread_cond_broadcast(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - - _rust_glue_entry(android_app); - - android_app_destroy(android_app); - - ptr::null_mut() - } -} - - -/////////////////////////////// -// Java-side callback handling -/////////////////////////////// - - -unsafe fn android_app_create(activity: *mut ndk_sys::ANativeActivity, - saved_state_in: *const libc::c_void, saved_state_size: libc::size_t) -> *mut ffi::NativeActivityGlue -{ - let mut msgpipe: [libc::c_int; 2] = [ -1, -1 ]; - if libc::pipe(msgpipe.as_mut_ptr()) != 0 { - panic!("could not create Rust <-> Java IPC pipe: {}", std::io::Error::last_os_error()); - } - - // For now we need to use malloc to track saved state, while the android_native_app_glue - // code will use free() to free the memory. - let mut saved_state = ptr::null_mut(); - if saved_state_in != ptr::null() && saved_state_size > 0 { - saved_state = libc::malloc(saved_state_size); - assert!(saved_state != ptr::null_mut(), "Failed to allocate {} bytes for restoring saved application state", saved_state_size); - libc::memcpy(saved_state, saved_state_in, saved_state_size); - } - - let android_app = Box::into_raw(Box::new(ffi::NativeActivityGlue { - activity, - config: ptr::null_mut(), - saved_state, - saved_state_size, - looper: ptr::null_mut(), - input_queue: ptr::null_mut(), - window: ptr::null_mut(), - content_rect: Rect::empty().into(), - activity_state: 0, - destroy_requested: false, - mutex: libc::PTHREAD_MUTEX_INITIALIZER, - cond: libc::PTHREAD_COND_INITIALIZER, - msg_read: msgpipe[0], - msg_write: msgpipe[1], - thread: 0, - cmd_poll_source: ffi::NativeActivityPollSource { id: 0, app: ptr::null_mut(), process: None }, - input_poll_source: ffi::NativeActivityPollSource { id: 0, app: ptr::null_mut(), process: None }, - running: false, - state_saved: false, - destroyed: false, - redraw_needed: false, - pending_input_queue: ptr::null_mut(), - pending_window: ptr::null_mut(), - pending_content_rect: Rect::empty().into(), - })); - - // TODO: use std::os::spawn and drop the handle to detach instead of directly - // using pthread_create - let mut attr = std::mem::MaybeUninit::::zeroed(); - libc::pthread_attr_init(attr.as_mut_ptr()); - libc::pthread_attr_setdetachstate(attr.as_mut_ptr(), libc::PTHREAD_CREATE_DETACHED); - let mut thread = std::mem::MaybeUninit::::zeroed(); - libc::pthread_create(thread.as_mut_ptr(), attr.as_mut_ptr(), android_app_main, android_app as *mut _); - let thread = thread.assume_init(); - (*android_app).thread = thread; - - // TODO: switch to std::sync::Condvar - // Wait for thread to start. - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - while (*android_app).running == false { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - - android_app -} - -unsafe fn android_app_drop(android_app: *mut ffi::NativeActivityGlue) { - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - android_app_write_cmd(android_app, ffi::AppCmd::Destroy as i8); - while !(*android_app).destroyed == false { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - - libc::close((*android_app).msg_read); - libc::close((*android_app).msg_write); - libc::pthread_cond_destroy(&mut (*android_app).cond as *mut _); - libc::pthread_mutex_destroy(&mut (*android_app).mutex as *mut _); - - let _android_app = Box::from_raw(android_app); - // Box dropped here -} - -unsafe fn android_app_write_cmd(android_app: *mut ffi::NativeActivityGlue, cmd: i8) { - loop { - match libc::write((*android_app).msg_write, &cmd as *const _ as *const _, 1) { - 1 => break, - -1 => { - let err = std::io::Error::last_os_error(); - if err.kind() != std::io::ErrorKind::Interrupted { - log::error!("Failure writing NativeActivityGlue cmd: {}", err); - return; - } - } - count => { - log::error!("Spurious write of {count} bytes while writing NativeActivityGlue cmd"); - return; - } - } - } -} - -unsafe fn android_app_set_input(android_app: *mut ffi::NativeActivityGlue, input_queue: *mut ndk_sys::AInputQueue) { - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).pending_input_queue = input_queue; - android_app_write_cmd(android_app, ffi::AppCmd::InputChanged as i8); - while (*android_app).input_queue != (*android_app).pending_input_queue { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); -} - -unsafe fn android_app_set_window(android_app: *mut ffi::NativeActivityGlue, window: *mut ndk_sys::ANativeWindow) { - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - if (*android_app).pending_window != ptr::null_mut() { - android_app_write_cmd(android_app, ffi::AppCmd::TermWindow as i8); - } - (*android_app).pending_window = window; - if window != ptr::null_mut() { - android_app_write_cmd(android_app, ffi::AppCmd::InitWindow as i8); - } - while (*android_app).window != (*android_app).pending_window { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); -} - -unsafe fn android_app_set_activity_state(android_app: *mut ffi::NativeActivityGlue, cmd: i8) { - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - android_app_write_cmd(android_app, cmd); - while (*android_app).activity_state as i8 != cmd { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); -} - -unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("Destroy: {:p}\n", activity); - - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - (*activity).instance = ptr::null_mut(); - android_app_drop(android_app); -} - -unsafe extern "C" fn on_start(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("Start: {:p}\n", activity); - - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::AppCmd::Start as i8); -} - -unsafe extern "C" fn on_resume(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("Resume: {:p}\n", activity); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::AppCmd::Resume as i8); -} - -unsafe extern "C" fn on_save_instance_state(activity: *mut ndk_sys::ANativeActivity, out_len: *mut ndk_sys::size_t) -> *mut libc::c_void { - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - let mut saved_state: *mut libc::c_void = ptr::null_mut(); - - log::debug!("SaveInstanceState: {:p}\n", activity); - libc::pthread_mutex_lock(&mut (*android_app).mutex as *mut _); - (*android_app).state_saved = false; - android_app_write_cmd(android_app, ffi::AppCmd::SaveState as i8); - while (*android_app).state_saved == false { - libc::pthread_cond_wait(&mut (*android_app).cond as *mut _, &mut (*android_app).mutex as *mut _); - } - - if (*android_app).saved_state != ptr::null_mut() { - saved_state = (*android_app).saved_state; - *out_len = (*android_app).saved_state_size as _; - (*android_app).saved_state = ptr::null_mut(); - (*android_app).saved_state_size = 0; - } - - libc::pthread_mutex_unlock(&mut (*android_app).mutex as *mut _); - - return saved_state; -} - -unsafe extern "C" fn on_pause(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("Pause: {:p}\n", activity); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::AppCmd::Pause as i8); -} - -unsafe extern "C" fn on_stop(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("Stop: {:p}\n", activity); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_activity_state(android_app, ffi::AppCmd::Stop as i8); -} - -unsafe extern "C" fn on_configuration_changed(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("ConfigurationChanged: {:p}\n", activity); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_write_cmd(android_app, ffi::AppCmd::ConfigChanged as i8); -} - -unsafe extern "C" fn on_low_memory(activity: *mut ndk_sys::ANativeActivity) { - log::debug!("LowMemory: {:p}\n", activity); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_write_cmd(android_app, ffi::AppCmd::LowMemory as i8); -} - -unsafe extern "C" fn on_window_focus_changed(activity: *mut ndk_sys::ANativeActivity, focused: libc::c_int) { - log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_write_cmd(android_app, - if focused != 0 { ffi::AppCmd::GainedFocus as i8 } else { ffi::AppCmd::LostFocus as i8}); -} - -unsafe extern "C" fn on_native_window_created(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { - log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_window(android_app, window); -} - -unsafe extern "C" fn on_native_window_destroyed(activity: *mut ndk_sys::ANativeActivity, window: *mut ndk_sys::ANativeWindow) { - log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_window(android_app, ptr::null_mut()); -} - -unsafe extern "C" fn on_input_queue_created(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { - log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_input(android_app, queue); -} - -unsafe extern "C" fn on_input_queue_destroyed(activity: *mut ndk_sys::ANativeActivity, queue: *mut ndk_sys::AInputQueue) { - log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); - let android_app: *mut ffi::NativeActivityGlue = (*activity).instance.cast(); - android_app_set_input(android_app, ptr::null_mut()); -} - -#[no_mangle] -unsafe extern "C" fn ANativeActivity_onCreate( - activity: *mut ndk_sys::ANativeActivity, - saved_state: *const libc::c_void, - saved_state_size: libc::size_t, -) { - log::debug!("Creating: {:p}", activity); - - (*(*activity).callbacks).onDestroy = Some(on_destroy); - (*(*activity).callbacks).onStart = Some(on_start); - (*(*activity).callbacks).onResume = Some(on_resume); - (*(*activity).callbacks).onSaveInstanceState = Some(on_save_instance_state); - (*(*activity).callbacks).onPause = Some(on_pause); - (*(*activity).callbacks).onStop = Some(on_stop); - (*(*activity).callbacks).onConfigurationChanged = Some(on_configuration_changed); - (*(*activity).callbacks).onLowMemory = Some(on_low_memory); - (*(*activity).callbacks).onWindowFocusChanged = Some(on_window_focus_changed); - (*(*activity).callbacks).onNativeWindowCreated = Some(on_native_window_created); - (*(*activity).callbacks).onNativeWindowDestroyed = Some(on_native_window_destroyed); - (*(*activity).callbacks).onInputQueueCreated = Some(on_input_queue_created); - (*(*activity).callbacks).onInputQueueDestroyed = Some(on_input_queue_destroyed); - - (*activity).instance = android_app_create(activity, saved_state, saved_state_size) as *mut _; -} - -fn android_log(level: Level, tag: &CStr, msg: &CStr) { - let prio = match level { - Level::Error => ndk_sys::android_LogPriority::ANDROID_LOG_ERROR, - Level::Warn => ndk_sys::android_LogPriority::ANDROID_LOG_WARN, - Level::Info => ndk_sys::android_LogPriority::ANDROID_LOG_INFO, - Level::Debug => ndk_sys::android_LogPriority::ANDROID_LOG_DEBUG, - Level::Trace => ndk_sys::android_LogPriority::ANDROID_LOG_VERBOSE, - }; - unsafe { - ndk_sys::__android_log_write(prio.0 as raw::c_int, tag.as_ptr(), msg.as_ptr()); - } -} - -extern "Rust" { - pub fn android_main(app: AndroidApp); -} - -// This is a spring board between android_native_app_glue and the user's -// `app_main` function. This is run on a dedicated thread spawned -// by android_native_app_glue. -pub unsafe fn _rust_glue_entry(app: *mut ffi::NativeActivityGlue) { - // Maybe make this stdout/stderr redirection an optional / opt-in feature?... - let mut logpipe: [RawFd; 2] = Default::default(); - libc::pipe(logpipe.as_mut_ptr()); - libc::dup2(logpipe[1], libc::STDOUT_FILENO); - libc::dup2(logpipe[1], libc::STDERR_FILENO); - thread::spawn(move || { - let tag = CStr::from_bytes_with_nul(b"RustStdoutStderr\0").unwrap(); - let file = File::from_raw_fd(logpipe[0]); - let mut reader = BufReader::new(file); - let mut buffer = String::new(); - loop { - buffer.clear(); - if let Ok(len) = reader.read_line(&mut buffer) { - if len == 0 { - break; - } else if let Ok(msg) = CString::new(buffer.clone()) { - android_log(Level::Info, tag, &msg); - } - } - } - }); - - let app = AndroidApp::from_ptr(NonNull::new(app).unwrap()); - - let na = app.native_activity(); - let jvm = (*na).vm; - let activity = (*na).clazz; // Completely bogus name; this is the _instance_ not class pointer - ndk_context::initialize_android_context(jvm.cast(), activity.cast()); - - // Since this is a newly spawned thread then the JVM hasn't been attached - // to the thread yet. Attach before calling the applications main function - // so they can safely make JNI calls - let mut jenv_out: *mut core::ffi::c_void = std::ptr::null_mut(); - if let Some(attach_current_thread) = (*(*jvm)).AttachCurrentThread { - attach_current_thread(jvm, &mut jenv_out, std::ptr::null_mut()); - } - - // XXX: If we were in control of the Java Activity subclass then - // we could potentially run the android_main function via a Java native method - // springboard (e.g. call an Activity subclass method that calls a jni native - // method that then just calls android_main()) that would make sure there was - // a Java frame at the base of our call stack which would then be recognised - // when calling FindClass to lookup a suitable classLoader, instead of - // defaulting to the system loader. Without this then it's difficult for native - // code to look up non-standard Java classes. - android_main(app); - - // Since this is a newly spawned thread then the JVM hasn't been attached - // to the thread yet. Attach before calling the applications main function - // so they can safely make JNI calls - if let Some(detach_current_thread) = (*(*jvm)).DetachCurrentThread { - detach_current_thread(jvm); - } - - ndk_context::release_android_context(); -} From 879d7cac5a5902f20baf43f5eeba04b96a53b951 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2022 17:10:15 +0100 Subject: [PATCH 08/12] native-activity: use eprintln for early logging (before app sets up logging) --- android-activity/src/native_activity/glue.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/android-activity/src/native_activity/glue.rs b/android-activity/src/native_activity/glue.rs index 9cb529f..ecfdc5a 100644 --- a/android-activity/src/native_activity/glue.rs +++ b/android-activity/src/native_activity/glue.rs @@ -362,7 +362,7 @@ impl WaitableNativeActivityState { let config = super::ConfigurationRef::new(Configuration::from_ptr( NonNull::new_unchecked(config), )); - log::debug!("Config: {:#?}", config); + eprintln!("Config: {:#?}", config); config }; @@ -787,8 +787,6 @@ extern "C" fn ANativeActivity_onCreate( saved_state: *const libc::c_void, saved_state_size: libc::size_t, ) { - log::debug!("Creating: {:p}", activity); - // Maybe make this stdout/stderr redirection an optional / opt-in feature?... unsafe { let mut logpipe: [RawFd; 2] = Default::default(); @@ -813,6 +811,11 @@ extern "C" fn ANativeActivity_onCreate( }); } + eprintln!( + "Creating: {:p}, saved_state = {:p}, save_state_size = {}", + activity, saved_state, saved_state_size + ); + // Conceptually we associate a glue reference with the JVM main thread, and another // reference with the Rust main thread let jvm_glue = NativeActivityGlue::new(activity, saved_state, saved_state_size); From 949386ea4ee5ecdb5ca50da26cb505fa9ab6fd8c Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2022 17:13:50 +0100 Subject: [PATCH 09/12] native-activity: fix Weak ref from_raw + upgrade + into_raw handling for callbacks This adds a common `try_with_waitable_activity_ref` utility that handles upgrading the Weak reference associated with `ANativeActivity` whenever we get an activity callback. Previously we weren't converting the Weak reference back to a pointer before returning from the callback which would result in us dropping the Weak reference after the first callback. --- android-activity/src/native_activity/glue.rs | 90 ++++++++++---------- 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/android-activity/src/native_activity/glue.rs b/android-activity/src/native_activity/glue.rs index ecfdc5a..2be3216 100644 --- a/android-activity/src/native_activity/glue.rs +++ b/android-activity/src/native_activity/glue.rs @@ -650,28 +650,40 @@ fn android_log(level: Level, tag: &CStr, msg: &CStr) { } } +unsafe fn try_with_waitable_activity_ref( + activity: *mut ndk_sys::ANativeActivity, + closure: impl FnOnce(Arc), +) { + assert!(!(*activity).instance.is_null()); + let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); + let weak_ref = Weak::from_raw(weak_ptr); + if let Some(waitable_activity) = weak_ref.upgrade() { + closure(waitable_activity); + } else { + log::error!("Ignoring spurious JVM callback after last activity reference was dropped!") + } + let _ = weak_ref.into_raw(); +} + unsafe extern "C" fn on_destroy(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Destroy: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.notify_destroyed() - } + }); } unsafe extern "C" fn on_start(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Start: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_activity_state(State::Start); - } + }); } unsafe extern "C" fn on_resume(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Resume: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_activity_state(State::Resume); - } + }); } unsafe extern "C" fn on_save_instance_state( @@ -679,47 +691,44 @@ unsafe extern "C" fn on_save_instance_state( out_len: *mut ndk_sys::size_t, ) -> *mut libc::c_void { log::debug!("SaveInstanceState: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + *out_len = 0; + let mut ret = ptr::null_mut(); + try_with_waitable_activity_ref(activity, |waitable_activity| { let (state, len) = waitable_activity.request_save_state(); *out_len = len as ndk_sys::size_t; - state - } else { - *out_len = 0; - ptr::null_mut() - } + ret = state + }); + + log::debug!("Saved state = {:p}, len = {}", ret, *out_len); + ret } unsafe extern "C" fn on_pause(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Pause: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_activity_state(State::Pause); - } + }); } unsafe extern "C" fn on_stop(activity: *mut ndk_sys::ANativeActivity) { log::debug!("Stop: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_activity_state(State::Stop); - } + }); } unsafe extern "C" fn on_configuration_changed(activity: *mut ndk_sys::ANativeActivity) { log::debug!("ConfigurationChanged: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.notify_config_changed(); - } + }); } unsafe extern "C" fn on_low_memory(activity: *mut ndk_sys::ANativeActivity) { log::debug!("LowMemory: {:p}\n", activity); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.notify_low_memory(); - } + }); } unsafe extern "C" fn on_window_focus_changed( @@ -727,10 +736,9 @@ unsafe extern "C" fn on_window_focus_changed( focused: libc::c_int, ) { log::debug!("WindowFocusChanged: {:p} -- {}\n", activity, focused); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.notify_focus_changed(focused != 0); - } + }); } unsafe extern "C" fn on_native_window_created( @@ -738,13 +746,12 @@ unsafe extern "C" fn on_native_window_created( window: *mut ndk_sys::ANativeWindow, ) { log::debug!("NativeWindowCreated: {:p} -- {:p}\n", activity, window); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { // It's important that we use ::clone_from_ptr() here because NativeWindow // has a Drop implementation that will unconditionally _release() the native window let window = NativeWindow::clone_from_ptr(NonNull::new_unchecked(window)); waitable_activity.set_window(Some(window)); - } + }); } unsafe extern "C" fn on_native_window_destroyed( @@ -752,10 +759,9 @@ unsafe extern "C" fn on_native_window_destroyed( window: *mut ndk_sys::ANativeWindow, ) { log::debug!("NativeWindowDestroyed: {:p} -- {:p}\n", activity, window); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_window(None); - } + }); } unsafe extern "C" fn on_input_queue_created( @@ -763,10 +769,9 @@ unsafe extern "C" fn on_input_queue_created( queue: *mut ndk_sys::AInputQueue, ) { log::debug!("InputQueueCreated: {:p} -- {:p}\n", activity, queue); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_input(queue); - } + }); } unsafe extern "C" fn on_input_queue_destroyed( @@ -774,10 +779,9 @@ unsafe extern "C" fn on_input_queue_destroyed( queue: *mut ndk_sys::AInputQueue, ) { log::debug!("InputQueueDestroyed: {:p} -- {:p}\n", activity, queue); - let weak_ptr: *const WaitableNativeActivityState = (*activity).instance.cast(); - if let Some(waitable_activity) = Weak::from_raw(weak_ptr).upgrade() { + try_with_waitable_activity_ref(activity, |waitable_activity| { waitable_activity.set_input(ptr::null_mut()); - } + }); } /// This is the native entrypoint for our cdylib library that `ANativeActivity` will look for via `dlsym` From 2e25e2ebed40eb11259dc3f250d2e6ad9ba6803f Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2022 17:57:18 +0100 Subject: [PATCH 10/12] native-activity: fix 1.60.0 compilation - don't derive Default for enum --- android-activity/src/native_activity/glue.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/android-activity/src/native_activity/glue.rs b/android-activity/src/native_activity/glue.rs index 2be3216..ab16f0d 100644 --- a/android-activity/src/native_activity/glue.rs +++ b/android-activity/src/native_activity/glue.rs @@ -67,9 +67,8 @@ impl TryFrom for AppCmd { } } -#[derive(Clone, Copy, Eq, PartialEq, Default, Debug)] +#[derive(Clone, Copy, Eq, PartialEq, Debug)] pub enum State { - #[default] Init, Start, Resume, From 1ed7d383e06ad738f55753c1e84b7e4a54f0a2b3 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2022 18:37:28 +0100 Subject: [PATCH 11/12] native-activity: track saved state as a Vec This simplifies the tracking of saved state by simply using a Vec and only copying into a `malloc()` allocation when passing the saved state to `ANativeActivity`. This also ensures saved state persists (in Rust) between a `MainEvent::SaveState` event and a `Resume` event - otherwise the saved state would only be restored in the situation where `onCreate` is called again for a new process. --- android-activity/src/native_activity/glue.rs | 127 ++++++------------- 1 file changed, 40 insertions(+), 87 deletions(-) diff --git a/android-activity/src/native_activity/glue.rs b/android-activity/src/native_activity/glue.rs index ab16f0d..3d97f0f 100644 --- a/android-activity/src/native_activity/glue.rs +++ b/android-activity/src/native_activity/glue.rs @@ -198,15 +198,14 @@ pub struct NativeActivityState { pub msg_read: libc::c_int, pub msg_write: libc::c_int, pub config: super::ConfigurationRef, - pub saved_state: *mut libc::c_void, - pub saved_state_size: libc::size_t, + pub saved_state: Vec, pub input_queue: *mut ndk_sys::AInputQueue, pub window: Option, pub content_rect: ndk_sys::ARect, pub activity_state: State, pub destroy_requested: bool, pub running: bool, - pub state_saved: bool, + pub app_has_saved_state: bool, pub destroyed: bool, pub redraw_needed: bool, pub pending_input_queue: *mut ndk_sys::AInputQueue, @@ -222,10 +221,6 @@ impl NativeActivityState { 1 => { let cmd = AppCmd::try_from(cmd_i); return match cmd { - Ok(AppCmd::SaveState) => { - self.free_saved_state(); - Some(AppCmd::SaveState) - } Ok(cmd) => Some(cmd), Err(_) => { log::error!("Spurious, unknown NativeActivityGlue cmd: {}", cmd_i); @@ -272,14 +267,6 @@ impl NativeActivityState { } } - fn free_saved_state(&mut self) { - if self.saved_state != ptr::null_mut() { - unsafe { libc::free(self.saved_state) }; - self.saved_state = ptr::null_mut(); - self.saved_state_size = 0; - } - } - pub unsafe fn attach_input_queue_to_looper( &mut self, looper: *mut ndk_sys::ALooper, @@ -310,7 +297,6 @@ impl Drop for WaitableNativeActivityState { log::debug!("WaitableNativeActivityState::drop!"); unsafe { let mut guard = self.mutex.lock().unwrap(); - guard.free_saved_state(); guard.detach_input_queue_from_looper(); guard.destroyed = true; self.cond.notify_one(); @@ -338,21 +324,9 @@ impl WaitableNativeActivityState { } } - // NB: The implementation for `ANativeActivity` explicitly documents that save_state must - // be tracked via `malloc()` and `free()`, since `ANativeActivity` may need to free state - // that it is given via its `onSaveInstanceState` callback. - let mut saved_state = ptr::null_mut(); - unsafe { - if saved_state_in != ptr::null() && saved_state_size > 0 { - saved_state = libc::malloc(saved_state_size); - assert!( - saved_state != ptr::null_mut(), - "Failed to allocate {} bytes for restoring saved application state", - saved_state_size - ); - libc::memcpy(saved_state, saved_state_in, saved_state_size); - } - } + let saved_state = unsafe { + std::slice::from_raw_parts(saved_state_in as *const u8, saved_state_size as _) + }; let config = unsafe { let config = ndk_sys::AConfiguration_new(); @@ -371,15 +345,14 @@ impl WaitableNativeActivityState { msg_read: msgpipe[0], msg_write: msgpipe[1], config, - saved_state, - saved_state_size, + saved_state: saved_state.into(), input_queue: ptr::null_mut(), window: None, content_rect: Rect::empty().into(), activity_state: State::Init, destroy_requested: false, running: false, - state_saved: false, + app_has_saved_state: false, destroyed: false, redraw_needed: false, pending_input_queue: ptr::null_mut(), @@ -482,19 +455,38 @@ impl WaitableNativeActivityState { } } - unsafe fn request_save_state(&self) -> (*mut libc::c_void, libc::size_t) { + fn request_save_state(&self) -> (*mut libc::c_void, libc::size_t) { let mut guard = self.mutex.lock().unwrap(); - guard.state_saved = false; + // The state_saved flag should only be set while in this method, and since + // it doesn't allow re-entrance and is cleared before returning then we expect + // this to be None + debug_assert!( + guard.app_has_saved_state == false, + "SaveState request clash" + ); guard.write_cmd(AppCmd::SaveState); - while guard.state_saved == false { + while guard.app_has_saved_state == false { guard = self.cond.wait(guard).unwrap(); } + guard.app_has_saved_state = false; - let saved_state = std::mem::replace(&mut guard.saved_state, ptr::null_mut()); - let saved_state_size = std::mem::take(&mut guard.saved_state_size); - if saved_state != ptr::null_mut() && saved_state_size > 0 { - (saved_state, saved_state_size) + // `ANativeActivity` explicitly documents that it expects save state to be + // given via a `malloc()` allocated pointer since it will automatically + // `free()` the state after it has been converted to a buffer for the JVM. + if guard.saved_state.len() > 0 { + let saved_state_size = guard.saved_state.len() as _; + let saved_state_src_ptr = guard.saved_state.as_ptr(); + unsafe { + let saved_state = libc::malloc(saved_state_size); + assert!( + saved_state != ptr::null_mut(), + "Failed to allocate {} bytes for restoring saved application state", + saved_state_size + ); + libc::memcpy(saved_state, saved_state_src_ptr as _, saved_state_size); + (saved_state, saved_state_size) + } } else { (ptr::null_mut(), 0) } @@ -502,53 +494,18 @@ impl WaitableNativeActivityState { pub fn saved_state(&self) -> Option> { let guard = self.mutex.lock().unwrap(); - - unsafe { - if guard.saved_state != ptr::null_mut() && guard.saved_state_size > 0 { - let buf: &mut [u8] = std::slice::from_raw_parts_mut( - guard.saved_state.cast(), - guard.saved_state_size as usize, - ); - let state = buf.to_vec(); - Some(state) - } else { - None - } + if guard.saved_state.len() > 0 { + Some(guard.saved_state.clone()) + } else { + None } } pub fn set_saved_state(&self, state: &[u8]) { let mut guard = self.mutex.lock().unwrap(); - // ANativeActivity specifically expects the state to have been allocated - // via libc::malloc since it will automatically handle freeing the data. - - unsafe { - // In case the application calls store() multiple times for some reason we - // make sure to free any pre-existing state... - if guard.saved_state != ptr::null_mut() { - libc::free(guard.saved_state); - guard.saved_state = ptr::null_mut(); - guard.saved_state_size = 0; - } - - let buf = libc::malloc(state.len()); - if buf == ptr::null_mut() { - panic!("Failed to allocate save_state buffer"); - } - - // Since it's a byte array there's no special alignment requirement here. - // - // Since we re-define `buf` we ensure it's not possible to access the buffer - // via its original pointer for the lifetime of the slice. - { - let buf: &mut [u8] = std::slice::from_raw_parts_mut(buf.cast(), state.len()); - buf.copy_from_slice(state); - } - - guard.saved_state = buf; - guard.saved_state_size = state.len() as _; - } + guard.saved_state.clear(); + guard.saved_state.extend_from_slice(state); } //////////////////////////// @@ -620,13 +577,9 @@ impl WaitableNativeActivityState { } AppCmd::SaveState => { let mut guard = self.mutex.lock().unwrap(); - guard.state_saved = true; + guard.app_has_saved_state = true; self.cond.notify_one(); } - AppCmd::Resume => { - let mut guard = self.mutex.lock().unwrap(); - guard.free_saved_state(); - } _ => {} } } From c3d115fd7b4227225259603d9a8cced0435bfaab Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 11 Oct 2022 18:48:27 +0100 Subject: [PATCH 12/12] CHANGELOG: note that native-activity backend is pure-Rust now --- android-activity/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/android-activity/CHANGELOG.md b/android-activity/CHANGELOG.md index d6b7f4c..b3231d4 100644 --- a/android-activity/CHANGELOG.md +++ b/android-activity/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.4] - 2022-09-20 ### Changed - *Breaking*: `input_events` callback now return whether an event was handled or not to allow for fallback handling ([#31](https://github.com/rib/android-activity/issues/31)) +- The native-activity backend is now implemented in Rust only, without building on `android_native_app_glue.c` ([#35](https://github.com/rib/android-activity/pull/35)) ## [0.3] - 2022-09-15 ### Added