【发布时间】:2016-09-06 17:14:46
【问题描述】:
从 intel 软件开发手册 3b 中,我了解到 MSR (10H) 等于 RDTSC。所以我想在我的程序中使用如下代码来验证它:
asm volatile("rdmsr":"=a"(lo),"=d"(hi):"c"(0x10));
但是当我运行我的程序时,它显示了分段错误。然后意识到它只在权限级别 0 下工作的警告。所以我再次使用 sudo 访问运行程序。这次程序运行时没有出现段错误,但 asm volatile(..) 之后的语句没有被执行。即使它没有效果。
我应该怎么做才能使 rdmsr 在我的程序中工作? (我在支持这些计数器的 i7 内核上使用 linux。我验证了它。)
一些相关的帖子是Cannot read back from MSR和rdmsr,wrmsr from c/c++ code
【问题讨论】:
-
权限级别 0 是内核模式。这不是根。
标签: c linux performance intel