Novell Home

Network System Abstraction Layer

From Developer Community

The Network System Abstraction Layer (NSAL) project is an open source offering of over 8 years of effort on the part of Novell's eDirectory engineers to provide a high-performance virtual machine interface for network server software. The original purpose of NSAL was to provide an abstraction of system-level services. From this stand point, NSAL can be thought of as a functional equivalent of the POSIX standard (POSIX is broader in scope, however). The difference is that NSAL is written at a slightly higher level, allowing it to abstract system-level services on non-POSIX platforms, such as Win32.


Services

NSAL provides the following portable services on NetWare, Win32, and POSIX compliant systems:

  • Threading and rich thread synchronization
  • Thread-local storage
  • Executable module management
  • Descriptor-based file I/O
  • File system directory access
  • Memory management (primarily for debugging memory consumption patterns)
  • CPU and system functions such as sleep and cpu count
  • High-resolution time and timer functions, and GUID services
  • Sockets and network interfaces (including an I/O completion ports abstraction)
  • Descriptor-based multiplexing (similar to select)
  • Network to presentation and presentation to network translation with DNS query
  • ANSI C 99 sized types (guaranteed on all NSAL platforms)
  • Debugging, rich assertions, tracing, and run-time diagnostics
  • Macros that define machine characteristics
  • Standardized error management between platforms


Philosophy

Our experience has shown us that a good operating system abstraction library requires a good philosphical basis. NSAL's philosophical basis is simple: Don't provide anything that can be built on top of NSAL in a portable manner, and don't provide anything that is already available in the C standard library (C99 standard where possible, C89 where necessary). Accordingly, NSAL doesn't provide string routines or a buffered file I/O API. Exceptions to the rule are made when significant additional functionality can be provided by NSAL's implementation of an interface. For example, NSAL provides memory management, even though the ANSI C library provides heap management. This was done because NSAL can provide a much richer set of diagnostics and debugging functionality beneath a heap management API. All decisions regarding the functionality that NSAL provides are made in this manner.


File Releases

This project is just getting started. Please be patient. Platform binaries and source releases will be posted soon as a first open source release.


Browse the Subversion Tree

Browsing the Subversion tree gives you access to this project's shared source code and files. You may also view the complete histories of any file in the repository.

The subversion repository is at http://forgesvn1.novell.com/svn/nsal. Please refer to the NSAL Subversion access information page for detailed, platform-specific instructions on using this SVN repository link.



Project Members

NamePosition
Ahodgkinson 


Novell® Making IT Work As One

© 2008 Novell, Inc. All Rights Reserved.