0

Linux カーネルのソース コードを読みたくて、LXR を見つけました。それは素晴らしいことですが、「kfree」などの機能をクリックすると、次のようになることがあります。 ここに画像の説明を入力

ld を使用して「リンク」する場合、競合があってはなりません。質問は次のとおりです。どちらが THE ONE かを判断する方法??? (gcc+makefile が解決策だと思いますが、やり方がわかりません...)

ありがとう!

4

2 に答える 2

0

1. カーネルに関する暗黙の知識があれば、kfree がスラブ、スラブ、またはスロブの一部であることに気付くでしょう。カーネル構成を確認すると、(dfefault による) スラブ アロケーターを使用していることに気付くでしょう。結論として、正解は mm/slub.c:3334 です。

2.

nm -a ./vmlinux | grep kfree
ffffffff81151bd0 T kfree
addr2line -e ./vmlinux 0xffffffff81151bd0
/home/alexhoppus/Desktop/linux/mm/slub.c:3335
于 2014-10-09T19:16:19.763 に答える
0

これは別のLinux相互参照検索で、おそらくより詳細な情報があります

https://code-grep.com/view/project/54b083273b2082684a000008/linux-3.19-rc2?search=kfree&type=definitions&page=0

ご覧のとおり、一部はプリプロセッサ定義で、一部は関数です。どちらが正しいかを知るには、通常はカーネルの .config ファイルにある構成オプションをチェックアウトします。

于 2015-01-12T06:10:14.223 に答える