如何找出哪个内核版本中更改了 Linux 内核代码的哪一部分

问题描述 投票:0回答:2

我正在研究 Linux 内核模块,它或多或少与 Linux 内核版本无关。这意味着我被迫添加大量特定于版本的代码并用 ifdef 包装它。不是最好的解决方案...

问题是Linux内核源代码已经被更改了很多次。例如,最开始函数 foo 的声明如下

static void foo(int a, int b)

后来改成

static void foo(int a, int b, int c)

最后看起来像

static int foo(int a, int b, int c)

我的问题是如何找出哪个 Linux 内核版本函数 foo 被修改了?

c linux-kernel
2个回答
1
投票

类似:

git log --oneline --decorate -32 -G"foo\\(" -- [filename]

0
投票

如果您的根本问题是每次内核内部接口更改时您都必须不断更改模块,那么官方答案是将您的模块放入主内核树中,这样内核开发人员每次更改时都会更新您的模块它取决于什么。

这可能是不可能的,例如您不想公开源代码。

作为猜测:您可以将模块的所有绝密功能移至用户态进程中,在模块中留下足够少量的代码,您不介意公开,但我不知道这是否是对你来说是可能的。它有助于将内核恐慌转变为纯粹的进程崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.