gpt4 book ai didi

linux - linux中shm.c的修改

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:21 25 4
gpt4 key购买 nike

我想在 Linux 中修改 shm.c,为此我做了以下操作:

  1. 在我的设备上下载了 Linux 源代码。
  2. 使用我下载的源代码重新编译了 linux 内核。
  3. 经过多次验证,我确认现在正在运行的确实是我的源代码

在我对 shmget()shmat() 函数进行修改后,这些修改确实有效。

我怀疑我正在更改的函数不是实际的 shmget()shmat() 函数,因为它们的名称是 shmget() 并且实现名称为 do_shmget() 等等。

所以我的问题是,当我执行 shmget()shmat() 时,我怎么知道哪个是实际调用的函数,或者是否有可能实现的名称是 do_shmget() 左右吗?

代码引用:https://github.com/torvalds/linux/blob/master/ipc/shm.c

最佳答案

How can I know that which is the functions that is actually called when I do shmget() or shmat()?

当用户空间使用一些系统调用时调用的内核函数定义为

SYSCALL_DEFINE<N>(<name>, ...)

哪里<N>是系统调用参数的编号,<name>是系统调用的名称,以及 <name> 之后的参数是系统调用参数的类型和名称。

例如,shmget系统调用,对应的函数定义为(ipc/shm.c):

SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
{
return ksys_shmget(key, size, shmflg);
}

如你所见,系统调用函数调用了ksys_shmget() .

关于linux - linux中shm.c的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49954671/

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