LIBPROC(3LIB) Interface Libraries LIBPROC(3LIB)
NAME
libproc - process control library
SYNOPSIS
Process Control Library (libproc, -lproc)
#include <libproc.h>DESCRIPTION
The
libproc library provides consumers a general series of interfaces
to inspect and control both live processes and core files. It is
intended for introspection tools such as debuggers by providing a high-
level interface to the /proc file system (
proc(5)).
The
libproc library provides interfaces that focus on:
+o Creating and attaching to live process, core files, and
arbitrary ELF objects.
+o Interrogating the state of a process or core file.
+o Manipulating the current state of a process or thread.
+o Interrogating the state of threads of a process or core file.
+o Running system calls in the context of another process.
+o Various utilities for iterating process and core file file
descriptors, mappings, symbols, and more.
+o Various utilities to support debugging tools.
Live Processes
The
libproc library can be used to manipulate running processes and to
create new ones. To manipulate an existing process first
grab it with
the
Pgrab() function. A process is generally stopped as a side effect
of grabbing it. Callers must exercise caution, as if they do not use
the library correctly, or they terminate unexpectedly, a process may
remain stopped.
Unprivileged users may only grab their own processes. Users with the
privilege {
PRIV_PROC_OWNER} may manipulate processes that they do not
own; however, additional restrictions as described in
privileges(7) apply.
In addition, the
Pcreate() and
Pxcreate() functions may be used to
create processes which are always controlled by the library.
Core Files
The
libproc library has the ability to open and interpret core files
produced by processes on the system. Process core dump generation is
controlled by the
coreadm(8) command. In addition, the library has the
ability to understand and interpret core dumps generated by Linux
kernel and can provide a subset of its functionality on such core
files, provided the original binary is also present.
Not all functions in the
libproc library are valid for core files. In
general, none of the commands which manipulate the current state of a
process or thread or that try to force system calls on a victim process
will work. Furthermore several of the information and iteration
interfaces are limited based on the data that is available in the core
file. For example, if the core file is of a process that omits the
frame pointer, the ability to iterate the stack will be limited.
Use the
Pgrab_core() or
Pfgrab_core() function to open a core file.
Use the
Pgrab_file() function to open an ELF object file. This is
useful for obtaining information stored in ELF headers and sections.
Debug Information
Many of the operations in the library rely on debug information being
present in a process and its associated libraries. The library
leverages symbol table information, CTF data (
ctf(5)) sections, and
frame unwinding information based on the use of an ABI defined frame
pointer, e.g.
%ebp and
%rbp on x86 systems.
Some software providers strip programs of this information or build
their executables such that the information will not be present in a
core dump. To deal with this fact, the library is able to consume
information that is not present in the core file or the running
process. It can both consume it from the underlying executable and it
also supports finding it from related ELF objects that are linked to it
via the
.gnu_debuglink and the
.note.gnu.build-id ELF sections.
Iteration Interfaces
The
libproc library provides the ability to iterate over the following
aspects of a process or core file:
+o Active threads
+o Active and zombie threads
+o All non-system processes
+o All process mappings
+o All objects in a process
+o The environment
+o The symbol table
+o Stack frames
+o File Descriptors
System Call Injection
The
libproc library allows the caller to force system calls to be
executed in the context of the running process. This can be used both
as a tool for introspection, allowing one to get information outside
its current context as well as performing modifications to a process.
These functions run in the context of the calling process. This is
often an easier way of getting non-exported information about a process
from the system. For example, the
pfiles(1) command uses this
interface to get more detailed information about a process's open file
descriptors, which it would not have access to otherwise.
INTERFACES
The shared object
libproc.so.1 provides the public interfaces defined
below. See
Intro(3) for additional information on shared object
interfaces. Functions are organized into categories that describe
their purpose. Individual functions are documented in their own manual
pages.
Creation, Grabbing, and Releasing The following routines are related to creating library handles,
grabbing cores, processes, and threads, and releasing those resources.
Lfree Lgrab Lgrab_error Pcreate Pcreate_agent Pcreate_callback Pcreate_error Pdestroy_agent Pfgrab_core Pfree Pgrab Pgrab_core Pgrab_error Pgrab_file Pgrab_ops Prelease Preopen Pxcreate Process interrogation and manipulation
The following routines obtain information about a process and allow
manipulation of the process itself.
Paddr_to_ctf Paddr_to_loadobj Paddr_to_map Paddr_to_text_map Pasfd Pclearfault Pclearsig Pcontent Pcred Pctlfd Pcwd Pcwd_free Pdelbkpt Pdelwapt Pdstop Pexecname Pfault Pfgcore Pgcore Pgetareg Pgetauxval Pgetauxvec Pgetenv Pisprocdir Pissyscall_prev Plmid Plmid_to_loadobj Plmid_to_map Plookup_by_addr Plookup_by_name Pname_to_ctf Pname_to_loadobj Pname_to_map Pobjname Pobjname_resolved Pplatform Ppltdest Ppriv Ppsinfo Pputareg Prd_agent Pread Pread_string Preset_maps Psetbkpt Psecflags Psetcred Psetfault Psetflags Psetpriv Psetrun Psetsignal Psetsysentry Psetsysexit Psetwapt Psetzoneid Psignal Pstate Pstatus Pstop Pstopstatus Psync Psysentry Psysexit Puname Pupanic Pupanic_free Punsetflags Pupdate_maps Pupdate_syms Pwait Pwrite Pxecbkpt Pxecwapt Pxlookup_by_addr Pxlookup_by_addr_resolved Pxlookup_by_name Pzonename Pzonepath Pzoneroot Thread interrogation and manipulation
The following routines obtain information about a thread and allow
manipulation of the thread itself.
Lalt_stack Lclearfault Lclearsig Lctlfd Ldstop Lgetareg Lgetfpregs Lgetregs Lgetxregs Lmain_stack Lprochandle Lpsinfo Lputareg Lsetrun Lsetfpregs Lsetregs Lsetxregs Lstack Lstate Lstatus Lstop Lsync Lwait Lxecbkpt Lxecwapt Plwp_alt_stack Plwp_freexregs Plwp_getfpregs Plwp_getname Plwp_getpsinfo Plwp_getregs Plwp_getspymaster Plwp_main_stack Plwp_getxregs Plwp_setfpregs Plwp_setregs Plwp_setxregs Plwp_stack System Call Injection
The following routines are used to inject specific system calls and
have them run in the context of a process.
pr_access pr_close pr_creat pr_door_info pr_exit pr_fcntl pr_fstat pr_fstat64 pr_fstatvfs pr_getitimer pr_getpeername pr_getpeerucred pr_getprojid pr_getrctl pr_getrlimit pr_getrlimit64 pr_getsockname pr_getsockopt pr_gettaskid pr_getzoneid pr_ioctl pr_link pr_llseek pr_lseek pr_lstat pr_lstat64 pr_memcntl pr_meminfo pr_mmap pr_munmap pr_open pr_processor_bind pr_rename pr_setitimer pr_setrctl pr_setrlimit pr_setrlimit64 pr_settaskid pr_sigaction pr_stat pr_stat64 pr_statvfs pr_unlink pr_waitid Iteration routines
These routines are used to iterate over the contents of a process.
Penv_iter Plwp_iter Plwp_iter_all Pmapping_iter Pmapping_iter_resolved Pobject_iter Pobject_iter_resolved Pstack_iter Psymbol_iter Psymbol_iter_by_addr Psymbol_iter_by_lmid Psymbol_iter_by_name Pxsymbol_iter Pfdinfo_iter Utility routines
The following routines are utilities that are useful to consumers of
the library.
Perror_printf proc_arg_grab proc_arg_psinfo proc_arg_xgrab proc_arg_xpsinfo proc_content2str proc_dmodelname proc_finistdio proc_fltname proc_fltset2str proc_flushstdio proc_get_auxv proc_fdinfo_misc proc_get_cred proc_get_fdinfo proc_get_lwpsinfo proc_get_lwpstatus proc_get_priv proc_get_psinfo proc_get_status proc_get_initstdio proc_lwp_in_set proc_lwp_range_valid proc_signame proc_sigset2str proc_str2content proc_str2flt proc_str2fltset proc_str2sig proc_str2sigset proc_str2sys proc_str2sysset proc_sysname proc_sysset2str proc_unctrl_psinfo x86 Specific Routines The following routines are specific to the x86, 32-bit and 64-bit,
versions of the
libproc library.
Pldt proc_get_ldt SPARC specific Routines
The following functions are specific to the SPARC, 32-bit and 64-bit,
versions of the
libproc library.
Plwp_getgwindows The following functions are specific to the 64-bit SPARC version of the
libproc library.
Plwp_getasrs Plwp_setasrsPROCESS STATES
Every process handle that exists in
libproc has a state. In some
cases, such as for core files, these states are static. In other
cases, such as handles that correspond to a running process or a
created process, these states are dynamic and change based on actions
taken in the library. The state can be obtained with the
Pstate(3PROC) function.
The various states are:
PS_RUN An actively running process. This may be a process
that was obtained by creating it with functions
such as
Pcreate(3PROC) or by grabbing an existing
process such as
Pgrab(3PROC).
PS_STOP An active process that is no longer executing. A
process may stop for many reasons such as an
explicit stop request (through
pstop(1) for
example) or if a tracing event is hit.
The reason a process is stopped may be obtained
through the thread's
lwpstatus_t structure read
directly from /proc or obtained through the
Lstatus(3PROC) function.
PS_LOST Control over the process has been lost. This may
happen when the process executes a new image
requiring a different set of privileges. To resume
control call
Preopen(3PROC). For more information
on losing control of a process, see
proc(5).
PS_UNDEAD A zombie process. It has terminated, but it has
not been cleaned up yet by its parent. For more on
the conditions of becoming a zombie, see
exec(2).
PS_DEAD Processes in this state are always core files. See
the earlier section
Core Files for more information
on working with core files.
PS_IDLE A process that has never been run. This is always
the case for handles that refer to files as the
files cannot be executed. Those process handles
are obtained through calling
Pgrab_file(3PROC).
Many functions relating to tracing processes, for example
Psignal(3PROC),
Psetsignal(3PROC),
Psetfault(3PROC),
Psysentry(3PROC),
and others, mention that they only act upon
Active Processes. This
specifically refers to processes whose state are in PS_RUN and PS_STOP.
Process handles in the other states have no notion of settable tracing
flags, though core files (type PS_DEAD) may have a read-only snapshot
of their tracing settings available.
TYPES
The
libproc library uses many types that come from the /proc file
system (
proc(5)) and the ELF format (
elf(3ELF)). However, it also
defines the following types:
struct ps_prochandle The
struct ps_prochandle is an opaque handle to the library and the
core element of control for a process. Consumers obtain pointers to a
handle through the use of the
Pcreate(),
Pgrab(), and related
functions. When a caller is done with a handle, then it should call
one of the
Pfree() and
Prelease() functions to relinquish the handle,
release associated resources, and potentially set the process to run
again.
struct ps_lwphandle The
struct ps_lwphandle is analogous to the
struct ps_prochandle, but
it represents the control of an individual thread, rather than a
process. Consumers obtain pointers to a handle through the
Lgrab()
function and relinquish it with the
Lfree() function.
core_content_t The
core_content_t is a value which describes the various content types
of core files. These are used in functions such as
Pcontent(3PROC) and
Pgcore(3PROC) to describe and control the types of content that get
included. Various content types may be included together through a
bitwise-inclusive-OR. The default system core contents are controlled
with the
coreadm(8) tool. The following table lists the current set of
core contents in the system, though the set may increase over time.
The string after the macro is the human readable string that
corresponds with the constant and is used by
coreadm(8),
proc_content2str(3PROC), and
proc_str2content(3PROC).
CC_CONTENT_STACK ("stack")
The contents include the process stack. Note, this only
covers the main thread's stack. The stack of other
threads is covered by CC_CONTENT_ANON.
CC_CONTENT_HEAP ("heap")
The contents include the process heap.
CC_CONTENT_SHFILE ("shfile")
The contents include shared mappings that are backed by
files (e.g. mapped through
mmap(2) with the MAP_SHARED
flag).
CC_CONTENT_SHANNON ("shannon")
The contents include shared mappings that are backed by
anonymous memory (e.g. mapped through
mmap(2) with the
MAP_SHARED and MAP_ANON flags).
CC_CONTENT_RODATA ("rodata")
The contents include private read-only file mappings,
such as shared library text.
CC_CONTENT_ANON ("anon")
The contents include private anonymous mappings. This
includes the stacks of threads which are not the main
thread.
CC_CONTENT_SHM ("shm")
The contents include system V shared memory.
CC_CONTENT_ISM ("ism")
The contents include ISM (intimate shared memory)
mappings.
CC_CONTENT_DISM ("dism")
The contents include DISM (dynamic shared memory)
mappings.
CC_CONTENT_CTF ("ctf")
The contents include
ctf(5) (Compact C Type Format)
information. Note, not all objects in the process may
have CTF information available.
CC_CONTENT_SYMTAB ("symtab")
The contents include the symbol table. Note, not all
objects in the process may have a symbol table available.
CC_CONTENT_ALL ("all")
This value indicates that all of the above content values
are present. Note that additional values may be added in
the future, in which case the value of the symbol will be
updated to include them. Comparisons with CC_CONTENT_ALL
should validate all the expected bits are set by an
expression such as (c & CC_CONTENT_ALL) ==
CC_CONTENT_ALL.
CC_CONTENT_NONE ("none")
This value indicates that there is no content present.
CC_CONTENT_DEFAULT ("default")
The content includes the following set of default values:
CC_CONTENT_STACK, CC_CONTENT_HEAP, CC_CONTENT_ISM,
CC_CONTENT_DISM, CC_CONTENT_SHM, CC_CONTENT_SHANON,
CC_CONTENT_TEXT, CC_CONTENT_DATA, CC_CONTENT_RODATA,
CC_CONTENT_ANON, CC_CONTENT_CTF, and CC_CONTENT_SYMTAB.
Note that the default may change. Comparisons with
CC_CONTENT_DEFAULT should validate that all of the
expected bits are set with an expression such as
(c & CC_CONTENT_DEFAULT) == CC_CONTENT_DEFAULT.
CC_CONTENT_INVALID
This indicates that the contents are invalid.
prfdinfo_t The
prfdinfo_t structure is used with the
Pfdinfo_iter(),
proc_fdwalk(),
proc_fdinfowalk() and
proc_get_fdinfo() functions and
describes information about a file descriptor. The structure is
defined as follows:
typedef struct prfdinfo {
int pr_fd; /* file descriptor number */
mode_t pr_mode; /* (see st_mode in
stat(2)) */
ino64_t pr_ino; /* inode number */
off64_t pr_size; /* file size */
off64_t pr_offset; /* current offset */
uid_t pr_uid; /* owner's user id */
gid_t pr_gid; /* owner's group id */
major_t pr_major; /* major number of device */
minor_t pr_minor; /* minor number of device */
major_t pr_rmajor; /* major number (if special file) */
minor_t pr_rminor; /* minor number (if special file) */
int pr_fileflags; /* (see F_GETXFL in
fcntl(2)) */
int pr_fdflags; /* (see F_GETFD in
fcntl(2)) */
short pr_locktype; /* (see F_GETLK in
fcntl(2)) */
pid_t pr_lockpid; /* process holding file lock */
int pr_locksysid; /* sysid of locking process */
pid_t pr_peerpid; /* peer process (socket, door) */
int pr_filler[25]; /* reserved for future use */
char pr_peername[PRFNSZ]; /* peer process name */
#if __STDC_VERSION__ >= 199901L
uint8_t pr_misc[]; /* self describing structures */
else
uint8_t pr_misc[1]; /* self describing structures */
#endif
} prfdinfo_t;
The structure has similar information to that found in the
stat structure that's used as part of the stat family of system calls,
defined in
stat(2). The member
pr_fd contains the number of the file
descriptor of the file. The members
pr_mode,
pr_uid,
pr_gid,
pr_ino,
and
pr_size are the same as the members
st_mode,
st_uid,
st_gid,
st_ino, and
st_size in the
stat structure.
The
pr_major and
pr_minor members contain the major and minor numbers
of the device containing the directory for this file. This is similar
to the
st_dev member of the
stat structure, except that it is broken
out into its major and minor components. The
pr_rmajor and
pr_rminor members are similar in spirit to
pr_major and
pr_minor; however, they
are equivalent to the
st_rdev member of the
stat structure and thus
have meaning for special character and block files.
The
pr_offset member contains the current seek offset of the file
descriptor. The
pr_fileflags and
pr_fdflags members contain the flags
that would have been returned by a call to
fcntl(2) with the arguments
F_GETXFL and F_GETFD respectively.
The
pr_locktype,
pr_lockpid, and
pr_locksysid contain the information
that would have been returned by a call to
fcntl(2) with an argument of
F_GETLK.
The
pr_peerpid and
pr_peername members contain the process ID and name
of any peer endpoint of a connection-oriented socket or stream fd.
This information is the same as that which would be returned by a call
to
getpeerucred(3C) The
pr_misc member contains miscellaneous additional data relating to
the file descriptor. The format of these data is described in
proc(5).
prsyminfo_t The
prsyminfo_t structure is used with the various symbol look up
functions
Pxlookup_by_name(),
Pxlookup_by_addr(), and
Pxlookup_by_addr_resolved() which describes additional information
about a symbol. The structure is defined as follows:
typedef struct prsyminfo {
const char *prs_object; /* object name */
const char *prs_name; /* symbol name */
Lmid_t prs_lmid; /* link map id */
uint_t prs_id; /* symbol id */
uint_t prs_table; /* symbol table id */
} prsyminfo_t;
The member
prs_object points to a string that contains the name of the
object file, if known, that the symbol comes from. The member
prs_name points to the name of the symbol, if known. This may be unknown due to
a stripped binary that contains no symbol table. The member
prs_lmid indicates the link map identifier that the symbol was found on. For
more information on link map identifiers refer to the
Linker and Libraries Guide and
dlopen(3C).
The members
prs_id and
prs_table can be used to determine both the
symbol table that the entry came from and which entry in the table it
corresponds to. If the value of
prs_table is PR_SYMTAB then it came
from the ELF standard symbol table. However, if it is instead
PR_DYNSYM, then that indicates that it comes from the process's dynamic
section.
proc_lwp_f The
proc_lwp_f is a function pointer type that is used with the
Plwp_iter() function. It is defined as
typedef int proc_lwp_f(
void *,
const lwpstatus_t *). The first argument is a pointer to an argument
that the user specifies, while the second has the thread's status
information and is defined in
proc(5). For additional information on
using this type, see
Plwp_iter(3PROC).
proc_lwp_all_f The
proc_lwp_all_f is a function pointer type that is used with the
Plwp_iter_all() function. It is defined as
typedef int proc_lwp_all_f(
void *,
const lwpstatus_t *,
const lwpsinfo_t *). The
first argument is a pointer to an argument that the user specifies.
The second and third arguments contain the thread's status and thread-
specific
ps(1) information respectively. Both structures are defined
in
proc(5). For additional information on using this type, see
Plwp_iter_all(3PROC).
proc_fdinfowalk_f The
proc_fdinfowalk_f is a function pointer type that is used with the
proc_fdinfowalk() function to walk the miscellaneous data items
contained within a
prfdinfo_t structure. It is defined as
typedef int proc_fdinfowalk_f(
uint_t,
const void *,
size_t,
void *). The first
argument contains the type of the miscellaneous information being
presented, the second and third provide a pointer to the associated
data and the length of that data. The final argument is a pointer to
an argument that the user specifies. For more information on using
this, see
proc_fdinfowalk(3PROC).
proc_fdwalk_f The
proc_fdwalk_f is a function pointer type that is used with the
proc_fdwalk() function. It is defined as
typedef int proc_fdwalk_f(
const prfdinfo_t *,
void *). The first argument contains
the file descriptor information. The
prfdinfo_t structure is defined
in
proc(5). The final argument is a pointer to an argument that the
user specifies. For more information on using this, see
proc_fdwalk(3PROC).
proc_walk_f The
proc_walk_f is a function pointer type that is used with the
proc_walk() function. It is defined as
typedef int proc_walk_f(
psinfo_t *,
lwpsinfo_t *,
void *). The first argument
contains the process
ps(1) information and the second argument contains
the representative thread's
ps(1) information. Both structures are
defined in
proc(5). The final argument is a pointer to an argument
that the user specifies. For more information on using this, see
proc_walk(3PROC).
proc_map_f The
proc_map_f is a function pointer type that is used with the
Pmapping_iter(),
Pmapping_iter_resolved(),
Pobject_iter(), and
Pobject_iter_resolved() functions. It is defined as
typedef int proc_map_f(
void *,
const prmap_t *,
const char *). The first argument
is a pointer to an argument that the user specifies. The second
argument is describes the mapping information and is defined in
proc(5). The final argument contains the name of the mapping or object
file in question. For additional information on using this type, see
Pmapping_iter(3PROC).
proc_env_f The
proc_env_f is a function pointer type that is used with the
Penv_iter() function. It is defined as
typedef int proc_env_f(
void *,
struct ps_prochandle *,
uintptr_t,
const char *). The first argument
is a pointer to an argument that the user specifies. The second
argument is a pointer to the
struct ps_prochandle that the callback was
passed to. The third argument is the address of the environment
variable in the process. The fourth argument is the environment
variable. Values in the environment follow the convention of the form
variable=value. For more information on environment variables see
exec(2) and
environ(7). For additional information on using this type,
see
Penv_iter(3PROC).
proc_sym_f The
proc_sym_f is a function pointer type that is used with the
Psmbol_iter(),
Psymbol_iter_by_addr(),
Psymbol_iter_by_name(), and
Psymbol_iter_by_lmid() functions. It is defined as
typedef int proc_sym_f(
void *,
const GElf_Sym *,
const char *). The first argument
is a pointer to an argument that the user supplies. The second
argument is a pointer to the ELF symbol information in a 32-bit and
64-bit neutral form. See
elf(3ELF) and
gelf(3ELF) for more information
on it. The final argument points to a character string that has the
name of the symbol. For additional information on using this type, see
Psymbol_iter(3PROC),
Psymbol_iter_by_addr(3PROC),
Psymbol_iter_by_name(3PROC), and
Psymbol_iter_by_lmid(3PROC).
proc_xsym_f The
proc_xsym_f is a function pointer type that is used with the
Pxsymbol_iter() function. It is defined as
typedef int proc_xsym_f(
void *,
const GElf_Sym *,
const char *,
const prsyminfo_t *). The first three arguments are identical to those
of
proc_sym_f. The final argument contains additional information
about the symbol itself. The members of the
prsyminfo_t are defined
earlier in this section. For additional information on using this
type, see
Pxsymbol_iter(3PROC).
proc_stack_f The
proc_stack_f is a function pointer type that is used with the
Pstack_iter() function. It is defined as
typedef int proc_stack_f(
void *,
prgregset_t,
uint_t,
const long *). The first
argument is a pointer to an argument that the user specifies. The
second argument's contents are platform specific. The registers that
contain stack information, usually the stack pointer and frame pointer,
will be filled in to point to an entry. The
prgregset_t is defined in
proc(5).
The third argument contains the number of arguments to the current
stack frame and the fourth argument contains an array of addresses that
correspond to the arguments to that stack function. The value of the
third argument dictates the number of entries in the fourth argument.
For additional information on using this type, see
Pstack_iter(3PROC).
proc_fdinfo_f The
proc_fdinfo_f is a function pointer type that is used with the
Pfdinfo_iter() function. It is defined as
typedef int proc_fdinfo_f(
void *,
prfdinfo_t *). The first argument is a pointer
to an argument that the user specifies. The second argument contains
information about an open file descriptor. The members of the
prfdinfo_t are defined earlier in this section. For additional
information on using this type, see
Pfdinfo_iter(3PROC).
PROGRAMMING NOTES
When working with live processes, whether from the
Pgrab(3PROC) or
Pcreate(3PROC) family of functions, there are some additional
considerations. Importantly, if a process calls any of the
exec(2) suite of functions, much of the state information that is obtained,
particularly that about mappings in the process will be invalid.
Callers must ensure that they call
Preset_maps(3PROC) when they hold a
process handle across an exec. In addition, users of the library
should familiarize themselves with the
PROGRAMMING NOTES section of the
proc(5) manual page, which discusses issues of privileges and security.
DEBUGGING
The library provides a means for obtaining additional debugging
information. The output itself is not part of the
libproc library's
stable interface. Setting the environment variable LIBPROC_DEBUG to
some value will print information to standard error. For example,
LIBPROC_DEBUG=
please.
LOCKING
Most functions operate on a handle to a process in the form of a
struct ps_prochandle *. Unless otherwise indicated, the library does not
provide any synchronization for different routines that are operating
on the
same libproc library handle. It is up to the caller to ensure
that only a single thread is using a handle at any given time.
Multiple threads may call
libproc library routines at the same time as
long as each thread is using a different handle.
Each individual function notes its
MT-Level section. The MT-Level of a
routine that matches the above description will refer to this manual
page. If it does not, then it refers to the standard attributes in
attributes(7).
INTERFACE STABILITY
Uncommitted While the library is considered an uncommitted interface, and is still
evolving, changes that break compatibility have been uncommon and this
trend is expected to continue. It is documented to allow consumers,
whether part of illumos or outside of it, to understand the library and
make use of it with the understanding that changes may occur which
break both source and binary compatibility.
SEE ALSO
gcore(1),
mdb(1),
proc(1),
ps(1),
exec(2),
fcntl(2),
stat(2),
Intro(3),
dlopen(3C),
elf(3ELF),
ctf(5),
proc(5),
attributes(7),
environ(7),
privileges(7),
coreadm(8) Linkers and Libraries Guide.
Lfree(3PROC),
Lgrab(3PROC),
Lgrab_error(3PROC),
Pcreate(3PROC),
Pcreate_agent(3PROC),
Pcreate_callback(3PROC),
Pcreate_error(3PROC),
Pdestroy_agent(3PROC),
Pfgrab_core(3PROC),
Pfree(3PROC),
Pgrab(3PROC),
Pgrab_core(3PROC),
Pgrab_error(3PROC),
Pgrab_file(3PROC),
Pgrab_ops(3PROC),
Prelease(3PROC),
Preopen(3PROC),
Pxcreate(3PROC) Paddr_to_ctf(3PROC),
Paddr_to_loadobj(3PROC),
Paddr_to_map(3PROC),
Paddr_to_text_map(3PROC),
Pasfd(3PROC),
Pclearfault(3PROC),
Pclearsig(3PROC),
Pcontent(3PROC),
Pcred(3PROC),
Pctlfd(3PROC),
Pcwd(3PROC),
Pcwd_free(3PROC),
Pdelbkpt(3PROC),
Pdelwapt(3PROC),
Pdstop(3PROC),
Pexecname(3PROC),
Pfault(3PROC),
Pfgcore(3PROC),
Pgcore(3PROC),
Pgetareg(3PROC),
Pgetauxval(3PROC),
Pgetauxvec(3PROC),
Pgetenv(3PROC),
Pisprocdir(3PROC),
Pissyscall_prev(3PROC),
Plmid(3PROC),
Plmid_to_loadobj(3PROC),
Plmid_to_map(3PROC),
Plookup_by_addr(3PROC),
Plookup_by_name(3PROC),
Plwp_alt_stack(3PROC),
Plwp_getfpregs(3PROC),
Plwp_getpsinfo(3PROC),
Plwp_getregs(3PROC),
Plwp_getspymaster(3PROC),
Plwp_main_stack(3PROC),
Plwp_setfpregs(3PROC),
Plwp_setregs(3PROC),
Plwp_stack(3PROC),
Pname_to_ctf(3PROC),
Pname_to_loadobj(3PROC),
Pname_to_map(3PROC),
Pobjname(3PROC),
Pobjname_resolved(3PROC),
Pplatform(3PROC),
Ppltdest(3PROC),
Ppriv(3PROC),
Ppsinfo(3PROC),
Pputareg(3PROC),
Prd_agent(3PROC),
Pread(3PROC),
Pread_string(3PROC),
Preset_maps(3PROC),
Psecflags(3PROC),
Psetbkpt(3PROC),
Psetcred(3PROC),
Psetfault(3PROC),
Psetflags(3PROC),
Psetpriv(3PROC),
Psetrun(3PROC),
Psetsignal(3PROC),
Psetsysentry(3PROC),
Psetsysexit(3PROC),
Psetwapt(3PROC),
Psetzoneid(3PROC),
Psignal(3PROC),
Pstate(3PROC),
Pstatus(3PROC),
Pstop(3PROC),
Pstopstatus(3PROC),
Psync(3PROC),
Psysentry(3PROC),
Psysexit(3PROC),
Puname(3PROC),
Pupanic(3PROC),
Pupanic_free(3PROC),
Punsetflags(3PROC),
Pupdate_maps(3PROC),
Pupdate_syms(3PROC),
Pwait(3PROC),
Pwrite(3PROC),
Pxecbkpt(3PROC),
Pxecwapt(3PROC),
Pxlookup_by_addr(3PROC),
Pxlookup_by_addr_resolved(3PROC),
Pxlookup_by_name(3PROC),
Pzonename(3PROC),
Pzonepath(3PROC),
Pzoneroot(3PROC) Lalt_stack(3PROC),
Lclearfault(3PROC),
Lclearsig(3PROC),
Lctlfd(3PROC),
Ldstop(3PROC),
Lgetareg(3PROC),
Lmain_stack(3PROC),
Lprochandle(3PROC),
Lpsinfo(3PROC),
Lputareg(3PROC),
Lsetrun(3PROC),
Lstack(3PROC),
Lstate(3PROC),
Lstatus(3PROC),
Lstop(3PROC),
Lsync(3PROC),
Lwait(3PROC),
Lxecbkpt(3PROC),
Lxecwapt(3PROC) pr_access(3PROC),
pr_close(3PROC),
pr_creat(3PROC),
pr_door_info(3PROC),
pr_exit(3PROC),
pr_fcntl(3PROC),
pr_fstat(3PROC),
pr_fstat64(3PROC),
pr_fstatvfs(3PROC),
pr_getitimer(3PROC),
pr_getpeername(3PROC),
pr_getpeerucred(3PROC),
pr_getprojid(3PROC),
pr_getrctl(3PROC),
pr_getrlimit(3PROC),
pr_getrlimit64(3PROC),
pr_getsockname(3PROC),
pr_getsockopt(3PROC),
pr_gettaskid(3PROC),
pr_getzoneid(3PROC),
pr_ioctl(3PROC),
pr_link(3PROC),
pr_llseek(3PROC),
pr_lseek(3PROC),
pr_lstat(3PROC),
pr_lstat64(3PROC),
pr_memcntl(3PROC),
pr_meminfo(3PROC),
pr_mmap(3PROC),
pr_munmap(3PROC),
pr_open(3PROC),
pr_processor_bind(3PROC),
pr_rename(3PROC),
pr_setitimer(3PROC),
pr_setrctl(3PROC),
pr_setrlimit(3PROC),
pr_setrlimit64(3PROC),
pr_settaskid(3PROC),
pr_sigaction(3PROC),
pr_stat(3PROC),
pr_stat64(3PROC),
pr_statvfs(3PROC),
pr_unlink(3PROC),
pr_waitid(3PROC),
Penv_iter(3PROC),
Plwp_iter(3PROC),
Plwp_iter_all(3PROC),
Pmapping_iter(3PROC),
Pmapping_iter_resolved(3PROC),
Pobject_iter(3PROC),
Pobject_iter_resolved(3PROC),
Pstack_iter(3PROC),
Psymbol_iter(3PROC),
Psymbol_iter_by_addr(3PROC),
Psymbol_iter_by_lmid(3PROC),
Psymbol_iter_by_name(3PROC),
Pxsymbol_iter(3PROC),
Pfdinfo_iter(3PROC) Perror_printf(3PROC),
proc_arg_grab(3PROC),
proc_arg_psinfo(3PROC),
proc_arg_xgrab(3PROC),
proc_arg_xpsinfo(3PROC),
proc_content2str(3PROC),
proc_dmodelname(3PROC),
proc_finistdio(3PROC),
proc_fltname(3PROC),
proc_fltset2str(3PROC),
proc_flushstdio(3PROC),
proc_get_auxv(3PROC),
proc_get_cred(3PROC),
proc_get_fdinfo(3PROC),
proc_get_lwpsinfo(3PROC),
proc_get_lwpstatus(3PROC),
proc_get_priv(3PROC),
proc_get_psinfo(3PROC),
proc_get_status(3PROC),
proc_initstdio(3PROC),
proc_lwp_in_set(3PROC),
proc_lwp_range_valid(3PROC),
proc_signame(3PROC),
proc_sigset2str(3PROC),
proc_str2content(3PROC),
proc_str2flt(3PROC),
proc_str2fltset(3PROC),
proc_str2sig(3PROC),
proc_str2sigset(3PROC),
proc_str2sys(3PROC),
proc_str2sysset(3PROC),
proc_sysname(3PROC),
proc_sysset2str(3PROC),
proc_unctrl_psinfo(3PROC),
proc_fdinfowalk(3PROC),
proc_fdwalk(3PROC),
proc_walk(3PROC) Pldt(3PROC),
proc_get_ldt(3PROC),
Plwp_getgwindows(3PROC),
Plwp_getxregs(3PROC),
Plwp_setxregs(3PROC),
Plwp_getasrs(3PROC),
Plwp_setasrs(3PROC)illumos May 10, 2024 illumos