intro_pxf - Introduction to PXF POSIX library


Cray Linux Environment (CLE)


The POSIX FORTRAN 77 Language Interfaces Standard IEEE Std 1003.9-1992 (POSIX.a) defines a standardized interface for accessing the system services of IEEE Std 1003.1-1990 (POSIX.1), and supports routines to access constructs not directly accessible with FORTRAN 77.

Most of the routines described in this standard are currently available on Cray systems. For some routines, only a portion of the functionality described by the standard is currently implemented.

Many of the service interfaces defined in POSIX.1 require the use of aggregate data types (for example, structures) that do not map to FORTRAN 77 entities. POSIX.9 solves this problem by using data abstraction; by using additional subroutines to access and manipulate the aggregate data, the underlying data structures are hidden from the user. It is the responsibility of the Fortran programmer to maintain variables that correspond to the individual components of the actual implementation of the aggregate data, but the programmer does not need to know the details of the actual implementation of the aggregate.

The basic model of this data abstraction is as follows:

The programmer calls the PXFSTRUCTCREATE subroutine to “create” an instance of the desired aggregate data type; this subroutine returns a handle that the programmer subsequently uses in order to reference and/or to manipulate the data.

The programmer uses additional subroutines to load values into, or extract values out of, the aggregate data. These subroutines are passed the handle of the desired aggregate and the name of the specific component that is to be accessed. The programmer has direct control over only one component at a time.

If an application passes information to the system, the PXFtypeSET subroutine is called once for each member before calling the system procedure. Currently, only PXFINTSET and PXFSTRSET are implemented.

If an application needs to get information from the system, the PXFtypeGET subroutine is called once for each member after calling the system procedure. Currently, only PXFINTGET and PXFINTSET are implemented.

When an instance of an aggregate is no longer required, a subroutine (PXFSTRUCTFREE) can be called to release it.

When calling the actual system procedure, the calling sequence is equivalent to the C binding as shown in POSIX.1, except that a handle is used in place of the POSIX.1 structure (pointer) argument.

Classification of routines

The POSIX routines can be divided into the following groups.

Process primitives

Routines that create, execute, or terminate a process:

  • PXFFORK - Creates a process

  • PXFEXECV, PXFEXECVE, PXFEXECVP - Executes a new process

  • PXFWAIT, PXFWAITPID - Obtains information about a calling process’ child process

  • PXFFASTEXIT - Terminates a Fortran program

  • PXFWIFEXITED - Determines if child process exited with exit

  • PXFWIFSIGNALED - Determines if the child process terminated because of a signal

  • PXFWIFSTOPPED - Determines if a child process has stopped

Signal routines:

  • PXFKILL - Sends a signal to a process or group of processes

  • PXFSIGADDSET - Adds an individual signal to the specified signal set

  • PXFSIGDELSET - Deletes an individual signal in the specified signal set

  • PXFSIGEMPTYSET - Initializes signal set such that all signals defined in POSIX standard are excluded

  • PXFSIGFILLSET - Initializes signal set such that all signals defined in POSIX standard are included

  • PXFSIGISMEMBER - Determines if the specified signal is a member of the specified signal set

  • PXFSIGPENDING - Examines pending signals

  • PXFSIGPROCMASK - Examines and changes blocked signals

  • PXFSIGSUSPEND - Waits for a signal

  • PXFALARM - Schedule alarm signal

  • PXFPAUSE - Suspends process execution until signal

  • PXFSLEEP - Delays process execution

Process environment routines

Process identification routines:

  • PXFGETPID - Gets the process ID

  • PXFGETPPID - Gets the parent process ID

User identification routines:

  • PXFGETEGID - Gets the effective group ID

  • PXFGETEUID - Gets effective user ID

  • PXFGETGID - Gets the real group ID

  • PXFGETGROUPS - Gets supplementary group IDs

  • PXFGETLOGIN - Gets user name

  • PXFGETUID - Gets the real user ID

  • PXFSETGID - Sets group ID

  • PXFSETUID - Sets user ID

Process groups routines:

  • PXFSETPGID - Set process group ID

  • PXFSETSID - Creates a new session for a calling process

System identification routines:

  • PXFUNAME - Retrieves the operating system name

Time routines:

  • PXFTIME - Gets system time

  • PXFTIMES - Gets process times

Environment variable processing routines:

  • PXFCLEARENV - Clears all environment variables

  • PXFGETENV - Returns a value for the environment name

  • PXFSETENV - Sets environment variable pair

Terminal identification routines:

  • PXFCTERMID - Generates terminal pathname

  • PXFISATTY - Determines if file descriptor corresponds

Configurable system values:

  • PXFSYSCONF - Retrieves the value of configurable system variables

File and directory routines

  • PXFACCESS - Checks the accessibility of a named file

  • PXFCHDIR - Changes the current directory to a specified directory

  • PXFCHMOD - Sets file modes for a named file

  • PXFCHOWN - Changes the owner and group of a file

  • PXFCHROOT - Changes the root directory to a specified directory

  • PXFCREAT - Creates a new file or rewrites an existing file

  • PXFDIRECTORY - Performs directory operations

  • PXFGETCWD - Gets the pathname of the working directory

  • PXFISBLK - Tests for block special file

  • PXFISCHR - Tests for character special file

  • PXFISDIR - Tests for directory file

  • PXFISFIFO - Tests for pipe or a FIFO special file

  • PXFISREG - Tests for regular file

  • PXFLINK - Creates a link to a file

  • PXFOPEN - Provides a Fortran interface to the open system call

  • PXFRENAME - Renames a file

  • PXFRMDIR - Removes a directory entry

  • PXFSTAT - Retrieves the file status

  • PXFUMASK - Sets the file creation mask

  • PXFUNLINK - Removes a directory entry

  • PXFUTIME - Sets access and modification times of a file

Input and output primitives

  • PXFFCNTL - Provides a subset of fcntl() functionality, except the third argument is always an integer

Device and class-specific procedures

(not available)

Fortran intrinsics

  • PXFCONST, PXFISCONST, IPXFCONST - Returns the value associated with symbolic constants

  • PXFESTRGET - Accesses a single string element of a structure component that is an array

  • PXFFILENO - Returns the file descriptor for a specified unit

  • PXFGETARG - Returns a command-line argument

  • PXFINTGET - Allows values stored in individual components of a structure to be extracted and used

  • PXFINTSET - Allows components of a structure to be set or modified

  • PXFLOCALTIME - Converts to local time

  • PXFSTRGET - Allows values stored in individual components of a structure to be extracted and used

  • PXFSTRSET - Allows values stored in individual components of a structure to be set

  • PXFSTRUCTCOPY - Copies structure

  • PXFSTRUCTCREATE - Creates an instance of the desired structure and returns a nonzero handle in the argument jhandle

  • PXFSTRUCTFREE - Deletes the instance of the structure referenced by jhandle

  • PXFUCOMPARE - Compares unsigned integers

System Databases

  • PXFGETGRGID - Gets group information using the group ID

  • PXFGETGRNAM - Gets group information using the group name

  • PXFGETPWNAM - Gets password information about login name

  • PXFGETPGRP -Gets the process group ID

  • PXFGETPWUID - Gets password information by using user ID