不気味な現象?

Raspberry Pi の音声取込でサンプリングレートを監視していたら、ログの中に奇妙な現象を発見してしまった。なんと、ファイルサイズが 2147483647 バイトで飽和している。コンピュータ技術者なら暗記している数字だと思うが(←してません!)、この数字は不気味だ! いわく、2^31 - 1。
最初、NFS の実装の問題と思ったけど、最近は 2GB 超えるファイルなんて当たり前に使うし、んな訳ないだろう。
よく考えたみたら、同じコードを使った以前のシステムは 64-bit Linux なのだった。今回の Raspberry Pi は、当然 32 ビット。
実は、GLIBC の(?)fopen() は、32 ビット OS では 32ビットのファイルサイズまでしか扱えないのだそうだ。そんなの知らなかった。← 注: やや嘘
正確には Linux の open() システムコールには O_LARGEFILE というオプションがあって、32ビット Linux ではこれを指定しないと 32ビット超のファイルをアクセスできないぽい。この辺をゴニョゴニョしているのが fopen64() とか _FILE_OFFSET_BITS とかいう C マクロなのだそうだ。

ところで、NetBSD はどうなっているんだろう。off_t 型はどうなっているんだっけ?

追記

NetBSD の off_t は 64ビットぽい。んでもって、lseek() で 64ビットオフセット指定できるぽい。
Linux の場合は lseek64() と off64_t かな?