Linux内核实践之tasklet机制【转】

简介: 转自:http://blog.csdn.net/bullbat/article/details/7423321 版权声明:本文为博主原创文章,未经博主允许不得转载。 作者:bullbat          源代码分析与原理部分参见前面的文章linux中断延迟之tasklet,这里...

作者:bullbat

 

       源代码分析与原理部分参见前面的文章linux中断延迟之tasklet,这里我们看看他的使用,和前面介绍的工作队列、等待队列等相同,声明采用两种方法,我们在init函数中直接采用tasklet_schedule(&my_tasklet);调度,内核中的实现很简单:

void __tasklet_schedule(struct tasklet_struct *t)

{

unsigned long flags;

 

local_irq_save(flags);

t->next = NULL;

*__get_cpu_var(tasklet_vec).tail = t;

__get_cpu_var(tasklet_vec).tail = &(t->next);

raise_softirq_irqoff(TASKLET_SOFTIRQ);

local_irq_restore(flags);

}

上面几个函数在前面的文章linux软中断中已经介绍过了,直接看使用

#include <linux/init.h>

#include <linux/module.h>

#include <linux/kernel.h>

#include <linux/interrupt.h>

 

static void tasklet_func(unsigned long value)

{

printk("This is tasklet function!\n");

}

/*用静态方式声明并定义一个tasklet,动态方式一样*/

DECLARE_TASKLET(my_tasklet,&tasklet_func,0);

 

static __init int my_tasklet_init(void)

{

/*直接调度我们的函数*/

tasklet_schedule(&my_tasklet);

return 0;

}

 

static void my_tasklet_exit(void)

{

 

}

module_init(my_tasklet_init);

module_exit(my_tasklet_exit);

运行结果:

 

【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
6天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
11天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
20 3
|
11月前
|
存储 缓存 Linux
Linux内核21-Linux内核的中断处理过程
Linux内核21-Linux内核的中断处理过程
|
11月前
|
存储 Linux 开发者
Linux内核23-工作队列
Linux内核23-工作队列
|
11月前
|
存储 Linux 调度
Linux内核36-内核同步之禁止中断
Linux内核36-内核同步之禁止中断
|
11月前
|
Linux 调度 开发者
Linux内核24-内核同步理解
Linux内核24-内核同步理解
|
11月前
|
存储 算法 Linux
Linux内核38-内核同步实际例子
Linux内核38-内核同步实际例子
|
11月前
|
Linux API 调度
Linux内核中断系统
中断在驱动中是非常常用的,无论是外部的GPIO中断,还是SPI,I2C等发送或接收中断,都是必不可少的。所以今天来看看Linux中的中断处理。
Linux内核的同步互斥机制
自旋锁相关函数声明和数据类型定义,在linux/spinlock.h中
|
负载均衡 算法 Linux
Linux内核工作队列探秘
工作队列的节能特性最早由3.11内核引入,此后,50多个子系统和设备驱动开始使用它。而节能工作队列则被广泛用于手持设备(如平板电脑,智能手机)。ARM平台上,在Android系统中使用节能工作队列,可以显著降低能源消耗。
Linux内核工作队列探秘

热门文章

最新文章