ID:+SUlmm/1017歳の夏。夜中に一人で地元をふらふらしてたら、泣きながら歩いてる女の人と遭遇した。一回見てみぬフリをしてやり過ごしたのだが、なんかいたたまれなくなって話しかけてみた。「あ、あのぉ・・・だいじょうぶですか?」って。すると女は「ひぐっえっぐ・・・だいじょうぶ・・・です・・・えっぐっ」と全然だいじょうぶじゃない。十分くらいずっと泣きじゃくる彼女を見守っていた。おれはこのとき、人生で一番勇気を出したかもしれない。おっぱいもんで逃げた。短期間の処理に要した時間を計りたいという場合はよくあります。細かい時間で更新される時間カウンタとしては、sched_clock()という関数が使えます。以下のような用途が考えられるでしょう。Kingは指摘しました。x86ではTSCレジスタを利用しており、TSCレジスタの値は64bitです。sched_clock()はその値を加工してナノ秒に変換しているのですが、結果として精度は54bitになります。ARMではこれが32bitしかありません。これは何を意味するでしょうか?時間の経過とともに数字が増えるわけですが、ある時点で「0」に戻ります。それを64bitの変数の演算として見ると、突然長い時間が過ぎてしまったように見えます。この解決策の1つとして、彼は差分を計算する専用の関数sched_clock_diff()を定義することを提案しました。すると、そもそもsched_clock()をナノ秒で提供するように加工する必要がなくなります。Pigginがコメントしました。この状況はあまり良くないことではありますが、あまり文句も出ていないため「このコードを利用している部分はあまり存在しないのだね」という結論に達して、結局何も修正はなされていないようです。sched_clock()を利用する場合はご注意を。ulongの範囲だったらわざわざ新設せんでもtime_afterマクロで十分やんけ。実際IA64のアーキ依存コードはタイマ割り込み周りでitcレジスタ(TSCレジスタみたいなもん。クロック毎にインクリメントされる64bitカウンタ)の比較をtime_afterでやってるぞ。ポイントはjiffiesが所詮ただの64bit整数なので、jiffies用のマクロは全部途中で一周しちゃうような性質をもつ時間関係に使われている整数操作に汎用的に使えるってことだね。あ、time_afterについては以下のブログが詳しいようです。なーんも考えてないように見える。これって大丈夫なの?という疑問を問いかけたら、ひらさんから、i_semを忘れてる。