gpt4 book ai didi

c - 如何从 C 程序访问 rdmsr?

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:49 30 4
gpt4 key购买 nike

从intel software developer manual 3b,我了解到MSR(10H)等于RDTSC。所以我想在我的程序中使用如下代码验证它:

asm volatile("rdmsr":"=a"(lo),"=d"(hi):"c"(0x10));

但是当我运行我的程序时它显示段错误。然后 a 意识到它只在特权级别 0 下工作的警告。所以我再次使用 sudo 访问运行该程序。这次程序运行时没有出现段错误,但是 asm volatile(..) 之后的语句没有被执行。即便如此也无法解决问题。

我应该怎么做才能让 rdmsr 在我的程序中工作?(我在支持这些计数器的 i7 内核上使用 linux。我验证了它。)

一些相关的帖子是Cannot read back from MSRrdmsr,wrmsr from c/c++ code

最佳答案

您将 CPU/硬件权限(对执行指令的限制、内存访问)与操作系统/系统权限(操作系统功能、文件等)混淆了。根应用程序不会以与普通用户代码不同的 CPU 特权级别运行。它只是有更多的操作系统功能。

您必须从通常在 ring 0 运行的操作系统内核运行该指令。

关于c - 如何从 C 程序访问 rdmsr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37160329/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com