Open System Services Porting Guide (G06.24+, H06.03+)
Table Of Contents
- What’s New in This Manual
- About This Manual
- 1 Introduction to Porting
- 2 The Development Environment
- 3 Useful Porting Tools
- 4 Interoperating Between User Environments
- Purpose of Interoperability
- The OSS User Environment
- OSS Commands for the Guardian User
- Guardian Commands for the UNIX User
- OSS Pathname and Guardian Filename Conversions
- Running the OSS Shell and Commands From TACL
- Running Guardian Commands From the OSS Shell
- Running OSS Processes With Guardian Attributes
- Using OSS Commands to Manage Guardian Objects
- 5 Interoperating Between Programming Environments
- 6 OSS Porting Considerations
- 7 Porting UNIX Applications to the OSS Environment
- 8 Migrating Guardian Applications to the OSS Environment
- General Migration Guidelines
- C Compiler Issues for Guardian Programs
- Using New and Extended Guardian Procedures
- Using OSS Functions in a Guardian Program
- Interoperating With OSS Programs
- Starting an OSS Program From the Guardian Environment
- C Compiler Considerations for OSS Programs
- Porting a Guardian Program to the OSS Environment
- How Arguments Are Passed to the C or C++ Program
- Differences in the Two Run-Time Environments
- Which Run-Time Routines Are Available
- Use of Common Run-Time Environment (CRE) Functions
- Replacing Guardian Procedure Calls With Equivalent OSS Functions
- Which IPC Mechanisms Can Be Used
- Interactions Between Guardian and OSS Functions
- 9 Porting From Specific UNIX Systems
- 10 Native Migration Overview
- 11 Porting or Migrating Sockets Applications
- 12 Porting Threaded Applications
- A Equivalent OSS and UNIX Commands for Guardian Users
- B Equivalent Guardian Commands for OSS and UNIX Users
- C Equivalent Inspect Debugging Commands for dbx Commands
- D Equivalent Native Inspect Debugging Commands for dbx Commands
- E Standard POSIX Threads Functions: Differences Between the Previous and Current Standards
- Glossary
- Index
Open System Services Porting Guide—520573-006
5-1
5
Interoperating Between
Programming Environments
This section is intended for users of the OSS and Guardian environments who need to
understand interoperating between the two. This section discusses the following topics:
•
Interoperability on page 5-1 as it relates to programming environments
•
Header Files on page 5-3 for compilation in the Guardian and OSS environments
•
API Interoperability on page 5-4
•
Process Interoperability on page 5-6
•
File Interoperability on page 5-9
•
Native Signal Interoperability on page 5-11
•
I/O Interoperability on page 5-12
•
Mixed-Module Programming on page 5-13
•
Mixed-Language Programming on page 5-15
Interoperability
One of the primary objectives of interoperability is to support and encourage the
porting of existing UNIX applications from other platforms to the OSS environment and
the developing of new applications for the OSS environment. Another objective is the
migration of Guardian applications to the OSS environment. The OSS environment has
been designed to make it easy to migrate Guardian applications to the OSS
environment. Interoperability between the OSS and Guardian environments makes
migration tasks easier to achieve. Applications written for the OSS environment can
take advantage of the parallelism and scalability offered by NonStop systems.
Interoperability between environments is achieved by using standard function calls and
HP extensions to these calls and to the Guardian procedures. Interoperability is also
achieved by adhering to the ISO/ANSI C programming standards for code written in
either environment. The C compilers, the TNS C++ preprocessor, and the TNS/R and
TNS/E native C++ compilers, conform to industry standards and specifications such as
ISO/ANSI C, POSIX.1, POSIX.2, and XPG4.
Many levels of interoperability have been provided between the OSS and Guardian
environments, for example; the following actions are supported:
•
Using a command from the other environment
•
Using an API from the other environment
•
Operating on an object (file, process) that resides in the other environment
•
Communicating with a process in the other environment