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 <[email protected]> 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?
>>
>>
>>
>> ______________________________**_________________
>> [email protected] 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 <[email protected]>"
>>
> _______________________________________________
> [email protected] mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "[email protected]"
>
--
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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"