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

时间:2016-05-26 16:33:54

标签: c linux-kernel

我正在研究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?

2 个答案:

答案 0 :(得分:1)

类似于:git log --oneline --decorate -32 -G" foo \(" - [filename]

答案 1 :(得分:0)

每次内核的内部接口发生变化时,您是否必须不断更改模块?如果是这种情况,official answer是将您的模块放入主内核树中,这样内核开发人员每次更改它所依赖的内容时都会更新模块。

我不知道你的情况,这可能是不可能的,例如:因为您不希望公开源代码。 (作为猜测:您可以将模块的所有绝密功能移动到用户空间进程中,在模块中留下足够少量的代码,您不介意它是公开的,但我不知道是否这样对你来说是可能的,或者如果你已经想到它。)(它 也会帮助将内核恐慌变成单纯的进程崩溃。< grin>)