たぶん風邪直りました。まだ若干ですが喉が痛いです。 4/29に書いたバックアップをやろうと思って、研究室からUSB接続のポータブルHDDを拝借して動作確認をしました。ところが全く動きません。さらにHDDからカチッカチッと音がしています。 壊したか?…と思ったら実は電力不足でした。2.5インチHDD(ポータブルHDDの中身ね)を駆動するには USBのバスパワーではギリギリらしく、この手の製品は「環境によって動かない」ことが多々あります。我が家のマシンのようにバスパワーの出力が足りないと、アクセスランプだけ点くとか半端な動作をしてしまうわけですね。 ちなみにお気づきの方も居られるでしょうが、バックアップ用途にポータブルHDDは使いません。通常は3.5インチHDD(電源を別に取るタイプ)を使います。「バスパワー関係無いじゃん?」という指摘はごもっともです。 田口邸の飲み会に行きました。じょーや徳
CでDirect I/O を行う場合、open 呼び出しの引数にO_DIRECTを指定する。インクルードするヘッダーはfcntl.hで、実際に定義されているのは bits/fcntl.h。今のところ一番新しいcygwin gccだと、fcntl.hだけでコンパイルできるけど、linux上だとこれだけではダメ。gccの-Dオプションに_GNU_SOURCEをいれるか、下みたいに_GNU_SOURCEのdefineを行う。 #ifndef _GNU_SOURCE #define _GNU_SOURCE 〜なんかソースコード〜 #endif/* ifndef _GNU_SOURCE */ O_DIRECTで入出力を行う場合、ヘンな制限がある。linux kernel 2.4までは入出力を行うバッファの大きさをファイルシステムのブロックサイズでアラインメントを取る必要がある。linux kerne
ここ二日ほど、Linuxをインストールしていたのは、O_DIRECTで遊ぶため。たまには、Linuxでご飯を本当に食べているということを見せようかと。たぶん、間違っている可能性があるので、ご指摘いただけるとうれしいです。一応、参考は、Linxuカーネル解読室のP314あたり。 O_DIRECTというのは、Linuxのカーネル2.4から(だよね)openシステムコールにたてれるようになったI/Oの直接転送を指定するフラグ。 自分が今の部署にはいって、最初に書くことになったTestプログラムで使ってくれとたのまれて、ちょうど一年前ぐらいにもさわっていたんだけど(昔のブログにはかいたんだけど、今そのブログがない)、最近、仕事の空いた時間で、ファイル経由のI/Oアクセスについて、いろいろ勉強(主にオライリーのカーネル本を読んでいる)していて、昔より何やってるいるかわかったきがするので、ちょっと遊ん
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く