> If I understand you correctly, this framework has to include the module > initialization as well using the below APIs and has to be compiled as a > loadable module so that other vendors module can make use of this, isn't it? > > module_init(oa_tc6_init); > module_exit(oa_tc6_exit); You should not need these, unless there is actions which need to be taken when the module is loaded. If there are no actions, it is purely a library, don't have them. The module dependency tracking code will see that the MAC driver modules has dependencies on symbols in this library module, and will load it first. The MAC driver is then loaded, and the kernel linker will resolve the missing symbols in the MAC driver to those in the library. It also means that there is only ever one copy of the library in the kernel, even if there is multiple MAC drivers using it. Andrew