<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=NetWare_Loadable_Module</id>
	<title>NetWare Loadable Module - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=NetWare_Loadable_Module"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=NetWare_Loadable_Module&amp;action=history"/>
	<updated>2026-06-23T03:34:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=NetWare_Loadable_Module&amp;diff=10456443&amp;oldid=prev</id>
		<title>imported&gt;Kvng: Undid revision 1282192002 by Liz (talk) article restored</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=NetWare_Loadable_Module&amp;diff=10456443&amp;oldid=prev"/>
		<updated>2025-03-29T17:12:26Z</updated>

		<summary type="html">&lt;p&gt;Undid revision &lt;a href=&quot;/index.php/Special:Diff/1282192002&quot; title=&quot;Special:Diff/1282192002&quot;&gt;1282192002&lt;/a&gt; by &lt;a href=&quot;/index.php/Special:Contributions/Liz&quot; title=&quot;Special:Contributions/Liz&quot;&gt;Liz&lt;/a&gt; (&lt;a href=&quot;/index.php/User_talk:Liz&quot; title=&quot;User talk:Liz&quot;&gt;talk&lt;/a&gt;) article restored&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|Novell-compatible computer-readable software}}&lt;br /&gt;
{{Use mdy dates|date=July 2021}}&amp;lt;!--- all dates to date were CCYYMMDD --&amp;gt;&lt;br /&gt;
{{use American English|date=July 2021}}&lt;br /&gt;
{{Infobox file format&lt;br /&gt;
| name = NetWare Loadable Module&lt;br /&gt;
| icon = &lt;br /&gt;
| extension = .nlm&lt;br /&gt;
| mime = &lt;br /&gt;
| owner = [[Novell]]&lt;br /&gt;
| typecode = &lt;br /&gt;
| magic = NetWare Loadable Module&lt;br /&gt;
| genre = [[Executable]], [[Shared library]]&lt;br /&gt;
| containerfor = &lt;br /&gt;
| containedby = &lt;br /&gt;
| extendedfrom = &lt;br /&gt;
| extendedto = &lt;br /&gt;
| standard =&lt;br /&gt;
}} &lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;NetWare Loadable Module&amp;#039;&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{cite news |newspaper=[[Computerworld]]&lt;br /&gt;
   |url=https://www.computerworld.com/article/2307524/revelation--a-netware-loadable-module-that-s-still-around.html&lt;br /&gt;
   |title=Revelation: A NetWare Loadable Module that&amp;#039;s still around&lt;br /&gt;
   |author=Dave Kearns |date=October 3, 2006}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite news |newspaper=[[Computerworld]]&lt;br /&gt;
