
カーネルモジュールで次のコードを使用しようとしています。
struct timeval now;
gettimeofday(&now, NULL);
ただし、カーネルをコンパイルすると、次のエラーが発生します。
drivers/media/i2c/ox05b.c:776:17: error: storage size of ‘now’ isn’t known
776 | struct timeval now;
| ^~~
答え1
カーネル開発の最初のルールは、Cライブラリが利用できないことです。カーネルモジュールで時間を知りたい場合は、適切な命令を使用する必要があります。ktime 接続者、例えば
#include <linux/timekeeping.h>
…
ktime_t now = ktime_get_real();