2013-01-01から1年間の記事一覧

( ..)φカキカキ armで遊んでみる on Fedora

ARMにも興味がある今日この頃、ARMで学ぶ アセンブリ言語入門 という本を買ってみました。 特に読みたかったのはチャプター7の例外と割り込みの所ですねー。初めて読む486を読んだり、自作OS作成経験ある人には面白い章なんじゃないかと思います。さて。早速…

φ(.. )メモシテオコウ LinuxカーネルのプロセスCheckpoint/Restore機能

Fedora 19のfeatureリストを見ていたらプロセスのダンプ・リストア機能が入っていたのでちょっと試してみました。 機能としてはカーネルのコンフィグでCONFIG_CHECKPOINT_RESTOREが有効になっていることと、crtoolsパッケージのインストールが必要です。 Fed…

φ(.. )メモシテオコウ ruby、pythonで動的なモジュールの読み込み

ruby、pythonでプラグイン的な感じに動的にモジュールを読み込むめも。どちらもモジュールを読み込むファイルとモジュールのファイルは同じパスにあるという前提です。まずはpythonから モジュールを読み込んで使うファイル。 #!/usr/bin/env python import …

φ(.. )メモシテオコウ fedoraインストール後の設定ですることvirt-manager編

virt-managerもいくつかメモ。 libvirt-kvm-daemonが無いと怒られる # yum install libvirt qemu-kvm virt-managerとして、後は依存関係の解決を任せるという方法でやったらlibvirt-kvm-daemonが無いって怒られましたw こいつはlibvirt-kvm-daemonが依存関係…

φ(.. )メモシテオコウ fedoraインストール後の設定ですること

Fedora 19のBetaがリリースされてます。ということでインストールした訳ですが(いつもならBetaのRCテスト中にインストールするから普段に比べれば遅いタイミングだけど)毎回忘れる設定はメモっときます。 SSH 別のマシンからsshで接続したときにpermission…

φ(.. )メモシテオコウ TCP FASTOPENあり・なしの場合の速度比較めも

TCP FASTOPENの有効/無効で実際にどんな感じになるのかをsendto(2)でチェックしてみた。そんなに厳密なテストはしてませんけど。 実験は1台のLinuxマシンで実行でこのような構成。 cpu Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz memory 32GiB Kernel 3.10-r…

φ(・・*)ゞ ウーン sendto(2)とsendmsg(2)に渡すflagsに関する挙動の差

TFO(tcp fastopen)で遊んでいて気付いたんですが、sendto(2)とsendmsg(2)はflagsに未知の値をセットしたときの扱いが両者で挙動の差があるっぽい。 このflags引数はMSG_PEEKとかMSG_XXXなものを論理和とった結果を渡しますが、この変数に未知の値を渡したと…

φ(.. )メモシテオコウ /proc/sys/net/ipv4/tcp_fastopenに設定する内容とか実装

TCP fastopen(TFO)を使うのに/proc/sys/net/ipv4/tcp_fastopenに整数値をセットするようだけど、その数値の意味は?というのがDocumentation/networking/ip-sysctl.txtにあったのでめも。ついでに一部実装も見てますが。tcp_fastopenファイルに設定する値…

φ(.. )メモシテオコウ iOS、Androidバイナリに対してコード署名

