Книга: Embedded Linux Primer: A Practical, Real-World Approach
8.1.6. Loading Your Module
8.1.6. Loading Your Module
Having completed all the steps necessary, we are now in a position to load and test the device driver module. Listing 8-5 shows the output resulting from loading and subsequently unloading the device driver on the embedded system.
Listing 8-5. Loading and Unloading a Module
$ modprobe hello1 <<< Load the driver
Hello Example Init
$ modprobe -r hello1 <<< Unload the driver
Hello Example Exit
$
You should be able to correlate the output with our device driver source code found in Listing 8-1. The module does no work other than printing messages to the kernel log system via printk(), which we see on our console.[64] When the module is loaded, the module-initialization function is called. We specify the initialization function that will be executed on module insertion using the module_init() macro. We declared it as follows:
module_init(hello_init);
In our initialization function, we simply print the obligatory hello message and return. In a real device driver, this is where you would perform any initial resource allocation and hardware device initialization. In a similar fashion, when we unload the module (using the modprobe -r command), our module exit routine is called. As shown in Listing 8-1, the exit routine is specified using the module_exit() macro.
That's all there is to a skeletal device driver capable of live insertion in an actual kernel. In the sections to follow, we introduce additional functionality to our loadable device driver module that illustrates how a user space program would interact with a device driver module.
- Initial loading of extra modules
- Problems loading modules
- Apache Multiprocessing Modules
- Managing Modules
- 8.1.1. Loadable Modules
- 8.1.4. Module Build Infrastructure
- 8.2. Module Utilities
- 8.2.2. Module Parameters
- 14.3.5. Debugging Loadable Modules
- DirectX Tutorial 10: Loading Complex Models
- Creating a Custom Tux Module
- Loading It Up