wiki:example_of_freebsd_kernel_module
- 1
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/mac.h>
#include <sys/kernel.h>
#include <sys/time.h>
#include <sys/module.h>
#include <sys/sysctl.h>
static MALLOC_DEFINE(M_exam, "exam", "exam");
u_long uptime;
struct callout_handle mstimer_h;
static void
exam_mstimer(void)
{
uptime ++;
mstimer_h = timeout((timeout_t *)&exam_mstimer, NULL, hz / 10);
}
static int
exam_modevent(module_t mod, int type, void *data)
{
switch (type) {
case MOD_LOAD:
mstimer_h = timeout((timeout_t *)&exam_mstimer, NULL, hz / 10);
break;
case MOD_UNLOAD:
untimeout((timeout_t *)&exam_mstimer, NULL, mstimer_h);
mstimer_h.callout = NULL;
break;
default:
return EOPNOTSUPP;
}
return 0;
}
#ifdef SYSCTL_OID
SYSCTL_NODE(_net, OID_AUTO, exam, CTLFLAG_RW, 0, "exam");
SYSCTL_UINT(_net_exam, OID_AUTO, count, CTLFLAG_RD, &(uptime), 0, "timer");
#endif
static moduledata_t exam_mod = {
"exam",
exam_modevent,
0
};
DECLARE_MODULE(exam, exam_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
/* end of file *
wiki/example_of_freebsd_kernel_module.txt · Last modified: 2007/06/25 13:45 by mirnshi