i5/OS PASE Environment Variables

Overview

i5/OS PASE environment variables are independent of ILE environment variables. Setting a variable in one environment has no effect on the other environment, but several system interfaces allow you to copy variables between environments:


Special i5/OS PASE Environment Variables

Some i5/OS PASE runtime behaviors are different from AIX because of differences between the two operating systems. You can use these i5/OS PASE environment variables to control some of the differences:

PASE_EXEC_QOPENSYS
PASE_EXEC_QOPENSYS can be used to prevent the system from searching the /QOpenSys file system for an absolute path (starting with "/") specified as an argument to exec or Qp2RunPase, or in the first line of a shell script. The system normally searches the /QOpenSys file system if the absolute path name for an i5/OS PASE program or script cannot be opened or is not a regular bytestream file. i5/OS directory /usr/bin contains links to QShell utilities that cannot run as i5/OS PASE programs, so searching /QOpenSys allows more AIX programs and shell scripts to run unchanged (using i5/OS PASE utilities in directory /QOpenSys/usr/bin). The system does not do an extended search in the /QOpenSys file system if the i5/OS PASE shell or other program that calls exec or Qp2RunPase has changed credentials (setuid or setgid) or if the i5/OS PASE environment specifies PASE_EXEC_QOPENSYS=N.

PASE_FORK_JOBNAME
PASE_FORK_JOBNAME specifies the i5/OS job name for a new process created with the fork() or f_fork() function. Only the first 10 characters in the string are used, and lowercase characters are converted to uppercase. The specified value is ignored and a default job name is used if the string does not follow i5/OS simple name rules (first character alphabetic and subsequent characters alphameric or underscore). Prestarted job are never used when a fork job name is specified. See fork or f_fork Specifying i5/OS Job Name (fork400 or f_fork400) for information about specifying the i5/OS job name for specific fork operations.

Some i5/OS PASE shells (including the default Korn shell) do not set environment variables for exported variables in the shell process itself. Setting PASE_FORK_JOBNAME in such a shell does not control job names for first-order utility processes created by that shell, but can control job names for processes forked by a utility started by the shell.

PASE_MAXDATA64
PASE_MAXDATA64 specifies the maximum number of 256MB segments provided for brk (heap) storage in a 64-bit i5/OS PASE program. If PASE_MAXDATA64 is omitted or contains an invalid value (either non-numeric or less than one), a default of 256 segments (64GB) is used. PASE_MAXDATA64 has no effect on 32-bit i5/OS PASE programs, and it must be set either in the initial environment passed to Qp2RunPase or before running exec for a 64-bit i5/OS PASE program.

PASE_MAXSHR64
PASE_MAXSHR64 specifies the maximum number of 256MB segments provided for shared memory (shmat and mmap) in a 64-bit i5/OS PASE program. If PASE_MAXSHR64 is omitted or contains an invalid value (either non-numeric or less than one), a default of 256 segments (64GB) is used. PASE_MAXSHR64 has no effect on 32-bit i5/OS PASE programs, and it must be set either in the initial environment passed to Qp2RunPase or before running exec for a 64-bit i5/OS PASE program.

PASE_STDIO_ISATTY
The default behavior of the i5/OS PASE isatty runtime function returns true for file descriptors 0, 1, and 2 (stdin, stdout, and stderr), regardless of whether the open file is a tty device. Setting i5/OS PASE environment variable PASE_STDIO_ISATTY to N, either in the initial environment passed to Qp2RunPase or before the first invocation of isatty, causes isatty to return an accurate indication of whether the open file is a tty device.

