HOME

TheInfoList



OR:

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 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 ...
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