2013-11-01から1ヶ月間の記事一覧
前回でとりあえずarch_init_early()は大体読んだので次はinit_early()に戻ってcell_init()から。cell_init()はhypervisor/control.cにある。 int cell_init(struct cell *cell, struct jailhouse_cell_desc *config, bool copy_cpu_set) { unsigned long *co…
「φ(・・*)ゞ ウーン jailhouseのコードを読んでみるの3」で残した4つの関数のうち、paging_init() とpage_map_create()は「φ(・・*)ゞ ウーン jailhouseのコードを読んでみるの4」で確認したので まずはhypervisor/arch/x86/setup.carch_init_early()を。この関数…
「φ(・・*)ゞ ウーン jailhouseのコードを読んでみるの3」の続きを。まずはhypervisor/paging.cpaging_init()から。paging_init()を上から順に見ていきます。 int paging_init(void) { unsigned long per_cpu_pages, config_pages, bitmap_pages; unsigned long…
「φ(・・*)ゞ ウーン jailhouseのコードを読んでみるの2」の続きでinit_early()を。 init_early()の呼び出し元はhypervisor/setup.cのentry()。最初に行われるのはGlobal Offset Tableの初期化。 static void init_early(unsigned int cpu_id) { unsigned long …
on_cpu_each()がasyncなのかというところのめもです。on_each_cpu()を見ると三番目の引数waitがなんか怪しいのが分かりますね。 これが使われているのはsmp_call_function()なのでこれを見る必要があると。 547 /* 548 * Call a function on all processors.…
on_each_cpu()の単なるめも #include <linux/module.h> #include <linux/kernel.h> #include <linux/cpumask.h> #include <linux/smp.h> MODULE_DESCRIPTION("hello module"); MODULE_AUTHOR("masami256"); MODULE_LICENSE("GPL"); static atomic_t count; static void foobar(void *info) { printk(KERN_INFO "CPU[%d] hello</linux/smp.h></linux/cpumask.h></linux/kernel.h></linux/module.h>…
前回の「φ(・・*)ゞ ウーン jailhouseのコードを読んでみるの1」からの続きでjailhouse_enable()から。この関数は以下のようにjailhouseコマンドを実行した時に呼ばれる。 jailhouse enable /path/to/qemu-vm.cell引数に渡しているファイル名はconfigs/の下に有…
まあ、なんとなく。。。見ているコードはgitのこのコミットで。jailhouseのツールとしての構成としては以下のようになっているようです。 カーネルモジュールのjailhouse.ko ↑が読み込むファームウェアのjailhouse.bin ユーザーランドのツールのjailhouse ソ…
jailhouseのmain.cを見ていてファームウェアの読み込みrequest_firmware()のところでこれってどうやってんだろ?と思ったので調べてみるなど。見たカーネルのバージョンは3.12です。 この関数がどんなことをしているのかというのはLinux Kernel Watchにあり…
OAuthのライブラリとしてgtm-oauth2がありますが、ちょっと使って見たのでめもです。オフィシャルのドキュメントはこちら。 やりたいこととしてはOAuthの部分はgtm-oauth2を使ってAPIへのアクセスは自分でやるという方式です。APIへのアクセスまで含んだGoog…
UITableViewCellをドラッグ&ドロップで移動するのはどうやんだ?と思ったらそんなに面倒な事では無かったのでめも。まずはデータ。 セクションの名前のarrayとセクション内のデータを保持するarrayを保持するarray。 @property (nonatomic, retain) NSArray…
Jailhouseという新しいハイパーバイザの紹介記事がLWNに載ってたのでちょっとためそかなーと思ったけど、READMEによるとLinux 3.12だとまだ動かせないみたいでした\(^o^)/ Currently it requires kvm.git, next branch on the host (in order to get suppo…
lxcでarch linuxのテンプレートでも使おうと思って気付いたことは/usr/share/lxc/templates/lxc-archlinuxはbr0をインターフェースに期待していて、lxc-createコマンドの-fオプションに渡すconfigファイルに設定をしててもダメだということ。こんなファイル…
ふと気になったのでめも。実際にidleスレッドを作るのはinit_idle()だけどそこに至までの流れは結構深い。 start_kernel() --> sched_init() --> init_idle() --> rest_init() --> kernel_init() --> kernel_init_freeable() --> smp_init() --> idle_thread…
使っているLinuxディストリビューションはArch Linuxです。多分systemdを使っている環境ならsystemd-coredumpctlでcoreを取れると思いますが未確認です。。。こんな感じで色々とやられています。 masami@saga:~/debug/usr$ sudo journalctl -b -r -p 2 -- Lo…
Arch Linuxでkdumpを設定する場合はArchのWikiの説明を見ればOKです。ただFedoraのkdumpの設定と比べるとちょっと手間がかかる部分もあります。どうせならkexecの実行時に使うカーネル名、initramfs名あたりは決め打ちじゃなくて動的にできるようにしたほう…
需要があるかどうかはともかく、自分では使うだろうというところからxfstestsのパッケージを作ったのでAURにも投稿しました。 パッケージはこちらに。今までdebパッケージ、rpmパッケージは作ったことありましたが、Archのパッケージはこれが初でしたがこれ…
xfstestsの使い方めも物理ディスクではなくてイメージファイルで実行する場合は以下を実行してイメージファイルとファイルシステムの作成をする。 [root@saga xfstests]# dd if=/dev/zero of=test.img bs=1M count=1024 1024+0 records in 1024+0 records ou…
Arch LinuxでAndroidの開発環境を整えようと思ったらArch LinuxのWikiにある手順で良いと思いますが、今回はAndroid SDKの配布ページからeclipseと一緒に配布されている方を使ってみました。SDKはオフィシャルのページからダウンロード。これは特筆するよう…
Arch Linuxに/sbin/installkernelコマンドが無いのでとりあえず作っておくと後々楽ですねということで。Linuxカーネルをこのようにビルドしている場合、最後のmake install実行時に/sbin/installkernelというコマンドが呼ばれます。 make menuconfig make bz…