xref: /illumos-gate/usr/src/man/man3lib/libproc.3lib (revision 6bc3974f378feda6e0d0b8f2a7ca95eceb9587db)
143051d27SRobert Mustacchi.\"
243051d27SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
343051d27SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
443051d27SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
543051d27SRobert Mustacchi.\" 1.0 of the CDDL.
643051d27SRobert Mustacchi.\"
743051d27SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
843051d27SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
943051d27SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
1043051d27SRobert Mustacchi.\"
1143051d27SRobert Mustacchi.\"
12ab618543SJohn Levon.\" Copyright 2018 Joyent, Inc.
13542a7b7fSCarlos Neira.\" Copyright (c) 2019 Carlos Neira <cneirabustos@gmail.com>
14a02120c4SAndy Fiddaman.\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
1543051d27SRobert Mustacchi.\"
16*6bc3974fSRobert Mustacchi.Dd May 22, 2020
1743051d27SRobert Mustacchi.Dt LIBPROC 3LIB
1843051d27SRobert Mustacchi.Os
1943051d27SRobert Mustacchi.Sh NAME
2043051d27SRobert Mustacchi.Nm libproc
2143051d27SRobert Mustacchi.Nd process control library
2243051d27SRobert Mustacchi.Sh SYNOPSIS
2343051d27SRobert Mustacchi.Lb libproc
2443051d27SRobert Mustacchi.In libproc.h
2543051d27SRobert Mustacchi.Sh DESCRIPTION
2643051d27SRobert MustacchiThe
2743051d27SRobert Mustacchi.Nm
2843051d27SRobert Mustacchilibrary provides consumers a general series of interfaces to inspect
2972d3dbb9SYuri Pankovand control both live processes and core files.
3072d3dbb9SYuri PankovIt is intended for introspection tools such as debuggers by providing a
3172d3dbb9SYuri Pankovhigh-level interface to the /proc file system
3243051d27SRobert Mustacchi.Pf ( Xr proc 4 ) .
3343051d27SRobert Mustacchi.Pp
3443051d27SRobert MustacchiThe
3543051d27SRobert Mustacchi.Nm
3643051d27SRobert Mustacchilibrary provides interfaces that focus on:
3743051d27SRobert Mustacchi.Bl -bullet -offset indent
3843051d27SRobert Mustacchi.It
3943051d27SRobert MustacchiCreating and attaching to live process, core files, and arbitrary ELF
4043051d27SRobert Mustacchiobjects.
4143051d27SRobert Mustacchi.It
4243051d27SRobert MustacchiInterrogating the state of a process or core file.
4343051d27SRobert Mustacchi.It
4443051d27SRobert MustacchiManipulating the current state of a process or thread.
4543051d27SRobert Mustacchi.It
4643051d27SRobert MustacchiInterrogating the state of threads of a process or core file.
4743051d27SRobert Mustacchi.It
4843051d27SRobert MustacchiRunning system calls in the context of another process.
4943051d27SRobert Mustacchi.It
5043051d27SRobert MustacchiVarious utilities for iterating process and core file file descriptors,
5143051d27SRobert Mustacchimappings, symbols, and more.
5243051d27SRobert Mustacchi.It
5343051d27SRobert MustacchiVarious utilities to support debugging tools.
5443051d27SRobert Mustacchi.El
5543051d27SRobert Mustacchi.Ss Live Processes
5643051d27SRobert MustacchiThe
5743051d27SRobert Mustacchi.Nm
5843051d27SRobert Mustacchilibrary can be used to manipulate running processes and to create new
5972d3dbb9SYuri Pankovones.
6072d3dbb9SYuri PankovTo manipulate an existing process first
6143051d27SRobert Mustacchi.Em grab
6243051d27SRobert Mustacchiit with the
637dfe7b8bSJason King.Fn Pgrab
6472d3dbb9SYuri Pankovfunction.
6572d3dbb9SYuri PankovA process is generally stopped as a side effect of grabbing it.
6672d3dbb9SYuri PankovCallers must exercise caution, as if they do not use the library correctly, or
6772d3dbb9SYuri Pankovthey terminate unexpectedly, a process may remain stopped.
6843051d27SRobert Mustacchi.Pp
6972d3dbb9SYuri PankovUnprivileged users may only grab their own processes.
7072d3dbb9SYuri PankovUsers with the privilege
717dfe7b8bSJason King.Brq Sy PRIV_PROC_OWNER
7243051d27SRobert Mustacchimay manipulate processes that they do not own; however, additional
7343051d27SRobert Mustacchirestrictions as described in
7443051d27SRobert Mustacchi.Xr privileges 5
7543051d27SRobert Mustacchiapply.
7643051d27SRobert Mustacchi.Pp
7743051d27SRobert MustacchiIn addition, the
7843051d27SRobert Mustacchi.Fn Pcreate
7943051d27SRobert Mustacchiand
8043051d27SRobert Mustacchi.Fn Pxcreate
8143051d27SRobert Mustacchifunctions may be used to create processes which are always controlled by
8243051d27SRobert Mustacchithe library.
8343051d27SRobert Mustacchi.Ss Core Files
8443051d27SRobert MustacchiThe
8543051d27SRobert Mustacchi.Nm
8643051d27SRobert Mustacchilibrary has the ability to open and interpret core files produced by
8772d3dbb9SYuri Pankovprocesses on the system.
8872d3dbb9SYuri PankovProcess core dump generation is controlled by the
8943051d27SRobert Mustacchi.Xr coreadm 1M
9072d3dbb9SYuri Pankovcommand.
9172d3dbb9SYuri PankovIn addition, the library has the ability to understand and interpret core dumps
9272d3dbb9SYuri Pankovgenerated by Linux kernel and can provide a subset of its functionality on such
9372d3dbb9SYuri Pankovcore files, provided the original binary is also present.
9443051d27SRobert Mustacchi.Pp
9543051d27SRobert MustacchiNot all functions in the
9643051d27SRobert Mustacchi.Nm
9772d3dbb9SYuri Pankovlibrary are valid for core files.
9872d3dbb9SYuri PankovIn general, none of the commands which manipulate the current state of a process
9972d3dbb9SYuri Pankovor thread or that try to force system calls on a victim process will work.
10072d3dbb9SYuri PankovFurthermore several of the information and iteration interfaces are limited
10172d3dbb9SYuri Pankovbased on the data that is available in the core file.
10272d3dbb9SYuri PankovFor example, if the core file is of a process that omits the frame pointer, the
10372d3dbb9SYuri Pankovability to iterate the stack will be limited.
10443051d27SRobert Mustacchi.Pp
10543051d27SRobert MustacchiUse the
10643051d27SRobert Mustacchi.Fn Pgrab_core
10743051d27SRobert Mustacchior
10843051d27SRobert Mustacchi.Fn Pfgrab_core
10972d3dbb9SYuri Pankovfunction to open a core file.
11072d3dbb9SYuri PankovUse the
11143051d27SRobert Mustacchi.Fn Pgrab_file
11243051d27SRobert Mustacchifunction to open an ELF object file.
11343051d27SRobert MustacchiThis is useful for obtaining information stored in ELF headers and
11443051d27SRobert Mustacchisections.
11543051d27SRobert Mustacchi.Ss Debug Information
11643051d27SRobert MustacchiMany of the operations in the library rely on debug information being
11772d3dbb9SYuri Pankovpresent in a process and its associated libraries.
11872d3dbb9SYuri PankovThe library leverages symbol table information, CTF data
1199f17ecf0SPeter Tribble.Pq Xr ctf 4
12043051d27SRobert Mustacchisections, and frame unwinding information based on the use of an ABI
1217dfe7b8bSJason Kingdefined frame pointer, e\&.g\&.
12243051d27SRobert Mustacchi.Sy %ebp
12343051d27SRobert Mustacchiand
12443051d27SRobert Mustacchi.Sy %rbp
12543051d27SRobert Mustacchion x86 systems.
12643051d27SRobert Mustacchi.Pp
12743051d27SRobert MustacchiSome software providers strip programs of this information or build
12843051d27SRobert Mustacchitheir executables such that the information will not be present in a
12972d3dbb9SYuri Pankovcore dump.
13072d3dbb9SYuri PankovTo deal with this fact, the library is able to consume information that is not
13172d3dbb9SYuri Pankovpresent in the core file or the running process.
13272d3dbb9SYuri PankovIt can both consume it from the underlying executable and it also supports
13372d3dbb9SYuri Pankovfinding it from related ELF objects that are linked to it via the
13443051d27SRobert Mustacchi.Sy .gnu_debuglink
13543051d27SRobert Mustacchiand the
13643051d27SRobert Mustacchi.Sy .note.gnu.build-id
13743051d27SRobert MustacchiELF sections.
13843051d27SRobert Mustacchi.Ss Iteration Interfaces
13943051d27SRobert MustacchiThe
14043051d27SRobert Mustacchi.Nm
14143051d27SRobert Mustacchilibrary provides the ability to iterate over the following aspects of a
14243051d27SRobert Mustacchiprocess or core file:
14343051d27SRobert Mustacchi.Bl -bullet -offset indent
14443051d27SRobert Mustacchi.It
14543051d27SRobert MustacchiActive threads
14643051d27SRobert Mustacchi.It
14743051d27SRobert MustacchiActive and zombie threads
14843051d27SRobert Mustacchi.It
14943051d27SRobert MustacchiAll non-system processes
15043051d27SRobert Mustacchi.It
15143051d27SRobert MustacchiAll process mappings
15243051d27SRobert Mustacchi.It
15343051d27SRobert MustacchiAll objects in a process
15443051d27SRobert Mustacchi.It
15543051d27SRobert MustacchiThe environment
15643051d27SRobert Mustacchi.It
15743051d27SRobert MustacchiThe symbol table
15843051d27SRobert Mustacchi.It
15943051d27SRobert MustacchiStack frames
16043051d27SRobert Mustacchi.It
16143051d27SRobert MustacchiFile Descriptors
16243051d27SRobert Mustacchi.El
16343051d27SRobert Mustacchi.Ss System Call Injection
16443051d27SRobert MustacchiThe
16543051d27SRobert Mustacchi.Nm
16643051d27SRobert Mustacchilibrary allows the caller to force system calls to be executed in the
16772d3dbb9SYuri Pankovcontext of the running process.
16872d3dbb9SYuri PankovThis can be used both as a tool for introspection, allowing one to get
16972d3dbb9SYuri Pankovinformation outside its current context as well as performing modifications to a
17072d3dbb9SYuri Pankovprocess.
17143051d27SRobert Mustacchi.Pp
17272d3dbb9SYuri PankovThese functions run in the context of the calling process.
17372d3dbb9SYuri PankovThis is often an easier way of getting non-exported information about a
17472d3dbb9SYuri Pankovprocess from the system.
17572d3dbb9SYuri PankovFor example, the
17643051d27SRobert Mustacchi.Xr pfiles 1
17743051d27SRobert Mustacchicommand uses this interface to get more detailed information about a
17843051d27SRobert Mustacchiprocess's open file descriptors, which it would not have access to
17943051d27SRobert Mustacchiotherwise.
18043051d27SRobert Mustacchi.Sh INTERFACES
18143051d27SRobert MustacchiThe shared object
18243051d27SRobert Mustacchi.Sy libproc.so.1
18372d3dbb9SYuri Pankovprovides the public interfaces defined below.
18472d3dbb9SYuri PankovSee
18543051d27SRobert Mustacchi.Xr Intro 3
18672d3dbb9SYuri Pankovfor additional information on shared object interfaces.
18772d3dbb9SYuri PankovFunctions are organized into categories that describe their purpose.
18872d3dbb9SYuri PankovIndividual functions are documented in their own manual pages.
18943051d27SRobert Mustacchi.Ss Creation, Grabbing, and Releasing
19043051d27SRobert MustacchiThe following routines are related to creating library handles,
19143051d27SRobert Mustacchigrabbing cores, processes, and threads, and releasing those resources.
19243051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
19343051d27SRobert Mustacchi.It Sy Lfree Ta Sy Lgrab
19443051d27SRobert Mustacchi.It Sy Lgrab_error Ta Sy Pcreate
19543051d27SRobert Mustacchi.It Sy Pcreate_agent Ta Sy Pcreate_callback
19643051d27SRobert Mustacchi.It Sy Pcreate_error Ta Sy Pdestroy_agent
19743051d27SRobert Mustacchi.It Sy Pfgrab_core Ta Sy Pfree
19843051d27SRobert Mustacchi.It Sy Pgrab Ta Sy Pgrab_core
19943051d27SRobert Mustacchi.It Sy Pgrab_error Ta Sy Pgrab_file
20043051d27SRobert Mustacchi.It Sy Pgrab_ops Ta Sy Prelease
20143051d27SRobert Mustacchi.It Sy Preopen Ta Sy Pxcreate
20243051d27SRobert Mustacchi.El
20343051d27SRobert Mustacchi.Ss Process interrogation and manipulation
20443051d27SRobert MustacchiThe following routines obtain information about a process and allow
20543051d27SRobert Mustacchimanipulation of the process itself.
20643051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
20743051d27SRobert Mustacchi.It Sy Paddr_to_ctf Ta Sy Paddr_to_loadobj
20843051d27SRobert Mustacchi.It Sy Paddr_to_map Ta Sy Paddr_to_text_map
20943051d27SRobert Mustacchi.It Sy Pasfd Ta Sy Pclearfault
21043051d27SRobert Mustacchi.It Sy Pclearsig Ta Sy Pcontent
21143051d27SRobert Mustacchi.It Sy Pcred Ta Sy Pctlfd
21243051d27SRobert Mustacchi.It Sy Pdelbkpt Ta Sy Pdelwapt
21343051d27SRobert Mustacchi.It Sy Pdstop Ta Sy Pexecname
21443051d27SRobert Mustacchi.It Sy Pfault Ta Sy Pfgcore
21543051d27SRobert Mustacchi.It Sy Pgcore Ta Sy Pgetareg
21643051d27SRobert Mustacchi.It Sy Pgetauxval Ta Sy Pgetauxvec
21743051d27SRobert Mustacchi.It Sy Pgetenv Ta Sy Pisprocdir
21843051d27SRobert Mustacchi.It Sy Pissyscall_prev Ta Sy Plmid
21943051d27SRobert Mustacchi.It Sy Plmid_to_loadobj Ta Sy Plmid_to_map
22043051d27SRobert Mustacchi.It Sy Plookup_by_addr Ta Sy Plookup_by_name
22143051d27SRobert Mustacchi.It Sy Plwp_alt_stack Ta Sy Plwp_getfpregs
222ab618543SJohn Levon.It Sy Plwp_getname Ta Sy Plwp_getpsinfo
223ab618543SJohn Levon.It Sy Plwp_getregs Ta Sy Plwp_getspymaster
224ab618543SJohn Levon.It Sy Plwp_main_stack Ta Sy Plwp_setfpregs
225ab618543SJohn Levon.It Sy Plwp_setregs Ta Sy Plwp_stack
226ab618543SJohn Levon.It Sy Pname_to_ctf Ta Sy Pname_to_loadobj
227ab618543SJohn Levon.It Sy Pname_to_map Ta Sy Pobjname
228ab618543SJohn Levon.It Sy Pobjname_resolved Ta Sy Pplatform
229ab618543SJohn Levon.It Sy Ppltdest Ta Sy Ppriv
230ab618543SJohn Levon.It Sy Ppsinfo Ta Sy Pputareg
231ab618543SJohn Levon.It Sy Prd_agent Ta Sy Pread
232ab618543SJohn Levon.It Sy Pread_string Ta Sy Preset_maps
233ab618543SJohn Levon.It Sy Psetbkpt Ta Sy Psecflags
234ab618543SJohn Levon.It Sy Psetcred Ta Sy Psetfault
235ab618543SJohn Levon.It Sy Psetflags Ta Sy Psetpriv
236ab618543SJohn Levon.It Sy Psetrun Ta Sy Psetsignal
237ab618543SJohn Levon.It Sy Psetsysentry Ta Sy Psetsysexit
238ab618543SJohn Levon.It Sy Psetwapt Ta Sy Psetzoneid
239ab618543SJohn Levon.It Sy Psignal Ta Sy Pstate
240ab618543SJohn Levon.It Sy Pstatus Ta Sy Pstop
241ab618543SJohn Levon.It Sy Pstopstatus Ta Sy Psync
242ab618543SJohn Levon.It Sy Psysentry Ta Sy Psysexit
243ab618543SJohn Levon.It Sy Puname Ta Sy Punsetflags
244ab618543SJohn Levon.It Sy Pupdate_maps Ta Sy Pupdate_syms
245ab618543SJohn Levon.It Sy Pwait Ta Sy Pwrite
246ab618543SJohn Levon.It Sy Pxecbkpt Ta Sy Pxecwapt
247ab618543SJohn Levon.It Sy Pxlookup_by_addr Ta Sy Pxlookup_by_addr_resolved
248ab618543SJohn Levon.It Sy Pxlookup_by_name Ta Sy Pzonename
249ab618543SJohn Levon.It Sy Pzonepath Ta Sy Pzoneroot Ta
25043051d27SRobert Mustacchi.El
25143051d27SRobert Mustacchi.Ss Thread interrogation and manipulation
25243051d27SRobert MustacchiThe following routines obtain information about a thread and allow
25343051d27SRobert Mustacchimanipulation of the thread itself.
25443051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
25543051d27SRobert Mustacchi.It Sy Lalt_stack Ta Sy Lclearfault
25643051d27SRobert Mustacchi.It Sy Lclearsig Ta Sy Lctlfd
25743051d27SRobert Mustacchi.It Sy Ldstop Ta Sy Lgetareg
25843051d27SRobert Mustacchi.It Sy Lmain_stack Ta Sy Lprochandle
25943051d27SRobert Mustacchi.It Sy Lpsinfo Ta Sy Lputareg
26043051d27SRobert Mustacchi.It Sy Lsetrun Ta Sy Lstack
26143051d27SRobert Mustacchi.It Sy Lstate Ta Sy Lstatus
26243051d27SRobert Mustacchi.It Sy Lstop Ta Sy Lsync
26343051d27SRobert Mustacchi.It Sy Lwait Ta Sy Lxecbkpt
26443051d27SRobert Mustacchi.It Sy Lxecwapt Ta ""
26543051d27SRobert Mustacchi.El
26643051d27SRobert Mustacchi.Ss System Call Injection
26743051d27SRobert MustacchiThe following routines are used to inject specific system calls and have
26843051d27SRobert Mustacchithem run in the context of a process.
26943051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
27043051d27SRobert Mustacchi.It Sy pr_access Ta Sy pr_close
27143051d27SRobert Mustacchi.It Sy pr_creat Ta Sy pr_door_info
27243051d27SRobert Mustacchi.It Sy pr_exit Ta Sy pr_fcntl
27343051d27SRobert Mustacchi.It Sy pr_fstat Ta Sy pr_fstat64
27443051d27SRobert Mustacchi.It Sy pr_fstatvfs Ta Sy pr_getitimer
27543051d27SRobert Mustacchi.It Sy pr_getpeername Ta Sy pr_getpeerucred
27643051d27SRobert Mustacchi.It Sy pr_getprojid Ta Sy pr_getrctl
27743051d27SRobert Mustacchi.It Sy pr_getrlimit Ta Sy pr_getrlimit64
27843051d27SRobert Mustacchi.It Sy pr_getsockname Ta Sy pr_getsockopt
27943051d27SRobert Mustacchi.It Sy pr_gettaskid Ta Sy pr_getzoneid
28043051d27SRobert Mustacchi.It Sy pr_ioctl Ta Sy pr_link
28143051d27SRobert Mustacchi.It Sy pr_llseek Ta Sy pr_lseek
28243051d27SRobert Mustacchi.It Sy pr_lstat Ta Sy pr_lstat64
28343051d27SRobert Mustacchi.It Sy pr_memcntl Ta Sy pr_meminfo
28443051d27SRobert Mustacchi.It Sy pr_mmap Ta Sy pr_munmap
28543051d27SRobert Mustacchi.It Sy pr_open Ta Sy pr_processor_bind
28643051d27SRobert Mustacchi.It Sy pr_rename Ta Sy pr_setitimer
28743051d27SRobert Mustacchi.It Sy pr_setrctl Ta Sy pr_setrlimit
28843051d27SRobert Mustacchi.It Sy pr_setrlimit64 Ta Sy pr_settaskid
28943051d27SRobert Mustacchi.It Sy pr_sigaction Ta Sy pr_stat
29043051d27SRobert Mustacchi.It Sy pr_stat64 Ta Sy pr_statvfs
29143051d27SRobert Mustacchi.It Sy pr_unlink Ta Sy pr_waitid
29243051d27SRobert Mustacchi.El
29343051d27SRobert Mustacchi.Ss Iteration routines
29443051d27SRobert MustacchiThese routines are used to iterate over the contents of a process.
29543051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
29643051d27SRobert Mustacchi.It Sy Penv_iter Ta Sy Plwp_iter
29743051d27SRobert Mustacchi.It Sy Plwp_iter_all Ta Sy Pmapping_iter
29843051d27SRobert Mustacchi.It Sy Pmapping_iter_resolved Ta Sy Pobject_iter
29943051d27SRobert Mustacchi.It Sy Pobject_iter_resolved Ta Sy Pstack_iter
30043051d27SRobert Mustacchi.It Sy Psymbol_iter Ta Sy Psymbol_iter_by_addr
30143051d27SRobert Mustacchi.It Sy Psymbol_iter_by_lmid Ta Sy Psymbol_iter_by_name
30243051d27SRobert Mustacchi.It Sy Pxsymbol_iter Ta Sy Pfdinfo_iter
30343051d27SRobert Mustacchi.El
30443051d27SRobert Mustacchi.Ss Utility routines
30543051d27SRobert MustacchiThe following routines are utilities that are useful to consumers of the
30643051d27SRobert Mustacchilibrary.
30743051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
30843051d27SRobert Mustacchi.It Sy Perror_printf Ta Sy proc_arg_grab
30943051d27SRobert Mustacchi.It Sy proc_arg_psinfo Ta Sy proc_arg_xgrab
31043051d27SRobert Mustacchi.It Sy proc_arg_xpsinfo Ta Sy proc_content2str
311542a7b7fSCarlos Neira.It Sy proc_dmodelname Ta Sy proc_finistdio
312542a7b7fSCarlos Neira.It Sy proc_fltname Ta Sy proc_fltset2str
313*6bc3974fSRobert Mustacchi.It Sy proc_flushstdio Ta Sy proc_get_auxv
314a02120c4SAndy Fiddaman.It Sy proc_fdinfo_misc Ta Sy proc_get_cred
315a02120c4SAndy Fiddaman.It Sy proc_get_fdinfo Ta Sy proc_get_priv
316542a7b7fSCarlos Neira.It Sy proc_get_psinfo Ta Sy proc_get_status
317542a7b7fSCarlos Neira.It Sy proc_get_initstdio Ta Sy proc_lwp_in_set
318542a7b7fSCarlos Neira.It Sy proc_lwp_range_valid Ta Sy proc_signame
319542a7b7fSCarlos Neira.It Sy proc_sigset2str Ta Sy proc_str2content
320542a7b7fSCarlos Neira.It Sy proc_str2flt Ta Sy proc_str2fltset
321542a7b7fSCarlos Neira.It Sy proc_str2sig Ta Sy proc_str2sigset
322542a7b7fSCarlos Neira.It Sy proc_str2sys Ta Sy proc_str2sysset
323542a7b7fSCarlos Neira.It Sy proc_sysname Ta Sy proc_sysset2str
324542a7b7fSCarlos Neira.It Sy proc_unctrl_psinfo Ta ""
32543051d27SRobert Mustacchi.El
32643051d27SRobert Mustacchi.Ss x86 Specific Routines
32743051d27SRobert MustacchiThe following routines are specific to the x86, 32-bit and 64-bit,
32843051d27SRobert Mustacchiversions of the
32943051d27SRobert Mustacchi.Nm
33043051d27SRobert Mustacchilibrary.
33143051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
33243051d27SRobert Mustacchi.It Sy Pldt Ta Sy proc_get_ldt
33343051d27SRobert Mustacchi.El
33443051d27SRobert Mustacchi.Ss SPARC specific Routines
33543051d27SRobert MustacchiThe following functions are specific to the SPARC, 32-bit and 64-bit,
33643051d27SRobert Mustacchiversions of the
33743051d27SRobert Mustacchi.Nm
33843051d27SRobert Mustacchilibrary.
33943051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
34043051d27SRobert Mustacchi.It Sy Plwp_getgwindows Ta Sy Plwp_getxregs
34143051d27SRobert Mustacchi.It Sy Plwp_setxregs Ta Sy ""
34243051d27SRobert Mustacchi.El
34343051d27SRobert Mustacchi.Pp
34443051d27SRobert MustacchiThe following functions are specific to the 64-bit SPARC version of the
34543051d27SRobert Mustacchi.Nm
34643051d27SRobert Mustacchilibrary.
34743051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr"
34843051d27SRobert Mustacchi.It Sy Plwp_getasrs Ta Sy Plwp_setasrs
34943051d27SRobert Mustacchi.El
35043051d27SRobert Mustacchi.Sh PROCESS STATES
35143051d27SRobert MustacchiEvery process handle that exists in
35243051d27SRobert Mustacchi.Nm
35372d3dbb9SYuri Pankovhas a state.
35472d3dbb9SYuri PankovIn some cases, such as for core files, these states are static.
35572d3dbb9SYuri PankovIn other cases, such as handles that correspond to a running process or a
35672d3dbb9SYuri Pankovcreated process, these states are dynamic and change based on actions taken in
35772d3dbb9SYuri Pankovthe library.
35872d3dbb9SYuri PankovThe state can be obtained with the
35943051d27SRobert Mustacchi.Xr Pstate 3PROC
36043051d27SRobert Mustacchifunction.
36143051d27SRobert Mustacchi.Pp
36243051d27SRobert MustacchiThe various states are:
36343051d27SRobert Mustacchi.Bl -tag -width Dv -offset indent
36443051d27SRobert Mustacchi.It Dv PS_RUN
36572d3dbb9SYuri PankovAn actively running process.
36672d3dbb9SYuri PankovThis may be a process that was obtained by creating it with functions such as
36743051d27SRobert Mustacchi.Xr Pcreate 3PROC
36843051d27SRobert Mustacchior by grabbing an existing process such as
36943051d27SRobert Mustacchi.Xr Pgrab 3PROC .
37043051d27SRobert Mustacchi.It Dv PS_STOP
37172d3dbb9SYuri PankovAn active process that is no longer executing.
37272d3dbb9SYuri PankovA process may stop for many reasons such as an explicit stop request (through
37343051d27SRobert Mustacchi.Xr pstop 1
37443051d27SRobert Mustacchifor example) or if a tracing event is hit.
37543051d27SRobert Mustacchi.Pp
37643051d27SRobert MustacchiThe reason a process is stopped may be obtained through the thread's
3777dfe7b8bSJason King.Vt lwpstatus_t
37843051d27SRobert Mustacchistructure read directly from /proc or obtained through the
37943051d27SRobert Mustacchi.Xr Lstatus 3PROC
38043051d27SRobert Mustacchifunction.
38143051d27SRobert Mustacchi.It Dv PS_LOST
38272d3dbb9SYuri PankovControl over the process has been lost.
38372d3dbb9SYuri PankovThis may happen when the process executes a new image requiring a different set
38472d3dbb9SYuri Pankovof privileges.
38543051d27SRobert MustacchiTo resume control call
38672d3dbb9SYuri Pankov.Xr Preopen 3PROC .
38772d3dbb9SYuri PankovFor more information on losing control of a process, see
38843051d27SRobert Mustacchi.Xr proc 4 .
3897dfe7b8bSJason King.It Dv PS_UNDEAD
39072d3dbb9SYuri PankovA zombie process.
39172d3dbb9SYuri PankovIt has terminated, but it has not been cleaned up yet by its parent.
39272d3dbb9SYuri PankovFor more on the conditions of becoming a zombie, see
39343051d27SRobert Mustacchi.Xr exec 2 .
3947dfe7b8bSJason King.It Dv PS_DEAD
39572d3dbb9SYuri PankovProcesses in this state are always core files.
39672d3dbb9SYuri PankovSee the earlier section
39743051d27SRobert Mustacchi.Sx Core Files
39843051d27SRobert Mustacchifor more information on working with core files.
39943051d27SRobert Mustacchi.It Dv PS_IDLE
40072d3dbb9SYuri PankovA process that has never been run.
40172d3dbb9SYuri PankovThis is always the case for handles that refer to files as the files cannot be
40272d3dbb9SYuri Pankovexecuted.
40372d3dbb9SYuri PankovThose process handles are obtained through calling
40443051d27SRobert Mustacchi.Xr Pgrab_file 3PROC .
40543051d27SRobert Mustacchi.El
40643051d27SRobert Mustacchi.Pp
40743051d27SRobert MustacchiMany functions relating to tracing processes, for example
40843051d27SRobert Mustacchi.Xr Psignal 3PROC ,
40943051d27SRobert Mustacchi.Xr Psetsignal 3PROC ,
41043051d27SRobert Mustacchi.Xr Psetfault 3PROC ,
411b31ca922SChris Fraire.Xr Psysentry 3PROC ,
41243051d27SRobert Mustacchiand others, mention that they only act upon
41343051d27SRobert Mustacchi.Em Active Processes .
41443051d27SRobert MustacchiThis specifically refers to processes whose state are in
41543051d27SRobert Mustacchi.Dv PS_RUN
41643051d27SRobert Mustacchiand
41743051d27SRobert Mustacchi.Dv PS_STOP .
41843051d27SRobert MustacchiProcess handles in the other states have no notion of settable tracing
41943051d27SRobert Mustacchiflags, though core files
4207dfe7b8bSJason King.Pq type Dv PS_DEAD
42143051d27SRobert Mustacchimay have a read-only snapshot of their tracing settings available.
42243051d27SRobert Mustacchi.Sh TYPES
42343051d27SRobert MustacchiThe
42443051d27SRobert Mustacchi.Nm
42543051d27SRobert Mustacchilibrary uses many types that come from the /proc file system
4267dfe7b8bSJason King.Pq Xr proc 4
42743051d27SRobert Mustacchiand the ELF format
4287dfe7b8bSJason King.Pq Xr elf 3ELF .
42943051d27SRobert MustacchiHowever, it also defines the following types:
43043051d27SRobert Mustacchi.Pp
4317dfe7b8bSJason King.Vt struct ps_prochandle
43243051d27SRobert Mustacchi.Pp
43343051d27SRobert MustacchiThe
4347dfe7b8bSJason King.Vt struct ps_prochandle
43543051d27SRobert Mustacchiis an opaque handle to the library and the core element of control for a
43672d3dbb9SYuri Pankovprocess.
43772d3dbb9SYuri PankovConsumers obtain pointers to a handle through the use of the
43843051d27SRobert Mustacchi.Fn Pcreate ,
43943051d27SRobert Mustacchi.Fn Pgrab ,
44072d3dbb9SYuri Pankovand related functions.
44172d3dbb9SYuri PankovWhen a caller is done with a handle, then it should call one of the
44243051d27SRobert Mustacchi.Fn Pfree
44343051d27SRobert Mustacchiand
44443051d27SRobert Mustacchi.Fn Prelease
44543051d27SRobert Mustacchifunctions to relinquish the handle, release associated resources, and
44643051d27SRobert Mustacchipotentially set the process to run again.
44743051d27SRobert Mustacchi.Pp
4487dfe7b8bSJason King.Vt struct ps_lwphandle
44943051d27SRobert Mustacchi.Pp
45043051d27SRobert MustacchiThe
4517dfe7b8bSJason King.Vt struct ps_lwphandle
45243051d27SRobert Mustacchiis analogous to the
4537dfe7b8bSJason King.Vt struct ps_prochandle ,
45443051d27SRobert Mustacchibut it represents the control of an individual thread, rather than a
45572d3dbb9SYuri Pankovprocess.
45672d3dbb9SYuri PankovConsumers obtain pointers to a handle through the
45743051d27SRobert Mustacchi.Fn Lgrab
45843051d27SRobert Mustacchifunction and relinquish it with the
45943051d27SRobert Mustacchi.Fn Lfree
46043051d27SRobert Mustacchifunction.
46143051d27SRobert Mustacchi.Pp
4627dfe7b8bSJason King.Vt core_content_t
46343051d27SRobert Mustacchi.Pp
46443051d27SRobert MustacchiThe
4657dfe7b8bSJason King.Vt core_content_t
46643051d27SRobert Mustacchiis a value which describes the various content types of core files.
46743051d27SRobert MustacchiThese are used in functions such as
46843051d27SRobert Mustacchi.Xr Pcontent 3PROC
46943051d27SRobert Mustacchiand
47043051d27SRobert Mustacchi.Xr Pgcore 3PROC
47172d3dbb9SYuri Pankovto describe and control the types of content that get included.
47272d3dbb9SYuri PankovVarious content types may be included together through a bitwise-inclusive-OR.
47343051d27SRobert MustacchiThe default system core contents are controlled with the
47443051d27SRobert Mustacchi.Xr coreadm 1M
47572d3dbb9SYuri Pankovtool.
47672d3dbb9SYuri PankovThe following table lists the current set of core contents in the system, though
47772d3dbb9SYuri Pankovthe set may increase over time.
47872d3dbb9SYuri PankovThe string after the macro is the human readable string that corresponds with
47972d3dbb9SYuri Pankovthe constant and is used by
48043051d27SRobert Mustacchi.Xr coreadm 1M ,
48143051d27SRobert Mustacchi.Xr proc_content2str 3PROC ,
48243051d27SRobert Mustacchiand
48343051d27SRobert Mustacchi.Xr proc_str2content 3PROC .
48443051d27SRobert Mustacchi.Bl -tag -offset indent -width indent
48543051d27SRobert Mustacchi.It Dv CC_CONTENT_STACK ("stack")
48672d3dbb9SYuri PankovThe contents include the process stack.
48772d3dbb9SYuri PankovNote, this only covers the main thread's stack.
48872d3dbb9SYuri PankovThe stack of other threads is covered by
48943051d27SRobert Mustacchi.Dv CC_CONTENT_ANON .
49043051d27SRobert Mustacchi.It Dv CC_CONTENT_HEAP ("heap")
49143051d27SRobert MustacchiThe contents include the process heap.
49243051d27SRobert Mustacchi.It Dv CC_CONTENT_SHFILE ("shfile")
49343051d27SRobert MustacchiThe contents include shared mappings that are backed by files (e.g.
49443051d27SRobert Mustacchimapped through
49543051d27SRobert Mustacchi.Xr mmap 2
49643051d27SRobert Mustacchiwith the
49743051d27SRobert Mustacchi.Dv MAP_SHARED
49843051d27SRobert Mustacchiflag).
49943051d27SRobert Mustacchi.It Dv CC_CONTENT_SHANNON ("shannon")
50043051d27SRobert MustacchiThe contents include shared mappings that are backed by anonymous memory
50143051d27SRobert Mustacchi(e.g. mapped through
50243051d27SRobert Mustacchi.Xr mmap 2
50343051d27SRobert Mustacchiwith the
50443051d27SRobert Mustacchi.Dv MAP_SHARED
50543051d27SRobert Mustacchiand
50643051d27SRobert Mustacchi.Dv MAP_ANON
50743051d27SRobert Mustacchiflags).
50843051d27SRobert Mustacchi.It Dv CC_CONTENT_RODATA ("rodata")
50943051d27SRobert MustacchiThe contents include private read-only file mappings, such as shared
51043051d27SRobert Mustacchilibrary text.
51143051d27SRobert Mustacchi.It Dv CC_CONTENT_ANON ("anon")
51272d3dbb9SYuri PankovThe contents include private anonymous mappings.
51372d3dbb9SYuri PankovThis includes the stacks of threads which are not the main thread.
51443051d27SRobert Mustacchi.It Dv CC_CONTENT_SHM ("shm")
51543051d27SRobert MustacchiThe contents include system V shared memory.
51643051d27SRobert Mustacchi.It Dv CC_CONTENT_ISM ("ism")
51743051d27SRobert MustacchiThe contents include ISM (intimate shared memory) mappings.
51843051d27SRobert Mustacchi.It Dv CC_CONTENT_DISM ("dism")
51943051d27SRobert MustacchiThe contents include DISM (dynamic shared memory) mappings.
52043051d27SRobert Mustacchi.It Dv CC_CONTENT_CTF ("ctf")
52143051d27SRobert MustacchiThe contents include
52243051d27SRobert Mustacchi.Xr ctf 4
52372d3dbb9SYuri Pankov(Compact C Type Format) information.
52472d3dbb9SYuri PankovNote, not all objects in the process may have CTF information available.
52543051d27SRobert Mustacchi.It Dv CC_CONTENT_SYMTAB ("symtab")
52672d3dbb9SYuri PankovThe contents include the symbol table.
52772d3dbb9SYuri PankovNote, not all objects in the process may have a symbol table available.
52843051d27SRobert Mustacchi.It Dv CC_CONTENT_ALL ("all")
52943051d27SRobert MustacchiThis value indicates that all of the above content values are present.
53043051d27SRobert MustacchiNote that additional values may be added in the future, in which case
53172d3dbb9SYuri Pankovthe value of the symbol will be updated to include them.
53272d3dbb9SYuri PankovComparisons with
53343051d27SRobert Mustacchi.Dv CC_CONTENT_ALL
53443051d27SRobert Mustacchishould validate all the expected bits are set by an expression such as
53543051d27SRobert Mustacchi.Li (c & CC_CONTENT_ALL) == CC_CONTENT_ALL .
53643051d27SRobert Mustacchi.It Dv CC_CONTENT_NONE ("none")
53743051d27SRobert MustacchiThis value indicates that there is no content present.
53843051d27SRobert Mustacchi.It Dv CC_CONTENT_DEFAULT ("default")
53943051d27SRobert MustacchiThe content includes the following set of default values:
54043051d27SRobert Mustacchi.Dv CC_CONTENT_STACK ,
54143051d27SRobert Mustacchi.Dv CC_CONTENT_HEAP ,
54243051d27SRobert Mustacchi.Dv CC_CONTENT_ISM ,
54343051d27SRobert Mustacchi.Dv CC_CONTENT_DISM ,
54443051d27SRobert Mustacchi.Dv CC_CONTENT_SHM ,
54543051d27SRobert Mustacchi.Dv CC_CONTENT_SHANON ,
54643051d27SRobert Mustacchi.Dv CC_CONTENT_TEXT ,
54743051d27SRobert Mustacchi.Dv CC_CONTENT_DATA ,
54843051d27SRobert Mustacchi.Dv CC_CONTENT_RODATA ,
54943051d27SRobert Mustacchi.Dv CC_CONTENT_ANON ,
55043051d27SRobert Mustacchi.Dv CC_CONTENT_CTF ,
55143051d27SRobert Mustacchiand
55243051d27SRobert Mustacchi.Dv CC_CONTENT_SYMTAB .
55372d3dbb9SYuri PankovNote that the default may change.
55472d3dbb9SYuri PankovComparisons with CC_CONTENT_DEFAULT should validate that all of the expected
55572d3dbb9SYuri Pankovbits are set with an expression such as
55643051d27SRobert Mustacchi.Li (c\ &\ CC_CONTENT_DEFAULT)\ ==\ CC_CONTENT_DEFAULT .
55743051d27SRobert Mustacchi.It Dv CC_CONTENT_INVALID
55843051d27SRobert MustacchiThis indicates that the contents are invalid.
55943051d27SRobert Mustacchi.El
56043051d27SRobert Mustacchi.Pp
5617dfe7b8bSJason King.Vt prfdinfo_t
56243051d27SRobert Mustacchi.Pp
56343051d27SRobert MustacchiThe
5647dfe7b8bSJason King.Vt prfdinfo_t
56543051d27SRobert Mustacchistructure is used with the
566a02120c4SAndy Fiddaman.Fn Pfdinfo_iter ,
567a02120c4SAndy Fiddaman.Fn proc_fdwalk ,
568a02120c4SAndy Fiddaman.Fn proc_fdinfowalk
569a02120c4SAndy Fiddamanand
570a02120c4SAndy Fiddaman.Fn proc_get_fdinfo
571a02120c4SAndy Fiddamanfunctions and describes information about a file descriptor.
57272d3dbb9SYuri PankovThe structure is defined as follows:
57343051d27SRobert Mustacchi.Bd -literal
57443051d27SRobert Mustacchitypedef struct prfdinfo {
575a02120c4SAndy Fiddaman    int		pr_fd;		/* file descriptor number */
576a02120c4SAndy Fiddaman    mode_t	pr_mode;	/* (see st_mode in stat(2)) */
577a02120c4SAndy Fiddaman    ino64_t	pr_ino;		/* inode number */
578a02120c4SAndy Fiddaman    off64_t	pr_size;	/* file size */
579a02120c4SAndy Fiddaman    off64_t	pr_offset;	/* current offset */
580a02120c4SAndy Fiddaman    uid_t	pr_uid;		/* owner's user id */
581a02120c4SAndy Fiddaman    gid_t	pr_gid;		/* owner's group id */
582a02120c4SAndy Fiddaman    major_t	pr_major;	/* major number of device */
583a02120c4SAndy Fiddaman    minor_t	pr_minor;	/* minor number of device */
584a02120c4SAndy Fiddaman    major_t	pr_rmajor;	/* major number (if special file) */
585a02120c4SAndy Fiddaman    minor_t	pr_rminor;	/* minor number (if special file) */
586a02120c4SAndy Fiddaman    int		pr_fileflags;	/* (see F_GETXFL in fcntl(2)) */
587a02120c4SAndy Fiddaman    int		pr_fdflags;	/* (see F_GETFD in fcntl(2)) */
588a02120c4SAndy Fiddaman    short	pr_locktype;	/* (see F_GETLK in fcntl(2)) */
589a02120c4SAndy Fiddaman    pid_t	pr_lockpid;	/* process holding file lock */
590a02120c4SAndy Fiddaman    int		pr_locksysid;	/* sysid of locking process */
591a02120c4SAndy Fiddaman    pid_t	pr_peerpid;	/* peer process (socket, door) */
592a02120c4SAndy Fiddaman    int		pr_filler[25];	/* reserved for future use */
593a02120c4SAndy Fiddaman    char	pr_peername[PRFNSZ];	/* peer process name */
594a02120c4SAndy Fiddaman#if    __STDC_VERSION__ >= 199901L
595a02120c4SAndy Fiddaman    uint8_t	pr_misc[];	/* self describing structures */
596a02120c4SAndy Fiddamanelse
597a02120c4SAndy Fiddaman    uint8_t	pr_misc[1];	/* self describing structures */
598a02120c4SAndy Fiddaman#endif
59943051d27SRobert Mustacchi} prfdinfo_t;
60043051d27SRobert Mustacchi.Ed
60143051d27SRobert Mustacchi.Pp
60243051d27SRobert MustacchiThe structure has similar information to that found in the
60343051d27SRobert Mustacchi.Sy stat
60443051d27SRobert Mustacchistructure that's used as part of the stat family of system calls,
60543051d27SRobert Mustacchidefined in
60643051d27SRobert Mustacchi.Xr stat 2 .
60743051d27SRobert MustacchiThe member
60843051d27SRobert Mustacchi.Sy pr_fd
60972d3dbb9SYuri Pankovcontains the number of the file descriptor of the file.
61072d3dbb9SYuri PankovThe members
6117dfe7b8bSJason King.Fa pr_mode ,
6127dfe7b8bSJason King.Fa pr_uid ,
6137dfe7b8bSJason King.Fa pr_gid ,
6147dfe7b8bSJason King.Fa pr_ino ,
61543051d27SRobert Mustacchiand
6167dfe7b8bSJason King.Fa pr_size
61743051d27SRobert Mustacchiare the same as the members
6187dfe7b8bSJason King.Fa st_mode ,
6197dfe7b8bSJason King.Fa st_uid ,
6207dfe7b8bSJason King.Fa st_gid ,
6217dfe7b8bSJason King.Fa st_ino ,
62243051d27SRobert Mustacchiand
6237dfe7b8bSJason King.Fa st_size
62443051d27SRobert Mustacchiin the
6257dfe7b8bSJason King.Fa stat
62643051d27SRobert Mustacchistructure.
62743051d27SRobert Mustacchi.Pp
62843051d27SRobert MustacchiThe
6297dfe7b8bSJason King.Fa pr_major
63043051d27SRobert Mustacchiand
6317dfe7b8bSJason King.Fa pr_minor
63243051d27SRobert Mustacchimembers contain the major and minor numbers of the device containing the
63372d3dbb9SYuri Pankovdirectory for this file.
63472d3dbb9SYuri PankovThis is similar to the
6357dfe7b8bSJason King.Fa st_dev
63643051d27SRobert Mustacchimember of the
6377dfe7b8bSJason King.Vt stat
63843051d27SRobert Mustacchistructure, except that it is broken out into its major and minor components.
63943051d27SRobert MustacchiThe
6407dfe7b8bSJason King.Fa pr_rmajor
64143051d27SRobert Mustacchiand
6427dfe7b8bSJason King.Fa pr_rminor
64343051d27SRobert Mustacchimembers are similar in spirit to
6447dfe7b8bSJason King.Fa pr_major
64543051d27SRobert Mustacchiand
6467dfe7b8bSJason King.Fa pr_minor ;
64743051d27SRobert Mustacchihowever, they are equivalent to the
6487dfe7b8bSJason King.Fa st_rdev
64943051d27SRobert Mustacchimember of the
6507dfe7b8bSJason King.Vt stat
65143051d27SRobert Mustacchistructure and thus have meaning for special character and block files.
65243051d27SRobert Mustacchi.Pp
65343051d27SRobert MustacchiThe
6547dfe7b8bSJason King.Fa pr_offset
65572d3dbb9SYuri Pankovmember contains the current seek offset of the file descriptor.
65672d3dbb9SYuri PankovThe
6577dfe7b8bSJason King.Fa pr_fileflags
65843051d27SRobert Mustacchiand
6597dfe7b8bSJason King.Fa pr_fdflags
66043051d27SRobert Mustacchimembers contain the flags that would have been returned by a call to
66143051d27SRobert Mustacchi.Xr fcntl 2
66243051d27SRobert Mustacchiwith the arguments
66343051d27SRobert Mustacchi.Dv F_GETXFL
66443051d27SRobert Mustacchiand
66543051d27SRobert Mustacchi.Dv F_GETFD
66643051d27SRobert Mustacchirespectively.
66743051d27SRobert Mustacchi.Pp
668a02120c4SAndy FiddamanThe
669a02120c4SAndy Fiddaman.Fa pr_locktype ,
670a02120c4SAndy Fiddaman.Fa pr_lockpid ,
671a02120c4SAndy Fiddamanand
672a02120c4SAndy Fiddaman.Fa pr_locksysid
673a02120c4SAndy Fiddamancontain the information that would have been returned by a call to
674a02120c4SAndy Fiddaman.Xr fcntl 2
675a02120c4SAndy Fiddamanwith an argument of
676a02120c4SAndy Fiddaman.Dv F_GETLK .
677a02120c4SAndy Fiddaman.Pp
678a02120c4SAndy FiddamanThe
679a02120c4SAndy Fiddaman.Fa pr_peerpid
680a02120c4SAndy Fiddamanand
681a02120c4SAndy Fiddaman.Fa pr_peername
682a02120c4SAndy Fiddamanmembers contain the process ID and name of any peer endpoint of a
683a02120c4SAndy Fiddamanconnection-oriented socket or stream fd.
684a02120c4SAndy FiddamanThis information is the same as that which would be returned by a call to
685a02120c4SAndy Fiddaman.Xr getpeerucred 3C
686a02120c4SAndy Fiddaman.Pp
687a02120c4SAndy FiddamanThe
688a02120c4SAndy Fiddaman.Fa pr_misc
689a02120c4SAndy Fiddamanmember contains miscellaneous additional data relating to the file descriptor.
690a02120c4SAndy FiddamanThe format of these data is described in
691a02120c4SAndy Fiddaman.Xr proc 4 .
692a02120c4SAndy Fiddaman.Pp
6937dfe7b8bSJason King.Vt prsyminfo_t
69443051d27SRobert Mustacchi.Pp
69543051d27SRobert MustacchiThe
6967dfe7b8bSJason King.Vt prsyminfo_t
69743051d27SRobert Mustacchistructure is used with the various symbol look up functions
69843051d27SRobert Mustacchi.Fn Pxlookup_by_name ,
69943051d27SRobert Mustacchi.Fn Pxlookup_by_addr ,
70043051d27SRobert Mustacchiand
70143051d27SRobert Mustacchi.Fn Pxlookup_by_addr_resolved
70243051d27SRobert Mustacchiwhich describes additional information about a symbol.
70343051d27SRobert MustacchiThe structure is defined as follows:
70443051d27SRobert Mustacchi.Bd -literal
70543051d27SRobert Mustacchitypedef struct prsyminfo {
70643051d27SRobert Mustacchi        const char      *prs_object;            /* object name */
70743051d27SRobert Mustacchi        const char      *prs_name;              /* symbol name */
70843051d27SRobert Mustacchi        Lmid_t          prs_lmid;               /* link map id */
70943051d27SRobert Mustacchi        uint_t          prs_id;                 /* symbol id */
71043051d27SRobert Mustacchi        uint_t          prs_table;              /* symbol table id */
71143051d27SRobert Mustacchi} prsyminfo_t;
71243051d27SRobert Mustacchi.Ed
71343051d27SRobert Mustacchi.Pp
71443051d27SRobert MustacchiThe member
7157dfe7b8bSJason King.Fa prs_object
71643051d27SRobert Mustacchipoints to a string that contains the name of the object file, if known,
71772d3dbb9SYuri Pankovthat the symbol comes from.
71872d3dbb9SYuri PankovThe member
7197dfe7b8bSJason King.Fa prs_name
72072d3dbb9SYuri Pankovpoints to the name of the symbol, if known.
72172d3dbb9SYuri PankovThis may be unknown due to a stripped binary that contains no symbol table.
72272d3dbb9SYuri PankovThe member
7237dfe7b8bSJason King.Fa prs_lmid
72472d3dbb9SYuri Pankovindicates the link map identifier that the symbol was found on.
72572d3dbb9SYuri PankovFor more information on link map identifiers refer to the
7267dfe7b8bSJason King.%B Linker and Libraries Guide
72743051d27SRobert Mustacchiand
72843051d27SRobert Mustacchi.Xr dlopen 3C .
72943051d27SRobert Mustacchi.Pp
73043051d27SRobert MustacchiThe members
7317dfe7b8bSJason King.Fa prs_id
73243051d27SRobert Mustacchiand
7337dfe7b8bSJason King.Fa prs_table
73443051d27SRobert Mustacchican be used to determine both the symbol table that the entry came from
73572d3dbb9SYuri Pankovand which entry in the table it corresponds to.
73672d3dbb9SYuri PankovIf the value of
7377dfe7b8bSJason King.Fa prs_table
73843051d27SRobert Mustacchiis
73943051d27SRobert Mustacchi.Dv PR_SYMTAB
74072d3dbb9SYuri Pankovthen it came from the ELF standard symbol table.
74172d3dbb9SYuri PankovHowever, if it is instead
74243051d27SRobert Mustacchi.Dv PR_DYNSYM ,
74343051d27SRobert Mustacchithen that indicates that it comes from the process's dynamic section.
74443051d27SRobert Mustacchi.Pp
7457dfe7b8bSJason King.Vt proc_lwp_f
74643051d27SRobert Mustacchi.Pp
74743051d27SRobert MustacchiThe
7487dfe7b8bSJason King.Vt proc_lwp_f
74943051d27SRobert Mustacchiis a function pointer type that is used with the
75043051d27SRobert Mustacchi.Fn Plwp_iter
75172d3dbb9SYuri Pankovfunction.
75272d3dbb9SYuri PankovIt is defined as
75343051d27SRobert Mustacchi.Sy typedef
75443051d27SRobert Mustacchi.Ft int
75543051d27SRobert Mustacchi.Fo proc_lwp_f
75643051d27SRobert Mustacchi.Fa "void *"
75743051d27SRobert Mustacchi.Fa "const lwpstatus_t *"
75843051d27SRobert Mustacchi.Fc .
75943051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies,
76043051d27SRobert Mustacchiwhile the second has the thread's status information and is defined in
76143051d27SRobert Mustacchi.Xr proc 4 .
76243051d27SRobert MustacchiFor additional information on using this type, see
76343051d27SRobert Mustacchi.Xr Plwp_iter 3PROC .
76443051d27SRobert Mustacchi.Pp
7657dfe7b8bSJason King.Vt proc_lwp_all_f
76643051d27SRobert Mustacchi.Pp
76743051d27SRobert MustacchiThe
7687dfe7b8bSJason King.Vt proc_lwp_all_f
76943051d27SRobert Mustacchiis a function pointer type that is used with the
77043051d27SRobert Mustacchi.Fn Plwp_iter_all
77172d3dbb9SYuri Pankovfunction.
77272d3dbb9SYuri PankovIt is defined as
77343051d27SRobert Mustacchi.Sy typedef
77443051d27SRobert Mustacchi.Ft int
77543051d27SRobert Mustacchi.Fo proc_lwp_all_f
77643051d27SRobert Mustacchi.Fa "void *"
77743051d27SRobert Mustacchi.Fa "const lwpstatus_t *"
77843051d27SRobert Mustacchi.Fa "const lwpsinfo_t *"
77943051d27SRobert Mustacchi.Fc .
78043051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies.
78143051d27SRobert MustacchiThe second and third arguments contain the thread's status and
78243051d27SRobert Mustacchithread-specific
78343051d27SRobert Mustacchi.Xr ps 1
78472d3dbb9SYuri Pankovinformation respectively.
78572d3dbb9SYuri PankovBoth structures are defined in
78643051d27SRobert Mustacchi.Xr proc 4 .
78743051d27SRobert MustacchiFor additional information on using this type, see
78843051d27SRobert Mustacchi.Xr Plwp_iter_all 3PROC .
78943051d27SRobert Mustacchi.Pp
790a02120c4SAndy Fiddaman.Vt proc_fdinfowalk_f
791a02120c4SAndy Fiddaman.Pp
792a02120c4SAndy FiddamanThe
793a02120c4SAndy Fiddaman.Vt proc_fdinfowalk_f
794a02120c4SAndy Fiddamanis a function pointer type that is used with the
795a02120c4SAndy Fiddaman.Fn proc_fdinfowalk
796a02120c4SAndy Fiddamanfunction to walk the miscellaneous data items contained within a
797a02120c4SAndy Fiddaman.Vt prfdinfo_t
798a02120c4SAndy Fiddamanstructure.
799a02120c4SAndy FiddamanIt is defined as
800a02120c4SAndy Fiddaman.Sy typedef
801a02120c4SAndy Fiddaman.Ft int
802a02120c4SAndy Fiddaman.Fo proc_fdinfowalk_f
803a02120c4SAndy Fiddaman.Fa "uint_t"
804a02120c4SAndy Fiddaman.Fa "const void *"
805a02120c4SAndy Fiddaman.Fa "size_t"
806a02120c4SAndy Fiddaman.Fa "void *"
807a02120c4SAndy Fiddaman.Fc .
808a02120c4SAndy FiddamanThe first argument contains the type of the miscellaneous information being
809a02120c4SAndy Fiddamanpresented, the second and third provide a pointer to the associated data and
810a02120c4SAndy Fiddamanthe length of that data.
811a02120c4SAndy FiddamanThe final argument is a pointer to an argument that the user specifies.
812a02120c4SAndy FiddamanFor more information on using this, see
813a02120c4SAndy Fiddaman.Xr proc_fdinfowalk 3PROC .
814a02120c4SAndy Fiddaman.Pp
815a02120c4SAndy Fiddaman.Vt proc_fdwalk_f
816a02120c4SAndy Fiddaman.Pp
817a02120c4SAndy FiddamanThe
818a02120c4SAndy Fiddaman.Vt proc_fdwalk_f
819a02120c4SAndy Fiddamanis a function pointer type that is used with the
820a02120c4SAndy Fiddaman.Fn proc_fdwalk
821a02120c4SAndy Fiddamanfunction.
822a02120c4SAndy FiddamanIt is defined as
823a02120c4SAndy Fiddaman.Sy typedef
824a02120c4SAndy Fiddaman.Ft int
825a02120c4SAndy Fiddaman.Fo proc_fdwalk_f
826a02120c4SAndy Fiddaman.Fa "const prfdinfo_t *"
827a02120c4SAndy Fiddaman.Fa "void *"
828a02120c4SAndy Fiddaman.Fc .
829a02120c4SAndy FiddamanThe first argument contains the file descriptor information.
830a02120c4SAndy FiddamanThe
831a02120c4SAndy Fiddaman.Sy prfdinfo_t
832a02120c4SAndy Fiddamanstructure is defined in
833a02120c4SAndy Fiddaman.Xr proc 4 .
834a02120c4SAndy FiddamanThe final argument is a pointer to an argument that the user specifies.
835a02120c4SAndy FiddamanFor more information on using this, see
836a02120c4SAndy Fiddaman.Xr proc_fdwalk 3PROC .
837a02120c4SAndy Fiddaman.Pp
8387dfe7b8bSJason King.Vt proc_walk_f
83943051d27SRobert Mustacchi.Pp
84043051d27SRobert MustacchiThe
8417dfe7b8bSJason King.Vt proc_walk_f
84243051d27SRobert Mustacchiis a function pointer type that is used with the
84343051d27SRobert Mustacchi.Fn proc_walk
84472d3dbb9SYuri Pankovfunction.
84572d3dbb9SYuri PankovIt is defined as
84643051d27SRobert Mustacchi.Sy typedef
84743051d27SRobert Mustacchi.Ft int
84843051d27SRobert Mustacchi.Fo proc_walk_f
84943051d27SRobert Mustacchi.Fa "psinfo_t *"
85043051d27SRobert Mustacchi.Fa "lwpsinfo_t *"
85143051d27SRobert Mustacchi.Fa "void *"
85243051d27SRobert Mustacchi.Fc .
85343051d27SRobert MustacchiThe first argument contains the process
85443051d27SRobert Mustacchi.Xr ps 1
85543051d27SRobert Mustacchiinformation and the second argument contains the representative thread's
85643051d27SRobert Mustacchi.Xr ps 1
85772d3dbb9SYuri Pankovinformation.
85872d3dbb9SYuri PankovBoth structures are defined in
85943051d27SRobert Mustacchi.Xr proc 4 .
86043051d27SRobert MustacchiThe final argument is a pointer to an argument that the user specifies.
86143051d27SRobert MustacchiFor more information on using this, see
86243051d27SRobert Mustacchi.Xr proc_walk 3PROC .
86343051d27SRobert Mustacchi.Pp
8647dfe7b8bSJason King.Vt proc_map_f
86543051d27SRobert Mustacchi.Pp
86643051d27SRobert MustacchiThe
8677dfe7b8bSJason King.Vt proc_map_f
86843051d27SRobert Mustacchiis a function pointer type that is used with the
86943051d27SRobert Mustacchi.Fn Pmapping_iter ,
87043051d27SRobert Mustacchi.Fn Pmapping_iter_resolved ,
87143051d27SRobert Mustacchi.Fn Pobject_iter ,
87243051d27SRobert Mustacchiand
87343051d27SRobert Mustacchi.Fn Pobject_iter_resolved
87472d3dbb9SYuri Pankovfunctions.
87572d3dbb9SYuri PankovIt is defined as
87643051d27SRobert Mustacchi.Sy typedef
87743051d27SRobert Mustacchi.Ft int
87843051d27SRobert Mustacchi.Fo proc_map_f
87943051d27SRobert Mustacchi.Fa "void *"
88043051d27SRobert Mustacchi.Fa "const prmap_t *"
88143051d27SRobert Mustacchi.Fa "const char *"
88243051d27SRobert Mustacchi.Fc .
88343051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies.
88443051d27SRobert MustacchiThe second argument is describes the mapping information and is defined
88543051d27SRobert Mustacchiin
88643051d27SRobert Mustacchi.Xr proc 4 .
88743051d27SRobert MustacchiThe final argument contains the name of the mapping or object file in
88872d3dbb9SYuri Pankovquestion.
88972d3dbb9SYuri PankovFor additional information on using this type, see
89043051d27SRobert Mustacchi.Xr Pmapping_iter 3PROC .
89143051d27SRobert Mustacchi.Pp
8927dfe7b8bSJason King.Vt proc_env_f
89343051d27SRobert Mustacchi.Pp
89443051d27SRobert MustacchiThe
8957dfe7b8bSJason King.Vt proc_env_f
89643051d27SRobert Mustacchiis a function pointer type that is used with the
89743051d27SRobert Mustacchi.Fn Penv_iter
89872d3dbb9SYuri Pankovfunction.
89972d3dbb9SYuri PankovIt is defined as
90043051d27SRobert Mustacchi.Sy typedef
90143051d27SRobert Mustacchi.Ft int
90243051d27SRobert Mustacchi.Fo proc_env_f
90343051d27SRobert Mustacchi.Fa "void *"
90443051d27SRobert Mustacchi.Fa "struct ps_prochandle *"
90543051d27SRobert Mustacchi.Fa "uintptr_t"
90643051d27SRobert Mustacchi.Fa "const char *"
90743051d27SRobert Mustacchi.Fc .
90843051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies.
90943051d27SRobert MustacchiThe second argument is a pointer to the
9107dfe7b8bSJason King.Vt struct ps_prochandle
91172d3dbb9SYuri Pankovthat the callback was passed to.
91272d3dbb9SYuri PankovThe third argument is the address of the environment variable in the process.
91372d3dbb9SYuri PankovThe fourth argument is the environment variable.
91472d3dbb9SYuri PankovValues in the environment follow the convention of the form
91543051d27SRobert Mustacchi.Em variable=value .
91643051d27SRobert MustacchiFor more information on environment variables see
91743051d27SRobert Mustacchi.Xr exec 2
91843051d27SRobert Mustacchiand
91943051d27SRobert Mustacchi.Xr environ 5 .
92043051d27SRobert MustacchiFor additional information on using this type, see
92143051d27SRobert Mustacchi.Xr Penv_iter 3PROC .
92243051d27SRobert Mustacchi.Pp
9237dfe7b8bSJason King.Vt proc_sym_f
92443051d27SRobert Mustacchi.Pp
92543051d27SRobert MustacchiThe
9267dfe7b8bSJason King.Vt proc_sym_f
92743051d27SRobert Mustacchiis a function pointer type that is used with the
92843051d27SRobert Mustacchi.Fn Psmbol_iter ,
92943051d27SRobert Mustacchi.Fn Psymbol_iter_by_addr ,
93043051d27SRobert Mustacchi.Fn Psymbol_iter_by_name ,
93143051d27SRobert Mustacchiand
93243051d27SRobert Mustacchi.Fn Psymbol_iter_by_lmid
93372d3dbb9SYuri Pankovfunctions.
93472d3dbb9SYuri PankovIt is defined as
93543051d27SRobert Mustacchi.Sy typedef
93643051d27SRobert Mustacchi.Ft int
93743051d27SRobert Mustacchi.Fo proc_sym_f
93843051d27SRobert Mustacchi.Fa "void *"
93943051d27SRobert Mustacchi.Fa "const GElf_Sym *"
94043051d27SRobert Mustacchi.Fa "const char *"
94143051d27SRobert Mustacchi.Fc .
94243051d27SRobert MustacchiThe first argument is a pointer to an argument that the user supplies.
94343051d27SRobert MustacchiThe second argument is a pointer to the ELF symbol information in a
94472d3dbb9SYuri Pankov32-bit and 64-bit neutral form.
94572d3dbb9SYuri PankovSee
94643051d27SRobert Mustacchi.Xr elf 3ELF
94743051d27SRobert Mustacchiand
94843051d27SRobert Mustacchi.Xr gelf 3ELF
94972d3dbb9SYuri Pankovfor more information on it.
95072d3dbb9SYuri PankovThe final argument points to a character string that has the name of the symbol.
95172d3dbb9SYuri PankovFor additional information on using this type, see
95243051d27SRobert Mustacchi.Xr Psymbol_iter 3PROC ,
95343051d27SRobert Mustacchi.Xr Psymbol_iter_by_addr 3PROC ,
95443051d27SRobert Mustacchi.Xr Psymbol_iter_by_name 3PROC ,
95543051d27SRobert Mustacchiand
95643051d27SRobert Mustacchi.Xr Psymbol_iter_by_lmid 3PROC .
95743051d27SRobert Mustacchi.Pp
9587dfe7b8bSJason King.Vt proc_xsym_f
95943051d27SRobert Mustacchi.Pp
96043051d27SRobert MustacchiThe
9617dfe7b8bSJason King.Vt proc_xsym_f
96243051d27SRobert Mustacchiis a function pointer type that is used with the
96343051d27SRobert Mustacchi.Fn Pxsymbol_iter
96472d3dbb9SYuri Pankovfunction.
96572d3dbb9SYuri PankovIt is defined as
96643051d27SRobert Mustacchi.Sy typedef
96743051d27SRobert Mustacchi.Ft int
96843051d27SRobert Mustacchi.Fo proc_xsym_f
96943051d27SRobert Mustacchi.Fa "void *"
97043051d27SRobert Mustacchi.Fa "const GElf_Sym *"
97143051d27SRobert Mustacchi.Fa "const char *"
97243051d27SRobert Mustacchi.Fa "const prsyminfo_t *"
97343051d27SRobert Mustacchi.Fc .
97443051d27SRobert MustacchiThe first three arguments are identical to those of
9757dfe7b8bSJason King.Vt proc_sym_f .
97643051d27SRobert MustacchiThe final argument contains additional information about the symbol
97772d3dbb9SYuri Pankovitself.
97872d3dbb9SYuri PankovThe members of the
9797dfe7b8bSJason King.Vt prsyminfo_t
98072d3dbb9SYuri Pankovare defined earlier in this section.
98172d3dbb9SYuri PankovFor additional information on using this type, see
98243051d27SRobert Mustacchi.Xr Pxsymbol_iter 3PROC .
98343051d27SRobert Mustacchi.Pp
9847dfe7b8bSJason King.Vt proc_stack_f
98543051d27SRobert Mustacchi.Pp
98643051d27SRobert MustacchiThe
9877dfe7b8bSJason King.Vt proc_stack_f
98843051d27SRobert Mustacchiis a function pointer type that is used with the
98943051d27SRobert Mustacchi.Fn Pstack_iter
99072d3dbb9SYuri Pankovfunction.
99172d3dbb9SYuri PankovIt is defined as
99243051d27SRobert Mustacchi.Sy typedef
99343051d27SRobert Mustacchi.Ft int
99443051d27SRobert Mustacchi.Fo proc_stack_f
99543051d27SRobert Mustacchi.Fa "void *"
99643051d27SRobert Mustacchi.Fa "prgregset_t"
99743051d27SRobert Mustacchi.Fa "uint_t"
99843051d27SRobert Mustacchi.Fa "const long *"
99943051d27SRobert Mustacchi.Fc .
100043051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies.
100172d3dbb9SYuri PankovThe second argument's contents are platform specific.
100272d3dbb9SYuri PankovThe registers that contain stack information, usually the stack pointer and
100372d3dbb9SYuri Pankovframe pointer, will be filled in to point to an entry.
100472d3dbb9SYuri PankovThe
10057dfe7b8bSJason King.Vt prgregset_t
100643051d27SRobert Mustacchiis defined in
100743051d27SRobert Mustacchi.Xr proc 4 .
100843051d27SRobert Mustacchi.Pp
100943051d27SRobert MustacchiThe third argument contains the number of arguments to the current stack
101043051d27SRobert Mustacchiframe and the fourth argument contains an array of addresses that
101172d3dbb9SYuri Pankovcorrespond to the arguments to that stack function.
101272d3dbb9SYuri PankovThe value of the third argument dictates the number of entries in the fourth
101372d3dbb9SYuri Pankovargument.
101443051d27SRobert MustacchiFor additional information on using this type, see
101543051d27SRobert Mustacchi.Xr Pstack_iter 3PROC .
101643051d27SRobert Mustacchi.Pp
10177dfe7b8bSJason King.Vt proc_fdinfo_f
101843051d27SRobert Mustacchi.Pp
101943051d27SRobert MustacchiThe
10207dfe7b8bSJason King.Vt proc_fdinfo_f
102143051d27SRobert Mustacchiis a function pointer type that is used with the
102243051d27SRobert Mustacchi.Fn Pfdinfo_iter
102372d3dbb9SYuri Pankovfunction.
102472d3dbb9SYuri PankovIt is defined as
102543051d27SRobert Mustacchi.Sy typedef
102643051d27SRobert Mustacchi.Ft int
102743051d27SRobert Mustacchi.Fo proc_fdinfo_f
102843051d27SRobert Mustacchi.Fa "void *"
102943051d27SRobert Mustacchi.Fa "prfdinfo_t *"
103043051d27SRobert Mustacchi.Fc .
103143051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies.
103243051d27SRobert MustacchiThe second argument contains information about an open file descriptor.
103343051d27SRobert MustacchiThe members of the
10347dfe7b8bSJason King.Vt prfdinfo_t
103572d3dbb9SYuri Pankovare defined earlier in this section.
103672d3dbb9SYuri PankovFor additional information on using this type, see
103743051d27SRobert Mustacchi.Xr Pfdinfo_iter 3PROC .
103843051d27SRobert Mustacchi.Sh PROGRAMMING NOTES
103943051d27SRobert MustacchiWhen working with live processes, whether from the
104072d3dbb9SYuri Pankov.Xr Pgrab 3PROC
104143051d27SRobert Mustacchior
104272d3dbb9SYuri Pankov.Xr Pcreate 3PROC
104343051d27SRobert Mustacchifamily of functions, there are some additional considerations.
104443051d27SRobert MustacchiImportantly, if a process calls any of the
104543051d27SRobert Mustacchi.Xr exec 2
104643051d27SRobert Mustacchisuite of functions, much of the state information that is obtained,
104772d3dbb9SYuri Pankovparticularly that about mappings in the process will be invalid.
104872d3dbb9SYuri PankovCallers must ensure that they call
104943051d27SRobert Mustacchi.Xr Preset_maps 3PROC
105072d3dbb9SYuri Pankovwhen they hold a process handle across an exec.
105172d3dbb9SYuri PankovIn addition, users of the library should familiarize themselves with the
105243051d27SRobert Mustacchi.Sy PROGRAMMING NOTES
105343051d27SRobert Mustacchisection of the
105443051d27SRobert Mustacchi.Xr proc 4
105543051d27SRobert Mustacchimanual page, which discusses issues of privileges and security.
105643051d27SRobert Mustacchi.Sh DEBUGGING
105743051d27SRobert MustacchiThe library provides a means for obtaining additional debugging
105872d3dbb9SYuri Pankovinformation.
105972d3dbb9SYuri PankovThe output itself is not part of the
106043051d27SRobert Mustacchi.Nm
106172d3dbb9SYuri Pankovlibrary's stable interface.
106272d3dbb9SYuri PankovSetting the environment variable
106343051d27SRobert Mustacchi.Ev LIBPROC_DEBUG
106472d3dbb9SYuri Pankovto some value will print information to standard error.
106572d3dbb9SYuri PankovFor example,
10667dfe7b8bSJason King.Ev LIBPROC_DEBUG Ns = Ns Em please .
106743051d27SRobert Mustacchi.Sh LOCKING
106843051d27SRobert MustacchiMost functions operate on a handle to a process in the form of a
106943051d27SRobert Mustacchi.Vt "struct ps_prochandle *" .
107043051d27SRobert MustacchiUnless otherwise indicated, the library does not provide any
107143051d27SRobert Mustacchisynchronization for different routines that are operating on the
107243051d27SRobert Mustacchi.Sy same
107343051d27SRobert Mustacchi.Nm
107472d3dbb9SYuri Pankovlibrary handle.
107572d3dbb9SYuri PankovIt is up to the caller to ensure that only a single thread is using a handle at
107672d3dbb9SYuri Pankovany given time.
107772d3dbb9SYuri PankovMultiple threads may call
107843051d27SRobert Mustacchi.Nm
107943051d27SRobert Mustacchilibrary routines at the same time as long as each thread is using a
108043051d27SRobert Mustacchidifferent handle.
108143051d27SRobert Mustacchi.Pp
108243051d27SRobert MustacchiEach individual function notes its
108343051d27SRobert Mustacchi.Sy MT-Level
108472d3dbb9SYuri Pankovsection.
108572d3dbb9SYuri PankovThe MT-Level of a routine that matches the above description will refer to this
108672d3dbb9SYuri Pankovmanual page.
108772d3dbb9SYuri PankovIf it does not, then it refers to the standard attributes in
108843051d27SRobert Mustacchi.Xr attributes 5 .
108943051d27SRobert Mustacchi.Sh INTERFACE STABILITY
109043051d27SRobert Mustacchi.Sy Uncommitted
109143051d27SRobert Mustacchi.Pp
109243051d27SRobert MustacchiWhile the library is considered an uncommitted interface, and is still
109343051d27SRobert Mustacchievolving, changes that break compatibility have been uncommon and this
109472d3dbb9SYuri Pankovtrend is expected to continue.
109572d3dbb9SYuri PankovIt is documented to allow consumers, whether part of illumos or outside of it,
109672d3dbb9SYuri Pankovto understand the libarary and make use of it with the understanding that
109772d3dbb9SYuri Pankovchanges may occur which break both source and binary compatibility.
109843051d27SRobert Mustacchi.Sh SEE ALSO
109943051d27SRobert Mustacchi.Xr gcore 1 ,
110043051d27SRobert Mustacchi.Xr mdb 1 ,
110143051d27SRobert Mustacchi.Xr proc 1 ,
110243051d27SRobert Mustacchi.Xr ps 1 ,
110343051d27SRobert Mustacchi.Xr coreadm 1M ,
110443051d27SRobert Mustacchi.Xr exec 2 ,
110543051d27SRobert Mustacchi.Xr fcntl 2 ,
110643051d27SRobert Mustacchi.Xr stat 2 ,
110743051d27SRobert Mustacchi.Xr Intro 3 ,
110843051d27SRobert Mustacchi.Xr dlopen 3C ,
110943051d27SRobert Mustacchi.Xr elf 3ELF ,
111043051d27SRobert Mustacchi.Xr ctf 4 ,
111143051d27SRobert Mustacchi.Xr proc 4 ,
111243051d27SRobert Mustacchi.Xr attributes 5 ,
111343051d27SRobert Mustacchi.Xr environ 5 ,
111443051d27SRobert Mustacchi.Xr privileges 5
111543051d27SRobert Mustacchi.Pp
111643051d27SRobert Mustacchi.Rs
111743051d27SRobert Mustacchi.%T Linkers and Libraries Guide
111843051d27SRobert Mustacchi.Re
111943051d27SRobert Mustacchi.Pp
112043051d27SRobert Mustacchi.Xr Lfree 3PROC ,
112143051d27SRobert Mustacchi.Xr Lgrab 3PROC ,
112243051d27SRobert Mustacchi.Xr Lgrab_error 3PROC ,
112343051d27SRobert Mustacchi.Xr Pcreate 3PROC ,
112443051d27SRobert Mustacchi.Xr Pcreate_agent 3PROC ,
112543051d27SRobert Mustacchi.Xr Pcreate_callback 3PROC ,
112643051d27SRobert Mustacchi.Xr Pcreate_error 3PROC ,
112743051d27SRobert Mustacchi.Xr Pdestroy_agent 3PROC ,
112843051d27SRobert Mustacchi.Xr Pfgrab_core 3PROC ,
112943051d27SRobert Mustacchi.Xr Pfree 3PROC ,
113043051d27SRobert Mustacchi.Xr Pgrab 3PROC ,
113143051d27SRobert Mustacchi.Xr Pgrab_core 3PROC ,
113243051d27SRobert Mustacchi.Xr Pgrab_error 3PROC ,
113343051d27SRobert Mustacchi.Xr Pgrab_file 3PROC ,
113443051d27SRobert Mustacchi.Xr Pgrab_ops 3PROC ,
113543051d27SRobert Mustacchi.Xr Prelease 3PROC ,
113643051d27SRobert Mustacchi.Xr Preopen 3PROC ,
113743051d27SRobert Mustacchi.Xr Pxcreate 3PROC
113843051d27SRobert Mustacchi.Pp
113943051d27SRobert Mustacchi.Xr Paddr_to_ctf 3PROC ,
114043051d27SRobert Mustacchi.Xr Paddr_to_loadobj 3PROC ,
114143051d27SRobert Mustacchi.Xr Paddr_to_map 3PROC ,
114243051d27SRobert Mustacchi.Xr Paddr_to_text_map 3PROC ,
114343051d27SRobert Mustacchi.Xr Pasfd 3PROC ,
114443051d27SRobert Mustacchi.Xr Pclearfault 3PROC ,
114543051d27SRobert Mustacchi.Xr Pclearsig 3PROC ,
114643051d27SRobert Mustacchi.Xr Pcontent 3PROC ,
114743051d27SRobert Mustacchi.Xr Pcred 3PROC ,
114843051d27SRobert Mustacchi.Xr Pctlfd 3PROC ,
114943051d27SRobert Mustacchi.Xr Pdelbkpt 3PROC ,
115043051d27SRobert Mustacchi.Xr Pdelwapt 3PROC ,
115143051d27SRobert Mustacchi.Xr Pdstop 3PROC ,
115243051d27SRobert Mustacchi.Xr Pexecname 3PROC ,
115343051d27SRobert Mustacchi.Xr Pfault 3PROC ,
115443051d27SRobert Mustacchi.Xr Pfgcore 3PROC ,
115543051d27SRobert Mustacchi.Xr Pgcore 3PROC ,
115643051d27SRobert Mustacchi.Xr Pgetareg 3PROC ,
115743051d27SRobert Mustacchi.Xr Pgetauxval 3PROC ,
115843051d27SRobert Mustacchi.Xr Pgetauxvec 3PROC ,
115943051d27SRobert Mustacchi.Xr Pgetenv 3PROC ,
116043051d27SRobert Mustacchi.Xr Pisprocdir 3PROC ,
116143051d27SRobert Mustacchi.Xr Pissyscall_prev 3PROC ,
116243051d27SRobert Mustacchi.Xr Plmid 3PROC ,
116343051d27SRobert Mustacchi.Xr Plmid_to_loadobj 3PROC ,
116443051d27SRobert Mustacchi.Xr Plmid_to_map 3PROC ,
116543051d27SRobert Mustacchi.Xr Plookup_by_addr 3PROC ,
116643051d27SRobert Mustacchi.Xr Plookup_by_name 3PROC ,
116743051d27SRobert Mustacchi.Xr Plwp_alt_stack 3PROC ,
116843051d27SRobert Mustacchi.Xr Plwp_getfpregs 3PROC ,
116943051d27SRobert Mustacchi.Xr Plwp_getpsinfo 3PROC ,
117043051d27SRobert Mustacchi.Xr Plwp_getregs 3PROC ,
117143051d27SRobert Mustacchi.Xr Plwp_getspymaster 3PROC ,
117243051d27SRobert Mustacchi.Xr Plwp_main_stack 3PROC ,
117343051d27SRobert Mustacchi.Xr Plwp_setfpregs 3PROC ,
117443051d27SRobert Mustacchi.Xr Plwp_setregs 3PROC ,
117543051d27SRobert Mustacchi.Xr Plwp_stack 3PROC ,
117643051d27SRobert Mustacchi.Xr Pname_to_ctf 3PROC ,
117743051d27SRobert Mustacchi.Xr Pname_to_loadobj 3PROC ,
117843051d27SRobert Mustacchi.Xr Pname_to_map 3PROC ,
117943051d27SRobert Mustacchi.Xr Pobjname 3PROC ,
118043051d27SRobert Mustacchi.Xr Pobjname_resolved 3PROC ,
118143051d27SRobert Mustacchi.Xr Pplatform 3PROC ,
118243051d27SRobert Mustacchi.Xr Ppltdest 3PROC ,
118343051d27SRobert Mustacchi.Xr Ppriv 3PROC ,
118443051d27SRobert Mustacchi.Xr Ppsinfo 3PROC ,
118543051d27SRobert Mustacchi.Xr Pputareg 3PROC ,
118643051d27SRobert Mustacchi.Xr Prd_agent 3PROC ,
118743051d27SRobert Mustacchi.Xr Pread 3PROC ,
118843051d27SRobert Mustacchi.Xr Pread_string 3PROC ,
118943051d27SRobert Mustacchi.Xr Preset_maps 3PROC ,
1190d2a70789SRichard Lowe.Xr Psecflags 3PROC ,
119143051d27SRobert Mustacchi.Xr Psetbkpt 3PROC ,
119243051d27SRobert Mustacchi.Xr Psetcred 3PROC ,
119343051d27SRobert Mustacchi.Xr Psetfault 3PROC ,
119443051d27SRobert Mustacchi.Xr Psetflags 3PROC ,
119543051d27SRobert Mustacchi.Xr Psetpriv 3PROC ,
119643051d27SRobert Mustacchi.Xr Psetrun 3PROC ,
119743051d27SRobert Mustacchi.Xr Psetsignal 3PROC ,
119843051d27SRobert Mustacchi.Xr Psetsysentry 3PROC ,
119943051d27SRobert Mustacchi.Xr Psetsysexit 3PROC ,
120043051d27SRobert Mustacchi.Xr Psetwapt 3PROC ,
120143051d27SRobert Mustacchi.Xr Psetzoneid 3PROC ,
120243051d27SRobert Mustacchi.Xr Psignal 3PROC ,
120343051d27SRobert Mustacchi.Xr Pstate 3PROC ,
120443051d27SRobert Mustacchi.Xr Pstatus 3PROC ,
120543051d27SRobert Mustacchi.Xr Pstop 3PROC ,
120643051d27SRobert Mustacchi.Xr Pstopstatus 3PROC ,
120743051d27SRobert Mustacchi.Xr Psync 3PROC ,
120843051d27SRobert Mustacchi.Xr Psysentry 3PROC ,
120943051d27SRobert Mustacchi.Xr Psysexit 3PROC ,
121043051d27SRobert Mustacchi.Xr Puname 3PROC ,
121143051d27SRobert Mustacchi.Xr Punsetflags 3PROC ,
121243051d27SRobert Mustacchi.Xr Pupdate_maps 3PROC ,
121343051d27SRobert Mustacchi.Xr Pupdate_syms 3PROC ,
121443051d27SRobert Mustacchi.Xr Pwait 3PROC ,
121543051d27SRobert Mustacchi.Xr Pwrite 3PROC ,
121643051d27SRobert Mustacchi.Xr Pxecbkpt 3PROC ,
121743051d27SRobert Mustacchi.Xr Pxecwapt 3PROC ,
121843051d27SRobert Mustacchi.Xr Pxlookup_by_addr 3PROC ,
121943051d27SRobert Mustacchi.Xr Pxlookup_by_addr_resolved 3PROC ,
122043051d27SRobert Mustacchi.Xr Pxlookup_by_name 3PROC ,
122143051d27SRobert Mustacchi.Xr Pzonename 3PROC ,
122243051d27SRobert Mustacchi.Xr Pzonepath 3PROC ,
122343051d27SRobert Mustacchi.Xr Pzoneroot 3PROC
122443051d27SRobert Mustacchi.Pp
122543051d27SRobert Mustacchi.Xr Lalt_stack 3PROC ,
122643051d27SRobert Mustacchi.Xr Lclearfault 3PROC ,
122743051d27SRobert Mustacchi.Xr Lclearsig 3PROC ,
122843051d27SRobert Mustacchi.Xr Lctlfd 3PROC ,
122943051d27SRobert Mustacchi.Xr Ldstop 3PROC ,
123043051d27SRobert Mustacchi.Xr Lgetareg 3PROC ,
123143051d27SRobert Mustacchi.Xr Lmain_stack 3PROC ,
123243051d27SRobert Mustacchi.Xr Lprochandle 3PROC ,
123343051d27SRobert Mustacchi.Xr Lpsinfo 3PROC ,
123443051d27SRobert Mustacchi.Xr Lputareg 3PROC ,
123543051d27SRobert Mustacchi.Xr Lsetrun 3PROC ,
123643051d27SRobert Mustacchi.Xr Lstack 3PROC ,
123743051d27SRobert Mustacchi.Xr Lstate 3PROC ,
123843051d27SRobert Mustacchi.Xr Lstatus 3PROC ,
123943051d27SRobert Mustacchi.Xr Lstop 3PROC ,
124043051d27SRobert Mustacchi.Xr Lsync 3PROC ,
124143051d27SRobert Mustacchi.Xr Lwait 3PROC ,
124243051d27SRobert Mustacchi.Xr Lxecbkpt 3PROC ,
124343051d27SRobert Mustacchi.Xr Lxecwapt 3PROC
124443051d27SRobert Mustacchi.Pp
124543051d27SRobert Mustacchi.Xr pr_access 3PROC ,
124643051d27SRobert Mustacchi.Xr pr_close 3PROC ,
124743051d27SRobert Mustacchi.Xr pr_creat 3PROC ,
124843051d27SRobert Mustacchi.Xr pr_door_info 3PROC ,
124943051d27SRobert Mustacchi.Xr pr_exit 3PROC ,
125043051d27SRobert Mustacchi.Xr pr_fcntl 3PROC ,
125143051d27SRobert Mustacchi.Xr pr_fstat 3PROC ,
125243051d27SRobert Mustacchi.Xr pr_fstat64 3PROC ,
125343051d27SRobert Mustacchi.Xr pr_fstatvfs 3PROC ,
125443051d27SRobert Mustacchi.Xr pr_getitimer 3PROC ,
125543051d27SRobert Mustacchi.Xr pr_getpeername 3PROC ,
125643051d27SRobert Mustacchi.Xr pr_getpeerucred 3PROC ,
125743051d27SRobert Mustacchi.Xr pr_getprojid 3PROC ,
125843051d27SRobert Mustacchi.Xr pr_getrctl 3PROC ,
125943051d27SRobert Mustacchi.Xr pr_getrlimit 3PROC ,
126043051d27SRobert Mustacchi.Xr pr_getrlimit64 3PROC ,
126143051d27SRobert Mustacchi.Xr pr_getsockname 3PROC ,
126243051d27SRobert Mustacchi.Xr pr_getsockopt 3PROC ,
126343051d27SRobert Mustacchi.Xr pr_gettaskid 3PROC ,
126443051d27SRobert Mustacchi.Xr pr_getzoneid 3PROC ,
126543051d27SRobert Mustacchi.Xr pr_ioctl 3PROC ,
126643051d27SRobert Mustacchi.Xr pr_link 3PROC ,
126743051d27SRobert Mustacchi.Xr pr_llseek 3PROC ,
126843051d27SRobert Mustacchi.Xr pr_lseek 3PROC ,
126943051d27SRobert Mustacchi.Xr pr_lstat 3PROC ,
127043051d27SRobert Mustacchi.Xr pr_lstat64 3PROC ,
127143051d27SRobert Mustacchi.Xr pr_memcntl 3PROC ,
127243051d27SRobert Mustacchi.Xr pr_meminfo 3PROC ,
127343051d27SRobert Mustacchi.Xr pr_mmap 3PROC ,
127443051d27SRobert Mustacchi.Xr pr_munmap 3PROC ,
127543051d27SRobert Mustacchi.Xr pr_open 3PROC ,
127643051d27SRobert Mustacchi.Xr pr_processor_bind 3PROC ,
127743051d27SRobert Mustacchi.Xr pr_rename 3PROC ,
127843051d27SRobert Mustacchi.Xr pr_setitimer 3PROC ,
127943051d27SRobert Mustacchi.Xr pr_setrctl 3PROC ,
128043051d27SRobert Mustacchi.Xr pr_setrlimit 3PROC ,
128143051d27SRobert Mustacchi.Xr pr_setrlimit64 3PROC ,
128243051d27SRobert Mustacchi.Xr pr_settaskid 3PROC ,
128343051d27SRobert Mustacchi.Xr pr_sigaction 3PROC ,
128443051d27SRobert Mustacchi.Xr pr_stat 3PROC ,
128543051d27SRobert Mustacchi.Xr pr_stat64 3PROC ,
128643051d27SRobert Mustacchi.Xr pr_statvfs 3PROC ,
128743051d27SRobert Mustacchi.Xr pr_unlink 3PROC ,
128843051d27SRobert Mustacchi.Xr pr_waitid 3PROC ,
128943051d27SRobert Mustacchi.Pp
129043051d27SRobert Mustacchi.Xr Penv_iter 3PROC ,
129143051d27SRobert Mustacchi.Xr Plwp_iter 3PROC ,
129243051d27SRobert Mustacchi.Xr Plwp_iter_all 3PROC ,
129343051d27SRobert Mustacchi.Xr Pmapping_iter 3PROC ,
129443051d27SRobert Mustacchi.Xr Pmapping_iter_resolved 3PROC ,
129543051d27SRobert Mustacchi.Xr Pobject_iter 3PROC ,
129643051d27SRobert Mustacchi.Xr Pobject_iter_resolved 3PROC ,
129743051d27SRobert Mustacchi.Xr Pstack_iter 3PROC ,
129843051d27SRobert Mustacchi.Xr Psymbol_iter 3PROC ,
129943051d27SRobert Mustacchi.Xr Psymbol_iter_by_addr 3PROC ,
130043051d27SRobert Mustacchi.Xr Psymbol_iter_by_lmid 3PROC ,
130143051d27SRobert Mustacchi.Xr Psymbol_iter_by_name 3PROC ,
130243051d27SRobert Mustacchi.Xr Pxsymbol_iter 3PROC ,
130343051d27SRobert Mustacchi.Xr Pfdinfo_iter 3PROC
130443051d27SRobert Mustacchi.Pp
130543051d27SRobert Mustacchi.Xr Perror_printf 3PROC ,
130643051d27SRobert Mustacchi.Xr proc_arg_grab 3PROC ,
130743051d27SRobert Mustacchi.Xr proc_arg_psinfo 3PROC ,
130843051d27SRobert Mustacchi.Xr proc_arg_xgrab 3PROC ,
130943051d27SRobert Mustacchi.Xr proc_arg_xpsinfo 3PROC ,
131043051d27SRobert Mustacchi.Xr proc_content2str 3PROC ,
1311542a7b7fSCarlos Neira.Xr proc_dmodelname 3PROC ,
131243051d27SRobert Mustacchi.Xr proc_finistdio 3PROC ,
131343051d27SRobert Mustacchi.Xr proc_fltname 3PROC ,
131443051d27SRobert Mustacchi.Xr proc_fltset2str 3PROC ,
131543051d27SRobert Mustacchi.Xr proc_flushstdio 3PROC ,
131643051d27SRobert Mustacchi.Xr proc_get_auxv 3PROC ,
131743051d27SRobert Mustacchi.Xr proc_get_cred 3PROC ,
1318a02120c4SAndy Fiddaman.Xr proc_get_fdinfo 3PROC ,
131943051d27SRobert Mustacchi.Xr proc_get_priv 3PROC ,
132043051d27SRobert Mustacchi.Xr proc_get_psinfo 3PROC ,
132143051d27SRobert Mustacchi.Xr proc_get_status 3PROC ,
132243051d27SRobert Mustacchi.Xr proc_initstdio 3PROC ,
132343051d27SRobert Mustacchi.Xr proc_lwp_in_set 3PROC ,
132443051d27SRobert Mustacchi.Xr proc_lwp_range_valid 3PROC ,
132543051d27SRobert Mustacchi.Xr proc_signame 3PROC ,
132643051d27SRobert Mustacchi.Xr proc_sigset2str 3PROC ,
132743051d27SRobert Mustacchi.Xr proc_str2content 3PROC ,
132843051d27SRobert Mustacchi.Xr proc_str2flt 3PROC ,
132943051d27SRobert Mustacchi.Xr proc_str2fltset 3PROC ,
133043051d27SRobert Mustacchi.Xr proc_str2sig 3PROC ,
133143051d27SRobert Mustacchi.Xr proc_str2sigset 3PROC ,
133243051d27SRobert Mustacchi.Xr proc_str2sys 3PROC ,
133343051d27SRobert Mustacchi.Xr proc_str2sysset 3PROC ,
133443051d27SRobert Mustacchi.Xr proc_sysname 3PROC ,
133543051d27SRobert Mustacchi.Xr proc_sysset2str 3PROC ,
133643051d27SRobert Mustacchi.Xr proc_unctrl_psinfo 3PROC ,
1337a02120c4SAndy Fiddaman.Xr proc_fdinfowalk 3PROC ,
1338a02120c4SAndy Fiddaman.Xr proc_fdwalk 3PROC ,
133943051d27SRobert Mustacchi.Xr proc_walk 3PROC
134043051d27SRobert Mustacchi.Pp
134143051d27SRobert Mustacchi.Xr Pldt 3PROC ,
134243051d27SRobert Mustacchi.Xr proc_get_ldt 3PROC ,
134343051d27SRobert Mustacchi.Pp
134443051d27SRobert Mustacchi.Xr Plwp_getgwindows 3PROC ,
134543051d27SRobert Mustacchi.Xr Plwp_getxregs 3PROC ,
134643051d27SRobert Mustacchi.Xr Plwp_setxregs 3PROC ,
134743051d27SRobert Mustacchi.Pp
134843051d27SRobert Mustacchi.Xr Plwp_getasrs 3PROC ,
134943051d27SRobert Mustacchi.Xr Plwp_setasrs 3PROC
1350