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

linux驱动模块


工作队列(work queue)是另外一种将工作推后执行的形式 ,它和我们前面讨论的所有其他形式都有不同。工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许被重新调度甚至是睡眠。
那么,什么情况下使用工作队列,什么情况下使用tasklet。如果推后执行的任务需要睡眠,那么就选择工作队列。如果推后执行的任务不需要睡眠,那么就选择tasklet。另外,如果需要用一个可以重新调度的实体来执行你的下半部处理,也应该使用工作队列。它是唯一能在进程上下文运行的下半部实现的机制,也只有它才可以睡眠。这意味着在需要获得大量的内存时、在需要获取信号量时,在需要执行阻塞式的I/O操作时,它都会非常有用。如果不需要用一个内核线程来推后执行工作,那么就考虑使用tasklet。
 
1.      工作、工作队列和工作者线程
如前所述,我们把推后执行的任务叫做工作(work),描述它的数据结构为work_struct,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为events,自己也可以创建自己的工作者线程。
2.      表示工作的数据结构
   工作用<linux/workqueue.h>中定义的work_struct结构表示:
struct  work_struct{
    unsigned long pending;          /* 这个工作正在等待处理吗?*/
    struct list_head entry;         /* 连接所有工作的链表 */ 
    void (*func) (void *);          /* 要执行的函数 */
    void *data;                     /* 传递给函数的参数 */
    void *wq_data;                  /* 内部使用 */
    struct timer_list timer;    &n


相关文档:

用Linux下Perl脚本连接SQLServer

准备工作:
  用到的perl 扩展组件(modules)在上篇贴出.( win32::odbc 模块
)下载组件后按照Readme文件安装倒响应目录.配置好相应的odbc数据源.
  
  程序实现:
  使用
  use
Win32::ODBC;
  
  语句包含应使用的模块是win32::odbc,写出数据库
连接字符串
  
  $DSN = "DSN =
My DSN ......

Linux下Kill多个进程

工作中经常需要Kill多个进程,如果这些进程有共同的特点,就可以用一条命令Kill掉它们。
比如清除Oracle数据库的所有远程连接进程:

ps -efww|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
  管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用 ......

linux 下集成 svn 至 eclipse 全过程

 linux 下集成 svn 至 eclipse 全过程
因为 java 跨平台,而 eclipse 是个纯 java 开发项目,所以此集成安装过程同样适用于 windows 系统.
第一步:下载集成 svn 至 eclipse 所需的包 site-1.6.5.zip(可以去官网 http://subclipse.tigris.org/ 下载,也可以去作者的 csdn 资源里下载 site-1.6.5.zip 插件)
第二步:将 si ......

linux进程间通信方式之匿名管道

linux的进程间通信方式主要有:匿名管道、有名管道、消息队列、共享内存、信号、信号量及信号灯、socket网络通信。近日由于项目需要,用linux编写arm的应用程序,里面有几个功能模块,若干进程,进程间的通信方式选择了管道、共享内存和信号量的配合。这几天终于把程序的框架搭建好了,而我也对管道通信有了进一步的认识。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号