⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bm.h

📁 这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统
💻 H
📖 第 1 页 / 共 2 页
字号:
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 + -