ChinaUnix.net
相关文章推荐:

taskletkill 移除tasklet

在书上看到 同类的tasklet不能同时运行,所以对于同类tasklet中的共享数据不需要保护。不同类的tasklet共享时,需要在访问下半部中的数据前先获取一个普通的自旋锁。 同类,不同类,是指HI_SOFTIRQ tasklet_SOFTIRQ两种类型吗,还是指什么??

by zkrain - 内核源码 - 2012-02-11 18:24:19 阅读(1381) 回复(3)

相关讨论

Softirq tasklet 1.softirq action static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp; 可重入的 所以初始化一遍,无需遍历cpu2.Percpu tasklet_vec tasklet_hi_vecDEFINE_PER_CPU(struct list_head [NR_SOFTIRQS], softirq_work_list) 这几个都是与smp percpu相关的 3. tasklet and hrtimer spin_lock_bh()涉及的软中断问题求教 [color="#FFFFFF"]中国Linux论坛首页 [color="...

by wangxingchao201 - Linux文档专区 - 2010-01-21 23:45:27 阅读(1377) 回复(0)

中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例如,假设一个数据块已经达到了网线,当中断控制器接受到这个中断请求信号时,Linux内核只是简单地标志数据到来了,然后让处理器恢...

by shengfeng73 - Linux文档专区 - 2009-03-08 15:26:13 阅读(572) 回复(0)

今天无意中看了下tasklet的原代码 void __tasklet_schedule(struct tasklet_struct *t) { unsigned long flags; local_irq_save(flags); t->next = NULL; *__this_cpu_read(tasklet_vec.tail) = t; __this_cpu_write(tasklet_vec.tail, &(t->next)); raise_softirq_irqoff(tasklet_SOFTIRQ); local_irq_restore(flags); } 这里的tasklet_vec是一个单向的链表,head用来遍历,tail用来添加元素。 但是 t->next = ...

by pengchao311 - 内核源码 - 2014-02-26 17:30:11 阅读(915) 回复(6)

tasklet小述 2008-06-12 12:47 一、tasklet使用 1、声明一个tasklet 动态: void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data) 静态: #define DECLARE_tasklet(name, func, data) \ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data } #define DECLARE_tasklet_DISABLED(name, func, data) \ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1)...

by sam58123 - Linux文档专区 - 2009-06-09 14:01:02 阅读(725) 回复(0)

我想在tasklet中测试中断位是否=0: int n; asm{ "pushf;" "popf %0;" "movw %0 n;" :"=a" } n=n & IF; 可以这样做吗?汇编能这样写吗?

by whoisliang - Linux环境编程 - 2009-01-20 18:37:21 阅读(1468) 回复(1)

古老的BH、tasklet、softirq 古老的BH:作为一种特殊的tasklet kernel/softirq.c : static void (*bh_base[32])(void); struct tasklet_struct bh_task_vec[32]; 在softirq_init中,注册32个bh_task_vec的函数指针为 bh_action; tasklet_SOFTIRQ : tasklet_action; HI_SOFTIRQ : tasklet_hi_action; NET_RX_SOFTIRQ : net_rx_action; [net_dev_init] NET_TX_SOFTIRQ: net_tx_action; 在sche...

by xpyzyf - Linux文档专区 - 2008-10-27 23:38:58 阅读(611) 回复(0)

代码如下, 疑问一:tasklet_schedule判断该tasklet是否已经被SCHE,如果没有则执行 __tasklet_schedule(),并且只加入当前的CPU队列,而不是每个CPU队列, 所以说每个tasklet只是被schedule一次?但ULK3上说可能是多次。 疑问二:tasklet_action()中, if (tasklet_trylock(t)) 首先判断是否已经在其他CPU上执行,如果只被在当前CPU上schedule一次,这个似乎没有必要? 疑问三: tasklet如果被schedule多次,怎么保证...

by rwen2012 - 内核源码 - 2008-06-12 11:17:19 阅读(1725) 回复(8)

#include m|a;XSep151392#include ?8ozbyM${0no%t151392#include LUPA开源社区-O?#E"W ]#c #include V4GE1gx(W:]dn151392#include Oz/v}u.o151392#include (\4a'L1H$j151392#include LUPA开源社区Aj7bUlM|j I -vw"S)Wc,x)?7aS151392static unsigned long data=0; ~Aa/P?Z"Y0g

by helight - Linux文档专区 - 2008-05-08 12:00:25 阅读(796) 回复(0)

#include linux/module.h> #include linux/init.h> #include linux/fs.h> #include linux/kdev_t.h> #include linux/cdev.h> #include linux/kernel.h> #include linux/interrupt.h> static struct tasklet_struct tasklet; static void tasklet_callback(unsigned long data) { printk(KERN_ALERT "tasklet_callback running.\n"); } static int __init test_init(void) { tasklet_init(&tasklet, taskl...

by @sky - Linux文档专区 - 2008-03-27 20:03:57 阅读(1628) 回复(0)

1.tasklet tasklet是为了方便得处理中断下半部事宜而设计的.一般使用如下: 定义一个tasklet: DECLARE_tasklet(tasklet_name,tasklet_func,data); //定义一个tasklet结构tesklet_name,与tasklet_func(data)函数相关联 static void tasklet_func(unsigned long data) { //do the bottom half stuff here......... } 在中断处理函数中,只需要做如下调用,就可以使tasklet在适当的时候调用: tasklet_schedule(&tasklet_n...

by maddrone - Linux文档专区 - 2008-03-12 17:31:15 阅读(951) 回复(0)