3.1. Modules vs Programs  3.1.1. How modules begin and end  A
program usually begins with a main() function, executes a bunch
of instructions and terminates upon completion of those
instructions. Kernel modules work a bit differently. A module
always begin with either the init_module or the function you
specify with module_init call. This is the entry function for
modules; it tells the kernel what functionality the module
provides and sets up the kernel to run the module's functions
when they're needed. Once it does this, entry function returns
and the module does nothing until the kernel wants to do
something with the code that the module provides.  All modules
end by calling either cleanup_module or the function you specify
with the module_exit call. This is the exit function for
modules; it undoes whatever entry function did. It unregisters
the functionality that the entry function registered.  Every
module must have an entry function and an exit function. Since
there's more than one way to specify entry a