Timer FreeBSD内核模块中的计时器?
我想让我的内核模块在FreeBSD内核中周期性地做一些事情(特定的时间间隔,比如10秒)。有这样做的例子吗 我搜索并发现有callout/timeout(old)这样的函数,但它们看起来很复杂,我找不到很好的例子。对于Timer FreeBSD内核模块中的计时器?,timer,kernel,freebsd,kernel-module,callout,Timer,Kernel,Freebsd,Kernel Module,Callout,我想让我的内核模块在FreeBSD内核中周期性地做一些事情(特定的时间间隔,比如10秒)。有这样做的例子吗 我搜索并发现有callout/timeout(old)这样的函数,但它们看起来很复杂,我找不到很好的例子。对于callout'',似乎callout\u reset''与我想要的函数类似(参数包括处理程序和时间间隔)。但它似乎只执行一次。所以我很困惑 即使对于函数“timeout”,示例也是最好的。您需要使用callout(9)。例如。。。嗯,对于真实世界的代码,你可以看看这个:;搜索is
callout'',似乎
callout\u reset''与我想要的函数类似(参数包括处理程序和时间间隔)。但它似乎只执行一次。所以我很困惑
即使对于函数“timeout”,示例也是最好的。您需要使用callout(9)。例如。。。嗯,对于真实世界的代码,你可以看看这个:;搜索is_标注。基本上,您需要“struct timeout”,这是一个会定期调用的函数,然后您需要让计时器计时:
struct callout callout;
static void
callout_handler(void *whatever)
{
// do your stuff, and make sure to get called again after 'seconds'.
callout_schedule(&callout, seconds * hz);
}
static void
start_ticking(void)
{
callout_init(&callout, 1);
callout_reset(&callout, seconds * hz, callout_handler, whatever);
}
您需要使用标注(9)。例如。。。嗯,对于真实世界的代码,你可以看看这个:;搜索is_标注。基本上,您需要“struct timeout”,这是一个会定期调用的函数,然后您需要让计时器计时:
struct callout callout;
static void
callout_handler(void *whatever)
{
// do your stuff, and make sure to get called again after 'seconds'.
callout_schedule(&callout, seconds * hz);
}
static void
start_ticking(void)
{
callout_init(&callout, 1);
callout_reset(&callout, seconds * hz, callout_handler, whatever);
}
您需要使用标注(9)。例如。。。嗯,对于真实世界的代码,你可以看看这个:;搜索is_标注。基本上,您需要“struct timeout”,这是一个会定期调用的函数,然后您需要让计时器计时:
struct callout callout;
static void
callout_handler(void *whatever)
{
// do your stuff, and make sure to get called again after 'seconds'.
callout_schedule(&callout, seconds * hz);
}
static void
start_ticking(void)
{
callout_init(&callout, 1);
callout_reset(&callout, seconds * hz, callout_handler, whatever);
}
您需要使用标注(9)。例如。。。嗯,对于真实世界的代码,你可以看看这个:;搜索is_标注。基本上,您需要“struct timeout”,这是一个会定期调用的函数,然后您需要让计时器计时:
struct callout callout;
static void
callout_handler(void *whatever)
{
// do your stuff, and make sure to get called again after 'seconds'.
callout_schedule(&callout, seconds * hz);
}
static void
start_ticking(void)
{
callout_init(&callout, 1);
callout_reset(&callout, seconds * hz, callout_handler, whatever);
}
这里的
seconds*hz
是什么意思?我看到了几个例子,但在源代码中似乎没有定义hz
。当我使用像10000
这样的值时,我相信这可能不到一秒钟,因为它是滴答声。但我的处理器似乎在很长一段时间后被触发。我的意思是,如何将这个滴答声转换为秒。“秒”是秒,秒*赫兹是滴答声。不要定义hz,使用中的外部定义。这里的seconds*hz
是什么意思?我看到了几个例子,但在源代码中似乎没有定义hz
。当我使用像10000
这样的值时,我相信这可能不到一秒钟,因为它是滴答声。但我的处理器似乎在很长一段时间后被触发。我的意思是,如何将这个滴答声转换为秒。“秒”是秒,秒*赫兹是滴答声。不要定义hz,使用中的外部定义。这里的seconds*hz
是什么意思?我看到了几个例子,但在源代码中似乎没有定义hz
。当我使用像10000
这样的值时,我相信这可能不到一秒钟,因为它是滴答声。但我的处理器似乎在很长一段时间后被触发。我的意思是,如何将这个滴答声转换为秒。“秒”是秒,秒*赫兹是滴答声。不要定义hz,使用中的外部定义。这里的seconds*hz
是什么意思?我看到了几个例子,但在源代码中似乎没有定义hz
。当我使用像10000
这样的值时,我相信这可能不到一秒钟,因为它是滴答声。但我的处理器似乎在很长一段时间后被触发。我的意思是,如何将这个滴答声转换为秒。“秒”是秒,秒*赫兹是滴答声。不要定义hz,请使用中的外部定义。