- 论坛徽章:
- 0
|
我在ldd3的示例代码的jit.c文件的jit_tasklet函数中添加了rdtscl函数,打算测试我的机器上的指令周期,可是出现了奇怪的测试结果。
int jit_tasklet(char *buf, char **start, off_t offset,
int len, int *eof, void *arg)
{
struct jit_data *data;
char *buf2 = buf;
unsigned long j = jiffies;
long hi = (long)arg;
unsigned long ini, end;
rdtscl(ini);
rdtscl(end);
printK(KERN_ALERT "time lapse: %lu,%lu,%lu\n", end, ini, end - ini);
data = kmalloc(sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
init_waitqueue_head (&data->wait);
/* write the first lines in the buffer */
.................................................................
编译模块,加载模块后。 运行 cat /proc/jitasklet, 然后 dmesg, 查看最后两行,结果是:
time lapse:298040156,298039876,280
time lapse:299368484,299367684,800
怎么会这样呢? 我只运行了一次cat /proc/jitaskle, 怎么会有两行输出呢? printk怎么会被执行两次呢?
请高手指点! |
|