/proc/kallsymsをスクリプトで読むときにちょっとハマったので。
なにかというと、下の出力で、ext4_file_operationsはext4モジュールに含まれているというのがわかります。で、_do_forkのほうはモジュールにないので3カラム目まで。
masami@saga:~$ grep ext4_file_operations /proc/kallsyms ffffffffc0224340 r ext4_file_operations [ext4] masami@saga:~$ grep _do_fork /proc/kallsyms ffffffff81076e70 T _do_fork
それ自体は問題ないんだけど、問題になるのは3カラム目と4カラム目の区切り文字だけはタブ区切りだということ。kernel/kallsyms.cのs_show()を見てみるとタブ区切りになってるのが確認できます。
545 seq_printf(m, "%pK %c %s\t[%s]\n", (void *)iter->value, 546 type, iter->name, iter->module_name);
pythonのコードで読み込んだ行をsrtip()でstripしてるのからext4_file_operationsだけとれると思いきや、後ろのモジュール名まで取れてて何で分割されてないのかと思って見てみたらこうだったと。
- 作者: 古賀政純
- 出版社/メーカー: インプレス
- 発売日: 2015/03/26
- メディア: Kindle版
- この商品を含むブログ (1件) を見る