ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/pase_environ.htm

259 lines
12 KiB
HTML
Raw Permalink Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>i5/OS PASE Environment Variables</title>
<!-- Begin Header Records -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- Created by V2DCIJB on 23 Nov 1999 -->
<!-- Edited by Kersten Jan 02 -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!-- Java sync-link -->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<a name="Top_Of_Page"></a>
<h2>i5/OS PASE Environment Variables</h2>
<h3>Overview</h3>
<p>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:</p>
<ul>
<li>The <strong>Qp2RunPase</strong> API lets you specify any list of
environment variables you want to initialize for the i5/OS PASE program. See
<a href="qp2runpase.htm">Run an i5/OS PASE Program</a> (Qp2RunPase)
documentation for more information.<br><br></li>
<li>The <strong>QP2SHELL</strong> and <strong>QP2TERM</strong> APIs initialize
the i5/OS PASE environment with a copy of nearly all ILE environment
variables. See <a href="qp2shell.htm">Run an i5/OS PASE Shell Program</a>
(QP2SHELL) documentation for more information.<br><br></li>
<li>The <strong>systemCL</strong> i5/OS PASE runtime function copies nearly
all i5/OS PASE environment variables to the ILE environment for option
<strong>SYSTEMCL_ENVIRON</strong>. See <a href="pase_systemcl.htm">Run a CL
Command for i5/OS PASE</a> (systemCL) documentation for more information.<br><br></li>
<li>The i5/OS PASE <strong>system</strong> utility copies nearly all i5/OS
PASE environment variables to the ILE environment for option
<strong>-e</strong>. See <a href="../rzalc/pase_system.htm">Run a CL
Command</a> (i5/OS PASE <strong>system</strong> utility) documentation for
more information.<br><br></li>
</ul>
<br>
<h3>Special i5/OS PASE Environment Variables</h3>
<p>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:</p>
<dl>
<dt><strong>PASE_EXEC_QOPENSYS</strong></dt>
<dd><strong>PASE_EXEC_QOPENSYS</strong> can be used to prevent the system from
searching the /QOpenSys file system for an absolute path (starting with "/")
specified as an argument to <strong>exec</strong> or
<strong>Qp2RunPase</strong>, 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
<strong>exec</strong> or <strong>Qp2RunPase</strong> has changed credentials
(<strong>setuid</strong> or <strong>setgid</strong>) or if the i5/OS PASE
environment specifies <strong>PASE_EXEC_QOPENSYS=N</strong>.<br><br></dd>
<dt><strong>PASE_FORK_JOBNAME</strong></dt>
<dd><strong>PASE_FORK_JOBNAME</strong> specifies the i5/OS job name for a new process created with the <strong>fork()</strong> or <strong>f_fork()</strong> 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 <a href="pase_fork400.htm">fork or f_fork Specifying i5/OS Job Name</a> (fork400 or f_fork400) for information about specifying the i5/OS job name for specific fork operations.
<p>
Some i5/OS PASE shells (including the default Korn shell) do not set environment variables for exported variables in the shell process itself.
Setting <strong>PASE_FORK_JOBNAME</strong> 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.
<br><br></dd>
<dt><strong>PASE_MAXDATA64</strong></dt>
<dd><strong>PASE_MAXDATA64</strong> specifies the maximum number of 256MB
segments provided for brk (heap) storage in a 64-bit i5/OS PASE program. If
<strong>PASE_MAXDATA64</strong> is omitted or contains an invalid value (either
non-numeric or less than one), a default of 256 segments (64GB) is used.
<strong>PASE_MAXDATA64</strong> has no effect on 32-bit i5/OS PASE programs,
and it must be set either in the initial environment passed to
<strong>Qp2RunPase</strong> or before running <strong>exec</strong> for a
64-bit i5/OS PASE program.<br><br></dd>
<dt><strong>PASE_MAXSHR64</strong></dt>
<dd><strong>PASE_MAXSHR64</strong> specifies the maximum number of 256MB
segments provided for shared memory (shmat and mmap) in a 64-bit i5/OS PASE
program. If <strong>PASE_MAXSHR64</strong> is omitted or contains an invalid
value (either non-numeric or less than one), a default of 256 segments (64GB)
is used. <strong>PASE_MAXSHR64</strong> has no effect on 32-bit i5/OS PASE
programs, and it must be set either in the initial environment passed to
<strong>Qp2RunPase</strong> or before running <strong>exec</strong> for a
64-bit i5/OS PASE program.<br><br></dd>
<dt><strong>PASE_STDIO_ISATTY</strong></dt>
<dd>The default behavior of the i5/OS PASE <strong>isatty</strong> 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 <strong>PASE_STDIO_ISATTY</strong> to N, either in
the initial environment passed to <strong>Qp2RunPase</strong> or before the
first invocation of <strong>isatty</strong>, causes <strong>isatty</strong> to
return an accurate indication of whether the open file is a tty device.<br><br></dd>
<dt><strong>PASE_SYSCALL_NOSIGILL</strong></dt>
<dd>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
<strong>SIGILL</strong>. 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:
<pre>
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)
</pre>
<p>i5/OS PASE programs can suppress the exception message and
<strong>SIGILL</strong> signal for unsupported system calls by setting
environment variable <strong>PASE_SYSCALL_NOSIGILL</strong> either in the
initial environment passed to <strong>Qp2RunPase</strong> or before running
<strong>exec</strong>. <strong>PASE_SYSCALL_NOSIGILL</strong> 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:</p>
<pre>
syscall_name
syscall_name=errno_name (errno_name is EINVAL, EPERM, and so on)
syscall_name=errno_number (errno_number is 0-127)
</pre>
<p><strong>SIGILL</strong> is suppressed for any <em>syscall_name</em> 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 <em>syscall_name</em> 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.</p>
<p>Any syscall in the <strong>PASE_SYSCALL_NOSIGILL</strong> 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.</p>
<p>For example, the following <strong>PASE_SYSCALL_NOSIGILL</strong> value
suppresses <strong>SIGILL</strong> for all unsupported syscalls. "quotactl"
returns EPERM and "audit" returns function result of zero, while all other
unsupported syscalls return ENOSYS:</p>
<pre>
export PASE_SYSCALL_NOSIGILL=ALL:quotactl=EPERM:audit=0
</pre>
<p>Note: <strong>PASE_SYSCALL_NOSIGILL</strong> 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.</p>
</dd>
<dt><strong>PASE_THREAD_ATTACH</strong></dt>
<dd>If i5/OS PASE environment variable <strong>PASE_THREAD_ATTACH</strong> 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
<strong>Qp2CallPase</strong> or <strong>Qp2CallPase2</strong>). 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 <strong>exit</strong> runs or i5/OS PASE processing
terminates for a signal).<br><br></dd>
<dt><strong>PASE_UNLIMITED_PATH_MAX</strong></dt>
<dd>The i5/OS Integrated File System supports longer path names than the value
of <strong>PATH_MAX</strong> (1023) in AIX header file
&lt;<strong>limits.h</strong>&gt;. Setting i5/OS PASE environment variable
<strong>PASE_UNLIMITED_PATH_MAX</strong> to Y, either in the initial
environment passed to <strong>Qp2RunPase</strong> or before running
<strong>exec</strong>, 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
<strong>PATH_MAX</strong>.<br><br></dd>
<dt><strong>PASE_USRGRP_LOWERCASE</strong></dt>
<dd>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
<strong>PASE_USRGRP_LOWERCASE</strong> is set to N.</dd>
</dl>
<br>
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center"><td valign="middle" align="center">
<a href="#Top_Of_Page">Top</a>
| <a href="pase1.htm">i5/OS PASE APIs</a>
| <a href="aplist.htm">APIs by category</a>
</td></tr>
</table>
</center>
</body>
</html>