Hello again, it seems that uprintf needs a tty to put output to. I tried your code with printf instead of uprintf and got output to root-console ttyu0 every second.
HTH, Marc -------- Original-Nachricht -------- > Datum: Mon, 12 Sep 2011 11:58:37 +0200 > Von: Filippo Sironi <filippo.sir...@gmail.com> > An: "Marc Lörner" <loer...@gmx.de> > CC: freebsd-hackers@freebsd.org > Betreff: Re: Kernel timers infrastructure > This is how I modified the module: > -------------------------------------------------------------------------------- > #include <sys/param.h> > #include <sys/kernel.h> > #include <sys/module.h> > #include <sys/systm.h> > > static struct callout timer_callout; > > static void > timer_function(void *arg) > { > uprintf("timer_function() begin\n"); > if (callout_reset(&timer_callout, hz, timer_function, NULL)) > uprintf("callout_reset() != 0\n"); > uprintf("Hello, World!\n"); > uprintf("timer_function() end\n"); > } > > static int > timer_event_handler(struct module *mod, int cmd, void *arg) > { > uprintf("timer_event_handler() begin\n"); > switch (cmd) { > case MOD_LOAD: > uprintf("MOD_LOAD\n"); > callout_init(&timer_callout, CALLOUT_MPSAFE); > if (callout_reset(&timer_callout, hz, timer_function, NULL)) > uprintf("callout_reset() != 0\n"); > break; > case MOD_UNLOAD: > uprintf("MOD_UNLOAD\n"); > callout_drain(&timer_callout); > break; > case MOD_SHUTDOWN: > uprintf("MOD_SHUTDOWN\n"); > break; > default: > return EOPNOTSUPP; > } > uprintf("timer_event_handler() end\n"); > return 0; > } > > static struct moduledata timer_moduledata = { > "timer", > timer_event_handler, > NULL > }; > > DECLARE_MODULE(timer, timer_moduledata, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); > -------------------------------------------------------------------------------- > and this is the output of load and unload operations: > freebsd# kldload ./timer.ko > timer_event_handler() begin > MOD_LOAD > timer_event_handler() end > freebsd# kldunload timer.ko > timer_event_handler() begin > timer_event_handler() begin > MOD_UNLOAD > timer_event_handler() end > > I don't know why "timer_event_handler() begin" is printed twice on unload > but the timer doesn't start... and of course it is set on 1 second but I > left the module load for 1 minute or so just to be sure. ;) > > Thanks again for your help, > Filippo > > On 12/set/2011, at 11:48, Marc Lörner wrote: > > > Hello, > > what about changing order of callout_reset and uprintf? > > And your timeout isn't 1minute, it's one second! > > > > Regards, > > Marc > > -- > > Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir > > belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de > -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"