- 论坛徽章:
- 12
|
本帖最后由 mike79 于 2012-05-21 10:18 编辑
io_submit的原型是int io_submit(io_context_t ctx, long nr, struct iocb *ios[]);
我想跟踪下每次io_submit的数据量有多大,理论上应该是ios[0]->aio_nbytes+ios[1]->aio_nbytes+ios[2]->aio_nbytes......
但是在systemtap中只能跟踪到ios[0]->aio_nbytes,类似下面的代码
probe kernel.function("sys_io_submit") {
count=$iocbpp->aio_nbytes
}
(我觉得有点奇怪,iocbpp应该是iocb**类型的,为什么$iocbpp->可以访问到iocb的成员?)
我尝试用类型转换的方法获取ios[1]->aio_nbytes,但没有成功
ppiocb=$iocbpp+64
count=@cast($iocbpp, "struct iocb")->aio_nbytes
进一步发现下面这两个count是不同的,systemtap的类型转换有点奇怪
count=$iocbpp->aio_nbytes
ppiocb=$iocbpp
count=@cast($iocbpp, "struct iocb")->aio_nbytes
最后我的问题就是怎样才能获取到ios[1]->aio_nbytes?
|
|