Certain computer operating systems and applications are designed to load modules that are internally requested by the operating system, internally requested by an application, or externally requested by a supported process. Such modules may include, for example, a procedure, a function, a script, a plug-in module, a driver, or a portion of an executable application.
In some computer operating systems and/or applications, modules that can be loaded are classified according to a module type. For example, in an operating system, the module type may be used to determine how to properly support the module. In some cases, a sub-system of the operating system, such as a dynamically loadable kernel module (“DLKM”) sub-system, for example, may be used to support modules of different types.
FIG. 1 illustrates a prior operating system configuration 100 for handling dynamically loadable modules. A table 110 of defined module types and associated type-specific support module identifiers are included in a statically configured operating system kernel 105. Support module identifiers may refer to support modules, such as support module 120, that contain, for example, pre-loading logic, post-loading logic, pre-registration logic, post-registration logic and registration logic.
When the operating system 105 receives a request to load a module 115, the operating system uses the module type definition table 110 to determine whether the module type is supported. Upon locating the correct module type entry in the table, the operating system utilizes the support modules (e.g., support module 120) identified in the table 110 to properly support the requested module 115.
The operating system 105 may provide module type-specific support for only the module types defined by the table within the statically configured kernel. This type of operating system configuration is unable to dynamically load modules of types that have not been previously defined in the statically configured portion of the operating system kernel.
Accordingly, whenever a new module type is to be defined, the statically configured kernel must be reconfigured to include a definition of the new module type. The statically configured kernel must be reloaded to accommodate the newly added module type definition. The reconfiguration of the statically configured kernel results in an increased kernel size and a reloading or rebooting of the operating system.