易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux中的工作队列 (2.6.0~2.6.19 and 2.6.20 ~ now)

http://blog.chinaunix.net/u2/69889/showart_971040.html
Linux中的工作队列
[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。
*******************************************************************************************************************
工作队列
(work
queue)

Linux
kernel
中将工作推后执行的一种机制。这种机制和
BH

Tasklets
不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。
工作队列是
2.6
内核开始引入的机制,在
2.6.20
之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对
2.6.20
之前和之后的版本分别做介绍。
1

2.6.0~2.6.19
数据结构:
struct
work_struct {
    unsigned
long pending;
    struct
list_head entry;
    void
(*func)(void *);
    void
*data;
    void
*wq_data;
    struct
timer_list timer;
};
pending
是用来记录工作是否已经挂在队列上;
entry
是循环链表结构;
func
作为函数指针,由用户实现;
data
用来存储用户的私人数据,此数据即是
func
的参数;
wq_data
一般用来指向工作者线程(工作者线程参考下文);
timer
是推后执行的定时器。
work_struct
的这些变量里,
func

data
是用户使用的,其他是内部变量,我们可以不用太过关心。
 
API

1)
INIT_WORK(_work, _func, _data)
初始化指定工作,目的是把用户指定的函数
_func

_func
需要的参数
_data
赋给
work_struct

func

data
变量。
2)
int schedule_work(struct work_struct *work)
对工作进行调度,即把给定工作的处理函数提交给缺省的工作队列和工作者线程。工作者线程本质上是一个普通的内核线程,在默认情况下,每个
CPU
均有一个类型为“
events”
的工作者线程,当调用
schedule_work
时,这个工作者线程会被唤醒去执行工作链表上的所有工作。
3)
int schedule_delayed_work(struct work_struct *work, unsigned long
delay)
延迟执行工作,与
schedu


相关文档:

Linux内核态下的文件操作

在VFS的支持下,用户态进程读写任何类型的文件系统都可以使用read和write着两个系统调用,但是在linux内核中没有这样的系统调用我们如何操作文件呢?我们知道read和write在进入内核态之后,实际执行的是sys_read和sys_write,但是查看内核源代码,发现这些操作文件的函数都没有导出(使用EXPORT_SYMBOL导出),也就是说在内核 ......

linux tasklet 2

http://hi.baidu.com/j_fo/blog/item/7412bb018deab109728da572.html
Linux内核 irq/soft irq/tasklet/同步
2009-10-08 21:22
1.中断处理程序结束之前,不允许产生相同的中断事件;(禁用PIC上该中断,但可以产生其他中断)
2.中断处理程序、软中断、tasklet既不可被抢占也不能被阻塞,最多发生中断嵌套;
3.执行中断 ......

[高性能技术] Linux2.6内核epoll介绍(0.1版本)

[高性能技术] Linux2.6内核epoll介绍(0.1版本)
转自: http://mechgouki.blogdriver.com/mechgouki/601157.html
[作者]:滕昱,2005/3/30,0.1版本
[版权声明]:此文档遵循GNU自由文档许可证(GNU Free Documentation License).任何人可以自由复制,分发,修改,不过如果方便,请注明出处和作者:)
(1)导言:
首先,我强烈建议 ......

转贴:Linux I/O重定向的一些小技巧

级别: 初级
樊奇 (fanqi@cn.ibm.com), Xseries eServer 工程师, IBM TSS China Beijing
2004 年 11 月 01 日
Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞清其中使用技巧非常有用。
首先说一下什么是I/O重定向,所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序 ......

新手看招:xManager连接Linux的配置方法


第一步,我们在Linux系统下,修改/etc/X11/xdm/Xaccess文件,找到下面的语句:
# * #any host can get a login window
 
去掉最前面的#号,成为
* #any host can get a login window
 
第二步,我们修改/etc/X11/gdm/gdm.conf文件,找到下面的语句:
 
[xdmcp]
Enable=false
将其中的En ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号