LinuxKPI: add general module_driver(), use it for module_pci_driver()

Factor out module_pci_driver() from 366d68f283 into a general
module_driver() so other bus attachments can also use the same kind
of macro without duplicating all the lines.

Redefine module_pci_driver() using the new general macro.

No functional changes intended.

Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
Reviewed by:	manu
Differential Revision: https://reviews.freebsd.org/D46467
This commit is contained in:
Bjoern A. Zeeb 2024-08-28 14:21:33 +00:00
parent d52c319042
commit f5c7feee71
2 changed files with 36 additions and 18 deletions

View file

@ -0,0 +1,33 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2021 Bjoern A. Zeeb
* Copyright (c) 2024 The FreeBSD Foundation
*
* Portions of this software were developed by Björn Zeeb
* under sponsorship from the FreeBSD Foundation.
*/
#ifndef LINUXKPI_LINUX_DEVICE_DRIVER_H
#define LINUXKPI_LINUX_DEVICE_DRIVER_H
#include <sys/cdefs.h>
#include <linux/module.h>
#define module_driver(_drv, _regf, _unregf) \
static inline int \
__CONCAT(__CONCAT(_, _drv), _init)(void) \
{ \
return (_regf(&(_drv))); \
} \
\
static inline void \
__CONCAT(__CONCAT(_, _drv), _exit)(void) \
{ \
_unregf(&(_drv)); \
} \
\
module_init(__CONCAT(__CONCAT(_, _drv), _init)); \
module_exit(__CONCAT(__CONCAT(_, _drv), _exit))
#endif /* LINUXKPI_LINUX_DEVICE_DRIVER_H */

View file

@ -36,6 +36,7 @@
#define CONFIG_PCI_MSI
#include <linux/types.h>
#include <linux/device/driver.h>
#include <sys/param.h>
#include <sys/bus.h>
@ -274,24 +275,8 @@ extern spinlock_t pci_lock;
#define __devexit_p(x) x
#define module_pci_driver(_driver) \
\
static inline int \
_pci_init(void) \
{ \
\
return (linux_pci_register_driver(&_driver)); \
} \
\
static inline void \
_pci_exit(void) \
{ \
\
linux_pci_unregister_driver(&_driver); \
} \
\
module_init(_pci_init); \
module_exit(_pci_exit)
#define module_pci_driver(_drv) \
module_driver(_drv, linux_pci_register_driver, linux_pci_unregister_driver)
struct msi_msg {
uint32_t data;