xref: /freebsd/sys/compat/linuxkpi/common/include/linux/device/driver.h (revision f5c7feee7129dc88a2e5dc3ce0a075cb5e4f534a)
1*f5c7feeeSBjoern A. Zeeb /*-
2*f5c7feeeSBjoern A. Zeeb  * SPDX-License-Identifier: BSD-2-Clause
3*f5c7feeeSBjoern A. Zeeb  *
4*f5c7feeeSBjoern A. Zeeb  * Copyright (c) 2021 Bjoern A. Zeeb
5*f5c7feeeSBjoern A. Zeeb  * Copyright (c) 2024 The FreeBSD Foundation
6*f5c7feeeSBjoern A. Zeeb  *
7*f5c7feeeSBjoern A. Zeeb  * Portions of this software were developed by Björn Zeeb
8*f5c7feeeSBjoern A. Zeeb  * under sponsorship from the FreeBSD Foundation.
9*f5c7feeeSBjoern A. Zeeb  */
10*f5c7feeeSBjoern A. Zeeb 
11*f5c7feeeSBjoern A. Zeeb #ifndef	LINUXKPI_LINUX_DEVICE_DRIVER_H
12*f5c7feeeSBjoern A. Zeeb #define	LINUXKPI_LINUX_DEVICE_DRIVER_H
13*f5c7feeeSBjoern A. Zeeb 
14*f5c7feeeSBjoern A. Zeeb #include <sys/cdefs.h>
15*f5c7feeeSBjoern A. Zeeb #include <linux/module.h>
16*f5c7feeeSBjoern A. Zeeb 
17*f5c7feeeSBjoern A. Zeeb #define	module_driver(_drv, _regf, _unregf)					\
18*f5c7feeeSBjoern A. Zeeb static inline int								\
19*f5c7feeeSBjoern A. Zeeb __CONCAT(__CONCAT(_, _drv), _init)(void)					\
20*f5c7feeeSBjoern A. Zeeb {										\
21*f5c7feeeSBjoern A. Zeeb 	return (_regf(&(_drv)));		 				\
22*f5c7feeeSBjoern A. Zeeb }										\
23*f5c7feeeSBjoern A. Zeeb 										\
24*f5c7feeeSBjoern A. Zeeb static inline void								\
25*f5c7feeeSBjoern A. Zeeb __CONCAT(__CONCAT(_, _drv), _exit)(void)					\
26*f5c7feeeSBjoern A. Zeeb {										\
27*f5c7feeeSBjoern A. Zeeb 	_unregf(&(_drv));							\
28*f5c7feeeSBjoern A. Zeeb }										\
29*f5c7feeeSBjoern A. Zeeb 										\
30*f5c7feeeSBjoern A. Zeeb module_init(__CONCAT(__CONCAT(_, _drv), _init));				\
31*f5c7feeeSBjoern A. Zeeb module_exit(__CONCAT(__CONCAT(_, _drv), _exit))
32*f5c7feeeSBjoern A. Zeeb 
33*f5c7feeeSBjoern A. Zeeb #endif	/* LINUXKPI_LINUX_DEVICE_DRIVER_H */
34