14#define UACPI_EVENT_DISABLED 0
15#define UACPI_EVENT_ENABLED 1
17#if !defined(UACPI_REDUCED_HARDWARE) && !defined(UACPI_BAREBONES_MODE)
98 if (raw_value !=
value) {
104 uacpi_trace(
"fixed event %d %sabled successfully\n",
188 "fixed event %d fired but no handler installed, disabling...\n",
246#define EVENTS_PER_GPE_REGISTER 8
326 return 1 << (
event->idx -
event->reg->base_idx);
348 if (!(
reg->current_mask & event_bit))
362 enable_mask |= event_bit;
365 enable_mask &= ~event_bit;
422 switch (
event->handler_type) {
435 "executing GPE(%02X) handler %.4s\n",
444 "error while executing GPE(%02X) handler %.4s: %s\n",
455 handler =
event->implicit_handler;
483 uacpi_error(
"unable to schedule GPE(%02X) restore: %s\n",
502 return event->native_handler->cb(
503 event->native_handler->ctx, device_node,
event->idx
526 switch (
event->handler_type) {
528 int_ret =
event->native_handler->cb(
529 event->native_handler->ctx, device_node,
event->idx
548 "unable to schedule GPE(%02X) for execution: %s\n",
555 uacpi_warn(
"GPE(%02X) fired but no handler, keeping disabled\n",
573 for (
i = 0;
i <
block->num_registers; ++
i) {
576 if (!
reg->runtime_mask && !
reg->wake_mask)
680 handler =
event->implicit_handler;
707 for (
i = 0;
i <
block->num_registers; ++
i) {
715 value =
reg->runtime_mask & ~reg->masked_mask;
743 for (
i = 0;
i <
block->num_registers; ++
i) {
747 if (!
reg->current_mask)
751 reg->masked_mask = 0xFF;
784 for (
i = 0;
i <
block->num_registers; ++
i) {
787 if (
reg->enable.total_bit_width)
789 if (
reg->status.total_bit_width)
797 if (
block->irq_ctx) {
802 ctx->gpe_head =
ctx->gpe_head->next;
813 prev_block = prev_block->
next;
820 ctx->prev->next =
ctx->next;
836 for (
i = 0;
i <
block->num_events; ++
i) {
837 event = &
block->events[
i];
839 switch (
event->handler_type) {
847 sizeof(*
event->native_handler));
863 sizeof(*
block->registers) *
block->num_registers);
873 if (idx < block->base_idx)
901 if (
node->name.text[0] !=
'_')
904 switch (
node->name.text[1]) {
917 uacpi_trace(
"invalid GPE method name %.4s, ignored\n",
node->name.text);
925 switch (
event->handler_type) {
935 event->aml_handler =
node;
941 if (!
ctx->post_dynamic_table_load) {
943 "GPE(%02X) already matched %.4s, skipping %.4s\n",
952 "not assigning GPE(%02X) to %.4s, override "
963 ctx->matched_count++;
984 while (match_ctx.
block) {
993 irq_ctx = irq_ctx->
next;
997 uacpi_info(
"matched %u additional GPEs post dynamic table load\n",
1016 struct acpi_gas tmp_gas = {
1017 .address_space_id = address_space_id,
1018 .register_bit_width = 8,
1026 block->device_node = device_node;
1027 block->base_idx = base_idx;
1066 event->idx =
reg->base_idx +
j;
1097 uacpi_trace(
"initialized GPE block %.4s[%d->%d], %d AML handlers (IRQ %d)\n",
1098 device_node->
name.
text, base_idx, base_idx +
block->num_events,
1146 if (
block->device_node !=
ctx->gpe_device)
1167 return ctx.out_event;
1178 reg->runtime_mask |= this_mask;
1179 reg->current_mask =
reg->runtime_mask;
1183 reg->runtime_mask &= ~this_mask;
1184 reg->current_mask =
reg->runtime_mask;
1194 if (--
event->num_users == 0) {
1221 if (++
event->num_users == 1) {
1296 if (!(
reg->masked_mask &
mask))
1300 if (!
event->block_interrupts &&
event->num_users)
1331 for (
i = 0;
i <
block->num_registers; ++
i) {
1341 uacpi_warn(
"failed to enable GPE(%02X): %s\n",
1351 if (count_enabled) {
1353 "enabled %zu GPEs in block %.4s@[%d->%d]\n",
1354 count_enabled,
block->device_node->name.text,
1441 native_handler->
ctx =
ctx;
1451 event->num_users != 0) {
1457 "GPE(%02X) user handler claims %s triggering, originally "
1458 "configured as %s\n",
idx,
1465 event->native_handler = native_handler;
1466 event->handler_type =
type;
1526 native_handler =
event->native_handler;
1544 uacpi_free(native_handler,
sizeof(*native_handler));
1777 switch (
event->handler_type) {
1795 "not configuring implicit notify for GPE(%02X) -> %.4s: "
1796 " a user handler already installed\n",
event->idx,
1806 uacpi_warn(
"invalid GPE(%02X) handler type: %d\n",
1821 implicit_handler =
event->implicit_handler;
1822 while (implicit_handler) {
1823 if (implicit_handler->
device == wake_device) {
1828 implicit_handler = implicit_handler->
next;
1833 implicit_handler->
device = wake_device;
1834 implicit_handler->
next =
event->implicit_handler;
1835 event->implicit_handler = implicit_handler;
1838 "unable to configure implicit wake for GPE(%02X) -> %.4s: "
1969 uacpi_u8 gpe0_regs = 0, gpe1_regs = 0;
1973 if (fadt->x_gpe0_blk.address && fadt->gpe0_blk_len) {
1974 gpe0_regs = fadt->gpe0_blk_len / 2;
1977 gpe_node, fadt->sci_int, 0, fadt->x_gpe0_blk.address,
1978 fadt->x_gpe0_blk.address_space_id, gpe0_regs
1981 uacpi_error(
"unable to create FADT GPE block 0: %s\n",
1986 if (fadt->x_gpe1_blk.address && fadt->gpe1_blk_len) {
1987 gpe1_regs = fadt->gpe1_blk_len / 2;
1992 "FADT GPE block 1 [%d->%d] collides with GPE block 0 "
1993 "[%d->%d], ignoring\n",
2002 gpe_node, fadt->sci_int, fadt->gpe1_base, fadt->x_gpe1_blk.address,
2003 fadt->x_gpe1_blk.address_space_id, gpe1_regs
2006 uacpi_error(
"unable to create FADT GPE block 1: %s\n",
2011 if (gpe0_regs == 0 && gpe1_regs == 0)
2094 uacpi_warn(
"platform has no global lock but a release event "
2095 "was fired anyway?\n");
2101 uacpi_trace(
"spurious firmware global lock release notification\n");
2105 uacpi_trace(
"received a firmware global lock release notification\n");
2164 "unable to install SCI interrupt handler: %s\n",
2185 uacpi_warn(
"platform has global lock but no FACS was provided\n");
2214 next_ctx =
ctx->next;
2217 while (next_block) {
2219 next_block =
block->next;
2334 info |= UACPI_EVENT_INFO_HAS_HANDLER;
2342 info |= UACPI_EVENT_INFO_ENABLED | UACPI_EVENT_INFO_HW_ENABLED;
2348 info |= UACPI_EVENT_INFO_HW_STATUS;
2378 info |= UACPI_EVENT_INFO_HAS_HANDLER;
2384 info |= UACPI_EVENT_INFO_ENABLED;
2386 info |= UACPI_EVENT_INFO_MASKED;
2388 info |= UACPI_EVENT_INFO_ENABLED_FOR_WAKE;
2393 if (raw_value &
mask)
2394 info |= UACPI_EVENT_INFO_HW_ENABLED;
2399 if (raw_value &
mask)
2400 info |= UACPI_EVENT_INFO_HW_STATUS;
2408#define PM1_STATUS_BITS ( \
2409 ACPI_PM1_STS_TMR_STS_MASK | \
2410 ACPI_PM1_STS_BM_STS_MASK | \
2411 ACPI_PM1_STS_GBL_STS_MASK | \
2412 ACPI_PM1_STS_PWRBTN_STS_MASK | \
2413 ACPI_PM1_STS_SLPBTN_STS_MASK | \
2414 ACPI_PM1_STS_RTC_STS_MASK | \
2415 ACPI_PM1_STS_PCIEXP_WAKE_STS_MASK | \
2416 ACPI_PM1_STS_WAKE_STS_MASK \
unsigned long uacpi_cpu_flags
void user(int argc, const char *argv[])
uacpi_status uacpi_recursive_lock_deinit(struct uacpi_recursive_lock *lock)
uacpi_status uacpi_recursive_lock_init(struct uacpi_recursive_lock *lock)
uacpi_status uacpi_recursive_lock_acquire(struct uacpi_recursive_lock *lock)
uacpi_status uacpi_recursive_lock_release(struct uacpi_recursive_lock *lock)
UINT(* handler)(MSIPACKAGE *)
#define ACPI_PM1_EN_PWRBTN_EN_MASK
#define ACPI_PM1_STS_SLPBTN_STS_MASK
#define ACPI_PM1_EN_RTC_EN_MASK
#define ACPI_PM1_EN_SLPBTN_EN_MASK
#define ACPI_PM1_EN_TMR_EN_MASK
#define ACPI_PM1_STS_CLEAR
#define ACPI_PM1_STS_RTC_STS_MASK
#define ACPI_PM1_STS_TMR_STS_MASK
#define ACPI_PM1_STS_PWRBTN_STS_MASK
#define ACPI_PM1_EN_GBL_EN_MASK
#define ACPI_PM1_STS_GBL_STS_MASK
uacpi_interrupt_ret(* uacpi_gpe_handler)(uacpi_handle ctx, uacpi_namespace_node *gpe_device, uacpi_u16 idx)
#define UACPI_GPE_REENABLE
uacpi_u16 uacpi_gpe_triggering uacpi_gpe_handler uacpi_handle ctx uacpi_u16 uacpi_namespace_node *wake_device uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u64 uacpi_address_space uacpi_u16 num_registers
@ UACPI_GPE_TRIGGERING_MAX
@ UACPI_GPE_TRIGGERING_EDGE
@ UACPI_GPE_TRIGGERING_LEVEL
@ UACPI_FIXED_EVENT_TIMER_STATUS
@ UACPI_FIXED_EVENT_SLEEP_BUTTON
@ UACPI_FIXED_EVENT_POWER_BUTTON
uacpi_u16 uacpi_gpe_triggering triggering
uacpi_u16 uacpi_gpe_triggering uacpi_gpe_handler uacpi_handle ctx uacpi_u16 uacpi_namespace_node *wake_device uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u16 idx uacpi_u64 uacpi_address_space address_space
#define UACPI_ENSURE_INIT_LEVEL_AT_LEAST(lvl)
static uacpi_bool uacpi_is_hardware_reduced(void)
struct uacpi_runtime_context g_uacpi_rt_ctx
#define UACPI_FIXED_EVENT_GLOBAL_LOCK
void uacpi_unmap_gas_nofree(uacpi_mapped_gas *gas)
uacpi_status uacpi_map_gas_noalloc(const struct acpi_gas *gas, uacpi_mapped_gas *out_mapped)
uacpi_status uacpi_namespace_do_for_each_child(uacpi_namespace_node *parent, uacpi_iteration_callback descending_callback, uacpi_iteration_callback ascending_callback, uacpi_object_type_bits, uacpi_u32 max_depth, enum uacpi_should_lock, enum uacpi_permanent_only, void *user)
uacpi_status uacpi_namespace_write_unlock(void)
uacpi_object * uacpi_namespace_node_get_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits type_mask)
@ UACPI_PERMANENT_ONLY_YES
uacpi_status uacpi_namespace_write_lock(void)
#define uacpi_kernel_alloc_zeroed
#define uacpi_free(mem, _)
uacpi_status uacpi_gas_read_mapped(const uacpi_mapped_gas *gas, uacpi_u64 *value)
uacpi_status uacpi_gas_write_mapped(const uacpi_mapped_gas *gas, uacpi_u64 value)
uacpi_status uacpi_namespace_node_is(const uacpi_namespace_node *node, uacpi_object_type type, uacpi_bool *out)
uacpi_namespace_node * uacpi_namespace_get_predefined(uacpi_predefined_namespace)
#define UACPI_MAX_DEPTH_ANY
@ UACPI_PREDEFINED_NAMESPACE_GPE
uacpi_namespace_node * uacpi_namespace_root(void)
uacpi_object_name uacpi_namespace_node_name(const uacpi_namespace_node *node)
@ UACPI_REGISTER_FIELD_PWRBTN_EN
@ UACPI_REGISTER_FIELD_PWRBTN_STS
@ UACPI_REGISTER_FIELD_RTC_STS
@ UACPI_REGISTER_FIELD_RTC_EN
@ UACPI_REGISTER_FIELD_GBL_EN
@ UACPI_REGISTER_FIELD_SLPBTN_STS
@ UACPI_REGISTER_FIELD_SLPBTN_EN
@ UACPI_REGISTER_FIELD_GBL_STS
@ UACPI_REGISTER_FIELD_TMR_STS
@ UACPI_REGISTER_FIELD_TMR_EN
uacpi_status uacpi_read_register_field(uacpi_register_field, uacpi_u64 *)
uacpi_status uacpi_read_register(uacpi_register, uacpi_u64 *)
uacpi_status uacpi_write_register(uacpi_register, uacpi_u64)
uacpi_status uacpi_write_register_field(uacpi_register_field, uacpi_u64)
#define uacpi_likely_success(expr)
#define uacpi_unlikely_error(expr)
@ UACPI_STATUS_INVALID_ARGUMENT
@ UACPI_STATUS_INTERNAL_ERROR
@ UACPI_STATUS_OUT_OF_MEMORY
@ UACPI_STATUS_ALREADY_EXISTS
@ UACPI_STATUS_HARDWARE_TIMEOUT
@ UACPI_STATUS_NO_HANDLER
const uacpi_char * uacpi_status_to_string(uacpi_status)
#define UACPI_INTERRUPT_HANDLED
@ UACPI_ITERATION_DECISION_BREAK
@ UACPI_ITERATION_DECISION_CONTINUE
@ UACPI_OBJECT_METHOD_BIT
@ UACPI_INIT_LEVEL_SUBSYSTEM_INITIALIZED
@ UACPI_INIT_LEVEL_NAMESPACE_LOADED
uacpi_interrupt_ret(* uacpi_interrupt_handler)(uacpi_handle)
uacpi_u32 uacpi_interrupt_ret
#define UACPI_INTERRUPT_NOT_HANDLED
static struct gp_event * get_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
@ GPE_HANDLER_TYPE_NATIVE_HANDLER
@ GPE_HANDLER_TYPE_NATIVE_HANDLER_RAW
@ GPE_HANDLER_TYPE_IMPLICIT_NOTIFY
@ GPE_HANDLER_TYPE_AML_HANDLER
const uacpi_char * uacpi_gpe_triggering_to_string(uacpi_gpe_triggering triggering)
static uacpi_status gpe_enable_disable_for_wake(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_bool enabled)
uacpi_status uacpi_install_gpe_handler_raw(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_gpe_triggering triggering, uacpi_gpe_handler handler, uacpi_handle ctx)
static uacpi_handle g_gpe_state_slock
static uacpi_status gpe_add_user(struct gp_event *event, enum event_clear_if_first clear_if_first)
static struct uacpi_recursive_lock g_event_lock
uacpi_status uacpi_initialize_events_early(void)
static uacpi_status set_gpe_state(struct gp_event *event, enum gpe_state state)
uacpi_status uacpi_disable_gpe_for_wake(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
@ EVENT_CLEAR_IF_FIRST_YES
@ EVENT_CLEAR_IF_FIRST_NO
uacpi_status uacpi_suspend_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
uacpi_status uacpi_enable_fixed_event(uacpi_fixed_event event)
static const struct fixed_event fixed_events[UACPI_FIXED_EVENT_MAX+1]
static uacpi_status sanitize_device_and_find_gpe(uacpi_namespace_node **gpe_device, uacpi_u16 idx, struct gp_event **out_event)
uacpi_status uacpi_initialize_events(void)
static void async_run_gpe_handler(uacpi_handle opaque)
uacpi_status uacpi_resume_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
uacpi_status uacpi_enable_all_wake_gpes(void)
static uacpi_interrupt_ret handle_global_lock(uacpi_handle ctx)
static uacpi_status find_or_create_gpe_interrupt_ctx(uacpi_u32 irq, struct gpe_interrupt_ctx **out_ctx)
uacpi_status uacpi_enable_gpe_for_wake(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
uacpi_status uacpi_disable_all_gpes(void)
static struct fixed_event_handler fixed_event_handlers[UACPI_FIXED_EVENT_MAX+1]
static uacpi_bool gpe_mask_safe(struct gp_event *event)
static uacpi_interrupt_ret handle_sci(uacpi_handle ctx)
static struct gpe_interrupt_ctx * g_gpe_interrupt_head
uacpi_status uacpi_install_gpe_block(uacpi_namespace_node *gpe_device, uacpi_u64 address, uacpi_address_space address_space, uacpi_u16 num_registers, uacpi_u32 irq)
static uacpi_status set_event(uacpi_u8 event, uacpi_u8 value)
static uacpi_status gpe_mask_unmask(struct gp_event *event, uacpi_bool should_mask)
static void gpe_block_mask_safe(struct gpe_block *block)
uacpi_status uacpi_uninstall_gpe_handler(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_gpe_handler handler)
static uacpi_status maybe_dispatch_gpe(uacpi_namespace_node *gpe_device, struct gp_event *event)
static uacpi_status create_gpe_block(uacpi_namespace_node *device_node, uacpi_u32 irq, uacpi_u16 base_idx, uacpi_u64 address, uacpi_u8 address_space_id, uacpi_u16 num_registers)
static uacpi_status restore_gpe(struct gp_event *event)
uacpi_status uacpi_enable_all_runtime_gpes(void)
static uacpi_iteration_decision do_match_gpe_methods(uacpi_handle opaque, uacpi_namespace_node *node, uacpi_u32 depth)
static uacpi_bool gpe_needs_polling(struct gp_event *event)
static void uninstall_gpe_block(struct gpe_block *block)
static uacpi_iteration_decision do_initialize_gpe_block(struct gpe_block *block, uacpi_handle opaque)
#define EVENTS_PER_GPE_REGISTER
uacpi_iteration_decision(* gpe_block_iteration_callback)(struct gpe_block *, uacpi_handle)
uacpi_status uacpi_disable_fixed_event(uacpi_fixed_event event)
static uacpi_iteration_decision do_find_gpe(struct gpe_block *block, uacpi_handle opaque)
uacpi_status uacpi_mask_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
uacpi_status uacpi_gpe_info(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_event_info *out_info)
uacpi_status uacpi_uninstall_fixed_event_handler(uacpi_fixed_event event)
static void gpe_release_implicit_notify_handlers(struct gp_event *event)
uacpi_status uacpi_uninstall_gpe_block(uacpi_namespace_node *gpe_device)
uacpi_status uacpi_finalize_gpe_initialization(void)
static uacpi_interrupt_ret handle_gpes(uacpi_handle opaque)
static uacpi_u8 gpe_get_mask(struct gp_event *event)
uacpi_status uacpi_fixed_event_info(uacpi_fixed_event event, uacpi_event_info *out_info)
static uacpi_status gpe_suspend_resume(uacpi_namespace_node *gpe_device, uacpi_u16 idx, enum gpe_state state)
static uacpi_interrupt_ret dispatch_fixed_event(const struct fixed_event *ev, uacpi_fixed_event event)
uacpi_status uacpi_install_fixed_event_handler(uacpi_fixed_event event, uacpi_interrupt_handler handler, uacpi_handle user)
static uacpi_interrupt_ret dispatch_gpe(uacpi_namespace_node *device_node, struct gp_event *event)
static uacpi_bool g_gpes_finalized
static void for_each_gpe_block(gpe_block_iteration_callback cb, uacpi_handle handle)
uacpi_status uacpi_finish_handling_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
void uacpi_deinitialize_events(void)
static uacpi_status do_install_gpe_handler(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_gpe_triggering triggering, enum gpe_handler_type type, uacpi_gpe_handler handler, uacpi_handle ctx)
#define UACPI_EVENT_DISABLED
static uacpi_interrupt_ret detect_gpes(struct gpe_block *block)
uacpi_status uacpi_setup_gpe_for_wake(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_namespace_node *wake_device)
static uacpi_iteration_decision do_for_all_gpes(struct gpe_block *block, uacpi_handle opaque)
@ GPE_STATE_ENABLED_CONDITIONALLY
uacpi_status uacpi_enable_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
uacpi_status uacpi_clear_fixed_event(uacpi_fixed_event event)
static uacpi_interrupt_ret handle_fixed_events(void)
#define UACPI_EVENT_ENABLED
static uacpi_status gpe_block_apply_action(struct gpe_block *block, enum gpe_block_action action)
static void gp_event_toggle_masks(struct gp_event *event, uacpi_bool set_on)
@ GPE_BLOCK_ACTION_ENABLE_ALL_FOR_WAKE
@ GPE_BLOCK_ACTION_ENABLE_ALL_FOR_RUNTIME
@ GPE_BLOCK_ACTION_DISABLE_ALL
@ GPE_BLOCK_ACTION_CLEAR_ALL
uacpi_status uacpi_disable_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
static uacpi_status initialize_fixed_events(void)
static uacpi_status for_all_gpes_locked(struct do_for_all_gpes_ctx *ctx)
uacpi_status uacpi_clear_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
static uacpi_status initialize_gpes(void)
static void async_restore_gpe(uacpi_handle opaque)
uacpi_status uacpi_install_gpe_handler(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_gpe_triggering triggering, uacpi_gpe_handler handler, uacpi_handle ctx)
static uacpi_status gpe_remove_user(struct gp_event *event)
uacpi_status uacpi_unmask_gpe(uacpi_namespace_node *gpe_device, uacpi_u16 idx)
static uacpi_status clear_gpe(struct gp_event *event)
static uacpi_status gpe_get_mask_unmask(uacpi_namespace_node *gpe_device, uacpi_u16 idx, uacpi_bool should_mask)
void uacpi_events_match_post_dynamic_table_load(void)
static struct gp_event * gpe_from_block(struct gpe_block *block, uacpi_u16 idx)
uacpi_status uacpi_clear_all_events(void)
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei GLenum type
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
uacpi_status uacpi_notify_all(uacpi_namespace_node *node, uacpi_u64 value)
uacpi_status uacpi_string_to_integer(const uacpi_char *str, uacpi_size max_chars, enum uacpi_base base, uacpi_u64 *out_value)
uacpi_status uacpi_execute_control_method(uacpi_namespace_node *scope, uacpi_control_method *method, const uacpi_object_array *args, uacpi_object **ret)
void * uacpi_kernel_alloc(uacpi_size size)
uacpi_status uacpi_kernel_wait_for_work_completion(void)
uacpi_status uacpi_kernel_schedule_work(uacpi_work_type, uacpi_work_handler, uacpi_handle ctx)
uacpi_status uacpi_kernel_uninstall_interrupt_handler(uacpi_interrupt_handler, uacpi_handle irq_handle)
uacpi_status uacpi_kernel_install_interrupt_handler(uacpi_u32 irq, uacpi_interrupt_handler, uacpi_handle ctx, uacpi_handle *out_irq_handle)
uacpi_handle uacpi_kernel_create_event(void)
@ UACPI_WORK_GPE_EXECUTION
@ UACPI_WORK_NOTIFICATION
uacpi_handle uacpi_kernel_create_spinlock(void)
void uacpi_kernel_signal_event(uacpi_handle)
void uacpi_kernel_free_spinlock(uacpi_handle)
uacpi_cpu_flags uacpi_kernel_lock_spinlock(uacpi_handle)
void uacpi_kernel_unlock_spinlock(uacpi_handle, uacpi_cpu_flags)
static HMODULE MODULEINFO DWORD cb
enum gpe_block_action action
uacpi_interrupt_handler handler
uacpi_u8 block_interrupts
struct gpe_implicit_notify_handler * implicit_handler
struct gpe_register * reg
uacpi_namespace_node * aml_handler
struct gpe_native_handler * native_handler
uacpi_handle * any_handler
uacpi_namespace_node * device_node
struct gpe_register * registers
struct gpe_interrupt_ctx * irq_ctx
uacpi_namespace_node * device
struct gpe_implicit_notify_handler * next
struct gpe_interrupt_ctx * prev
struct gpe_interrupt_ctx * next
struct gpe_block * gpe_head
uacpi_bool post_dynamic_table_load
uacpi_u8 previously_enabled
uacpi_u8 previous_triggering
uacpi_handle previous_handler
uacpi_u8 previous_handler_type
uacpi_namespace_node * gpe_device
struct gp_event * out_event
struct gpe_block * out_block
uacpi_control_method * method
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static unsigned int block