- 论坛徽章:
- 0
|
我又做了一些测试,尝试拦截iodone, 发现拦截的struct buf中,
b_dev b_flags b_blkno b_bcount的值分别如下:
dev=8000000a00000005, flag=80c8000, offset=4310, len=1000
dev=8000000a00000005, flag=80c8000, offset=4318, len=1000
dev=8000000e00000001, flag=c8008, offset=6e91128, len=1000
dev=8000001700000000, flag=c8008, offset=6e91128, len=1000
dev=8000000a00000005, flag=80c8000, offset=10028, len=1000
dev=8000000e00000001, flag=c8008, offset=6e91138, len=1000
dev=8000001700000000, flag=c8008, offset=6e91138, len=1000
dev=8000000a00000005, flag=80c8000, offset=10038, len=1000
dev=8000000e00000001, flag=c8008, offset=6e91460, len=1000
dev=8000001700000000, flag=c8008, offset=6e91460, len=1000
dev=8000000a00000005, flag=80c8000, offset=10360, len=1000
dev=8000000e00000001, flag=c8008, offset=6ed1110, len=1000
关于b_flags我有比较大疑问, 我想知道该buf是一个读操作还是一个写操作,而buf.h中,定义了
#define B_WRITE (long)0x0000 /* non-read pseudo-flag */
#define B_READ (long)0x0001 /* read when I/O occurs */
由于B_WRITE实际等于0, 那么我用b_flags & B_WRITE永远等于0, 那我怎么才判断到这是否一个写操作呢?
再说,在我拦截到的数据中,也不存在一个b_flags & B_READ是不等于0的,好困惑
|
|