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

The Linux Kernel Module Programming Guide

 http://www.faqs.org/docs/kernel/
的11和12再试试。
Linux 内核的WorkQueues API做了修改
 
 
WorkQueue机制允许内核代码在晚一点的时间执行。Workqueue通过存在的一个或者多个专门的进程实现,去执行队列工作。因为在进程的上下文汇总执行,因此如果需要,其可以sleep。WorkQueue也可以延迟特定时间执行工作。所以它们在内核中许多地方使用。
David Howells最近检查workqueue时发现work_struct(用来描述一个程序执行)是相当大的,在64-bit机器上有96bytes,这是相当大的数据结构,因为很多地方都使用这个结构。因此他想出办法把它们变小,他成功了但是需要改动workqueue的API.
导致struct work_struct臃肿的原因是:
1.其中所包含timer structure。许多workqueue的用户从来不使用这个delay特性,但是在结构体内都包含timer_list结构。
2.私有数据指针,这是传递给work函数的参数。许多函数使用这个指针,但是它通常可以从work_struct指针中用contain_of()计算出来。
3.一个word只用一个bit来表示pending,用来说明这个work_struct目前在队列上等待执行。
David处理了以上的情况,使用了一种新的结构体struct delayed_work,专门用于延时调用使用。而把struct work_structure中的timer结构体删除了。私有数据指针消失了,work函数使用一个指向work_structure的指针,typedef void (*work_func_t)(struct work_struct *work)。使用一些技巧删除了pending word。这些变动的结果使得workqueue的API发生了变化。有两种方法声明一个workqueue的entry。
    DECLARE_WORK(name, func);
    DECLARE_DELAYED_WORK(name, func);
  对于在运行时生成的work structure,初始化宏现在如下:
  INIT_WORK(struct work_struct work, work_func_t func);
  PREPARE_WORK(struct work_struct work, work_func_t func);
  INIT_DELAYED_WORK(struct delayed_work work, work_func_t func);
  PREPARE_DELAYED_WORK(struct delayed_work work, work_func_t func);
  INIT_*版本的宏初始化整个结构,它们必须在这个结构第一次初始化的时候使用,PREPARE_*版本的宏运行速度稍微快些。
The functions for adding entries to workqueues (and canceling them) now look like this:
    int queue_work(struct workqueue_struct *queue,
  


相关文档:

LINUX安装JDK1.6攻略

 网上找了很多,这个最有效,转载下
下载成功后上传至服务器任意目录
        2. 在当前目录输入
        sh jdk-6u2-linux-i586-rpm.bin
        3.看到 安装程序在询问您是否尊守许可协议页面 ,回车 ......

Linux系统程序启动引导过程详细剖析

 Linux的一个吸引人的特性就是用户可以自行定制整个系统,你可是运行一个只有1M的“迷你”Linux,也可以运行一个几G的强大Linux。而无论你运行怎样的Linux,你都是先从引导程序开始运行的。对于普通用户,大多都是在个人电脑上运行Linux的。
  个人电脑,又叫PC机,是我们常见的使用Intel或AMD的芯片的电 ......

Linux里常见术语的缩写

转来的,没事可以看看
bin = BINaries
/dev = DEVices
/etc = ETCetera
/lib = LIBrary
/proc = PROCesses
/sbin = Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared Resources
/var = VARiable ?
FIFO = First In, First Out
GRUB = GRand Unified Bootloader
IFS = Internal Field Seperators
LILO ......

Linux内存管理之slab分配器分析(续五)

 九:几点补充:
1: Slab中使用的页面都会加上“PG_slab”标志,以跟一般的页面区别。另外,在释放内存的时候,经常需要用到从页面到slab的对应转换关系。那是怎样标识的呢?
关于标志:
注意有以下代码:
static void *kmem_getpages(kmem_cache_t *cachep, int flags, int nodeid)
{
  &n ......

linux内核空间申请超过2MB连续空间的实现函数。

 /*
kmalloc can apply 128KB memory only. This func support any continous memory allocate more than 2MB.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kallsyms.h>
#define KMEM_PAGES       &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号