- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在用户空间程序中写入一些内容,例如:从头开始在物理地址0xF7F4900(260MB)
中写入值3
地址 0x0
,而所有内核都位于 0-240MB 范围内。我该怎么做?有什么想法吗?
致以诚挚的问候。
我想使用 mmap,但我认为它可以为我提供虚拟地址。
memfd = open("/dev/mem", O_RDWR);
map = mmap(0xF7F4900, sizeof(int), PROT_WRITE, MAP_SHARED, memfd, 0);
*map = 3;
最佳答案
将 /dev/mem
视为文件并写入该文件中的偏移量 0xF7F4900
:
char value = 3;
int fd = open("/dev/mem", O_RDWR);
lseek(fd, 0xF7F4900, SEEK_SET);
write(fd, &value, 1);
close(fd);
如果您想要mmap
,同样的情况也适用。您不应该尝试将其映射到您的进程中的0xF7F4900
,而应该将其映射到任意位置并写入map[0xF7F4900]
如果您从偏移量 0 映射,或者 map[0x900]
如果您从页面边界 0xF7F4000
映射。
请注意,对 /dev/mem
的任意访问可能需要特殊的内核配置,并且通过 UEFI 安全启动完全禁用。
关于c - 将硬编码写入 RAM 的特定物理地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257884/
设备地址、物理地址和虚拟地址有什么区别? 实际上我正在尝试在驱动程序中使用 mmap,我坚持这个概念。 最佳答案 documentation说: The kernel normally uses vi
简而言之,根据我对内存管理的理解,处理器会产生虚拟地址。这些地址由 MMU 使用每个进程的地址表转换为相应的物理地址(在需要时,中间有 TLB 和页面错误)。 我的问题是处理器是否总是产生虚拟地址?在
如何存储一个人的邮寄地址?假设两个不同的用户输入的信息不同,那么如果一个用户说 123 Main Street, City, State-ABV,而另一个用户刚输入 City, State ABV。
我知道的唯一方法是在 nic 的注册表中添加“NetworkAddress”键/值对。通过这种方法对我来说太难实现了。还有其他方法吗? 我使用 Windows 窗体构建了一个示例应用程序,但 setM
我想将物理内存写入文件。内存本身不会再被触及,因此我想使用 O_DIRECT 来获得最佳的写入性能。 我的第一个想法是打开 /dev/mem 并映射内存并将所有内容写入一个文件,该文件使用 O_DIR
我是一名优秀的程序员,十分优秀!