The following kernel module calls emergency_restart function from linux kernel to reboot the device / platform. This is the simple kernel driver / module which demonstrates how to reboot the device using kernel API.
$ vim reboot.c
#include <linux/module.h>
#include <linux/reboot.h>
int init_module() {
emergency_restart();
return 0;
}
void cleanup_module() {
}
MODULE_LICENSE("GPL");
$ vim Makefile
obj-m += reboot.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
$ make
Note: below command will reboot your system, so make sure you save all your work 🙂
$ sudo insmod ./reboot.ko