存档在 2012年7月

调用inotify_init()出现function not implemented的解决办法

2012年7月25日

调用inotify_init()后返回-1,通过strerror(error)提示为“Function not implemented”,这个错误的排除方法如下:

inotify是从内核2.6.13开始引入的,而glibc为inotify机制提供用户态API是从2.4开始引入的,因此先确定内核以及glibc的版本是否满足上述条件。

内核的版本确定方法:uname -r

查看glibc的版本信息:ls -l /lib/libc.so.6

如果上述版本信息无误,那么接着查看当前内核是否打开了inotify的相关选项:

1.进入家目录:cd

2.将config.gz文件拷贝到家目录:cp /proc/config.gz  ./

3.解压这个文件到家目录:gzip -d config.gz

4.打开刚刚解压的文件(默认情况下文件名为config),查找CONFIG_INOTIFY关键字。如果CONFIG_INOTIFY和CONFIG_INOTIFY_USR没有打开,也就是说其值不是Y,那么就不能使用inotify功能。

块缓冲区和块缓冲区头

2012年7月24日

在详细说明块缓冲区和块缓冲区头之前,我们先来看一下块设备中的两个基本概念:扇区和块。

扇区是块设备传输数据的基本单元,也就是说它是块设备中最小的寻址单位,扇区通常的大小为512B。块是内核对文件系统的一种抽象,也就是说内核执行的所有磁盘操作都是以块为基本单位的。可以简单的将扇区和块理解为:扇区是硬件设备传输数据的最小单位,而块是操作系统传输数据的最小单位。一个块通常对应一个或多个相邻的扇区,由于内核将块作为对文件系统操作的最小单位,因此VFS将其看作是单一的数据单元。

当内核从磁盘读入数据后或者即将写数据到磁盘时,它需要将数据写入一个缓冲区。缓冲区其实就是物理页框的一部分,因此一个物理页框可能包含一个或多个块缓冲区。根据上述描述的关系,包含磁盘数据的物理页框构造如下图:

正如上面所说,块缓冲区是页框的一部分,因此不用特别描述块缓冲区中的数据。每个块缓冲区都对应一个块缓冲区头buffer_head,他们的关系如同物理页框和物理页框描述符,前者用来存储数据,后者是对前者的属性以及控制信息的描述。块缓冲区头、块缓冲区以及页框的关系如下:


内核中使用buffer_head结构来描述缓冲区头,该结构中的部分字段解释如下:

struct buffer_head {
         unsigned long b_state;          
         struct buffer_head *b_this_page;
         struct page *b_page;            
         atomic_t b_count;               
         u32 b_size;                     
         sector_t b_blocknr;             
         char *b_data;                  
         struct block_device *b_bdev;
         bh_end_io_t *b_end_io;         
         void *b_private;               
         struct list_head b_assoc_buffers; 

b_state:对块缓冲区状态的描述。
b_this_page:在一个页框中,可能包含多个块缓冲区。一个页框内的所有缓冲区形成循环链表,该字段指向下一个块缓冲区。
b_page:指向缓冲区所在页框的描述符。
b_size:块缓冲区大小。
b_data:当前块在作为缓冲的页框内的位置。
b_bdev:指向块设备的指针。

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key