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