A NetWare Loadable Module (NLM) is a
loadable kernel module (a
binary
Binary may refer to:
Science and technology Mathematics
* Binary number, a representation of numbers using only two digits (0 and 1)
* Binary function, a function that takes two arguments
* Binary operation, a mathematical operation that ta ...
code module) that can be loaded into
Novell's NetWare operating system. NLMs can implement hardware drivers, server functions (e.g. clustering), applications (e.g.
GroupWise), system libraries or utilities.
NLMs were supported beginning with the
Intel 80386
The Intel 386, originally released as 80386 and later renamed i386, is a 32-bit microprocessor introduced in 1985. The first versions had 275,000 transistors[NetWare
NetWare is a discontinued computer network operating system developed by Novell, Inc. It initially used cooperative multitasking to run various services on a personal computer, using the IPX network protocol.
The original NetWare product in ...]
version 3.x. Prior versions of NetWare had a monolithic
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learni ...
, and significant hardware or functionality changes required re-linking the kernel from object modules.
Due to stability issues with early third-party NLMs, they never became popular for server application programming, with few exceptions like
antivirus programs,
backup
In information technology, a backup, or data backup is a copy of computer data taken and stored elsewhere so that it may be used to restore the original after a data loss event. The verb form, referring to the process of doing so, is "back up", w ...
programs and certain
database products.
Functionality
Upon loading, a NLM requests resources, such as memory and process threads, from the NetWare kernel. The NetWare kernel tracks such requests, and can identify memory and other resources assigned to a specific NLM. NLMs may auto-load other NLMs upon which they themselves depend.
NLMs may register commands with the NetWare kernel, extending the command vocabulary available at the NetWare console prompt.
When properly coded, NLMs can be re-entrant, allowing multiple instances of the same code to be loaded and run.
Programming issues
Initially, Novell published a development toolkit for NLM programming including kernel API documentation and a
C compiler
This page is intended to list all current compilers, compiler generators, interpreters, translators, tool foundations, assemblers, automatable command line interfaces ( shells), etc.
Ada Compilers
ALGOL 60 compilers
ALGOL 68 compilers
cf. ...
(
Watcom), but third-party support for the NLM executable function was very limited.
In early NetWare versions (prior to v4.x), all processes were executed in the
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learni ...
address space, without specific memory protection. It was therefore possible for
bugs in NLMs to overwrite the kernel's or other NLM's address space and ultimately crash the server — in the mainframe-derived Novell terminology, this was known as an ABEND or
ABnormal END
An abnormal end or abend is an abnormal termination of software, or a program crash.
This usage derives from an error message from the IBM OS/360, IBM zOS operating systems. Usually capitalized, but may appear as "abend". Some common ABEND codes ...
.
Moreover, NetWare used a non-preemptive, or
cooperative
A cooperative (also known as co-operative, co-op, or coop) is "an autonomous association of persons united voluntarily to meet their common economic, social and cultural needs and aspirations through a jointly owned and democratically-contro ...
, multitasking model, meaning that an NLM was required to yield to the kernel regularly. An NLM executing an
infinite loop, for example, could therefore not be stopped.
In NetWare v4.x, Novell introduced a limited form of memory protection, which was extended to ''Protected Address Spaces'' in NetWare v5.x. Through these mechanisms, properly-coded NLMs can be loaded into their own address space, and mis-behaving NLMs can be prevented from compromising the kernel integrity.
Compilers
Official compilers that produce NLMs are:
*
Watcom C/C++ compiler /
OpenWatcom
Watcom C/C++ (currently Open Watcom C/C++) is an integrated development environment (IDE) product from Watcom International Corporation for the C, C++, and Fortran programming languages. Watcom C/C++ was a commercial product until it was disco ...
*
Metrowerks
Metrowerks was a company that developed software development tools for various desktop, handheld, embedded, and gaming platforms. Its flagship product, CodeWarrior, comprised an IDE, compilers, linkers, debuggers, libraries, and related tools. I ...
Codewarrior
CodeWarrior is an integrated development environment (IDE) published by NXP Semiconductors for editing, compiling, and debugging software for several microcontrollers and microprocessors ( Freescale ColdFire, ColdFire+, Kinetis, Qorivva, PX, Fr ...
for NetWare
* EPC C/C++
* Novell NLMLINK.EXE
NLM development is also possible with GNU cc and binutils.
More details are available in NetWare Loadable Module Programming HOWTO by Martin Hinner.
Client-side NLMs with NIOS
Announcing it in March 1995,
Novell introduced a new 32-bit DOS/Windows
NetWare
NetWare is a discontinued computer network operating system developed by Novell, Inc. It initially used cooperative multitasking to run various services on a personal computer, using the IPX network protocol.
The original NetWare product in ...
client (
Client 32
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuable ...
based on ODI32/NIOS)
in 1996, replacing the former 16-bit client based on
ODI/VLM. Its NIOS component (
NetWare I/O Subsystem
DOS Protected Mode Services (DPMS) is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode.
Not being a DOS extender by itself, DPMS is a minimal set of ext ...
) used techniques similar to
DPMS to relocate and run NLMs in
protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units (CPUs). It allows system software to use features such as virtual memory, paging and safe multi-tasking ...
and
extended memory
In DOS memory management, extended memory refers to memory above the first megabyte (220 bytes) of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems. D ...
in order to reduce the
conventional memory
In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system ...
footprint of the client down to 2 to 5 KB.
See also
*
Virtual Loadable Module
NetWare Lite and Personal NetWare are a series of discontinued peer-to-peer local area networks developed by Novell for DOS- and Windows-based personal computers aimed at personal users and small businesses in the 1990s.
NetWare Lite
In 1991, N ...
(VLM)
References
Further reading
*
* {{cite web , title=Novell Developer Documentation: Netware Loadable Module , url=http://developer.novell.com/tech/nlm.html , access-date=2010-09-25 , url-status=dead , archive-url=https://web.archive.org/web/20091124201302/http://developer.novell.com/tech/nlm.html , archive-date=2009-11-24
Executable file formats
Novell NetWare