小编Mir*_*chi的帖子

内核空间和用户空间之间的差异

我需要在kernl-space和用户空间之间交换struct timeval(通过netlink消息),以便计算消息创建和用户空间中的详细说明之间所经过的时间.我正在使用jiffies_to_timeval内核空间中的函数; 在用户空间我打电话gettimeofday...但如果我打印两个结构的秒数我得到200秒的差异...我无法弄清楚这个的原因.

有任何想法吗?

谢谢你们!

linux time linux-kernel

3
推荐指数
1
解决办法
3442
查看次数

将预编译的目标文件链接到内核模块

我需要链接到我的Linux内核模块预编译的目标文件.如果我在makefile中有一行像这样:

obj-m := test.o
test-objs := obj1.o obj2.o
Run Code Online (Sandbox Code Playgroud)

obj1.o存在一个obj1.c源文件,而obj2.o是一个预编译的目标文件obj1是正确构建的,但是尝试通过搜索obj2.c源文件来构建obj2.o. 如何指定obj2.o是预编译对象?

谢谢你们!

linux linux-kernel

2
推荐指数
1
解决办法
2440
查看次数

__get_free_page,物理地址和交换

假设调用__get_free_page以向内核请求ZONE_NORMAL区域中的空闲页面,因此带有GFP_KERNEL标志。我们知道返回的地址是内核逻辑地址,因此在页表中存在该逻辑地址的“永久”映射,物理地址是使用宏计算的__pa。我的问题是:如果该页面存在永久映射,那么该页面是否可以交换到磁盘?如果是,我想当它再次在内存中交换时,它每次都会放在同一个页面框架中......这是正确的吗?

linux swap memory-management linux-kernel

1
推荐指数
1
解决办法
2174
查看次数

ptrace请求PTRACE_POKETEXT失败

我正在尝试在跟踪过程中注入代码...我能够正确读取register(PTRACE_GETREGS)并且也PTRACE_PEEKTEXT可以...我已经通过GDB验证了.但是,如果我ptrace使用PTRACE_POKETEXT请求调用它返回0但在同一地址再次读取我找不到预期的字节:

void print_word(long res) {
    char *datap = (char *)&res;

    if (res == -1)
        //check errno for errors
    else
        printf("%02X %02X %02X %02X\n", datap[0], datap[1], datap[2], datap[3]);
}

....

long res, data = 0xAABBCCDD;

res = ptrace(PTRACE_PEEKTEXT, pid, (void *)regs.eip, NULL);
print_word(res);
res = ptrace(PTRACE_POKETEXT, pid, (void *)regs.eip, (void *)&data);
if (res != 0)
    //error
res = ptrace(PTRACE_PEEKTEXT, pid, (void *)regs.eip, NULL);
print_word(res);
Run Code Online (Sandbox Code Playgroud)

第一个print_word打印完全由GDB显示的四个字节.第二个print_word而不是打印奇怪的字节0xAABBCCDD. …

linux ptrace

1
推荐指数
1
解决办法
2764
查看次数

标签 统计

linux ×4

linux-kernel ×3

memory-management ×1

ptrace ×1

swap ×1

time ×1