+/* Must be included by every module. */
#include <linux/module.h>
+/* Should be declared to not taint the kernel. */
MODULE_LICENSE("GPL");
+/* Our init function: returns 0 if successfull, an error code, otherwise. */
static int hello_init(void)
{
+ /* printk is just like printf, but without floating point support. */
printk(KERN_ALERT "Hello, world!\n");
return 0;
}
+/* Our exit function: static is good, so we do not pollute namespace. */
static void hello_exit(void)
{
+ /* KERN_ALERT is a string macro prepended to our message. */
printk(KERN_ALERT "Goodbye, cruel world!\n");
}
+/* Here, we declare our module init and exit functions. */
module_init(hello_init);
module_exit(hello_exit);