内核循环队列实现fifo

来源:互联网 发布:虚拟化安全软件 编辑:程序博客网 时间:2024/05/21 09:22

定义相关结构体

 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         }

原创粉丝点击