Merge pull request #186 from ashevche/kernel.h

Discourage kernel.h usage and other header cleanups
This commit is contained in:
Jim Huang 2023-02-23 20:33:11 +08:00 committed by GitHub
commit a91431a2e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 42 additions and 28 deletions

View File

@ -11,8 +11,8 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
/* Macro DECLARE_TASKLET_OLD exists for compatibiity. /* Macro DECLARE_TASKLET_OLD exists for compatibiity.
* See https://lwn.net/Articles/830964/ * See https://lwn.net/Articles/830964/

View File

@ -3,15 +3,19 @@
* you have read from the dev file * you have read from the dev file
*/ */
#include <linux/atomic.h>
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/irq.h> #include <linux/kernel.h> /* for sprintf() */
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/poll.h> #include <linux/printk.h>
#include <linux/types.h>
#include <linux/uaccess.h> /* for get_user and put_user */
#include <asm/errno.h>
/* Prototypes - this would normally go in a .h file */ /* Prototypes - this would normally go in a .h file */
static int device_open(struct inode *, struct file *); static int device_open(struct inode *, struct file *);

View File

@ -2,15 +2,17 @@
* chardev2.c - Create an input/output character device * chardev2.c - Create an input/output character device
*/ */
#include <linux/atomic.h>
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/irq.h>
#include <linux/kernel.h> /* We are doing kernel work */
#include <linux/module.h> /* Specifically, a module */ #include <linux/module.h> /* Specifically, a module */
#include <linux/poll.h> #include <linux/printk.h>
#include <linux/types.h>
#include <asm/errno.h>
#include "chardev.h" #include "chardev.h"
#define SUCCESS 0 #define SUCCESS 0

View File

