*** Welcome to piglix ***

NetWare Loadable Module

NetWare Loadable Module
Filename extension .nlm
Magic number NetWare Loadable Module
Developed by Novell
Type of format Executable, Shared library

A NetWare Loadable Module (NLM) is a loadable kernel module (a binary 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-based NetWare version 3.x. Prior versions of NetWare had a monolithic kernel, 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 programs and certain database products.

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.

Initially, Novell published a development toolkit for NLM programming including kernel API documentation and a C compiler (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 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.


...
Wikipedia

...