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

Linux内核编码拾锦

1.一种定义函数指针的方法
<linux/proc_fs.h>
typedef int (read_proc_t)(char *page, char **start, off_t offset, int count, int *eof, void *data);
read_proc_t *proc_read;
    这种定义方法有一个优势就是,即使你没有看到read_proc_t的定义,也能够清楚的知道proc_read是一个指针,如下面2中的的create_proc_read_entry中的参数中显示的那样。另一种常用方法是:
typedef int (*read_proc_t)(....);定义函数指针。
read_proc_t p;
    但是这种方法没有上面那种可读性好,因为不能一眼就看出p是一个函数指针。
2.一种定义宏的方法
<linux/proc_fs.h>
static inline struct proc_dir_entry *create_proc_read_entry(const char *name, mode_t mode,
    struct proc_dir_entry *base, read_proc_t *read_proc, void *data);
inline关键字是GNU C扩展的,专门为设计内核而扩展的,它能够将函数编译成宏,如果它是函数,那么由于有static关键字修饰,显然你不能在本文件之外定义及使用它。
3.枚举变量的数量
<linux/interrupt.h>
enum{
    HI_SOFTIRQ,
    TIMER_SOFTIRQ,
    ...
    ...
    NR_SOFTIRQS,
};
    这个枚举定义了软中断类型,最后一个NR_SOFTIRQS理所当然的表示了枚举类型的最大值。
4.联合和结构的嵌套
<linux/mm_types.h>
struct page{
    unsigned long flags;
    union {
        atomic_t _mapcount;
        struct {
            u16 inuse;
            u16 objects;
        };
    };
}
    结构page中的成员怎样访问呢?初始化怎样初始化呢?含有匿名的联合和结构。测试以后可以发现最内层的成员还是当成第一层来访问,但是不能这样初始化。如有
struct page p;
p.flags=1;
atomic_set(&p._mapcount,1);
p.inuse=1;
p.objects=1;
而不能如下这样初始化
struct page p={
    .flags=1,
    .inuse=1,


相关文档:

Linux Kernel学习笔记

Linux Kernel学习笔记
Table of Contents
1. 存储器寻址
2. 设备驱动程序开发
3. 字符设备驱动程序
3.1. 设备号
3.2. 设备号的分配和释放
3.3. 重要的数据结构
3.4. 读和写
4. PCI设备
5. 内核初始化优化宏
6. 访问内核参数的接口
7. 内核初始化选项
8. 内核模块编程
8.1. 入门
8.2. 为模块添加 ......

linux yum安装mysql后要注意的一些初始化问题

zz linux yum安装mysql后要注意的一些初始化问题
我的服务器装的是centos 5.3,由于最开始安装做了详细的记录,所以整个过程也是轻车熟路,一路yum下来,就搞定了,然后就是数据库、网站的搬家,轻松搞定~
可是今天在家看了下公司的网站,问题出来了~ 有些产品点击查看详细信息的时候,找不到网页~经过一番思考,发现是mysql ......

Linux多线程编程

一:Linux多线程编程:
        线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许 ......

VMware虚拟机安装Linux光盘无法挂载解决办法

我在Vmware虚拟机上安装Linux时,第一张和第二张光盘都顺利挂载,但是在第三张光盘时却出现无法挂载的提示窗口。此时我的解决办法是:Red Hat Linux/setting/Hardware/cd/dvd(Ide)中配置好Image file后勾上Device status中的Connected即可 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号