2009-05-01から1ヶ月間の記事一覧

簡単に遊べるMIPSベースのマイコン

再び低レイヤープログラミングの勉強を始めるのに良い本・Webサイト - かーねる・う゛いえむにっきの件、MIPSで遊べるハードないかなぉ、という話について。たけおかさん直々のおすすめなので、取り上げさせて頂きます。PIC32|たけおか ぼちぼち日記 マイコ…

PSPでプログラミングなリンク集

環境はそれなりに整っているので、低レイヤな部分を色々いじって勉強するにはやっぱり良さそうに見える。 本とかは自重しているのかと思ったら、「改造!PSP」みたいな事口走ってる雑誌が山ほど出てるね。SCEIの事情とか関係ねーのな。特に低レイヤ部分で楽…

(PS1|PS2|PSP)で学ぶ低レイヤープログラミング

低レイヤープログラミングの勉強を始めるのに良い本・Webサイト - かーねる・う゛いえむにっきの話の続きだが、(PS1|PS2|PSP)で学ぶ低レイヤープログラミングって本があったらいいのに。(MIPSイイヨって言いたかっただけです、はい)でも、流石に本の冒頭で…

Genkidama now on sourceforge.jp!

sourceforge.jpの承認が降りたので、Genkidamaをsourceforge.jpへ乗せました。 今後の開発はこちらで行います。 Genkidama プロジェクト日本語トップページ - OSDN

ネットワークにおけるスループット・レイテンシの計測ツール

仕事でも研究でもスループットやレイテンシを測らなきゃいけない事があったので、どこのツールが良いか色々調べてみた。 結果、僕は以下の2つを併用している: スループット Iperf download | SourceForge.net UNIX系ならソースからコンパイルすれば良い。 …

低レイヤープログラミングの勉強を始めるのに良い本・Webサイト

若者から低レイヤープログラミングの勉強を始めるのに良い本・Webサイトが無いかと聞かれて即答しかねたので調べてみようと思う。 カーネルの内部構造など難しげな理論から入るのは避けて、中高生が始めるのに取っつきが良く手っ取り早そうな資料を集めてみ…

Erlang

id:tokenとErlangについてほんの少し勉強してみた。 Erlang クエックブックに書いてあるコードを幾つか理解出来るまで読んでみた。 かしこさが+1あがった。しかしなんでクックブックじゃなくクエックブック?Erlangのお勉強だとこの本が良いらしい:プログ…

先輩からも技術書を薦められた。

