内核循环队列实现fifo

定义相关结构体

 20 LIST_HEAD(task_queue_head);

 21 struct task_queue{

 22         struct task_struct *sleep_task;

 23         int count;

 24         struct list_head list;

 25 };

 

  添加fifo节点

 struct task_queue *t_queue = NULL;

 41         t_queue = kmalloc(sizeof(struct task_queue),

 42                         GFP_KERNEL);

 43         if(!t_queue)

 44         {

 45                 printk(KERN_ALERT"fail to kmalloc/n");

 46                 return -ENOMEM;

 47         }

 48         t_queue->count = open_count;

 49         list_add_tail(&t_queue->list,&task_queue_head);

  删除fifo节点
 struct task_queue *first = NULL;
 84         struct list_head *ptr;
 85         if(!list_empty(&task_queue_head))
 86         {
 87                 ptr = task_queue_head.next;
 88                 first = list_entry(ptr,struct task_queue,
 89                           list);
 90                 printk(KERN_ALERT"first is %d/n",first->count);
 91                 list_del(ptr);
 92                 kfree(first);
 93         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值