ここ最近iOS、Androidバイナリに対してコード署名するというスクリプトを書いたのめも。なのでカーネルとか関係ない(´Д⊂グスン ただ、これが必要になるケースはそうそう無いと思うのですけどね! まあ、そういうケースがあったから作った訳ですけども。 もの…

とりあえず

前に作ったpatch、なんとなくそのまま入れてるのでauditsc.cに変更が入ったから更新。 大きな変更点としては今までkernel/auditsc.cで定義していた構造体なんかがkernel/audit.hに移動したとかですかね。ロジック的なところではないけど。 他にはaudit_alloc…

MapKitめも アノテーションにある矢印ボタンタップ時の動きをiOS標準の地図アプリと同じようにしたい

カーネルとか全く関係ないんですけども、iOS標準の地図アプリだと矢印ボタンをタップすると新しいviewがスライドしながら出てくるのでそれと同じことをしたかったと。こんな画面で→をタップすると、 viewがスライドして出てきて、「Back」ボタンで地図に戻り…

φ(.. )メモシテオコウ x86_64のセグメントディスクリプタ(主にGDTで確認)

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…

〆(.. )カリカリッ!! Minix3のpick_proc()

たまに気になるMinixカーネルの仕組みということでプロセス切り替えの仕組みというか次に動くプロセスを選択する仕組みであるpick_proc()を読んでみる。 読んでいるソースは2013/05/04時点でのgitツリーなので将来的には変更があるかも。 s/2014/2013/ だっ…

φ(.. )メモシテオコウ linuxのlong modeへの移行処理

x86_64環境のブート処理でプロテクトモードからロングモードに移行しているのがhead_64.Sなのでこの辺をめも。 見ているカーネルのバージョンはv3.9です。ファイル名で気をつけないといけないのはx86_64ではhead_64.Sは2個あるということ。 arch/x86/kernel/…

Ticket spinlockメモ φ(.. )メモシテオコウ

Linuxカーネルのspinlockがどんなロジックで動いているのかなと思ってarch/x86/include/asm/spinlock.hを見ていたらTicket spinlockというのが出てきたのでメモ〆(.. )カリカリッ!!概要は英語のWikipediaで見つけました。 これによるとTicket spinlockは2個の整数…

φ(.. )メモシテオコウ printk:%pの拡張機能

カーネル/VM探検隊の懇親会でLinuxのprintkの%pが拡張されてるということを聞いてちょっと調べてみました。 カーネルに付属しているprintk-formats.txtに説明が色々書かれています。また、%pFと%pSで何が違うの?というところはvsprintf.cのコメントに書か…

Jenkinsめも

カーネルとは関係ないんですが、久々にJenkinsを使おうかなーと考えてるのでめもです。基本的には以下のことをリモートアクセスAPIでやろうかなと。 ジョブの作成(作成というかテンプレートのジョブを作ってそれをコピーする形で) ビルドの実行 ビルドの結…

NetBSDのスケジューラを読んでみるめも6

〆(.. )カリカリッ!! 遂に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…

NetBSDのスケジューラを読んでみるめも5

〆(.. )カリカリッ!! 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…

NetBSDのスケジューラを読んでみるめも4

〆(.. )カリカリッ!! 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…

NetBSDのスケジューラを読んでみるめも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 } 内容としては「(´-`)…

NetBSDのスケジューラを読んでみるめも2

φ(^∇^ ) メモナノラ まずはsched_pstats_hook()から。コメントからこの関数はsched_pstats()から定期的に呼ばれてプライオリティを再計算するとなってますね。 281 /* 282 * sched_pstats_hook: 283 * 284 * Periodically called from sched_pstats(); used to re…

NetBSDのスケジューラを読んでみるめも1

(´-`).。oO(なんとなくNetBSDのスケジューラを読んでみようと思ったので 見ているのはsched_4bsd.cですが、これはBSDカーネルの設計と実装の4.4.1で説明されている4.4BSDのスケジューラと基本的な考え方は変わってないよなーという想いもありこれにしてます…

φ(.. )メモシテオコウ trace_kmem_cache_alloc()はどこに?

trace_kmem_cache_alloc()はどこにいるの?と思ったのでめもです。まずはこのkmem_cache_alloc_trace()を呼んでいるのはどこかというとslub.cのkmem_cache_alloc()です。あ、うちはslabじゃなくてslubを使ってるのでファイルはslub.cを参照してます(;´∀`) …

φ(.. )メモシテオコウ debugfsのインターフェース

前も調べたことあった気がするけど忘れても良いようにメモを。まずディレクトリを作成するのはdebugfs_create_dir()で1番目の引数はディレクトリ名、2番目はディレクトリを作りたい場所のdentryでNULLを渡せばdebugfsをマウントしている場所になる。例えばd…

φ(・・*)ゞ ウーン kmalloc()使用箇所をスラブ・キャッシュを使うように変えたらどうなるか

Linuxカーネルのfork.cにあるcopy_process()を見ててkmalloc()を使っている箇所をkmem_cache_alloc()を使うようにしたらどうなんだろ?とふと思ったので試してみました。試したのはauditsc.cにあるaudit_alloc_context()です。この関数はcopy_process()から…

めも たまにはkmemleakを実行してみる

カーネルは3.8.0にしてたのととりあえずselinuxはdisableにしているときにどんな感じかでチェック。まずはリークしてるとレポートされたプロセスの一覧を出してみるとこんな感じに。 [root@kanon ~]# grep " comm \"" /sys/kernel/debug/kmemleak | cut -f2 …

cucumberのめも

最近までcucumberを使ってたのでその時に気づいたことのメモです。基本通りfeatures以下にfeatureファイルとかを置いていたとして、cucumberはfeature以下のファイルを全て読み込むようなのでステップの定義がユニークじゃないと意図しないほうが呼ばれてし…

macでEDK2のビルドメモ

UEFIの開発環境では一番メジャーなんじゃないかと勝手に思っているEDK2ですが、オフィシャルのドキュメントの手順だとうまくいかなくてちょっと手順を変更したところがいくつかあるので今後のためのメモです。 まず、公式サイトのドキュメントはUnix-like sy…

qemuでuefi

そういえばqemuもuefi対応してたようなってことで試してみたら上手くできました。参考にしたのは前回のエントリでも参考にしたこちら。英語じゃないので内容は読んでないのですがコマンドラインとかから大まかなことは把握できますねw ということで、使うコ…