Library Loader
CoreLinux++
Functional Requirement Document Revision $Revision: 1.2 $ Last
Modified : $Date: 2000/07/26 14:06:07 $
Title : Library Loader
1. Introduction
Linux provides the ability to dynamically load shared libraries.
Dynamically loaded shared libraries offer the developer the advantage
of defering the linking of funtions until which time they are needed.
By creating libraries with a dynamically shareable attribute, the
packager enables this capability.
1.1 Deliverables Overview
The participants in the Library Loader pattern include:
- Library
-
A Library is a container of LibraryObjects, and declares the factory
interfaces for access.
-
LibraryObject
-
A LibraryObject is an entity of the Library.
CoreLinux++ team will provide FunctionLibrary and
ExecutableLibraryObject types to facilitate dynamic shared library
function execution..
2. Functional Requirements
The Library requirements:
Library shall support the registration/deregistration of
library loaders specific to a library type
The CoreLinux++ team shall implement a default shared library
(*.so) loader for registration
The CoreLinux++ team shall implement the default library
handler using the Linux dlopen dlsym dlclose API.
Library shall support the loading of a library
If a library is not resolvable, a LibraryLoadException shall
be thrown
If a library is resolvable, the loader shall provide a
LibraryInstance object for that type of library
The loader shall cache the library instance for subsequent
reuse
Library shall support the unloading of a library
Upon the last shared library instance reference, the loader
shall remove the LibraryInstance from memory
The LibraryInstance requirements:
The LibraryInstance shall resolve requests for LibraryObjects
If a LibraryObject is not resolvable, a
LibraryObjectException shall be thrown.
The LibraryObject requirements:
The LibraryObject shall provide common type for library
object instances.
The ExecutionObject requirements:
The CoreLinux++ team shall implement a ExecutionObject class
which is a LibraryObject type.
2.1 User Interface Specifications
Domain defined
2.2 Product Services
Domain defined
2.3 External Interfaces and Database Requirements
Domain defined
2.4 Error Handling
Domain defined
2.5 Foreseeable Functional Changes and Enhancements
It is foreseeable that this pattern will be used to extend the
definition of Library and LibraryObject types so that other loaders
may be used in the framework or application domain. For this reason,
the CoreLinux++ team will abstract a reasoning system for supporting
heterogenous types and libraries.
3. Non-Functional Requirements
Precondition constraints: None
Postcondition constraints:
None
Invarient constraints: None
3.1 Performance Requirements
NA
3.2 User Documentation and Other User Aids
This Document
Analysis Use-Case diagrams
Design class diagrams
3.3 Development Requirements
Standards: CoreLinux++ C++ Standards and
Guidelines
3.4 Foreseeable Non-Functional Changes
NA
4. Remarks and Guidelines for Later Life Cycle Phases
TBD
5. Term Glossary
TBD
Copyright © 1999, 2000 by CoreLinux Consortium
This material may be distributed only subject to the terms and conditions set forth in the
Open Publication License
|