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
7-1
7
Porting UNIX Applications to the
OSS Environment
Many application programs have been written for the UNIX environment. As UNIX
standards have developed, popular UNIX environments have been brought into
conformance with these standards. UNIX programs that use these standard interfaces
should be easy to port to the OSS environment.
However, many UNIX environments still support old system interfaces for backward
compatibility, and have added proprietary extensions of their own. To the degree that
UNIX programs still use these old system interfaces and vendor-specific extensions,
these programs can take some additional effort to port to the OSS environment or
other UNIX environments.
ISO/ANSI C has been a standard for the C language for many years. Most new UNIX
application programs are being written in the ISO/ANSI C language, making these
programs very portable to environments, such as OSS, that support the C standard.
However, because UNIX programs written in Common C still exist, most compiler
vendors support an option that enables the compilation of these older programs.
This section is intended for UNIX C or C++ programmers interested in porting C or C++
programs from a UNIX environment to the OSS environment. It provides guidelines for
performing a port, an overview of the basic differences between the UNIX and OSS
programming environments, and a description of the rich set of functions offered by the
OSS environment.
The topics for this section are:
•
General Porting Guidelines on page 7-1
•
Using Functional Equivalents on page 7-6
•
Differences Between OSS and UNIX Environments on page 7-7
•
OSS C Programming Considerations on page 7-10
•
Using HP Extensions on page 7-25
•
Using the OSS Internationalization Subsystem on page 7-29
General Porting Guidelines
There are a number of issues you must take into consideration when porting a UNIX
application program to the OSS environment. Obviously, if a program is originally
written to be portable to multiple environments, the porting of the UNIX program to the
OSS environment should be easy. However, this compatibility is not always the case.
Before highlighting specific considerations for porting between the OSS and UNIX
environments, the following general issues are discussed:
•
Scope of Portability on page 7-2
•
Levels of Portability on page 7-2