Currently, I am working on a school project about kernel programming. To enhance my knowledge about kernel programming, I am reading the book named 'Linux Kernel Programming'[1]. Thanks to its authors, it is a great book. The first thing I have realized is that kernel programming has different characteristics from user-space programming. One of them is the following one: "You must also consider what happens if your initialization function decides to fail, but some part of the kernel is already making use of a facility your module has registered. If this situation is possible for your module, you should seriously consider not failing the initialization at all. After all, the module has clearly succeeded in exporting something useful. If initialization must fail, it must carefully step around any possible operations going on elsewhere in the kernel until those operations have completed."[2] This is written about module-loading races. It sounds so interesting to ...
Development of cutting-edge technologies