#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple Hello World Kernel Module");
MODULE_VERSION("1.0");
#include <linux/list.h>
#include <linux/slab.h>
// 定义黑名单节点结构体
struct black_list_entry {
char name[50]; // 假设黑名单条目包含一个名字
struct list_head list; // 链表节点,用于将该结构体链接到链表中
};
// 定义并初始化黑名单链表头部
static LIST_HEAD(black_list);
// 添加数据到黑名单链表
void add_to_black_list(const char *name) {
struct black_list_entry *entry;
// 分配内存
entry = kmalloc(sizeof(*entry), GFP_KERNEL);
if (!entry)
return;
// 初始化节点数据
strncpy(entry->name, name, sizeof(entry->name) - 1);
entry->name[sizeof(entry->name) - 1] = '\0'; // 确保字符串以'\0'结尾
// 初始化链表节点
INIT_LIST_HEAD(&entry->list);
// 将节点添加到黑名单链表中
list_add(&entry->list, &black_list);
}
void print_black_list(void) {
struct black_list_entry *entry;
list_for_each_entry(entry, &black_list, list) {
printk(KERN_INFO "Black list entry: %s\n", entry->name);
}
}
static int __init hello_init(void) {
printk(KERN_INFO "Hello, World!\n");
add_to_black_list("fff");
print_black_list();
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye, World!\n");
}
module_init(hello_init);
module_exit(hello_exit);
linux 驱动链表使用
最新推荐文章于 2024-09-29 17:41:08 发布