驱动中的代码
preempt_disable();
rdtscl(start);
rdtscl(end);
preempt_enable();
printk("big end - start %lu\n",end - start);
输入命令:echo "123" > /dev/scull_char0
没有加入非抢占的preempt_disable的代码
[53611.182403] big end - start 48
[53611.548697] big end - start 120
[53611.842520] big end - start 140
[53612.226049] big end - start 120
[53612.552272] big end - start 120
[53612.888664] big end - start 140
[53613.247085] big end - start 120
加入非抢占的preempt_disable的代码
[53688.269852] big end - start 120
[53689.148889] big end - start 120
[53710.049073] big end - start 96
[53710.359387] big end - start 120
[53710.670128] big end - start 120
[53710.981119] big end - start 140
为什么open指定的两个rdtscl指定的时间会有不一致的情况呢?
理论上rdtscl的时钟周期应该是固定的啊