|url=https://www.computerworld.com/article/2299449/database-server-choices-for-netware.html&lt;br /&gt;
|title=Database server choices for NetWare}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite news |newspaper=[[Computerworld]]&lt;br /&gt;
       |url=https://www.computerworld.com/article/2569895/hands-on--getting-macs-and-pcs-to-play-well-together.html&lt;br /&gt;
       |title=Hands on: Getting Macs and PCs to play well together}}&amp;lt;/ref&amp;gt; (&amp;#039;&amp;#039;&amp;#039;NLM&amp;#039;&amp;#039;&amp;#039;) is a [[loadable kernel module]] (a [[Binary file|binary]] code module) that can be loaded into [[Novell NetWare|Novell&amp;#039;s NetWare]] operating system.  NLMs can implement hardware drivers, server functions (e.g. clustering), applications (e.g. [[GroupWise]]), system libraries or utilities.&lt;br /&gt;
&lt;br /&gt;
NLMs were supported beginning with the [[i386|Intel 80386]]-based [[NetWare#NetWare 3.x|NetWare]] version 3.x. Prior versions of NetWare had a monolithic [[Kernel (operating system)|kernel]], and significant hardware or functionality changes required re-linking the kernel from object modules.&lt;br /&gt;
&lt;br /&gt;
Due to stability issues with early third-party NLMs, they never became popular for server application programming, with few exceptions like [[antivirus software|antivirus]] programs, [[backup]] programs and certain [[database]] products.&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
NLMs may register commands with the NetWare kernel, extending the command vocabulary available at the NetWare console prompt.&lt;br /&gt;
&lt;br /&gt;
When properly coded, NLMs can be re-entrant, allowing multiple instances of the same code to be loaded and run.&lt;br /&gt;
&lt;br /&gt;
==Programming issues==&lt;br /&gt;
Initially, Novell published a development toolkit for NLM programming including kernel API documentation and a [[C (programming language)|C compiler]] ([[Watcom]]), but third-party support for the NLM executable function was very limited.&lt;br /&gt;
&lt;br /&gt;
In early NetWare versions (prior to v4.x), all processes were executed in the [[Kernel (operating system)|kernel]] address space, without specific memory protection. It was therefore possible for [[Software bug|bug]]s in NLMs to overwrite the kernel&amp;#039;s or other NLM&amp;#039;s address space and ultimately crash the server &amp;amp;mdash; in the mainframe-derived Novell terminology, this was known as an ABEND or [[Abnormal end|ABnormal END]].&lt;br /&gt;
&lt;br /&gt;
Moreover, NetWare used a non-preemptive, or [[co-operative multitasking|cooperative]], multitasking model, meaning that an NLM was required to yield to the kernel regularly.&amp;lt;ref&amp;gt;{{cite book&lt;br /&gt;
   |title=NetWare Administration: NetWare 4.0-6.0&lt;br /&gt;
   |author=Mark Foust  |year=2001}}&amp;lt;/ref&amp;gt; An NLM executing an [[infinite loop]], for example, could therefore not be stopped.&lt;br /&gt;
&lt;br /&gt;
In NetWare v4.x, Novell introduced a limited form of memory protection, which was extended to &amp;#039;&amp;#039;Protected Address Spaces&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
==Compilers==&lt;br /&gt;
Official compilers that produce NLMs are:&lt;br /&gt;
&lt;br /&gt;
* [[Watcom C/C++|Watcom C/C++ compiler]] / [[Watcom C/C++|OpenWatcom]]&lt;br /&gt;
* [[Metrowerks]] [[CodeWarrior]] for NetWare&amp;lt;ref name=&amp;quot;Metrowerks&amp;quot;/&amp;gt;&lt;br /&gt;
* EPC C/C++&lt;br /&gt;
* Novell NLMLINK.EXE&lt;br /&gt;
&lt;br /&gt;
NLM development is also possible with GNU cc and binutils.&amp;lt;ref name=&amp;quot;NLM_Linux&amp;quot;/&amp;gt; More details are available in NetWare Loadable Module Programming HOWTO by Martin Hinner.&amp;lt;ref name=&amp;quot;NLM_Howto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Client-side NLMs with NIOS==&lt;br /&gt;
Announcing it in March 1995,&amp;lt;ref name=&amp;quot;Network_World_1995&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;PCMag_1995&amp;quot;/&amp;gt; Novell introduced a new 32-bit DOS/Windows [[Personal NetWare#NetWare clients for DOS|NetWare]] client ([[Client 32]] based on ODI32/NIOS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
   |url=https://encyclopedia2.thefreedictionary.com/Netware+Input%2FOutput+Subsystem&lt;br /&gt;
   |title=Netware Input/Output Subsystem}}&amp;lt;/ref&amp;gt; in 1996, replacing the former 16-bit client based on [[Open Data-Link Interface|ODI]]/VLM. Its NIOS component ([[NetWare I/O Subsystem]]&amp;lt;ref name=&amp;quot;Network_World_1995&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;Liebing_1996&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;Hendrick_1996&amp;quot;/&amp;gt;) used techniques similar to [[DOS Protected Mode Services|DPMS]] to relocate and run NLMs in [[protected mode]] and [[extended memory]] in order to reduce the [[conventional memory]] footprint of the client down to 2 to 5&amp;amp;nbsp;KB.&amp;lt;ref name=&amp;quot;Paul_1997_NWDOSTIP&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;Liebing_1996&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Virtual Loadable Module]] (VLM)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|refs=&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Metrowerks&amp;quot;&amp;gt;{{cite web |title=Metrowerks website |url=http://www.metrowerks.com/ |url-status=dead |archive-url=https://web.archive.org/web/20090106143416/http://metrowerks.com/ |archive-date=2009-01-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NLM_Linux&amp;quot;&amp;gt;{{cite web |url=http://martin.hinner.info/nlm/ |title=NLM development under Linux}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NLM_Howto&amp;quot;&amp;gt;{{cite web |title=NetWare Loadable Module Programming HOWTO |url=http://martin.hinner.info/nlm/NLM-HOWTO/NLM-HOWTO.html}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Network_World_1995&amp;quot;&amp;gt;{{cite journal |title=Novell to dress up Tuxedo and deliver 32-bit client |date=1995-03-27 |journal=[[Network World]] |page=141 |url=https://books.google.com/books?id=ShgEAAAAMBAJ&amp;amp;pg=PA141 |access-date=2018-08-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;PCMag_1995&amp;quot;&amp;gt;{{cite journal |title=Network Edition - Cover Story |date=1995-10-24 |journal=[[PC Magazine]] |page=NE27 |url=https://books.google.com/books?id=3jNOHGmrpRkC&amp;amp;pg=PA527 |access-date=2018-08-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Liebing_1996&amp;quot;&amp;gt;{{cite web |title=NetWare Client 32 for DOS/Windows: Overview of Architecture and Features |author-first=Edward A. |author-last=Liebing |date=1996-05-01 |publisher=[[Novell]] |work=Novell AppNotes |url=https://support.novell.com/techcenter/articles/ana19960501.html |access-date=2018-08-18 |url-status=live |archive-url=https://web.archive.org/web/20180818204926/https://support.novell.com/techcenter/articles/ana19960501.html |archive-date=2018-08-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Hendrick_1996&amp;quot;&amp;gt;{{cite web |title=Overview of NetWare Client 32 for Windows 95 |author-first=Ben |author-last=Hendrick |date=1996-11-01 |publisher=[[Novell]] |work=Novell AppNotes |url=https://support.novell.com/techcenter/articles/ana19961101.html |access-date=2018-08-18 |url-status=live |archive-url=https://web.archive.org/web/20180818205427/https://support.novell.com/techcenter/articles/ana19961101.html |archive-date=2018-08-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Paul_1997_NWDOSTIP&amp;quot;&amp;gt;{{cite book |title=NWDOS-TIPs &amp;amp;mdash; Tips &amp;amp; Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds |work=MPDOSTIP |author-first=Matthias R. |author-last=Paul |date=1997-07-30 |edition=3 |version=Release 157 |language=de |url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm |access-date=2012-01-11 |url-status=live |archive-url=https://web.archive.org/web/20160522014302/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm |archive-date=2016-05-22}} (NB. NWDOSTIP.TXT is a comprehensive work on [[Novell DOS 7]] and [[OpenDOS 7.01]], including the description of many undocumented features and internals. It is part of the author&amp;#039;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.)&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Further reading==&lt;br /&gt;
* {{cite book |title=NetWare 386 Programmer&amp;#039;s Guide |author-first=Ralph |author-last=Davis |publisher=[[Addison-Wesley]] |date=1991 |isbn=978-0-201-57709-9}}&lt;br /&gt;
* {{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}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Executable file formats]]&lt;br /&gt;
[[Category:Novell NetWare]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Kvng</name></author>
	</entry>
</feed>