Browse Prior Art Database

Support for Multiple Versions of Modules with Module-level Initialization and Termination Functions

IP.com Disclosure Number: IPCOM000030931D
Original Publication Date: 2004-Sep-01
Included in the Prior Art Database: 2004-Sep-01
Document File: 2 page(s) / 45K

Publishing Venue

IBM

Abstract

Current methods of supporting module initialization and termination functions require a system shutdown and restart to load a new version of a module. This system shutdown and restart can be avoided and system availability improved by supporting multiple versions of modules containing module-level initialization and termination functions.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 2

Support for Multiple Versions of Modules with Module -level Initialization and Termination Functions

Disclosed is a method for supporting multiple versions of modules containing module-level initialization and termination functions. Several architectures support the ability to call module initialization and termination functions. For example, FreeBSD implements module initialization and termination functions through its SYSINIT and SYSUINIT macros[*]. Module initialization and termination functions are functions contained in the module itself. When the module is loaded, the operating system calls the initialization function to initialize the module. This initialization can perform several tasks, including registering services with the operating system, obtaining common storage, and initializing data structures. When the module is unloaded from the system or when the system is shutdown, the operating system calls the module termination function. The termination function may unregister services from the operating system and release common storage. These architectures, however, do not support multiple versions of a module containing module initialization and termination functions active on a system at the same time. If a user wants to use a new version of a module containing module initialization and termination functions, then they must shutdown and restart the system. The system shutdown calls the termination function for the old module and removes the old module from the system. System restart loads the new version of the module and calls the initialization function for the new module. During system shutdown and restart, the system is unavailable to users. By supporting the loading and use of multiple versions of modules with module initialization and termination functions, users can load new versions of these modules without having to shutdown and restart the system, thus improving system availability. Multiple versions of modules containing module initialization and termination functions can be supported as follows. When a new module or a new version of an existing module is loaded to the system and is marked as being available for use, the system executes the module initialization function. If the initialization function is registering a service with the operating system, then the operating system must allow multiple instances of the same service to be registered and associates each service with the version of the module that registered it. Similarly, if the initialization function obtains any common storage, the operating system associates that storage with that specific version of the module that requested it. After the initialization function completes, the new version of the module, any services it registered, and...