NetWare Loadable Module
   HOME

TheInfoList



OR:

A NetWare Loadable Module (NLM) is a
loadable kernel module In computing, a loadable kernel module (LKM) is an object file that contains code to extend the running kernel, or so-called ''base kernel'', of an operating system. LKMs are typically used to add support for new hardware (as device drivers) and/ ...
(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 t ...
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 GroupWise is a messaging and collaboration platform from Micro Focus that supports email, calendaring, personal information management, instant messaging, and document management. The GroupWise platform consists of desktop client software, whi ...
), 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 transistorsNetWare 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 19 ...
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 learnin ...
, 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 Antivirus software (abbreviated to AV software), also known as anti-malware, is a computer program used to prevent, detect, and remove malware. Antivirus software was originally developed to detect and remove computer viruses, hence the name. ...
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 In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
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 Watcom International Corporation was a software company, which was founded in 1981 by Wes Graham and Ian McPhee. Founding staff (Fred Crigger, Jack Schueler and McPhee) were formerly members of Professor Graham's Computer Systems Group at the Uni ...
), 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 learnin ...
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-control ...
, multitasking model, meaning that an NLM was required to yield to the kernel regularly. An NLM executing an
infinite loop In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs ("pull the plug"). It may be intentional. Overview This differs from: * ...
, 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 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 ...
/
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, Free ...
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 19 ...
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 valuab ...
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 d ...
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. DOS ...
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