2008-10-01から1ヶ月間の記事一覧

iPhoneってPowerアーキテクチャになるのん?

アップル、「Powerアーキテクチャの第一人者」を採用--IBMは提訴で反撃 - ZDNet Japan アップル、省電力チップ設計会社P.A. Semiを2億7800万ドルで買収--米報道 - CNET Japanうーん?? 携帯にPPCって考えにくいよねぇ・・・?そうでもないの?これを読む限…

小岩 龍翔楼

マダンの日替わりはこの間と似たり寄ったりな「ユッケジャンうどん」って書いてあるし、他に入りたい店もねぇなぁ、、探してる時間もないしなぁ、、と思ってたら目に飛び込んだのが、五百円台の中華定食。ま、そんなに大した店じゃねえだろう、食べログラン…

ユーザランドの実装方法

ファイルシステムもelfパーサも仮想メモリも無いカーネルでユーザランドをお手軽に書いてみる方法について考えている。 ユーザランド側で必要な初期化とシステムコールを一度発行するだけのプログラムをアセンブリで書き、HEXでダンプ カーネルのグローバル…

NetBSD-current /sbin/initが起動されるまで(3)

pack.ep_esch->es_emulはstruct emulのポインタになっており、NetBSDアプリケーションを実行する時はcompat/netbsd32/netbsd32_netbsd.cに定義されているemul_netbsd32が代入されている。 const struct emul emul_netbsd32 = { "netbsd32", "/emul/netbsd32"…

NetBSD-current /sbin/initが起動されるまで(2)

sys_execve()は単にexecve1を呼んでいる: /* * exec system call */ /* ARGSUSED */ int sys_execve(struct lwp *l, const struct sys_execve_args *uap, register_t *retval) { /* { syscallarg(const char *) path; syscallarg(char * const *) argp; sys…

Ethernet device polling(1)

FreeBSDでは、イーサネット高速化の為にdevice pollingという機構を実装している。 ギガビットイーサや10ギガビットイーサでは割り込み処理が重すぎる為、割り込みなど使わずにどんどんOS側からデータを取りに行った方が速いから、というのが理由らしい。 …

Hardware Checksum support on NetBSD-current(4)

dev/pci/if_vge.cを例に受信時のHW checksum supportの流れを確認する。 初期化 vge_attach()のifp->if_capabilitiesで対応している機能のフラグを立てる: ifp->if_capabilities |= IFCAP_CSUM_IPv4_Tx | IFCAP_CSUM_IPv4_Rx | IFCAP_CSUM_TCPv4_Tx | IFCAP…

小岩 塩らーめん はるかぜ

作り置きのおかずもないしコンビニ弁当ばかり食べててもなんなので、食べログで上位なラーメン屋へ足を運んでみました。頼んだのは、塩ラーメン(あっさり)+餃子・ライスセット。ねぎ・もやしはシャキシャキ、チャーシューは分厚くてジューシー、ゆで卵は…

Hardware Checksum support on NetBSD-current(3)

dev/pci/if_wm.cとかを読んでると、 /* * Set up checksum info for this packet. */ if ((status & WRX_ST_IXSM) == 0) { if (status & WRX_ST_IPCS) { WM_EVCNT_INCR(&sc->sc_ev_rxipsum); m->m_pkthdr.csum_flags |= M_CSUM_IPv4; if (errors & WRX_ER_IP…

Hardware Checksum support on NetBSD-current(2)

ちょっと真面目に調べる事にした。前回書いたgem_attach()のコードで ifp->if_capabilities |= IFCAP_CSUM_TCPv4_Tx; というのがあったが、どんなフラグがあるのか、net/if.hを見てみよう: /* Capabilities that interfaces can advertise. */ #define IFCA…

Microsoft、ブラウザで使える軽量版Office提供へ

Web

Microsoft、ブラウザで使える軽量版Office提供へ - ITmedia NEWS Office Webアプリケーションは、コンシューマー向けには「Office Live」を介して、広告付きの無料版またはサブスクリプション制のバージョンを提供する。 MS good job! 出来ればFirefoxでもう…

Windows 7 pre betaのタスクバーを見て思うこと

Vistaの次のウインドウズ「Windows 7」の新機能をスクリーンショット付きで大解説、地味に改善されていることが明らかに - GIGAZINE最近出たOffice 2007のツールバーにしてもそうなのだが、そこそこ成功し、定着していたものを敢えて根底から覆して新しくす…

小岩 マダン

今日は小岩で昼飯を食ってこうと思って、昨日通りかかったときに気になったマダンのランチを食べてきた。 日替わりランチを頼んだ、今日はユッケジャンクッパだった。 真っ赤で熱くて辛くてとってもあったまった。 激安な店も多いから、小岩のランチ的にはそ…

IDTの初期化

まぁ取り合えずIDTを初期化して割り込み有効にして割り込み受け取って画面に文字表示する位は出来た。 さて、こっから先はどうしようか。 #define IDT_SIZE 256 static descriptor_t idt[IDT_SIZE] = {{{0}}}; static inline void idt_load(descriptor_table…

さぬき家

会社の近くのうどん屋に行って来た。 ちょっといい感じだな、と思って入って、値段を見て思わずケチって一番安い「讃岐うどん」を頼んだが運の尽き。 僕の嫌いな海草類がたっぷり入っているのである。 ていうか、具の過半数を海草が占めているのである。えっ…

FreeBSDとNetBSDの初期化シーケンスの違い

FreeBSDもNetBSDも元を辿れば同じものから派生してるんだから、コードもさぞかし似ているんだろう。 とか思って、初期化シーケンスを見ていたら、見た目がかなり違っていてビビッた。NetBSDでは先ほど書いた通り、kern/init_main.cのmain()から機種非依存な…

NetBSD-current /sbin/initが起動されるまで(1)

main()で一通りの初期化が終わって/sbin/initを起動する準備が整ったら、start_init()がfork()される: if (fork1(l, 0, SIGCHLD, NULL, 0, start_init, NULL, NULL, &initproc)) panic("fork init"); start_init()の流れを順に見ていく。 /* * Now in proce…

NetBSD-current/evbmips(MALTA) でmain()が呼ばれるまで

arch/mips/mips/locore.S kernel_text()がエントリーポイントで、 arch/evbmips/malta/machdep.c mach_init()を呼んでアーキテクチャ独自の初期化コードを走らせて、 kern/init_main.c main()を実行。 こっからカーネルが走り始める。

「ラスプーチンと呼ばれた男 佐藤優の地球を斬る」が終わってしまった

SankeiBiz(サンケイビズ):総合経済情報サイト ネットで佐藤優の連載が読める数少ない(唯一?)場所だったのに。残念。

カーネル内での特定処理にかかる時間を測定の続き

カーネル内での特定処理にかかる時間を測定でmbufにmeasure_timeを突っ込んでパケット処理にかかる時間を調べるというやり方を書いたが、同じ事をNetBSD-currentでやるとカーネルがふっとぶ。 mbufの扱い方が変わってるからだろーけど、、、mbuf自体をきちん…

Hardware Checksum support on NetBSD-current

ハードウェアで補助されたチェックサム計算 FreeBSDのmanを読んだらこんなん乗ってたので、NetBSDではどうよ?と思ったら、3.0のアナウンスに gem(4) and hme(4) now have hardware checksum support. とか書いてあった。 manのどこに書いてあるのかは良く分…

コンロよりも上手に作れる! 電子レンジ超活用法

コンロよりも上手に作れる! 電子レンジ超活用法 | ライフハッカー[日本版] えっと、日本の怠惰な主婦達なら誰でも知ってそうな気がするのは私の気のせいか、、、 フードコラムニストですよね?新聞社の。 ていうか今までレンジって何に使ってたんですか?…

FreeBSD 6.3の割り込み

どんな風になってるかちょっと読んでみた。 ふつーの割り込みのばやい apic_vector.sで定義されてる、ISR_VEC()が各割り込み処理の開始ポイントになってるはず。 まず、PUSH_FRAMEで #define PUSH_FRAME \ pushl $0 ; /* dummy error code */ \ pushl $0 ; /…

とは言っても

自分でyield()した時は確かに汎用レジスタ保存しないで良いかもしれないが、実行途中で割り込んだ時は結局保存する必要があるんじゃぁ? でもって、タイマでカーネルプリエンプションとかやったりするんだったら、結局全スレッドの汎用レジスタを保存しとく…

あれ??

NetBSD-currentの割り込み - かーねる・う゛いえむにっき で引用したKernIntrのコードだが、 /* * Save the relevant kernel registers onto the stack. * We don't need to save s0 - s8, sp and gp because * the compiler does it for us. */ とか言って$…

NetBSD-currentの割り込み

FreeBSD 6.3の割り込み - かーねる・う゛いえむにっき で割り込み時のコンテキストがスタックに退避されてるー、って書いたけど、これはx86に限らず一般的にこうなってるもののようだ。 NetBSD/mipsはそれなりにコードを読んだつもりだったが、割り込み時の…

x86 TSSを使わないコンテキスト切り替えについて

なんかTSSを使ったコンテキスト切り替えが思うように実装出来なかったので、ソフトウェアで実装してみた。私の常識はMIPSの常識なので、当然汎用レジスタをPCBに保存して・・・とか思ってたら、Intel x86ではこのタイミングで切り替えることは不要です。必要…

ちょっちビックリしたこと

NetBSD 1.6のカーネル内のコードでdouble hoge = 1.23456;みたいな事を書いたら、「doubleなんてワシ知らんし」ってgccに怒られた。そんな事出来たのか。

カーネル内での特定処理にかかる時間を測定

NetBSD 1.6でカーネル内での特定処理にかかる時間を測定しようと思ったのだが、そういう仕組みは入ってなさそうだったので、Quick & Dirtyに書いてみた。 コード #define MEASURE_TIMES 10000 typedef struct { int id; int time; unsigned start[MEASURE_TI…

スラブアロケータ

スラブアロケータ - Linuxカーネルメモ Linux スラブ・アロケーターの徹底調査 メモリ領域管理機構 (1) Buddy system