こちらは、OSのSMP対応でキャッシュコヒーレンシに悩む事が多いので、一度根本的に理解してみるといいんじゃないの、という意味で薦められた(んだと思う)。Cache Memory Book, The, Second Edition (The Morgan Kaufmann Series in Computer Architecture …

社長から技術書を薦められた。

う〜ん、なんだか物量を見るだけでお腹一杯になりそうな勢いだが、ちょっとずつ手をつけてみても良いかもしれないな。ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井…

OpenBSD/sgi on octane2 - mplock周りで落ちるバグについて#5

OpenBSD/sgi on octane2 - mplock周りで落ちるバグについて#4 - かーねる・う゛いえむにっき でKASSERTをコメントアウトして無理やり起きなくしたバグだが、やっぱり発生するようだ。 rd0: fixed, 8192 blocks boot device: sd0 root on rd0a swap on rd0b …

OpenBSD/sgi on octane2 - sync to HEAD

ここで無謀にもHEADと同期: $ cvs up暴挙だとは思うんだけどな〜ついやってもうた地味に大量のdiff発生: Index: arch/sgi/sgi/ip27_machdep.c =================================================================== --- arch/sgi/sgi/ip27_machdep.c (繝ェ…

OpenBSD/sgi on octane2 - exception.S・tlbhandler.SにおけるGET_CPU_INFO()とコンテキスト保存、割り込みの話

exception.S・tlbhandler.Sでは、以下のような処理が行われている:1. Exception発生、ベクタアドレスにジャンプ 2. ベクタアドレスに設置されたハンドラはException要因を調べexceptionテーブルに書いてある関数へジャンプ 3. 割り込み前のコンテキストを保…

OverlayweaverのSelfAddressに関する問題と疑問

OverlayweaverでSelfAddressの扱いが変な気がしてきた。 設定・環境依存な問題かもしれないが。以下はグローバルIPをホストで直接所持しているノードAとローカルIPを持ちUPnPでルータと会話が出来るノードBでDHTを構成してみた時の記録である。まず、ノードA…

OpenBSD/sgi on octane2 - ipendingをcurcpu()->ci_ipendingへ移動

こんなんでどうでっしゃろ。 あーもう説明かくの面倒い。 Index: mips64/exception.S =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/exception.S,v retrieving revision 1.16 diff -r1.1…

OpenBSD/sgi on octane2 - cplをcurcpu()->ci_cplへ移動

こっちは面倒い。アセンブリから沢山参照されている。 Index: context.S =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/context.S,v retrieving revision 1.20 diff -r1.20 context.S 40…

OpenBSD/sgi on octane2 - want_reschedをcurcpu()->ci_want_reschedへ移動

これはアセンブリないから簡単。 Index: interrupt.c =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/interrupt.c,v retrieving revision 1.35 diff -r1.35 interrupt.c 251c251 < if (wa…

OpenBSD/sgi on octane2 - curprocpaddrをcurcpu()->ci_curprocpaddrへ移動(解決篇)

OpenBSD/sgi on octane2 - curprocpaddrをcurcpu()-&gt;ci_curprocpaddrへ移動 - かーねる・う゛いえむにっきの解決篇。この間うまく動かなかったコードでは、一度GET_CPU_INFO(reg0, reg1)したら同じ関数ではもう一度取得しなおす事はせずreg0へ参照を行う…

OpenBSD/sgi on octane2 - astpendingをcurproc->p_md.md_astpendingへ移動

べ、別にアンタの為に書いてる訳じゃないんだからねっ!!! Index: mips64/mips64/exception.S =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/exception.S,v retrieving revision 1.16 …

AMD Athlon Neoって何だろう?

CPU

12インチノート HP Pavilion dv2、量販店モデルは約6万円 - Engadget 日本版をよんでたら、Athlon Neo MV-40プロセッサなるものが出てきたからなんやろこれ?と思ってググってみると、こんな記事が出てきた: よっちゃんのチラ裏 Athlon Neo vs Atom ベンチ…

UPnP in Overlayweaver

if (Config.getBoolean("dhtUPnP", true)) { String internalAddress = InetAddress.getLocalHost().getHostAddress(); UPnPAddressPortMapper.start(internalAddress, dataPort, Mapping.Protocol.TCP, "Genkidama data port", null, 90 * 1000L); InetAddr…

Genkidama on Overlayweaver

Overlay Weaverを使ったテストプログラムを書いてみた。 - かーねる・う゛いえむにっきを元に、GenkidamaをOverlayweaverへ乗せ替えている。 2,3時間で単純な載せ替えはほぼ終了。 どうもローカルアドレスのハンドリングに難があってjoinに失敗したりする…

UPnP issue solved in Overlayweaver

UPnP in Overlayweaver - かーねる・う゛いえむにっきの解決編。デバッガで真面目に追ってみる。 先回書いたコードのUPnPAddressPortMapper.start()はUPnPAddressPortMapperのスレッドを作って実行するので、run()から見ていく。 public void run() { UPnPMa…

Mac miniを静音自宅サーバに出来ないか。

諸事情でデータセンターに置いてるサーバを維持するのが難しくなってきたっぽいので、自宅で運用出来る静かなサーバを考えている。 ただし、サーバ代を出したくはない。 が、丁度自宅用NASの容量が少ないなぁと思うようになった所なのでHDDなら買っても良い…

富士通のSPARCが色々おもしろそう

CPU

http://www.yomiuri.co.jp/science/news/20090513-OYT1T00570.htm 読売になにやら訳の分からん記事があるのでなんだこりゃ、と調べてみた。 富士通が世界最速となるCPU「Venus」を開発、処理速度はIntelの最速モデルの2.5倍 - GIGAZINE どうやら、VenusってC…

OpenBSD/sgi on octane2 - curprocpaddrをcurcpu()->ci_curprocpaddrへ移動

curprocpaddrというグローバル変数がある。 これはarch/sgi/sgi/machdep.cでこんな風に初期化され、 /* * Allocate U page(s) for proc[0], pm_tlbpid 1. */ proc0.p_addr = proc0paddr = curprocpaddr = (struct user *)pmap_steal_memory(USPACE, NULL, NU…

OpenBSD/sgi on octane2 - cpu_info_primaryへの参照をcpu_info[]への参照に書き換え

mplockの問題が解決したので、SMP非対応な部分の書き換えに進もうと思う。 以前一息に実装してバグがとりきれなかった時のコードが残っているので、これをちょっとずつ適用しながら前に進める。まず、arch/mips64/include/cpu.hをSMP対応出来るように書き換…

UNIXとCが根っこにあるRubyの敷居は決して低くはない・・・のか?

http://d.hatena.ne.jp/Kazzz/20090512/p2 > どんなに雑誌が甘いことを書いていても、とっかかりは優しげだったとしてもUNIXとCが根っこにあるRubyの敷居は決して低くはない。だからこそ享受できるものも大きいんだろうと思うようになった。そうなんだろうか…

OpenBSD/sgi on octane2 - mplock周りで落ちるバグについて#4

これでどや。 void sched_exit(struct proc *p) { struct schedstate_percpu *spc = &curcpu()->ci_schedstate; struct timeval tv; struct proc *idle; int s; microuptime(&tv); timersub(&tv, &spc->spc_runtime, &tv); timeradd(&p->p_rtime, &tv, &p->p…

Appleひどす(iphoneつかえなくなた

金曜日、職場で3.0βなiphoneを充電してたら突然こんな画面になった。 ・・・なしてemergency modeに。。。 で、そのままの状態で土日は実家に遊びに行ったので、ずっとメールも電話も使えず。 何しても直んねぇ。 結局家のmacにつないだら、こんなんでました…

OpenBSD/sgi on octane2 - mplock周りで落ちるバグについて#3

その後KERNEL_PROC_LOCK(p)/KERNEL_PROC_UNLOCK(p)を追ってみた所、kern/init_main.c:start_init()の以下の場所でlockされていないのにunlockしているからエラーが出るらしい事がわかった: if ((error = sys_execve(p, &args, retval)) == 0) { KERNEL_PRO…