文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux内核链表

linux内核链表

时间:2010-12-07  来源:ohmytime

 贴出一个linux2.6.29的内核链表的程序

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/list.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Rain");
MODULE_DESCRIPTION("List Module");
MODULE_ALIAS("List module");

struct student
{
    char name[100];
    int num;
    struct list_head list;
};

struct student *pstudent;
struct student *tmp_student;
struct list_head student_list;
struct list_head *pos;

int mylist_init(void)
{
    int i = 0;
    
    INIT_LIST_HEAD(&student_list);
    
    pstudent = kmalloc(sizeof(struct student)*5,GFP_KERNEL);
    memset(pstudent,0,sizeof(struct student)*5);
    
    for(i=0;i<5;i++)
    {
     sprintf(pstudent[i].name,"Student%d",i+1);
        pstudent[i].num = i+1;
        list_add( &(pstudent[i].list), &student_list);
    }
    
    
    list_for_each(pos,&student_list)
    {
        tmp_student = list_entry(pos,struct student,list);
        printk("<0>student %d name: %s\n",tmp_student->num,tmp_student->name);
    }
    
    return 0;
}


void mylist_exit(void)
{    
    int i ;
    for(i=0;i<5;i++)
    {
        list_del(&(pstudent[i].list));
    }
    
    kfree(pstudent);
}

module_init(mylist_init);
module_exit(mylist_exit);


下面是Makefile

ifneq ($(KERNELRELEASE),)

obj-m := mylist.o

else
    
KDIR := /home/project/linux_prj/gq_prj/code_2/kernel-mini-4-3-1/linux-2.6.29
all:
    make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
    rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*

endif


makefile中KDIR是你的linux内核目录。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载