Skip to content

Commit

Permalink
LinuxKPI: add general module_driver(), use it for module_pci_driver()
Browse files Browse the repository at this point in the history
Factor out module_pci_driver() from 366d68f 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
  • Loading branch information
Bjoern A. Zeeb authored and Bjoern A. Zeeb committed Sep 5, 2024
1 parent d52c319 commit f5c7fee
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 18 deletions.
33 changes: 33 additions & 0 deletions sys/compat/linuxkpi/common/include/linux/device/driver.h
Original file line number Diff line number Diff line change
@@ -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 */
21 changes: 3 additions & 18 deletions sys/compat/linuxkpi/common/include/linux/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit f5c7fee

Please sign in to comment.