📄 bm.h
字号:
typedef u16 BM_PCI_VENDOR_ID;
typedef u16 BM_PCI_DEVICE_ID;
typedef u32 BM_U32_RESERVED;
/*
* BM_DEVICE_ID:
* This structure, when filled in for a device, provides
* an "association" between hardware space and ACPI.
* -----------------------------------------------------------
*/
typedef struct
{
BM_DEVICE_CID cid;
BM_DEVICE_HID hid;
BM_DEVICE_UID uid;
BM_DEVICE_TYPE type;
BM_DEVICE_ADR adr;
BM_PCI_BUS_NUM pci_bus_num;
BM_PCI_DEVICE_NUM pci_device_num;
BM_PCI_FUNCTION_NUM pci_func_num;
BM_U8_RESERVED u8_reserved;
BM_PCI_DEVICE_CLASS_ID pci_device_class_id;
BM_PCI_DEVICE_SUBCLASS_ID pci_device_subclass_id;
BM_PCI_DEVICE_PROG_IF pci_device_prog_if;
BM_PCI_DEVICE_REVISION pci_device_rev_num;
BM_PCI_VENDOR_ID pci_vendor_id;
BM_PCI_DEVICE_ID pci_device_id;
BM_U32_RESERVED u32_reserved;
} BM_DEVICE_ID;
/*
* BM_DEVICE_POWER:
* ----------------
* Structure containing basic device power management information.
*/
typedef struct
{
BM_DEVICE_FLAGS flags;
BM_POWER_STATE state;
BM_DEVICE_FLAGS dx_supported[ACPI_S_STATE_COUNT];
} BM_DEVICE_POWER;
/*
* BM_DEVICE:
* ----------
*/
typedef struct
{
BM_HANDLE handle;
ACPI_HANDLE acpi_handle;
BM_DEVICE_FLAGS flags;
BM_DEVICE_STATUS status;
BM_DEVICE_ID id;
BM_DEVICE_POWER power;
} BM_DEVICE;
/*
* BM_SEARCH:
* ----------
* Structure used for searching the ACPI Bus Manager's device hierarchy.
*/
typedef struct
{
BM_DEVICE_ID criteria;
BM_HANDLE_LIST results;
} BM_SEARCH;
/*
* BM_REQUEST:
* -----------
* Structure used for sending requests to/through the ACPI Bus Manager.
*/
typedef struct
{
ACPI_STATUS status;
BM_COMMAND command;
BM_HANDLE handle;
ACPI_BUFFER buffer;
} BM_REQUEST;
/*
* Driver Registration:
* --------------------
*/
/* Driver Context */
typedef void * BM_DRIVER_CONTEXT;
/* Notification Callback Function */
typedef
ACPI_STATUS (*BM_DRIVER_NOTIFY) (
BM_NOTIFY notify_type,
BM_HANDLE device_handle,
BM_DRIVER_CONTEXT *context);
/* Request Callback Function */
typedef
ACPI_STATUS (*BM_DRIVER_REQUEST) (
BM_REQUEST *request,
BM_DRIVER_CONTEXT context);
/* Driver Registration */
typedef struct
{
BM_DRIVER_NOTIFY notify;
BM_DRIVER_REQUEST request;
BM_DRIVER_CONTEXT context;
} BM_DRIVER;
/*
* BM_NODE:
* --------
* Structure used to maintain the device hierarchy.
*/
typedef struct _BM_NODE
{
BM_DEVICE device;
BM_DRIVER driver;
struct _BM_NODE *parent;
struct _BM_NODE *next;
struct
{
struct _BM_NODE *head;
struct _BM_NODE *tail;
} scope;
} BM_NODE;
/*
* BM_NODE_LIST:
* -------------
* Structure used to maintain an array of node pointers.
*/
typedef struct
{
u32 count;
BM_NODE *nodes[BM_HANDLES_MAX];
} BM_NODE_LIST;
/*****************************************************************************
* Macros
*****************************************************************************/
#define BM_DEVICE_PRESENT(d) (d->status & BM_STATUS_PRESENT)
#define BM_NODE_PRESENT(n) (n->device.status & BM_STATUS_PRESENT)
/*****************************************************************************
* Function Prototypes
*****************************************************************************/
/* bm.c */
ACPI_STATUS
bm_initialize (void);
ACPI_STATUS
bm_terminate (void);
ACPI_STATUS
bm_get_status (
BM_DEVICE *device);
ACPI_STATUS
bm_get_handle (
ACPI_HANDLE acpi_handle,
BM_HANDLE *device_handle);
ACPI_STATUS
bm_get_node (
BM_HANDLE device_handle,
ACPI_HANDLE acpi_handle,
BM_NODE **node);
/* bmsearch.c */
ACPI_STATUS
bm_search(
BM_HANDLE device_handle,
BM_DEVICE_ID *criteria,
BM_HANDLE_LIST *results);
/* bmnotify.c */
void
bm_notify (
ACPI_HANDLE acpi_handle,
u32 notify_value,
void *context);
/* bm_request.c */
ACPI_STATUS
bm_request (
BM_REQUEST *request_info);
/* bmxface.c */
ACPI_STATUS
bm_get_device_status (
BM_HANDLE device_handle,
BM_DEVICE_STATUS *device_status);
ACPI_STATUS
bm_get_device_info (
BM_HANDLE device_handle,
BM_DEVICE **device_info);
ACPI_STATUS
bm_get_device_context (
BM_HANDLE device_handle,
BM_DRIVER_CONTEXT *context);
ACPI_STATUS
bm_register_driver (
BM_DEVICE_ID *criteria,
BM_DRIVER *driver);
ACPI_STATUS
bm_unregister_driver (
BM_DEVICE_ID *criteria,
BM_DRIVER *driver);
/* bmpm.c */
ACPI_STATUS
bm_get_pm_capabilities (
BM_NODE *node);
ACPI_STATUS
bm_get_power_state (
BM_NODE *node);
ACPI_STATUS
bm_set_power_state (
BM_NODE *node,
BM_POWER_STATE target_state);
/* bmpower.c */
ACPI_STATUS
bm_pr_initialize (void);
ACPI_STATUS
bm_pr_terminate (void);
/* bmutils.c */
ACPI_STATUS
bm_cast_buffer (
ACPI_BUFFER *buffer,
void **pointer,
u32 length);
ACPI_STATUS
bm_copy_to_buffer (
ACPI_BUFFER *buffer,
void *data,
u32 length);
ACPI_STATUS
bm_extract_package_data (
ACPI_OBJECT *package,
ACPI_BUFFER *format,
ACPI_BUFFER *buffer);
ACPI_STATUS
bm_evaluate_object (
ACPI_HANDLE acpi_handle,
ACPI_STRING pathname,
ACPI_OBJECT_LIST *arguments,
ACPI_BUFFER *buffer);
ACPI_STATUS
bm_evaluate_simple_integer (
ACPI_HANDLE acpi_handle,
ACPI_STRING pathname,
u32 *data);
ACPI_STATUS
bm_evaluate_reference_list (
ACPI_HANDLE acpi_handle,
ACPI_STRING pathname,
BM_HANDLE_LIST *reference_list);
/* bm_proc.c */
ACPI_STATUS
bm_proc_initialize (void);
ACPI_STATUS
bm_proc_terminate (void);
ACPI_STATUS
bm_generate_event (
BM_HANDLE device_handle,
char *device_type,
char *device_instance,
u32 event_type,
u32 event_data);
#endif /* __BM_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -