2013-01-01から1年間の記事一覧
ARMにも興味がある今日この頃、ARMで学ぶ アセンブリ言語入門 という本を買ってみました。 特に読みたかったのはチャプター7の例外と割り込みの所ですねー。初めて読む486を読んだり、自作OS作成経験ある人には面白い章なんじゃないかと思います。さて。早速…
Fedora 19のfeatureリストを見ていたらプロセスのダンプ・リストア機能が入っていたのでちょっと試してみました。 機能としてはカーネルのコンフィグでCONFIG_CHECKPOINT_RESTOREが有効になっていることと、crtoolsパッケージのインストールが必要です。 Fed…
ruby、pythonでプラグイン的な感じに動的にモジュールを読み込むめも。どちらもモジュールを読み込むファイルとモジュールのファイルは同じパスにあるという前提です。まずはpythonから モジュールを読み込んで使うファイル。 #!/usr/bin/env python import …
virt-managerもいくつかメモ。 libvirt-kvm-daemonが無いと怒られる # yum install libvirt qemu-kvm virt-managerとして、後は依存関係の解決を任せるという方法でやったらlibvirt-kvm-daemonが無いって怒られましたw こいつはlibvirt-kvm-daemonが依存関係…
Fedora 19のBetaがリリースされてます。ということでインストールした訳ですが(いつもならBetaのRCテスト中にインストールするから普段に比べれば遅いタイミングだけど)毎回忘れる設定はメモっときます。 SSH 別のマシンからsshで接続したときにpermission…
TCP FASTOPENの有効/無効で実際にどんな感じになるのかをsendto(2)でチェックしてみた。そんなに厳密なテストはしてませんけど。 実験は1台のLinuxマシンで実行でこのような構成。 cpu Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz memory 32GiB Kernel 3.10-r…
TFO(tcp fastopen)で遊んでいて気付いたんですが、sendto(2)とsendmsg(2)はflagsに未知の値をセットしたときの扱いが両者で挙動の差があるっぽい。 このflags引数はMSG_PEEKとかMSG_XXXなものを論理和とった結果を渡しますが、この変数に未知の値を渡したと…
TCP fastopen(TFO)を使うのに/proc/sys/net/ipv4/tcp_fastopenに整数値をセットするようだけど、その数値の意味は?というのがDocumentation/networking/ip-sysctl.txtにあったのでめも。ついでに一部実装も見てますが。tcp_fastopenファイルに設定する値…
ここ最近iOS、Androidバイナリに対してコード署名するというスクリプトを書いたのめも。なのでカーネルとか関係ない(´Д⊂グスン ただ、これが必要になるケースはそうそう無いと思うのですけどね! まあ、そういうケースがあったから作った訳ですけども。 もの…
前に作ったpatch、なんとなくそのまま入れてるのでauditsc.cに変更が入ったから更新。 大きな変更点としては今までkernel/auditsc.cで定義していた構造体なんかがkernel/audit.hに移動したとかですかね。ロジック的なところではないけど。 他にはaudit_alloc…
カーネルとか全く関係ないんですけども、iOS標準の地図アプリだと矢印ボタンをタップすると新しいviewがスライドしながら出てくるのでそれと同じことをしたかったと。こんな画面で→をタップすると、 viewがスライドして出てきて、「Back」ボタンで地図に戻り…
x86_64をちゃんと覚えようということで資料はIntel®のSDM(使ったのはIntel® 64 and IA-32 ArchitecturesSoftware Developer’s Manual Volume 3 (3A, 3B & 3C):System Programming Guide)とLinuxのカーネルを見つつ。見ているカーネルのバージョンはv3.9.1…
たまに気になるMinixカーネルの仕組みということでプロセス切り替えの仕組みというか次に動くプロセスを選択する仕組みであるpick_proc()を読んでみる。 読んでいるソースは2013/05/04時点でのgitツリーなので将来的には変更があるかも。 s/2014/2013/ だっ…
x86_64環境のブート処理でプロテクトモードからロングモードに移行しているのがhead_64.Sなのでこの辺をめも。 見ているカーネルのバージョンはv3.9です。ファイル名で気をつけないといけないのはx86_64ではhead_64.Sは2個あるということ。 arch/x86/kernel/…
Linuxカーネルのspinlockがどんなロジックで動いているのかなと思ってarch/x86/include/asm/spinlock.hを見ていたらTicket spinlockというのが出てきたのでメモ〆(.. )カリカリッ!!概要は英語のWikipediaで見つけました。 これによるとTicket spinlockは2個の整数…
カーネル/VM探検隊の懇親会でLinuxのprintkの%pが拡張されてるということを聞いてちょっと調べてみました。 カーネルに付属しているprintk-formats.txtに説明が色々書かれています。また、%pFと%pSで何が違うの?というところはvsprintf.cのコメントに書か…
カーネルとは関係ないんですが、久々にJenkinsを使おうかなーと考えてるのでめもです。基本的には以下のことをリモートアクセスAPIでやろうかなと。 ジョブの作成(作成というかテンプレートのジョブを作ってそれをコピーする形で) ビルドの実行 ビルドの結…
〆(.. )カリカリッ!! 遂に6回目! sched_lwp_fork()とsched_lwp_collect()です。これでsched_4bsd.cで実装している関数は終わります( ´∀`)bグッ!まずはsched_lwp_fork()です。 460 void 461 sched_lwp_fork(struct lwp *l1, struct lwp *l2) 462 { 463 464 l2->l…
〆(.. )カリカリッ!! sched_proc_fork()とsched_proc_exit()sched_proc_fork()は特にこれといった処理はないですね。 405 * sched_proc_fork: 406 * 407 * Inherit the parent's scheduler history. 408 */ 409 void 410 sched_proc_fork(struct proc *parent, st…
〆(.. )カリカリッ!! sched_schedclock()です。関数本体よりもコメントの方が多いですね。 376 /* 377 * We adjust the priority of the current LWP. The priority of a LWP 378 * gets worse as it accumulates CPU time. The CPU usage estimator (l_estcpu) 3…
φ(.. )メモシテオコウ このシリーズ3回目はsched_setrunnable()とsched_nice()を見てみます。まずはsched_setrunnable()から。 331 void 332 sched_setrunnable(struct lwp *l) 333 { 334 335 if (l->l_slptime > 1) 336 updatepri(l); 337 } 内容としては「(´-`)…
φ(^∇^ ) メモナノラ まずはsched_pstats_hook()から。コメントからこの関数はsched_pstats()から定期的に呼ばれてプライオリティを再計算するとなってますね。 281 /* 282 * sched_pstats_hook: 283 * 284 * Periodically called from sched_pstats(); used to re…
(´-`).。oO(なんとなくNetBSDのスケジューラを読んでみようと思ったので 見ているのはsched_4bsd.cですが、これはBSDカーネルの設計と実装の4.4.1で説明されている4.4BSDのスケジューラと基本的な考え方は変わってないよなーという想いもありこれにしてます…
trace_kmem_cache_alloc()はどこにいるの?と思ったのでめもです。まずはこのkmem_cache_alloc_trace()を呼んでいるのはどこかというとslub.cのkmem_cache_alloc()です。あ、うちはslabじゃなくてslubを使ってるのでファイルはslub.cを参照してます(;´∀`) …
前も調べたことあった気がするけど忘れても良いようにメモを。まずディレクトリを作成するのはdebugfs_create_dir()で1番目の引数はディレクトリ名、2番目はディレクトリを作りたい場所のdentryでNULLを渡せばdebugfsをマウントしている場所になる。例えばd…
Linuxカーネルのfork.cにあるcopy_process()を見ててkmalloc()を使っている箇所をkmem_cache_alloc()を使うようにしたらどうなんだろ?とふと思ったので試してみました。試したのはauditsc.cにあるaudit_alloc_context()です。この関数はcopy_process()から…
カーネルは3.8.0にしてたのととりあえずselinuxはdisableにしているときにどんな感じかでチェック。まずはリークしてるとレポートされたプロセスの一覧を出してみるとこんな感じに。 [root@kanon ~]# grep " comm \"" /sys/kernel/debug/kmemleak | cut -f2 …
最近までcucumberを使ってたのでその時に気づいたことのメモです。基本通りfeatures以下にfeatureファイルとかを置いていたとして、cucumberはfeature以下のファイルを全て読み込むようなのでステップの定義がユニークじゃないと意図しないほうが呼ばれてし…
UEFIの開発環境では一番メジャーなんじゃないかと勝手に思っているEDK2ですが、オフィシャルのドキュメントの手順だとうまくいかなくてちょっと手順を変更したところがいくつかあるので今後のためのメモです。 まず、公式サイトのドキュメントはUnix-like sy…
そういえばqemuもuefi対応してたようなってことで試してみたら上手くできました。参考にしたのは前回のエントリでも参考にしたこちら。英語じゃないので内容は読んでないのですがコマンドラインとかから大まかなことは把握できますねw ということで、使うコ…