2016-05-26 9 views
2

私はLinuxカーネルモジュールで作業しています。これは多かれ少なかれLinuxカーネルバージョンに依存しません。つまり、バージョン固有のコードをたくさん追加し、ifdefでラップしなければならないということです。最高の解決策ではありません...Linuxカーネルコードのどの部分がどのカーネルリリースで変更されたかを知るには

問題はLinuxカーネルソースが何度も変更されていることです。

static void foo(int a, int b) 

を次のように例えば、非常に始まる関数fooで宣言され、後に、それは

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

に変更し、最終的にそれが

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

のように見える私の質問はどうすればよいですどのようなLinuxカーネルバージョンの関数fooが変更されたかを知ることができますか?

+0

カーネルgit repoをクローンし、それを二等分して、変更を導入したリビジョンを見つけてください。または、単にコミットメントを検索するためにウェブサイトを使用してください(おそらくうまくいきません)。 –

+1

'git annotate-file'は、* file *の各行の最後の変更を表示します。 – 0andriy

答えて

1

何かのように:gitのログ--oneline --decorate -32 -G「のfoo \(」 - [ファイル名]

0

はあなたがするたびに、カーネルの内部あなたのモジュールを変更する維持する必要があり、あなたの根本的な問題であり、インタフェースが変更された場合、official answerはあなたのモジュールをメインのカーネルツリーに入れて、カーネル開発者が依存するものを変更するたびにモジュールを更新します。

あなたの状況はわかりませんが、あなたがソースコードを公開したくないために、これは可能ではないかもしれません(推測として:モジュールの一番上の秘密の機能をユーザランドプロセスに移動させ、あなたがそれが可能であるかどうか、あるいはあなたがすでにそれを考えていたかどうかは分かりません)。(は、カーネルパニックを単なるプロセスクラッシュに変えるのに役立ちます。 。 < grin>)

関連する問題