内核数据结构list_head的使用

本文介绍了一个用于嵌入式系统的待办事项列表管理模块。该模块通过定义特定的数据结构来组织待办事项,并实现了一个添加待办事项的函数,确保列表按价值排序。此外,还展示了如何使用该模块初始化列表并添加元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct todo_lis{
         struct list_head list;
         unsigned char name[30];
         unsigned int value;

};


struct todo_list todoList={.list=LIST_HEAD_INIT(todoList.list)};

static int todoAddItem(struct todo_list *new){


 struct list_head *ptr;
 struct todo_list *item;
 //list_for_each(ptr,&todoList) ,list_for_each_entry(ptr,&todoList,list)
 for(ptr=todoList.list.next;ptr!=&todoList;ptr=ptr->next) 
 {
  item=list_entry(ptr,struct todo_list,list);
  if(item->value < new->value)
  {
   list_add_tail(&new->list,ptr);
   return;
  } 
 }
 list_add_tail(&new->list,&todoList);

}

static todoList_probe(struct platform_device *pdev)

{

 struct list_head *ptr;
 int  aaa[]={1,2,3,5,4,6,8,7,9,0};
 struct todo_list *item;
 int loop;

 

 for(loop=0;loop<sizeof(aaa)/sizeof(int);loop++)
 {
  item=kzalloc(sizeof(struct todo_list),GFP_KERNEL);
  item->value=aaa[loop];
  printk(KERN_ERR "value=%d\n",item->value);
  todoAddItem(item);
 }
 
 //list_for_each_entry(ptr,&todoList,list)
 list_for_each(ptr,&todoList.list)
 {
  item=list_entry(ptr,struct todo_list,list);
  printk(KERN_ERR "value=%d\n",item->value);
 }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值