Jump to content

NetWare Loadable Module

From Wikipedia, the free encyclopedia
(Redirected fromNovell NLM)

NetWare Loadable Module
Filename extension
.nlm
Magic numberNetWare Loadable Module
Developed byNovell
Type of formatExecutable,Shared library

ANetWare Loadable Module[1][2][3](NLM) is aloadable kernel module(abinarycode module) that can be loaded intoNovell's NetWareoperating system. NLMs can implement hardware drivers, server functions (e.g. clustering), applications (e.g.GroupWise), system libraries or utilities.

NLMs were supported beginning with theIntel 80386-basedNetWareversion 3.x. Prior versions of NetWare had a monolithickernel,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 likeantivirusprograms,backupprograms and certaindatabaseproducts.

Functionality

[edit]

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

[edit]

Initially, Novell published a development toolkit for NLM programming including kernel API documentation and aC 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 thekerneladdress space, without specific memory protection. It was therefore possible forbugsin 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 orABnormal END.

Moreover, NetWare used a non-preemptive, orcooperative,multitasking model, meaning that an NLM was required to yield to the kernel regularly.[4]An NLM executing aninfinite loop,for example, could therefore not be stopped.

In NetWare v4.x, Novell introduced a limited form of memory protection, which was extended toProtected Address Spacesin 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

[edit]

Official compilers that produce NLMs are:

NLM development is also possible with GNU cc and binutils.[6]More details are available in NetWare Loadable Module Programming HOWTO by Martin Hinner.[7]

Client-side NLMs with NIOS

[edit]

Announcing it in March 1995,[8][9]Novell introduced a new 32-bit DOS/WindowsNetWareclient (Client 32based on ODI32/NIOS)[10]in 1996, replacing the former 16-bit client based onODI/VLM. Its NIOS component (NetWare I/O Subsystem[8][11][12]) used techniques similar toDPMSto relocate and run NLMs inprotected modeandextended memoryin order to reduce theconventional memoryfootprint of the client down to 2 to 5 KB.[13][11]

See also

[edit]

References

[edit]
  1. ^Dave Kearns (October 3, 2006)."Revelation: A NetWare Loadable Module that's still around".Computerworld.
  2. ^"Database server choices for NetWare".Computerworld.
  3. ^"Hands on: Getting Macs and PCs to play well together".Computerworld.
  4. ^Mark Foust (2001).NetWare Administration: NetWare 4.0-6.0.
  5. ^"Metrowerks website".Archived fromthe originalon January 6, 2009.
  6. ^"NLM development under Linux".
  7. ^"NetWare Loadable Module Programming HOWTO".
  8. ^ab"Novell to dress up Tuxedo and deliver 32-bit client".Network World:141. March 27, 1995.RetrievedAugust 18,2018.
  9. ^"Network Edition - Cover Story".PC Magazine:NE27. October 24, 1995.RetrievedAugust 18,2018.
  10. ^"Netware Input/Output Subsystem".
  11. ^abLiebing, Edward A. (May 1, 1996)."NetWare Client 32 for DOS/Windows: Overview of Architecture and Features".Novell AppNotes.Novell.Archivedfrom the original on August 18, 2018.RetrievedAugust 18,2018.
  12. ^Hendrick, Ben (November 1, 1996)."Overview of NetWare Client 32 for Windows 95".Novell AppNotes.Novell.Archivedfrom the original on August 18, 2018.RetrievedAugust 18,2018.
  13. ^Paul, Matthias R. (July 30, 1997).NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds.Release 157 (in German) (3 ed.).Archivedfrom the original on May 22, 2016.RetrievedJanuary 11,2012.{{cite book}}:|work=ignored (help)(NB. NWDOSTIP.TXT is a comprehensive work onNovell DOS 7andOpenDOS 7.01,including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.)

Further reading

[edit]