Samba 3.0.22 Porting by Vidya Sagar

5. All the links and bookmarks in this document are blue underlined.
6. All the examples and command demonstration have used 4 way series 969-400 system installed with MPE/iX
C.65.00 FOS, POSIX version A.50.02, Samba-3.0.22, and gcc version 3.2.
1 Background on MPE/iX, POSIX compliance, and GNU Tools
In this section we will review some general concepts regarding MPE/iX, its implementation of POSIX.1 and POSIX.2
standards and the GNU (or “Open Source”) tools. If you are already familiar with MPE, POSIX and Open Source tools
you may skip this section and start with “build machine setup.”
MPE/iX and POSIX compliance
The IEEE standard for a Portable Operating System Interface, or POSIX, defines a standard set of operating system
interfaces and an environment to support source level application portability. POSIX specifies the functions and services
an operating system must support and the application programming interface to these services and functions. POSIX
itself is made up of a number of sub-standards typically designated “.N”, not all of which MPE/iX supports.
Specifically, MPE/iX provides POSIX 1003.1 (or POSIX.1), which defines a standard set of programmatic interfaces for
basic operating system facilities, and POSIX 1003.2(or POSIX.2), which specifies an interactive interface that provides a
shell and utilities similar to those provided by the UNIX operating system. These POSIX standards are integrated in the
MPE XL operating system to form the MPE/iX operating system, which runs on the HP e3000 systems.
The programmatic interfaces and directory structure of POSIX.1 allows MPE/iX users to use POSIX functionally without
any impact on existing HP 3000 applications. Moreover, MPE applications are able to access POSIX files, and POSIX
applications are able to access MPE files. Thus, MPE/iX provides interoperability and integration between MPE and
POSIX applications and data.
The book, MPE/iX Developer's Kit Reference Manual Volume 1 [1] and MPE/iX Developer's Kit Reference Manual Volume 2 [2],
describes the MPE/iX implementation of the IEEE 1003 standards 1003.1 for C language bindings and 1003.2 for Shell
commands and utilities.
The POSIX/iX library is implemented according to the standards set forth in the 1990 revision of the POSIX.1 standard. POSIX.1
standard defines over 200 C application programming interfaces (APIs) along with type definitions, header files and data
interchange format. These APIs are standard programming interfaces to make system calls, I/O calls, and general library calls.
POSIX is significantly different from MPE in a number of technical areas such as directory structure, file system, security,
user identification, file naming, process management, and signals.
Directory Structure: MPE has a fixed, three-level directory structure. In this model, the directory tree consists of one or
more accounts. Each account contains one or more groups and each group has zero or more files in it. On the other
hand, POSIX supports the notion of a hierarchical directory structure.
MPE groups and accounts are different from the POSIX directories because of the special information contained in them.
To integrate the POSIX and MPE directory structures successfully, this special information from MPE groups and
accounts has been removed to accommodate the new directory structure. On MPE, accounts are used to manage
collections of users for file sharing. Each MPE account entry contains a pointer to a list of users that are members of that
account. Accounts and groups are distinguished from POSIX files and directories based upon how they are created; using
newacct/newgroup or using mkdir.
In the new directory structure all users are registered in the UID (user identifier) database required by POSIX, and the
combination of the UID and GID (group identifier) databases replaces most of the information formerly held in the MPE
account and user directory nodes.
2
File Naming: In designing the file naming rules, the main objective was that the existing MPE interfaces such as MPE
intrinsic(s) and command interpreter (CI) commands should be able to refer to all objects in the same way they did before
MPE/iX. The name server used by POSIX 1003.1 functions and POSIX 1003.2 commands is the POSIX name server.