在Linux里,我们可以利用mmap()将档案或device的某个区块映像到记体里使用。在inode里这两个字段就是跟它有关的:
struct vm_area_struct *i_mmap;
int i_writecount;
i_writecount这个字段的值是用来记录目前有多少个行程是以可写入的模式开启此档案的。为什么需要这个值呢? 因为系统没办法支持可以对一个档案写入,而又同时将这个档案映像为MAP_DENYWRITE的模式,所以,用这个字段来代表目前有多个行程可对此inode做写入的动作或是有多少个行程将它映像成MAP_DENYWRITE的模式。它的值有以下三种情形:
0: 没有行程将它开启为可写入,也没有行程对它做MAP_DENYWRITE的映像
< 0: 有-i_writecount个行程对它做MAP_DENYWRITE的映像。
> 0: 有i_writecount个行程将它开启为可写入模式。
至于i_mmap这个字段就是用来做内存映像的字段。