2015-06-01から1ヶ月間の記事一覧

linux: 署名付きカーネルモジュールの署名の付き方

Fedora等、モジュールを署名しているディストリビューションの場合、カーネルモジュールのELFバイナリの最後に署名がついています。これがとんな感じなの?いうところはkernelのDocumentation/module-signing.txtに書かれています。/proc/keysで鍵の確認とか…

namespaces: proc_ns_operations構造体のget()の呼び出し方

各名前空間は/proc//ns以下にファイルとしてエクスポートされていて、nsenterがこの辺を使うわけですが、proc_ns_operations構造体に設定した関数はどのような流れで呼びだされているのかを見てみます。 対象をuts namespaceとし、utsns_get()にWARN_ONを仕…

buddy allocator: compatctionの処理 compaction_suitable()

compaction_suitable()はcompact_zone()の最初に使う関数で、コンパクションしようとしているzoneをコンパクションするかどうか判断する。 compaction_suitable()自体はたいした処理はなく、__compaction_suitable()が実際にチェックをする。 1259 unsigned …

buddy allocatorの__zone_watermark_ok()めも

Linuxのbuddy allocatorでpage数のwatermarkをチェックしているのは__zone_watermark_ok()。そんなわけで、今日はその辺りの動作を見てみる。 __zone_watermark_ok()は他のファイルから直接呼べないので、zone_watermark_ok()を使う。例えば、mm/compaction.…

buddy allocator: compactionのざっくりとした流れ

__alloc_pages_slowpath()でcompactionの処理をする場合のざっくりとした流れをc⌒っ゚д゚)っφ メモメモ... __alloc_pages_slowpath()では__alloc_pages_direct_compact()をこのように呼んでpageの確保を試みる。 2700 /* 2701 * Try direct compaction. The first…

user_ns: task_structからuser_nsの取得めも

誰得なめも。task_structからuser_nsの取得の方法。 名前空間はstruct nsproxyで管理されているけど、user namespaceはstruct credが管理していて、user namespace以外の名前空間はその構造体にuser namespaceへのポインタを持っている。 このポインタがどう…

Linux: inodeからtask_struct構造体を取得

Namespace周りのコードを読んでいたらinodeからtask_struct構造体を取得をしているところがあって、こんなことできるんだ〜などと思ったのでどんな方法で取得するのか見てみます。 使ってた場所はproc_ns_follow_link()とかです。 ↓のように。 37 struct tas…

buddy system: __alloc_pages_slowpath()のざっくりとした流れ。

LinuxのPage Allocatorで __alloc_pages_slowpath()の流れをメモ程度に。 読んでいるカーネルのversionは4.0。 __alloc_pages_nodemask()でget_page_from_freelist()を呼んだ時にpageの確保ができなかった場合に呼ばれるのが __alloc_pages_slowpath()。 get…

aurのパッケージをaur4に移行した

Arch LinuxのAURにPKGBUILDをアップロードしている人には「AUR 4.0.0 migration notification」というメールが届きましたね。aru4になってもパッケージをメンテナンスしたいひとは6月8日〜7月8日での間にgitリポジトリにコミットしてねってということで、早…

Solaris 10が安かったので購入して仮想環境に入れてみた

単なるやってみた系ですm(__)m Twitterで↓を見て、「Solaris 10が108円なら買いだな!土曜日に行ってみて売ってたら買おう!」と思い、実際にアキバパレットタウンに行ったところ売ってたので買ってみました。 「SOLaris ¥108」アキバパレットタウン #akiba…

buddy allocator: __rmqueue_fallback()を調べる

前回の記事では__rmqueue_smallest()を見たので、今回は __rmqueue_fallback()を見ていきます。 この関数の呼び出し元は__rmqueue()で、__rmqueue_smallest()でメモリを確保できなかった場合に実行されます。 では、処理を見ていきましょう。 __rmqueue_fall…

buddy allocator: __rmqueue_smallest()を調べる

前回の「buffered_rmqueue()めも - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ」続きとして、__rmqueue_smallest()を読みます。 これは割と分かりやすい感じです。 では、見ていきます。 関数のプロトタイプはこうなっていて、引数はpageを確保する対象のzo…