• 内核链接的简单使用


    内核链表的使用demo

     1 /*1. 头文件 */
     2 #include <linux/init.h>
     3 #include <linux/module.h>
     4 #include <linux/moduleparam.h>
     5 #include <linux/kernel.h>
     6 #include <linux/list.h>
     7 
     8 struct score{
     9     int num;
    10     int Englist;
    11     int math;
    12     struct list_head list;
    13 };
    14 
    15 struct list_head score_head;
    16 
    17 struct score stu1,stu2,stu3;
    18 struct list_head *pos;
    19 struct score *tmp;
    20 
    21 
    22 MODULE_PARM_DESC(ivar, "module kernel list");
    23 
    24 
    25 
    26 
    27 
    28 /* 2.模块的加载函数*/
    29 static int __init hello_init(void)
    30 {
    31     int ret = 0;
    32 
    33     INIT_LIST_HEAD(&score_head);
    34 
    35     stu1.num = 1;
    36     stu1.Englist =59;
    37     stu1.math = 99;
    38 
    39     list_add_tail(&(stu1.list),&score_head);
    40 
    41     stu2.num = 2;
    42     stu2.Englist = 69;
    43     stu3.math = 98;
    44 
    45     list_add_tail(&(stu2.list),&score_head);
    46 
    47     stu3.num = 3;
    48     stu3.Englist = 89;
    49     stu3.math = 97;
    50 
    51     list_add_tail(&(stu3.list),&score_head);
    52 
    53     list_for_each(pos,&score_head){
    54         tmp = list_entry(pos,struct score,list);
    55         printk(KERN_ERR"num:%d	Englist: %d	math: %d
    ",tmp->num,tmp->Englist,tmp->math);
    56     }
    57 
    58 
    59     return ret;
    60 }
    61 
    62 /* 3.模块的卸载函数*/
    63 static void __exit hello_exit(void)
    64 {
    65     list_del(&(stu3.list));
    66     list_del(&(stu2.list));
    67     list_del(&(stu1.list));
    68 
    69   printk("%s()[%s:%d]
    ",  __func__, __FILE__, __LINE__);
    70   printk("Bye, drivers!
    ");    
    71 }
    72 
    73 /*4. 模块的入口和出口*/
    74 module_init(hello_init);
    75 module_exit(hello_exit);
    76 
    77 /*5.模块的许可声明*/
    78 MODULE_LICENSE("GPL");
  • 相关阅读:
    后缀数组简要总结
    2019CCPC网络赛
    2019 Multi-University Training Contest 6
    洛谷P4145——上帝造题的七分钟2 / 花神游历各国
    扫描线——POJ1151
    2012Noip提高组Day2 T3 疫情控制
    2012Noip提高组Day1 T3 开车旅行
    JZOJ.5335【NOIP2017模拟8.24】早苗
    三套函数实现应用层做文件监控
    LLVM一个简单的Pass
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/8125828.html
Copyright © 2020-2023  润新知