The branch main has been updated by bz:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=f5c7feee7129dc88a2e5dc3ce0a075cb5e4f534a

commit f5c7feee7129dc88a2e5dc3ce0a075cb5e4f534a
Author:     Bjoern A. Zeeb <b...@freebsd.org>
AuthorDate: 2024-08-28 14:21:33 +0000
Commit:     Bjoern A. Zeeb <b...@freebsd.org>
CommitDate: 2024-09-05 12:46:21 +0000

    LinuxKPI: add general module_driver(), use it for module_pci_driver()
    
    Factor out module_pci_driver() from 366d68f283793 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
---
 .../linuxkpi/common/include/linux/device/driver.h  | 33 ++++++++++++++++++++++
 sys/compat/linuxkpi/common/include/linux/pci.h     | 21 ++------------
 2 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/device/driver.h 
b/sys/compat/linuxkpi/common/include/linux/device/driver.h
new file mode 100644
index 000000000000..03b510c9c8b7
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/linux/device/driver.h
@@ -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 */
diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h 
b/sys/compat/linuxkpi/common/include/linux/pci.h
index 9457599d31d3..36b970154ad2 100644
--- a/sys/compat/linuxkpi/common/include/linux/pci.h
+++ b/sys/compat/linuxkpi/common/include/linux/pci.h
@@ -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;

Reply via email to