@ -2,10 +2,11 @@
* completions.c * completions.c
*/ */
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/err.h> /* for IS_ERR() */
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
static struct { static struct {
struct completion crank_comp; struct completion crank_comp;

View File

@ -63,7 +63,6 @@ static struct platform_driver devicemodel_driver = {
.driver = .driver =
{ {
.name = "devicemodel_example", .name = "devicemodel_example",
.owner = THIS_MODULE,
.pm = &devicemodel_pm_ops, .pm = &devicemodel_pm_ops,
}, },
.probe = devicemodel_probe, .probe = devicemodel_probe,

View File

@ -1,9 +1,10 @@
/* /*
* example_atomic.c * example_atomic.c
*/ */
#include <linux/interrupt.h> #include <linux/atomic.h>
#include <linux/kernel.h> #include <linux/bitops.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c" #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
#define BYTE_TO_BINARY(byte) \ #define BYTE_TO_BINARY(byte) \

View File

@ -1,10 +1,9 @@
/* /*
* example_mutex.c * example_mutex.c
*/ */
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/printk.h>
static DEFINE_MUTEX(mymutex); static DEFINE_MUTEX(mymutex);

View File

@ -1,9 +1,9 @@
/* /*
* example_rwlock.c * example_rwlock.c
*/ */
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
#include <linux/rwlock.h>
static DEFINE_RWLOCK(myrwlock); static DEFINE_RWLOCK(myrwlock);

View File

@ -2,9 +2,8 @@
* example_spinlock.c * example_spinlock.c
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
static DEFINE_SPINLOCK(sl_static); static DEFINE_SPINLOCK(sl_static);

View File

@ -3,8 +3,8 @@
*/ */
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
/* Macro DECLARE_TASKLET_OLD exists for compatibility. /* Macro DECLARE_TASKLET_OLD exists for compatibility.
* See https://lwn.net/Articles/830964/ * See https://lwn.net/Articles/830964/

View File

@ -1,8 +1,8 @@
/* /*
* hello-1.c - The simplest kernel module. * hello-1.c - The simplest kernel module.
*/ */
#include <linux/kernel.h> /* Needed for pr_info() */
#include <linux/module.h> /* Needed by all modules */ #include <linux/module.h> /* Needed by all modules */
#include <linux/printk.h> /* Needed for pr_info() */
int init_module(void) int init_module(void)
{ {

View File

@ -3,8 +3,8 @@
* This is preferred over using init_module() and cleanup_module(). * This is preferred over using init_module() and cleanup_module().
*/ */
#include <linux/init.h> /* Needed for the macros */ #include <linux/init.h> /* Needed for the macros */
#include <linux/kernel.h> /* Needed for pr_info() */
#include <linux/module.h> /* Needed by all modules */ #include <linux/module.h> /* Needed by all modules */
#include <linux/printk.h> /* Needed for pr_info() */
static int __init hello_2_init(void) static int __init hello_2_init(void)
{ {

View File

@ -2,8 +2,8 @@
* hello-3.c - Illustrating the __init, __initdata and __exit macros. * hello-3.c - Illustrating the __init, __initdata and __exit macros.
*/ */
#include <linux/init.h> /* Needed for the macros */ #include <linux/init.h> /* Needed for the macros */
#include <linux/kernel.h> /* Needed for pr_info() */
#include <linux/module.h> /* Needed by all modules */ #include <linux/module.h> /* Needed by all modules */
#include <linux/printk.h> /* Needed for pr_info() */
static int hello3_data __initdata = 3; static int hello3_data __initdata = 3;

View File

@ -2,8 +2,8 @@
* hello-4.c - Demonstrates module documentation. * hello-4.c - Demonstrates module documentation.
*/ */
#include <linux/init.h> /* Needed for the macros */ #include <linux/init.h> /* Needed for the macros */
#include <linux/kernel.h> /* Needed for pr_info() */
#include <linux/module.h> /* Needed by all modules */ #include <linux/module.h> /* Needed by all modules */
#include <linux/printk.h> /* Needed for pr_info() */
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_AUTHOR("LKMPG"); MODULE_AUTHOR("LKMPG");

View File

@ -2,9 +2,10 @@
* hello-5.c - Demonstrates command line argument passing to a module. * hello-5.c - Demonstrates command line argument passing to a module.
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h> /* for ARRAY_SIZE() */
#include <linux/module.h> #include <linux/module.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/printk.h>
#include <linux/stat.h> #include <linux/stat.h>
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");

View File

@ -10,8 +10,9 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/kernel.h> #include <linux/kernel.h> /* for ARRAY_SIZE() */
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
static int button_irqs[] = { -1, -1 }; static int button_irqs[] = { -1, -1 };

View File

@ -3,13 +3,20 @@
* at the same time, put all but one to sleep. * at the same time, put all but one to sleep.
*/ */
#include <linux/kernel.h> /* We're doing kernel work */ #include <linux/atomic.h>
#include <linux/fs.h>
#include <linux/kernel.h> /* for sprintf() */
#include <linux/module.h> /* Specifically, a module */ #include <linux/module.h> /* Specifically, a module */
#include <linux/printk.h>
#include <linux/proc_fs.h> /* Necessary because we use proc fs */ #include <linux/proc_fs.h> /* Necessary because we use proc fs */
#include <linux/sched.h> /* For putting processes to sleep and #include <linux/types.h>
waking them up */
#include <linux/uaccess.h> /* for get_user and put_user */ #include <linux/uaccess.h> /* for get_user and put_user */
#include <linux/version.h> #include <linux/version.h>
#include <linux/wait.h> /* For putting processes to sleep and
waking them up */
#include <asm/current.h>
#include <asm/errno.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
#define HAVE_PROC_OPS #define HAVE_PROC_OPS

View File

@ -401,7 +401,7 @@ The \cpp|cleanup_module()| function is supposed to undo whatever \cpp|init_modul
Lastly, every kernel module needs to include \verb|<linux/module.h>|. Lastly, every kernel module needs to include \verb|<linux/module.h>|.
% TODO: adjust the section anchor % TODO: adjust the section anchor
We needed to include \verb|<linux/kernel.h>| only for the macro expansion for the \cpp|pr_alert()| log level, which you'll learn about in Section \ref{sec:printk}. We needed to include \verb|<linux/printk.h>| only for the macro expansion for the \cpp|pr_alert()| log level, which you'll learn about in Section \ref{sec:printk}.
\begin{enumerate} \begin{enumerate}
\item A point about coding style. \item A point about coding style.