linux内核学习:内核链表
来源:互联网 发布:中宏产业数据库 编辑:程序博客网 时间:2024/05/16 17:02
数据结构是编程中很重要的一部分.链表是一种数据结构,编程中,我们为了实现链表这种数据结构,常常需要完成他的初始化,添加,遍历,添加,删除等功能.针对n多种链表来讲,除了内容不同外,但这些 添加,删除,遍历操作其实都是可以写成公共代码的,不必每次需要实现一种链表,就重新写一遍添加,删除,遍历的操作,太浪费时间和经历,且容易出错.幸运的是,内核有帮我们实现了这种功能,我们只需安心服用便可!
#include <linux/init.h>#include <linux/module.h>#include <linux/list.h>#include <linux/kernel.h>#include <asm/uaccess.h>#include <linux/slab.h>#include <linux/fs.h>#define EMPLOYEE_NUM 5static struct list_head employee_head;static struct list_head *employee_pos = NULL;struct employee{ char name[20]; int number; int salary; struct list_head list;};static struct employee *Pemployee = NULL;static struct employee *Pemployeetmp = NULL;static int __init list_init(void){ int i; INIT_LIST_HEAD(&employee_head); Pemployee = kzalloc(sizeof(struct employee)*EMPLOYEE_NUM,GFP_KERNEL); if(Pemployee == NULL) { return -ENOMEM; } for(i=0;i<EMPLOYEE_NUM;i++) { sprintf(Pemployee[i].name,"Employee-%d",i+1); Pemployee[i].number =100+i; Pemployee[i].salary =20000 +1000*i; list_add(&(Pemployee[i].list),&employee_head); } list_for_each(employee_pos,&employee_head) { Pemployeetmp = list_entry(employee_pos,struct employee,list); printk(KERN_ALERT "Employee name :%s,number :%d,salary:%d.\n",Pemployeetmp->name,Pemployeetmp->number,Pemployeetmp->salary); } return 0;}static void list_exit(void){ int i; for(i=0;i <EMPLOYEE_NUM;i++) { list_del(&(Pemployee[i].list)); } kfree(Pemployee);}module_init(list_init);module_exit(list_exit);MODULE_LICENSE("GPL");
现象:
0 0
- linux内核学习:内核链表
- Linux内核链表学习
- Linux内核驱动学习(六)----内核链表
- Linux内核驱动学习(六)----内核链表
- linux内核学习(17)内核编程基本功之内核链表list_entry
- linux内核学习(17)内核编程基本功之内核链表list_entry
- Linux内核链表学习笔记
- Linux内核学习之链表
- Linux内核学习之链表
- Linux内核链表学习笔记
- linux内核链表学习笔记
- linux内核双向链表学习
- linux内核链表学习出错
- linux内核链表函数学习
- linux内核学习-内核分类
- Linux内核之—内核链表
- Linux嵌入式 -- 内核 - 内核链表
- Linux 内核开发 - 内核链表
- 文章标题
- Git详解之九:Git内部原理
- 大整数乘法以及空间性能优化
- 信息隐藏课程之简单的LSB最低位隐写
- 二维数组中的查找(牛课网)
- linux内核学习:内核链表
- javascript中apply、call和bind的区别
- LoadLibrary无法加载DLL解决思路
- 斐波那契数列的递归实现和非递归实现
- 108. Convert Sorted Array to Binary Search Tree
- 链表的操作
- Android 修改用户图像笔记
- 重载_,“+, -, --, ++”运算符
- 模式识别四--最大似然估计与贝叶斯估计方法