- 論壇徽章:
- 0
|
我在ldd3的示例代碼的jit.c文件的jit_tasklet函數(shù)中添加了rdtscl函數(shù),打算測試我的機(jī)器上的指令周期,可是出現(xiàn)了奇怪的測試結(jié)果。
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 */
.................................................................
編譯模塊,加載模塊后。 運(yùn)行 cat /proc/jitasklet, 然后 dmesg, 查看最后兩行,結(jié)果是:
time lapse:298040156,298039876,280
time lapse:299368484,299367684,800
怎么會(huì)這樣呢? 我只運(yùn)行了一次cat /proc/jitaskle, 怎么會(huì)有兩行輸出呢? printk怎么會(huì)被執(zhí)行兩次呢?
請高手指點(diǎn)! |
|