include/linux/wmi.h

Source file repositories/reference/linux-study-clean/include/linux/wmi.h

File Facts

System
Linux kernel
Corpus path
include/linux/wmi.h
Extension
.h
Size
5009 bytes
Lines
151
Domain
Core OS
Bucket
Core Kernel Interface
Inferred role
Core OS: operation-table or driver-model contract
Status
pattern implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

struct device_driver driver;
	const struct wmi_device_id *id_table;
	size_t min_event_size;
	bool no_singleton;

	int (*probe)(struct wmi_device *wdev, const void *context);
	void (*remove)(struct wmi_device *wdev);
	void (*shutdown)(struct wmi_device *wdev);
	void (*notify)(struct wmi_device *device, union acpi_object *data);
	void (*notify_new)(struct wmi_device *device, const struct wmi_buffer *data);
};

/**
 * to_wmi_driver() - Helper macro to cast a driver to a wmi_driver
 * @drv: driver struct
 *
 * Cast a struct device_driver to a struct wmi_driver.
 */
#define to_wmi_driver(drv)	container_of_const(drv, struct wmi_driver, driver)

int __must_check __wmi_driver_register(struct wmi_driver *driver, struct module *owner);

void wmi_driver_unregister(struct wmi_driver *driver);

/**
 * wmi_driver_register() - Helper macro to register a WMI driver
 * @driver: wmi_driver struct
 *
 * Helper macro for registering a WMI driver. It automatically passes
 * THIS_MODULE to the underlying function.
 */
#define wmi_driver_register(driver) __wmi_driver_register((driver), THIS_MODULE)

/**
 * module_wmi_driver() - Helper macro to register/unregister a WMI driver
 * @__wmi_driver: wmi_driver struct
 *
 * Helper macro for WMI drivers which do not do anything special in module
 * init/exit. This eliminates a lot of boilerplate. Each module may only
 * use this macro once, and calling it replaces module_init() and module_exit().
 */
#define module_wmi_driver(__wmi_driver) \
	module_driver(__wmi_driver, wmi_driver_register, \
		      wmi_driver_unregister)

#endif

Annotation

Implementation Notes