Rebooting/Halting system from kernel module
Daniel O'Connor
doconnor at gsoft.com.au
Mon Jan 23 05:39:52 UTC 2012
On 23/01/2012, at 13:33, Andrew Davis wrote:
>> do you want to sync the disks first? of just hard reset?
>
> Why would anyone ever want to do that, you're a kernel mod, if you want to
> do that just triple-fault.
You can call cpu_reset().
I wrote a KLD which did this because we had a driver issue where the system wouldn't reboot if you did shutdown -r (it would hang).
==== reset.c ====
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <machine/cpu.h>
static int reset_handler(module_t mod, int /*modeventtype_t*/ what,
void *arg);
static moduledata_t mod_data= {
"reset",
reset_handler,
0
};
MODULE_VERSION(reset, 1);
DECLARE_MODULE(reset, mod_data, SI_SUB_EXEC, SI_ORDER_ANY);
static int
reset_handler(module_t mod, int /*modeventtype_t*/ what, void *arg) {
switch (what) {
case MOD_LOAD:
printf("Forced reboot\n");
DELAY(1000000); /* wait 1 sec for printf's to complete and be read */
/* cpu_boot(howto); */ /* doesn't do anything at the moment */
cpu_reset();
printf("Reset failed!\n");
/* NOTREACHED */ /* assuming reset worked */
break;
default:
return(EOPNOTSUPP);
break;
}
return(ENXIO);
}
====
==== Makefile ====
KMOD = reset
SRCS = reset.c
.include <bsd.kmod.mk>
====
> On Sun, Jan 22, 2012 at 9:32 PM, Julian Elischer <julian at freebsd.org> wrote:
>
>> On 1/22/12 2:19 AM, geoffrey levand wrote:
>>
>>> Hi,
>>>
>>> how would i reboot/halt the system from a kernel module ?
>>>
>>
>> the answer is "that depends"..
>>
>> do you want to sync the disks first? of just hard reset?
>>
>>
>>
>> ______________________________**_________________
>> freebsd-hackers at freebsd.org mailing list
>> http://lists.freebsd.org/**mailman/listinfo/freebsd-**hackers<http://lists.freebsd.org/mailman/listinfo/freebsd-hackers>
>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@**
>> freebsd.org <freebsd-hackers-unsubscribe at freebsd.org>"
>>
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>
--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
-- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
More information about the freebsd-hackers
mailing list