PASE_SYSCALL_NOSIGILL
The i5/OS PASE kernel exports some system calls that are implemented by the AIX kernel but are unsupported by i5/OS PASE. The default behavior for any unsupported syscall is to send exception message MCH3204, which the system converts to i5/OS PASE signal SIGILL. The unsupported syscall returns a function result of -1 with i5/OS-unique errno EUNKNOWN (3474) if the signal is ignored or the handler returns. Message MCH3204 appears in the i5/OS job log to provide the name of the unsupported system call and the i5/OS PASE instruction address that caused the error. The message may also include the internal dump identifier for a VLOG entry that contains this information:
  syscall number (GPR2 value)
  i5/OS PASE instruction address
  Link register value
  GPR3-10 values (if available, or zero otherwise)
  syscall name (if known, converted to uppercase)

i5/OS PASE programs can suppress the exception message and SIGILL signal for unsupported system calls by setting environment variable PASE_SYSCALL_NOSIGILL either in the initial environment passed to Qp2RunPase or before running exec. PASE_SYSCALL_NOSIGILL is ignored if the i5/OS PASE program has the S_ISUID or S_ISGID attribute, but otherwise is interpreted as a list of syscall function names with optional errno values, delimited by colons. The colon-delimited values must take one of these forms:

  syscall_name
  syscall_name=errno_name     (errno_name is EINVAL, EPERM, and so on)
  syscall_name=errno_number   (errno_number is 0-127)

SIGILL is suppressed for any syscall_name in the list that is recognized as an i5/OS PASE system call. The first or only entry in the list may use a special syscall_name of "ALL" to set a default behavior for all unsupported syscalls. Any entry in the list that is not an i5/OS PASE syscall name is ignored, and specifying the name of a syscall that is supported by the i5/OS PASE kernel has no effect on the operation of that syscall.

Any syscall in the PASE_SYSCALL_NOSIGILL list that is unsupported by the i5/OS PASE kernel returns a function result of -1 with the specified errno value (defaulting to ENOSYS) except that specifying errno_number of 0 causes the unsupported syscall to return a function result of zero (without setting errno). An invalid errno_name or errno_number defaults to ENOSYS.

For example, the following PASE_SYSCALL_NOSIGILL value suppresses SIGILL for all unsupported syscalls. "quotactl" returns EPERM and "audit" returns function result of zero, while all other unsupported syscalls return ENOSYS:

  export PASE_SYSCALL_NOSIGILL=ALL:quotactl=EPERM:audit=0

Note: PASE_SYSCALL_NOSIGILL is not intended for production programs. It is provided as a convenience for feasibility testing using unchanged AIX binaries that need to be modified for production.

PASE_THREAD_ATTACH
If i5/OS PASE environment variable PASE_THREAD_ATTACH is set to Y when an i5/OS PASE program runs libpthreads.a initialization (usually at program startup), an ILE thread that was not started by i5/OS PASE will be attached to i5/OS PASE when it calls an i5/OS PASE procedure (using Qp2CallPase or Qp2CallPase2). Once an ILE thread has attached to i5/OS PASE, that thread is subject to asynchronous interruption for i5/OS PASE functions such as signal handling and thread cancellation. In particular, the thread will be canceled as part of ending the i5/OS PASE program (when exit runs or i5/OS PASE processing terminates for a signal).

PASE_UNLIMITED_PATH_MAX
The i5/OS Integrated File System supports longer path names than the value of PATH_MAX (1023) in AIX header file <limits.h>. Setting i5/OS PASE environment variable PASE_UNLIMITED_PATH_MAX to Y, either in the initial environment passed to Qp2RunPase or before running exec, allows an i5/OS PASE program to access objects with long path names. i5/OS PASE loader functions and some library runtime functions can fail with path names longer than AIX PATH_MAX.

PASE_USRGRP_LOWERCASE
i5/OS user names and group names are case-insensitive, but the system stores and returns them in uppercase. i5/OS PASE runtime functions that return user names and group names (getpwnam, getpwuid, getgrnam, and getgrgid) default to converting them to lowercase unless i5/OS PASE environment variable PASE_USRGRP_LOWERCASE is set to N.


Top | i5/OS PASE APIs | APIs by category