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. 15*f1cd2b6cSRobert Mustacchi.\" Copyright 2024 Oxide Computer Company 1643051d27SRobert Mustacchi.\" 17*f1cd2b6cSRobert Mustacchi.Dd May 10, 2024 1843051d27SRobert Mustacchi.Dt LIBPROC 3LIB 1943051d27SRobert Mustacchi.Os 2043051d27SRobert Mustacchi.Sh NAME 2143051d27SRobert Mustacchi.Nm libproc 2243051d27SRobert Mustacchi.Nd process control library 2343051d27SRobert Mustacchi.Sh SYNOPSIS 2443051d27SRobert Mustacchi.Lb libproc 2543051d27SRobert Mustacchi.In libproc.h 2643051d27SRobert Mustacchi.Sh DESCRIPTION 2743051d27SRobert MustacchiThe 2843051d27SRobert Mustacchi.Nm 2943051d27SRobert Mustacchilibrary provides consumers a general series of interfaces to inspect 3072d3dbb9SYuri Pankovand control both live processes and core files. 3172d3dbb9SYuri PankovIt is intended for introspection tools such as debuggers by providing a 3272d3dbb9SYuri Pankovhigh-level interface to the /proc file system 33bbf21555SRichard Lowe.Pf ( Xr proc 5 ) . 3443051d27SRobert Mustacchi.Pp 3543051d27SRobert MustacchiThe 3643051d27SRobert Mustacchi.Nm 3743051d27SRobert Mustacchilibrary provides interfaces that focus on: 3843051d27SRobert Mustacchi.Bl -bullet -offset indent 3943051d27SRobert Mustacchi.It 4043051d27SRobert MustacchiCreating and attaching to live process, core files, and arbitrary ELF 4143051d27SRobert Mustacchiobjects. 4243051d27SRobert Mustacchi.It 4343051d27SRobert MustacchiInterrogating the state of a process or core file. 4443051d27SRobert Mustacchi.It 4543051d27SRobert MustacchiManipulating the current state of a process or thread. 4643051d27SRobert Mustacchi.It 4743051d27SRobert MustacchiInterrogating the state of threads of a process or core file. 4843051d27SRobert Mustacchi.It 4943051d27SRobert MustacchiRunning system calls in the context of another process. 5043051d27SRobert Mustacchi.It 5143051d27SRobert MustacchiVarious utilities for iterating process and core file file descriptors, 5243051d27SRobert Mustacchimappings, symbols, and more. 5343051d27SRobert Mustacchi.It 5443051d27SRobert MustacchiVarious utilities to support debugging tools. 5543051d27SRobert Mustacchi.El 5643051d27SRobert Mustacchi.Ss Live Processes 5743051d27SRobert MustacchiThe 5843051d27SRobert Mustacchi.Nm 5943051d27SRobert Mustacchilibrary can be used to manipulate running processes and to create new 6072d3dbb9SYuri Pankovones. 6172d3dbb9SYuri PankovTo manipulate an existing process first 6243051d27SRobert Mustacchi.Em grab 6343051d27SRobert Mustacchiit with the 647dfe7b8bSJason King.Fn Pgrab 6572d3dbb9SYuri Pankovfunction. 6672d3dbb9SYuri PankovA process is generally stopped as a side effect of grabbing it. 6772d3dbb9SYuri PankovCallers must exercise caution, as if they do not use the library correctly, or 6872d3dbb9SYuri Pankovthey terminate unexpectedly, a process may remain stopped. 6943051d27SRobert Mustacchi.Pp 7072d3dbb9SYuri PankovUnprivileged users may only grab their own processes. 7172d3dbb9SYuri PankovUsers with the privilege 727dfe7b8bSJason King.Brq Sy PRIV_PROC_OWNER 7343051d27SRobert Mustacchimay manipulate processes that they do not own; however, additional 7443051d27SRobert Mustacchirestrictions as described in 75bbf21555SRichard Lowe.Xr privileges 7 7643051d27SRobert Mustacchiapply. 7743051d27SRobert Mustacchi.Pp 7843051d27SRobert MustacchiIn addition, the 7943051d27SRobert Mustacchi.Fn Pcreate 8043051d27SRobert Mustacchiand 8143051d27SRobert Mustacchi.Fn Pxcreate 8243051d27SRobert Mustacchifunctions may be used to create processes which are always controlled by 8343051d27SRobert Mustacchithe library. 8443051d27SRobert Mustacchi.Ss Core Files 8543051d27SRobert MustacchiThe 8643051d27SRobert Mustacchi.Nm 8743051d27SRobert Mustacchilibrary has the ability to open and interpret core files produced by 8872d3dbb9SYuri Pankovprocesses on the system. 8972d3dbb9SYuri PankovProcess core dump generation is controlled by the 90bbf21555SRichard Lowe.Xr coreadm 8 9172d3dbb9SYuri Pankovcommand. 9272d3dbb9SYuri PankovIn addition, the library has the ability to understand and interpret core dumps 9372d3dbb9SYuri Pankovgenerated by Linux kernel and can provide a subset of its functionality on such 9472d3dbb9SYuri Pankovcore files, provided the original binary is also present. 9543051d27SRobert Mustacchi.Pp 9643051d27SRobert MustacchiNot all functions in the 9743051d27SRobert Mustacchi.Nm 9872d3dbb9SYuri Pankovlibrary are valid for core files. 9972d3dbb9SYuri PankovIn general, none of the commands which manipulate the current state of a process 10072d3dbb9SYuri Pankovor thread or that try to force system calls on a victim process will work. 10172d3dbb9SYuri PankovFurthermore several of the information and iteration interfaces are limited 10272d3dbb9SYuri Pankovbased on the data that is available in the core file. 10372d3dbb9SYuri PankovFor example, if the core file is of a process that omits the frame pointer, the 10472d3dbb9SYuri Pankovability to iterate the stack will be limited. 10543051d27SRobert Mustacchi.Pp 10643051d27SRobert MustacchiUse the 10743051d27SRobert Mustacchi.Fn Pgrab_core 10843051d27SRobert Mustacchior 10943051d27SRobert Mustacchi.Fn Pfgrab_core 11072d3dbb9SYuri Pankovfunction to open a core file. 11172d3dbb9SYuri PankovUse the 11243051d27SRobert Mustacchi.Fn Pgrab_file 11343051d27SRobert Mustacchifunction to open an ELF object file. 11443051d27SRobert MustacchiThis is useful for obtaining information stored in ELF headers and 11543051d27SRobert Mustacchisections. 11643051d27SRobert Mustacchi.Ss Debug Information 11743051d27SRobert MustacchiMany of the operations in the library rely on debug information being 11872d3dbb9SYuri Pankovpresent in a process and its associated libraries. 11972d3dbb9SYuri PankovThe library leverages symbol table information, CTF data 120bbf21555SRichard Lowe.Pq Xr ctf 5 12143051d27SRobert Mustacchisections, and frame unwinding information based on the use of an ABI 1227dfe7b8bSJason Kingdefined frame pointer, e\&.g\&. 12343051d27SRobert Mustacchi.Sy %ebp 12443051d27SRobert Mustacchiand 12543051d27SRobert Mustacchi.Sy %rbp 12643051d27SRobert Mustacchion x86 systems. 12743051d27SRobert Mustacchi.Pp 12843051d27SRobert MustacchiSome software providers strip programs of this information or build 12943051d27SRobert Mustacchitheir executables such that the information will not be present in a 13072d3dbb9SYuri Pankovcore dump. 13172d3dbb9SYuri PankovTo deal with this fact, the library is able to consume information that is not 13272d3dbb9SYuri Pankovpresent in the core file or the running process. 13372d3dbb9SYuri PankovIt can both consume it from the underlying executable and it also supports 13472d3dbb9SYuri Pankovfinding it from related ELF objects that are linked to it via the 13543051d27SRobert Mustacchi.Sy .gnu_debuglink 13643051d27SRobert Mustacchiand the 13743051d27SRobert Mustacchi.Sy .note.gnu.build-id 13843051d27SRobert MustacchiELF sections. 13943051d27SRobert Mustacchi.Ss Iteration Interfaces 14043051d27SRobert MustacchiThe 14143051d27SRobert Mustacchi.Nm 14243051d27SRobert Mustacchilibrary provides the ability to iterate over the following aspects of a 14343051d27SRobert Mustacchiprocess or core file: 14443051d27SRobert Mustacchi.Bl -bullet -offset indent 14543051d27SRobert Mustacchi.It 14643051d27SRobert MustacchiActive threads 14743051d27SRobert Mustacchi.It 14843051d27SRobert MustacchiActive and zombie threads 14943051d27SRobert Mustacchi.It 15043051d27SRobert MustacchiAll non-system processes 15143051d27SRobert Mustacchi.It 15243051d27SRobert MustacchiAll process mappings 15343051d27SRobert Mustacchi.It 15443051d27SRobert MustacchiAll objects in a process 15543051d27SRobert Mustacchi.It 15643051d27SRobert MustacchiThe environment 15743051d27SRobert Mustacchi.It 15843051d27SRobert MustacchiThe symbol table 15943051d27SRobert Mustacchi.It 16043051d27SRobert MustacchiStack frames 16143051d27SRobert Mustacchi.It 16243051d27SRobert MustacchiFile Descriptors 16343051d27SRobert Mustacchi.El 16443051d27SRobert Mustacchi.Ss System Call Injection 16543051d27SRobert MustacchiThe 16643051d27SRobert Mustacchi.Nm 16743051d27SRobert Mustacchilibrary allows the caller to force system calls to be executed in the 16872d3dbb9SYuri Pankovcontext of the running process. 16972d3dbb9SYuri PankovThis can be used both as a tool for introspection, allowing one to get 17072d3dbb9SYuri Pankovinformation outside its current context as well as performing modifications to a 17172d3dbb9SYuri Pankovprocess. 17243051d27SRobert Mustacchi.Pp 17372d3dbb9SYuri PankovThese functions run in the context of the calling process. 17472d3dbb9SYuri PankovThis is often an easier way of getting non-exported information about a 17572d3dbb9SYuri Pankovprocess from the system. 17672d3dbb9SYuri PankovFor example, the 17743051d27SRobert Mustacchi.Xr pfiles 1 17843051d27SRobert Mustacchicommand uses this interface to get more detailed information about a 17943051d27SRobert Mustacchiprocess's open file descriptors, which it would not have access to 18043051d27SRobert Mustacchiotherwise. 18143051d27SRobert Mustacchi.Sh INTERFACES 18243051d27SRobert MustacchiThe shared object 18343051d27SRobert Mustacchi.Sy libproc.so.1 18472d3dbb9SYuri Pankovprovides the public interfaces defined below. 18572d3dbb9SYuri PankovSee 18643051d27SRobert Mustacchi.Xr Intro 3 18772d3dbb9SYuri Pankovfor additional information on shared object interfaces. 18872d3dbb9SYuri PankovFunctions are organized into categories that describe their purpose. 18972d3dbb9SYuri PankovIndividual functions are documented in their own manual pages. 19043051d27SRobert Mustacchi.Ss Creation, Grabbing, and Releasing 19143051d27SRobert MustacchiThe following routines are related to creating library handles, 19243051d27SRobert Mustacchigrabbing cores, processes, and threads, and releasing those resources. 19343051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 19443051d27SRobert Mustacchi.It Sy Lfree Ta Sy Lgrab 19543051d27SRobert Mustacchi.It Sy Lgrab_error Ta Sy Pcreate 19643051d27SRobert Mustacchi.It Sy Pcreate_agent Ta Sy Pcreate_callback 19743051d27SRobert Mustacchi.It Sy Pcreate_error Ta Sy Pdestroy_agent 19843051d27SRobert Mustacchi.It Sy Pfgrab_core Ta Sy Pfree 19943051d27SRobert Mustacchi.It Sy Pgrab Ta Sy Pgrab_core 20043051d27SRobert Mustacchi.It Sy Pgrab_error Ta Sy Pgrab_file 20143051d27SRobert Mustacchi.It Sy Pgrab_ops Ta Sy Prelease 20243051d27SRobert Mustacchi.It Sy Preopen Ta Sy Pxcreate 20343051d27SRobert Mustacchi.El 20443051d27SRobert Mustacchi.Ss Process interrogation and manipulation 20543051d27SRobert MustacchiThe following routines obtain information about a process and allow 20643051d27SRobert Mustacchimanipulation of the process itself. 20743051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 20843051d27SRobert Mustacchi.It Sy Paddr_to_ctf Ta Sy Paddr_to_loadobj 20943051d27SRobert Mustacchi.It Sy Paddr_to_map Ta Sy Paddr_to_text_map 21043051d27SRobert Mustacchi.It Sy Pasfd Ta Sy Pclearfault 21143051d27SRobert Mustacchi.It Sy Pclearsig Ta Sy Pcontent 21243051d27SRobert Mustacchi.It Sy Pcred Ta Sy Pctlfd 213*f1cd2b6cSRobert Mustacchi.It Sy Pcwd Ta Sy Pcwd_free 21443051d27SRobert Mustacchi.It Sy Pdelbkpt Ta Sy Pdelwapt 21543051d27SRobert Mustacchi.It Sy Pdstop Ta Sy Pexecname 21643051d27SRobert Mustacchi.It Sy Pfault Ta Sy Pfgcore 21743051d27SRobert Mustacchi.It Sy Pgcore Ta Sy Pgetareg 21843051d27SRobert Mustacchi.It Sy Pgetauxval Ta Sy Pgetauxvec 21943051d27SRobert Mustacchi.It Sy Pgetenv Ta Sy Pisprocdir 22043051d27SRobert Mustacchi.It Sy Pissyscall_prev Ta Sy Plmid 22143051d27SRobert Mustacchi.It Sy Plmid_to_loadobj Ta Sy Plmid_to_map 22243051d27SRobert Mustacchi.It Sy Plookup_by_addr Ta Sy Plookup_by_name 223ab618543SJohn Levon.It Sy Pname_to_ctf Ta Sy Pname_to_loadobj 224ab618543SJohn Levon.It Sy Pname_to_map Ta Sy Pobjname 225ab618543SJohn Levon.It Sy Pobjname_resolved Ta Sy Pplatform 226ab618543SJohn Levon.It Sy Ppltdest Ta Sy Ppriv 227ab618543SJohn Levon.It Sy Ppsinfo Ta Sy Pputareg 228ab618543SJohn Levon.It Sy Prd_agent Ta Sy Pread 229ab618543SJohn Levon.It Sy Pread_string Ta Sy Preset_maps 230ab618543SJohn Levon.It Sy Psetbkpt Ta Sy Psecflags 231ab618543SJohn Levon.It Sy Psetcred Ta Sy Psetfault 232ab618543SJohn Levon.It Sy Psetflags Ta Sy Psetpriv 233ab618543SJohn Levon.It Sy Psetrun Ta Sy Psetsignal 234ab618543SJohn Levon.It Sy Psetsysentry Ta Sy Psetsysexit 235ab618543SJohn Levon.It Sy Psetwapt Ta Sy Psetzoneid 236ab618543SJohn Levon.It Sy Psignal Ta Sy Pstate 237ab618543SJohn Levon.It Sy Pstatus Ta Sy Pstop 238ab618543SJohn Levon.It Sy Pstopstatus Ta Sy Psync 239ab618543SJohn Levon.It Sy Psysentry Ta Sy Psysexit 240350ffdd5SRobert Mustacchi.It Sy Puname Ta Sy Pupanic 241350ffdd5SRobert Mustacchi.It Sy Pupanic_free Ta Sy Punsetflags 242ab618543SJohn Levon.It Sy Pupdate_maps Ta Sy Pupdate_syms 243ab618543SJohn Levon.It Sy Pwait Ta Sy Pwrite 244ab618543SJohn Levon.It Sy Pxecbkpt Ta Sy Pxecwapt 245ab618543SJohn Levon.It Sy Pxlookup_by_addr Ta Sy Pxlookup_by_addr_resolved 246ab618543SJohn Levon.It Sy Pxlookup_by_name Ta Sy Pzonename 247ab618543SJohn Levon.It Sy Pzonepath Ta Sy Pzoneroot Ta 24843051d27SRobert Mustacchi.El 24943051d27SRobert Mustacchi.Ss Thread interrogation and manipulation 25043051d27SRobert MustacchiThe following routines obtain information about a thread and allow 25143051d27SRobert Mustacchimanipulation of the thread itself. 25243051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 25343051d27SRobert Mustacchi.It Sy Lalt_stack Ta Sy Lclearfault 25443051d27SRobert Mustacchi.It Sy Lclearsig Ta Sy Lctlfd 25543051d27SRobert Mustacchi.It Sy Ldstop Ta Sy Lgetareg 256ed093b41SRobert Mustacchi.It Sy Lgetfpregs Ta Sy Lgetregs 257ed093b41SRobert Mustacchi.It Sy Lgetxregs Ta Sy Lmain_stack 258ed093b41SRobert Mustacchi.It Sy Lprochandle Ta Sy Lpsinfo 259ed093b41SRobert Mustacchi.It Sy Lputareg Ta Sy Lsetrun 260ed093b41SRobert Mustacchi.It Sy Lsetfpregs Ta Sy Lsetregs 261ed093b41SRobert Mustacchi.It Sy Lsetxregs Ta Sy Lstack 26243051d27SRobert Mustacchi.It Sy Lstate Ta Sy Lstatus 26343051d27SRobert Mustacchi.It Sy Lstop Ta Sy Lsync 26443051d27SRobert Mustacchi.It Sy Lwait Ta Sy Lxecbkpt 265ed093b41SRobert Mustacchi.It Sy Lxecwapt Ta Sy "" 266ed093b41SRobert Mustacchi.El 267ed093b41SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 268ed093b41SRobert Mustacchi.It Sy Plwp_alt_stack Ta Sy Plwp_freexregs 269ed093b41SRobert Mustacchi.It Sy Plwp_getfpregs Ta Sy Plwp_getname 270ed093b41SRobert Mustacchi.It Sy Plwp_getpsinfo Ta Sy Plwp_getregs 271ed093b41SRobert Mustacchi.It Sy Plwp_getspymaster Ta Sy Plwp_main_stack 272ed093b41SRobert Mustacchi.It Sy Plwp_getxregs Ta Sy Plwp_setfpregs 273ed093b41SRobert Mustacchi.It Sy Plwp_setregs Ta Sy Plwp_setxregs 274ed093b41SRobert Mustacchi.It Sy Plwp_stack Ta Sy "" 27543051d27SRobert Mustacchi.El 27643051d27SRobert Mustacchi.Ss System Call Injection 27743051d27SRobert MustacchiThe following routines are used to inject specific system calls and have 27843051d27SRobert Mustacchithem run in the context of a process. 27943051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 28043051d27SRobert Mustacchi.It Sy pr_access Ta Sy pr_close 28143051d27SRobert Mustacchi.It Sy pr_creat Ta Sy pr_door_info 28243051d27SRobert Mustacchi.It Sy pr_exit Ta Sy pr_fcntl 28343051d27SRobert Mustacchi.It Sy pr_fstat Ta Sy pr_fstat64 28443051d27SRobert Mustacchi.It Sy pr_fstatvfs Ta Sy pr_getitimer 28543051d27SRobert Mustacchi.It Sy pr_getpeername Ta Sy pr_getpeerucred 28643051d27SRobert Mustacchi.It Sy pr_getprojid Ta Sy pr_getrctl 28743051d27SRobert Mustacchi.It Sy pr_getrlimit Ta Sy pr_getrlimit64 28843051d27SRobert Mustacchi.It Sy pr_getsockname Ta Sy pr_getsockopt 28943051d27SRobert Mustacchi.It Sy pr_gettaskid Ta Sy pr_getzoneid 29043051d27SRobert Mustacchi.It Sy pr_ioctl Ta Sy pr_link 29143051d27SRobert Mustacchi.It Sy pr_llseek Ta Sy pr_lseek 29243051d27SRobert Mustacchi.It Sy pr_lstat Ta Sy pr_lstat64 29343051d27SRobert Mustacchi.It Sy pr_memcntl Ta Sy pr_meminfo 29443051d27SRobert Mustacchi.It Sy pr_mmap Ta Sy pr_munmap 29543051d27SRobert Mustacchi.It Sy pr_open Ta Sy pr_processor_bind 29643051d27SRobert Mustacchi.It Sy pr_rename Ta Sy pr_setitimer 29743051d27SRobert Mustacchi.It Sy pr_setrctl Ta Sy pr_setrlimit 29843051d27SRobert Mustacchi.It Sy pr_setrlimit64 Ta Sy pr_settaskid 29943051d27SRobert Mustacchi.It Sy pr_sigaction Ta Sy pr_stat 30043051d27SRobert Mustacchi.It Sy pr_stat64 Ta Sy pr_statvfs 30143051d27SRobert Mustacchi.It Sy pr_unlink Ta Sy pr_waitid 30243051d27SRobert Mustacchi.El 30343051d27SRobert Mustacchi.Ss Iteration routines 30443051d27SRobert MustacchiThese routines are used to iterate over the contents of a process. 30543051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 30643051d27SRobert Mustacchi.It Sy Penv_iter Ta Sy Plwp_iter 30743051d27SRobert Mustacchi.It Sy Plwp_iter_all Ta Sy Pmapping_iter 30843051d27SRobert Mustacchi.It Sy Pmapping_iter_resolved Ta Sy Pobject_iter 30943051d27SRobert Mustacchi.It Sy Pobject_iter_resolved Ta Sy Pstack_iter 31043051d27SRobert Mustacchi.It Sy Psymbol_iter Ta Sy Psymbol_iter_by_addr 31143051d27SRobert Mustacchi.It Sy Psymbol_iter_by_lmid Ta Sy Psymbol_iter_by_name 31243051d27SRobert Mustacchi.It Sy Pxsymbol_iter Ta Sy Pfdinfo_iter 31343051d27SRobert Mustacchi.El 31443051d27SRobert Mustacchi.Ss Utility routines 31543051d27SRobert MustacchiThe following routines are utilities that are useful to consumers of the 31643051d27SRobert Mustacchilibrary. 31743051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 31843051d27SRobert Mustacchi.It Sy Perror_printf Ta Sy proc_arg_grab 31943051d27SRobert Mustacchi.It Sy proc_arg_psinfo Ta Sy proc_arg_xgrab 32043051d27SRobert Mustacchi.It Sy proc_arg_xpsinfo Ta Sy proc_content2str 321542a7b7fSCarlos Neira.It Sy proc_dmodelname Ta Sy proc_finistdio 322542a7b7fSCarlos Neira.It Sy proc_fltname Ta Sy proc_fltset2str 3236bc3974fSRobert Mustacchi.It Sy proc_flushstdio Ta Sy proc_get_auxv 324a02120c4SAndy Fiddaman.It Sy proc_fdinfo_misc Ta Sy proc_get_cred 325dea9f5e6SRobert Mustacchi.It Sy proc_get_fdinfo Ta Sy proc_get_lwpsinfo 326a7d7cafeSRobert Mustacchi.It Sy proc_get_lwpstatus Ta Sy proc_get_priv 327a7d7cafeSRobert Mustacchi.It Sy proc_get_psinfo Ta Sy proc_get_status 328a7d7cafeSRobert Mustacchi.It Sy proc_get_initstdio Ta Sy proc_lwp_in_set 329a7d7cafeSRobert Mustacchi.It Sy proc_lwp_range_valid Ta Sy proc_signame 330a7d7cafeSRobert Mustacchi.It Sy proc_sigset2str Ta Sy proc_str2content 331a7d7cafeSRobert Mustacchi.It Sy proc_str2flt Ta Sy proc_str2fltset 332a7d7cafeSRobert Mustacchi.It Sy proc_str2sig Ta Sy proc_str2sigset 333a7d7cafeSRobert Mustacchi.It Sy proc_str2sys Ta Sy proc_str2sysset 334a7d7cafeSRobert Mustacchi.It Sy proc_sysname Ta Sy proc_sysset2str 335a7d7cafeSRobert Mustacchi.It Sy proc_unctrl_psinfo Ta Sy "" 33643051d27SRobert Mustacchi.El 33743051d27SRobert Mustacchi.Ss x86 Specific Routines 33843051d27SRobert MustacchiThe following routines are specific to the x86, 32-bit and 64-bit, 33943051d27SRobert Mustacchiversions of the 34043051d27SRobert Mustacchi.Nm 34143051d27SRobert Mustacchilibrary. 34243051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 34343051d27SRobert Mustacchi.It Sy Pldt Ta Sy proc_get_ldt 34443051d27SRobert Mustacchi.El 34543051d27SRobert Mustacchi.Ss SPARC specific Routines 34643051d27SRobert MustacchiThe following functions are specific to the SPARC, 32-bit and 64-bit, 34743051d27SRobert Mustacchiversions of the 34843051d27SRobert Mustacchi.Nm 34943051d27SRobert Mustacchilibrary. 35043051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 351ed093b41SRobert Mustacchi.It Sy Plwp_getgwindows Ta Sy "" 35243051d27SRobert Mustacchi.El 35343051d27SRobert Mustacchi.Pp 35443051d27SRobert MustacchiThe following functions are specific to the 64-bit SPARC version of the 35543051d27SRobert Mustacchi.Nm 35643051d27SRobert Mustacchilibrary. 35743051d27SRobert Mustacchi.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 35843051d27SRobert Mustacchi.It Sy Plwp_getasrs Ta Sy Plwp_setasrs 35943051d27SRobert Mustacchi.El 36043051d27SRobert Mustacchi.Sh PROCESS STATES 36143051d27SRobert MustacchiEvery process handle that exists in 36243051d27SRobert Mustacchi.Nm 36372d3dbb9SYuri Pankovhas a state. 36472d3dbb9SYuri PankovIn some cases, such as for core files, these states are static. 36572d3dbb9SYuri PankovIn other cases, such as handles that correspond to a running process or a 36672d3dbb9SYuri Pankovcreated process, these states are dynamic and change based on actions taken in 36772d3dbb9SYuri Pankovthe library. 36872d3dbb9SYuri PankovThe state can be obtained with the 36943051d27SRobert Mustacchi.Xr Pstate 3PROC 37043051d27SRobert Mustacchifunction. 37143051d27SRobert Mustacchi.Pp 37243051d27SRobert MustacchiThe various states are: 37343051d27SRobert Mustacchi.Bl -tag -width Dv -offset indent 37443051d27SRobert Mustacchi.It Dv PS_RUN 37572d3dbb9SYuri PankovAn actively running process. 37672d3dbb9SYuri PankovThis may be a process that was obtained by creating it with functions such as 37743051d27SRobert Mustacchi.Xr Pcreate 3PROC 37843051d27SRobert Mustacchior by grabbing an existing process such as 37943051d27SRobert Mustacchi.Xr Pgrab 3PROC . 38043051d27SRobert Mustacchi.It Dv PS_STOP 38172d3dbb9SYuri PankovAn active process that is no longer executing. 38272d3dbb9SYuri PankovA process may stop for many reasons such as an explicit stop request (through 38343051d27SRobert Mustacchi.Xr pstop 1 38443051d27SRobert Mustacchifor example) or if a tracing event is hit. 38543051d27SRobert Mustacchi.Pp 38643051d27SRobert MustacchiThe reason a process is stopped may be obtained through the thread's 3877dfe7b8bSJason King.Vt lwpstatus_t 38843051d27SRobert Mustacchistructure read directly from /proc or obtained through the 38943051d27SRobert Mustacchi.Xr Lstatus 3PROC 39043051d27SRobert Mustacchifunction. 39143051d27SRobert Mustacchi.It Dv PS_LOST 39272d3dbb9SYuri PankovControl over the process has been lost. 39372d3dbb9SYuri PankovThis may happen when the process executes a new image requiring a different set 39472d3dbb9SYuri Pankovof privileges. 39543051d27SRobert MustacchiTo resume control call 39672d3dbb9SYuri Pankov.Xr Preopen 3PROC . 39772d3dbb9SYuri PankovFor more information on losing control of a process, see 398bbf21555SRichard Lowe.Xr proc 5 . 3997dfe7b8bSJason King.It Dv PS_UNDEAD 40072d3dbb9SYuri PankovA zombie process. 40172d3dbb9SYuri PankovIt has terminated, but it has not been cleaned up yet by its parent. 40272d3dbb9SYuri PankovFor more on the conditions of becoming a zombie, see 40343051d27SRobert Mustacchi.Xr exec 2 . 4047dfe7b8bSJason King.It Dv PS_DEAD 40572d3dbb9SYuri PankovProcesses in this state are always core files. 40672d3dbb9SYuri PankovSee the earlier section 40743051d27SRobert Mustacchi.Sx Core Files 40843051d27SRobert Mustacchifor more information on working with core files. 40943051d27SRobert Mustacchi.It Dv PS_IDLE 41072d3dbb9SYuri PankovA process that has never been run. 41172d3dbb9SYuri PankovThis is always the case for handles that refer to files as the files cannot be 41272d3dbb9SYuri Pankovexecuted. 41372d3dbb9SYuri PankovThose process handles are obtained through calling 41443051d27SRobert Mustacchi.Xr Pgrab_file 3PROC . 41543051d27SRobert Mustacchi.El 41643051d27SRobert Mustacchi.Pp 41743051d27SRobert MustacchiMany functions relating to tracing processes, for example 41843051d27SRobert Mustacchi.Xr Psignal 3PROC , 41943051d27SRobert Mustacchi.Xr Psetsignal 3PROC , 42043051d27SRobert Mustacchi.Xr Psetfault 3PROC , 421b31ca922SChris Fraire.Xr Psysentry 3PROC , 42243051d27SRobert Mustacchiand others, mention that they only act upon 42343051d27SRobert Mustacchi.Em Active Processes . 42443051d27SRobert MustacchiThis specifically refers to processes whose state are in 42543051d27SRobert Mustacchi.Dv PS_RUN 42643051d27SRobert Mustacchiand 42743051d27SRobert Mustacchi.Dv PS_STOP . 42843051d27SRobert MustacchiProcess handles in the other states have no notion of settable tracing 42943051d27SRobert Mustacchiflags, though core files 4307dfe7b8bSJason King.Pq type Dv PS_DEAD 43143051d27SRobert Mustacchimay have a read-only snapshot of their tracing settings available. 43243051d27SRobert Mustacchi.Sh TYPES 43343051d27SRobert MustacchiThe 43443051d27SRobert Mustacchi.Nm 43543051d27SRobert Mustacchilibrary uses many types that come from the /proc file system 436bbf21555SRichard Lowe.Pq Xr proc 5 43743051d27SRobert Mustacchiand the ELF format 4387dfe7b8bSJason King.Pq Xr elf 3ELF . 43943051d27SRobert MustacchiHowever, it also defines the following types: 44043051d27SRobert Mustacchi.Pp 4417dfe7b8bSJason King.Vt struct ps_prochandle 44243051d27SRobert Mustacchi.Pp 44343051d27SRobert MustacchiThe 4447dfe7b8bSJason King.Vt struct ps_prochandle 44543051d27SRobert Mustacchiis an opaque handle to the library and the core element of control for a 44672d3dbb9SYuri Pankovprocess. 44772d3dbb9SYuri PankovConsumers obtain pointers to a handle through the use of the 44843051d27SRobert Mustacchi.Fn Pcreate , 44943051d27SRobert Mustacchi.Fn Pgrab , 45072d3dbb9SYuri Pankovand related functions. 45172d3dbb9SYuri PankovWhen a caller is done with a handle, then it should call one of the 45243051d27SRobert Mustacchi.Fn Pfree 45343051d27SRobert Mustacchiand 45443051d27SRobert Mustacchi.Fn Prelease 45543051d27SRobert Mustacchifunctions to relinquish the handle, release associated resources, and 45643051d27SRobert Mustacchipotentially set the process to run again. 45743051d27SRobert Mustacchi.Pp 4587dfe7b8bSJason King.Vt struct ps_lwphandle 45943051d27SRobert Mustacchi.Pp 46043051d27SRobert MustacchiThe 4617dfe7b8bSJason King.Vt struct ps_lwphandle 46243051d27SRobert Mustacchiis analogous to the 4637dfe7b8bSJason King.Vt struct ps_prochandle , 46443051d27SRobert Mustacchibut it represents the control of an individual thread, rather than a 46572d3dbb9SYuri Pankovprocess. 46672d3dbb9SYuri PankovConsumers obtain pointers to a handle through the 46743051d27SRobert Mustacchi.Fn Lgrab 46843051d27SRobert Mustacchifunction and relinquish it with the 46943051d27SRobert Mustacchi.Fn Lfree 47043051d27SRobert Mustacchifunction. 47143051d27SRobert Mustacchi.Pp 4727dfe7b8bSJason King.Vt core_content_t 47343051d27SRobert Mustacchi.Pp 47443051d27SRobert MustacchiThe 4757dfe7b8bSJason King.Vt core_content_t 47643051d27SRobert Mustacchiis a value which describes the various content types of core files. 47743051d27SRobert MustacchiThese are used in functions such as 47843051d27SRobert Mustacchi.Xr Pcontent 3PROC 47943051d27SRobert Mustacchiand 48043051d27SRobert Mustacchi.Xr Pgcore 3PROC 48172d3dbb9SYuri Pankovto describe and control the types of content that get included. 48272d3dbb9SYuri PankovVarious content types may be included together through a bitwise-inclusive-OR. 48343051d27SRobert MustacchiThe default system core contents are controlled with the 484bbf21555SRichard Lowe.Xr coreadm 8 48572d3dbb9SYuri Pankovtool. 48672d3dbb9SYuri PankovThe following table lists the current set of core contents in the system, though 48772d3dbb9SYuri Pankovthe set may increase over time. 48872d3dbb9SYuri PankovThe string after the macro is the human readable string that corresponds with 48972d3dbb9SYuri Pankovthe constant and is used by 490bbf21555SRichard Lowe.Xr coreadm 8 , 49143051d27SRobert Mustacchi.Xr proc_content2str 3PROC , 49243051d27SRobert Mustacchiand 49343051d27SRobert Mustacchi.Xr proc_str2content 3PROC . 49443051d27SRobert Mustacchi.Bl -tag -offset indent -width indent 49543051d27SRobert Mustacchi.It Dv CC_CONTENT_STACK ("stack") 49672d3dbb9SYuri PankovThe contents include the process stack. 49772d3dbb9SYuri PankovNote, this only covers the main thread's stack. 49872d3dbb9SYuri PankovThe stack of other threads is covered by 49943051d27SRobert Mustacchi.Dv CC_CONTENT_ANON . 50043051d27SRobert Mustacchi.It Dv CC_CONTENT_HEAP ("heap") 50143051d27SRobert MustacchiThe contents include the process heap. 50243051d27SRobert Mustacchi.It Dv CC_CONTENT_SHFILE ("shfile") 50343051d27SRobert MustacchiThe contents include shared mappings that are backed by files (e.g. 50443051d27SRobert Mustacchimapped through 50543051d27SRobert Mustacchi.Xr mmap 2 50643051d27SRobert Mustacchiwith the 50743051d27SRobert Mustacchi.Dv MAP_SHARED 50843051d27SRobert Mustacchiflag). 50943051d27SRobert Mustacchi.It Dv CC_CONTENT_SHANNON ("shannon") 51043051d27SRobert MustacchiThe contents include shared mappings that are backed by anonymous memory 51143051d27SRobert Mustacchi(e.g. mapped through 51243051d27SRobert Mustacchi.Xr mmap 2 51343051d27SRobert Mustacchiwith the 51443051d27SRobert Mustacchi.Dv MAP_SHARED 51543051d27SRobert Mustacchiand 51643051d27SRobert Mustacchi.Dv MAP_ANON 51743051d27SRobert Mustacchiflags). 51843051d27SRobert Mustacchi.It Dv CC_CONTENT_RODATA ("rodata") 51943051d27SRobert MustacchiThe contents include private read-only file mappings, such as shared 52043051d27SRobert Mustacchilibrary text. 52143051d27SRobert Mustacchi.It Dv CC_CONTENT_ANON ("anon") 52272d3dbb9SYuri PankovThe contents include private anonymous mappings. 52372d3dbb9SYuri PankovThis includes the stacks of threads which are not the main thread. 52443051d27SRobert Mustacchi.It Dv CC_CONTENT_SHM ("shm") 52543051d27SRobert MustacchiThe contents include system V shared memory. 52643051d27SRobert Mustacchi.It Dv CC_CONTENT_ISM ("ism") 52743051d27SRobert MustacchiThe contents include ISM (intimate shared memory) mappings. 52843051d27SRobert Mustacchi.It Dv CC_CONTENT_DISM ("dism") 52943051d27SRobert MustacchiThe contents include DISM (dynamic shared memory) mappings. 53043051d27SRobert Mustacchi.It Dv CC_CONTENT_CTF ("ctf") 53143051d27SRobert MustacchiThe contents include 532bbf21555SRichard Lowe.Xr ctf 5 53372d3dbb9SYuri Pankov(Compact C Type Format) information. 53472d3dbb9SYuri PankovNote, not all objects in the process may have CTF information available. 53543051d27SRobert Mustacchi.It Dv CC_CONTENT_SYMTAB ("symtab") 53672d3dbb9SYuri PankovThe contents include the symbol table. 53772d3dbb9SYuri PankovNote, not all objects in the process may have a symbol table available. 53843051d27SRobert Mustacchi.It Dv CC_CONTENT_ALL ("all") 53943051d27SRobert MustacchiThis value indicates that all of the above content values are present. 54043051d27SRobert MustacchiNote that additional values may be added in the future, in which case 54172d3dbb9SYuri Pankovthe value of the symbol will be updated to include them. 54272d3dbb9SYuri PankovComparisons with 54343051d27SRobert Mustacchi.Dv CC_CONTENT_ALL 54443051d27SRobert Mustacchishould validate all the expected bits are set by an expression such as 54543051d27SRobert Mustacchi.Li (c & CC_CONTENT_ALL) == CC_CONTENT_ALL . 54643051d27SRobert Mustacchi.It Dv CC_CONTENT_NONE ("none") 54743051d27SRobert MustacchiThis value indicates that there is no content present. 54843051d27SRobert Mustacchi.It Dv CC_CONTENT_DEFAULT ("default") 54943051d27SRobert MustacchiThe content includes the following set of default values: 55043051d27SRobert Mustacchi.Dv CC_CONTENT_STACK , 55143051d27SRobert Mustacchi.Dv CC_CONTENT_HEAP , 55243051d27SRobert Mustacchi.Dv CC_CONTENT_ISM , 55343051d27SRobert Mustacchi.Dv CC_CONTENT_DISM , 55443051d27SRobert Mustacchi.Dv CC_CONTENT_SHM , 55543051d27SRobert Mustacchi.Dv CC_CONTENT_SHANON , 55643051d27SRobert Mustacchi.Dv CC_CONTENT_TEXT , 55743051d27SRobert Mustacchi.Dv CC_CONTENT_DATA , 55843051d27SRobert Mustacchi.Dv CC_CONTENT_RODATA , 55943051d27SRobert Mustacchi.Dv CC_CONTENT_ANON , 56043051d27SRobert Mustacchi.Dv CC_CONTENT_CTF , 56143051d27SRobert Mustacchiand 56243051d27SRobert Mustacchi.Dv CC_CONTENT_SYMTAB . 56372d3dbb9SYuri PankovNote that the default may change. 56472d3dbb9SYuri PankovComparisons with CC_CONTENT_DEFAULT should validate that all of the expected 56572d3dbb9SYuri Pankovbits are set with an expression such as 56643051d27SRobert Mustacchi.Li (c\ &\ CC_CONTENT_DEFAULT)\ ==\ CC_CONTENT_DEFAULT . 56743051d27SRobert Mustacchi.It Dv CC_CONTENT_INVALID 56843051d27SRobert MustacchiThis indicates that the contents are invalid. 56943051d27SRobert Mustacchi.El 57043051d27SRobert Mustacchi.Pp 5717dfe7b8bSJason King.Vt prfdinfo_t 57243051d27SRobert Mustacchi.Pp 57343051d27SRobert MustacchiThe 5747dfe7b8bSJason King.Vt prfdinfo_t 57543051d27SRobert Mustacchistructure is used with the 576a02120c4SAndy Fiddaman.Fn Pfdinfo_iter , 577a02120c4SAndy Fiddaman.Fn proc_fdwalk , 578a02120c4SAndy Fiddaman.Fn proc_fdinfowalk 579a02120c4SAndy Fiddamanand 580a02120c4SAndy Fiddaman.Fn proc_get_fdinfo 581a02120c4SAndy Fiddamanfunctions and describes information about a file descriptor. 58272d3dbb9SYuri PankovThe structure is defined as follows: 58343051d27SRobert Mustacchi.Bd -literal 58443051d27SRobert Mustacchitypedef struct prfdinfo { 585a02120c4SAndy Fiddaman int pr_fd; /* file descriptor number */ 586a02120c4SAndy Fiddaman mode_t pr_mode; /* (see st_mode in stat(2)) */ 587a02120c4SAndy Fiddaman ino64_t pr_ino; /* inode number */ 588a02120c4SAndy Fiddaman off64_t pr_size; /* file size */ 589a02120c4SAndy Fiddaman off64_t pr_offset; /* current offset */ 590a02120c4SAndy Fiddaman uid_t pr_uid; /* owner's user id */ 591a02120c4SAndy Fiddaman gid_t pr_gid; /* owner's group id */ 592a02120c4SAndy Fiddaman major_t pr_major; /* major number of device */ 593a02120c4SAndy Fiddaman minor_t pr_minor; /* minor number of device */ 594a02120c4SAndy Fiddaman major_t pr_rmajor; /* major number (if special file) */ 595a02120c4SAndy Fiddaman minor_t pr_rminor; /* minor number (if special file) */ 596a02120c4SAndy Fiddaman int pr_fileflags; /* (see F_GETXFL in fcntl(2)) */ 597a02120c4SAndy Fiddaman int pr_fdflags; /* (see F_GETFD in fcntl(2)) */ 598a02120c4SAndy Fiddaman short pr_locktype; /* (see F_GETLK in fcntl(2)) */ 599a02120c4SAndy Fiddaman pid_t pr_lockpid; /* process holding file lock */ 600a02120c4SAndy Fiddaman int pr_locksysid; /* sysid of locking process */ 601a02120c4SAndy Fiddaman pid_t pr_peerpid; /* peer process (socket, door) */ 602a02120c4SAndy Fiddaman int pr_filler[25]; /* reserved for future use */ 603a02120c4SAndy Fiddaman char pr_peername[PRFNSZ]; /* peer process name */ 604a02120c4SAndy Fiddaman#if __STDC_VERSION__ >= 199901L 605a02120c4SAndy Fiddaman uint8_t pr_misc[]; /* self describing structures */ 606a02120c4SAndy Fiddamanelse 607a02120c4SAndy Fiddaman uint8_t pr_misc[1]; /* self describing structures */ 608a02120c4SAndy Fiddaman#endif 60943051d27SRobert Mustacchi} prfdinfo_t; 61043051d27SRobert Mustacchi.Ed 61143051d27SRobert Mustacchi.Pp 61243051d27SRobert MustacchiThe structure has similar information to that found in the 61343051d27SRobert Mustacchi.Sy stat 61443051d27SRobert Mustacchistructure that's used as part of the stat family of system calls, 61543051d27SRobert Mustacchidefined in 61643051d27SRobert Mustacchi.Xr stat 2 . 61743051d27SRobert MustacchiThe member 61843051d27SRobert Mustacchi.Sy pr_fd 61972d3dbb9SYuri Pankovcontains the number of the file descriptor of the file. 62072d3dbb9SYuri PankovThe members 6217dfe7b8bSJason King.Fa pr_mode , 6227dfe7b8bSJason King.Fa pr_uid , 6237dfe7b8bSJason King.Fa pr_gid , 6247dfe7b8bSJason King.Fa pr_ino , 62543051d27SRobert Mustacchiand 6267dfe7b8bSJason King.Fa pr_size 62743051d27SRobert Mustacchiare the same as the members 6287dfe7b8bSJason King.Fa st_mode , 6297dfe7b8bSJason King.Fa st_uid , 6307dfe7b8bSJason King.Fa st_gid , 6317dfe7b8bSJason King.Fa st_ino , 63243051d27SRobert Mustacchiand 6337dfe7b8bSJason King.Fa st_size 63443051d27SRobert Mustacchiin the 6357dfe7b8bSJason King.Fa stat 63643051d27SRobert Mustacchistructure. 63743051d27SRobert Mustacchi.Pp 63843051d27SRobert MustacchiThe 6397dfe7b8bSJason King.Fa pr_major 64043051d27SRobert Mustacchiand 6417dfe7b8bSJason King.Fa pr_minor 64243051d27SRobert Mustacchimembers contain the major and minor numbers of the device containing the 64372d3dbb9SYuri Pankovdirectory for this file. 64472d3dbb9SYuri PankovThis is similar to the 6457dfe7b8bSJason King.Fa st_dev 64643051d27SRobert Mustacchimember of the 6477dfe7b8bSJason King.Vt stat 64843051d27SRobert Mustacchistructure, except that it is broken out into its major and minor components. 64943051d27SRobert MustacchiThe 6507dfe7b8bSJason King.Fa pr_rmajor 65143051d27SRobert Mustacchiand 6527dfe7b8bSJason King.Fa pr_rminor 65343051d27SRobert Mustacchimembers are similar in spirit to 6547dfe7b8bSJason King.Fa pr_major 65543051d27SRobert Mustacchiand 6567dfe7b8bSJason King.Fa pr_minor ; 65743051d27SRobert Mustacchihowever, they are equivalent to the 6587dfe7b8bSJason King.Fa st_rdev 65943051d27SRobert Mustacchimember of the 6607dfe7b8bSJason King.Vt stat 66143051d27SRobert Mustacchistructure and thus have meaning for special character and block files. 66243051d27SRobert Mustacchi.Pp 66343051d27SRobert MustacchiThe 6647dfe7b8bSJason King.Fa pr_offset 66572d3dbb9SYuri Pankovmember contains the current seek offset of the file descriptor. 66672d3dbb9SYuri PankovThe 6677dfe7b8bSJason King.Fa pr_fileflags 66843051d27SRobert Mustacchiand 6697dfe7b8bSJason King.Fa pr_fdflags 67043051d27SRobert Mustacchimembers contain the flags that would have been returned by a call to 67143051d27SRobert Mustacchi.Xr fcntl 2 67243051d27SRobert Mustacchiwith the arguments 67343051d27SRobert Mustacchi.Dv F_GETXFL 67443051d27SRobert Mustacchiand 67543051d27SRobert Mustacchi.Dv F_GETFD 67643051d27SRobert Mustacchirespectively. 67743051d27SRobert Mustacchi.Pp 678a02120c4SAndy FiddamanThe 679a02120c4SAndy Fiddaman.Fa pr_locktype , 680a02120c4SAndy Fiddaman.Fa pr_lockpid , 681a02120c4SAndy Fiddamanand 682a02120c4SAndy Fiddaman.Fa pr_locksysid 683a02120c4SAndy Fiddamancontain the information that would have been returned by a call to 684a02120c4SAndy Fiddaman.Xr fcntl 2 685a02120c4SAndy Fiddamanwith an argument of 686a02120c4SAndy Fiddaman.Dv F_GETLK . 687a02120c4SAndy Fiddaman.Pp 688a02120c4SAndy FiddamanThe 689a02120c4SAndy Fiddaman.Fa pr_peerpid 690a02120c4SAndy Fiddamanand 691a02120c4SAndy Fiddaman.Fa pr_peername 692a02120c4SAndy Fiddamanmembers contain the process ID and name of any peer endpoint of a 693a02120c4SAndy Fiddamanconnection-oriented socket or stream fd. 694a02120c4SAndy FiddamanThis information is the same as that which would be returned by a call to 695a02120c4SAndy Fiddaman.Xr getpeerucred 3C 696a02120c4SAndy Fiddaman.Pp 697a02120c4SAndy FiddamanThe 698a02120c4SAndy Fiddaman.Fa pr_misc 699a02120c4SAndy Fiddamanmember contains miscellaneous additional data relating to the file descriptor. 700a02120c4SAndy FiddamanThe format of these data is described in 701bbf21555SRichard Lowe.Xr proc 5 . 702a02120c4SAndy Fiddaman.Pp 7037dfe7b8bSJason King.Vt prsyminfo_t 70443051d27SRobert Mustacchi.Pp 70543051d27SRobert MustacchiThe 7067dfe7b8bSJason King.Vt prsyminfo_t 70743051d27SRobert Mustacchistructure is used with the various symbol look up functions 70843051d27SRobert Mustacchi.Fn Pxlookup_by_name , 70943051d27SRobert Mustacchi.Fn Pxlookup_by_addr , 71043051d27SRobert Mustacchiand 71143051d27SRobert Mustacchi.Fn Pxlookup_by_addr_resolved 71243051d27SRobert Mustacchiwhich describes additional information about a symbol. 71343051d27SRobert MustacchiThe structure is defined as follows: 71443051d27SRobert Mustacchi.Bd -literal 71543051d27SRobert Mustacchitypedef struct prsyminfo { 71643051d27SRobert Mustacchi const char *prs_object; /* object name */ 71743051d27SRobert Mustacchi const char *prs_name; /* symbol name */ 71843051d27SRobert Mustacchi Lmid_t prs_lmid; /* link map id */ 71943051d27SRobert Mustacchi uint_t prs_id; /* symbol id */ 72043051d27SRobert Mustacchi uint_t prs_table; /* symbol table id */ 72143051d27SRobert Mustacchi} prsyminfo_t; 72243051d27SRobert Mustacchi.Ed 72343051d27SRobert Mustacchi.Pp 72443051d27SRobert MustacchiThe member 7257dfe7b8bSJason King.Fa prs_object 72643051d27SRobert Mustacchipoints to a string that contains the name of the object file, if known, 72772d3dbb9SYuri Pankovthat the symbol comes from. 72872d3dbb9SYuri PankovThe member 7297dfe7b8bSJason King.Fa prs_name 73072d3dbb9SYuri Pankovpoints to the name of the symbol, if known. 73172d3dbb9SYuri PankovThis may be unknown due to a stripped binary that contains no symbol table. 73272d3dbb9SYuri PankovThe member 7337dfe7b8bSJason King.Fa prs_lmid 73472d3dbb9SYuri Pankovindicates the link map identifier that the symbol was found on. 73572d3dbb9SYuri PankovFor more information on link map identifiers refer to the 7367dfe7b8bSJason King.%B Linker and Libraries Guide 73743051d27SRobert Mustacchiand 73843051d27SRobert Mustacchi.Xr dlopen 3C . 73943051d27SRobert Mustacchi.Pp 74043051d27SRobert MustacchiThe members 7417dfe7b8bSJason King.Fa prs_id 74243051d27SRobert Mustacchiand 7437dfe7b8bSJason King.Fa prs_table 74443051d27SRobert Mustacchican be used to determine both the symbol table that the entry came from 74572d3dbb9SYuri Pankovand which entry in the table it corresponds to. 74672d3dbb9SYuri PankovIf the value of 7477dfe7b8bSJason King.Fa prs_table 74843051d27SRobert Mustacchiis 74943051d27SRobert Mustacchi.Dv PR_SYMTAB 75072d3dbb9SYuri Pankovthen it came from the ELF standard symbol table. 75172d3dbb9SYuri PankovHowever, if it is instead 75243051d27SRobert Mustacchi.Dv PR_DYNSYM , 75343051d27SRobert Mustacchithen that indicates that it comes from the process's dynamic section. 75443051d27SRobert Mustacchi.Pp 7557dfe7b8bSJason King.Vt proc_lwp_f 75643051d27SRobert Mustacchi.Pp 75743051d27SRobert MustacchiThe 7587dfe7b8bSJason King.Vt proc_lwp_f 75943051d27SRobert Mustacchiis a function pointer type that is used with the 76043051d27SRobert Mustacchi.Fn Plwp_iter 76172d3dbb9SYuri Pankovfunction. 76272d3dbb9SYuri PankovIt is defined as 76343051d27SRobert Mustacchi.Sy typedef 76443051d27SRobert Mustacchi.Ft int 76543051d27SRobert Mustacchi.Fo proc_lwp_f 76643051d27SRobert Mustacchi.Fa "void *" 76743051d27SRobert Mustacchi.Fa "const lwpstatus_t *" 76843051d27SRobert Mustacchi.Fc . 76943051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies, 77043051d27SRobert Mustacchiwhile the second has the thread's status information and is defined in 771bbf21555SRichard Lowe.Xr proc 5 . 77243051d27SRobert MustacchiFor additional information on using this type, see 77343051d27SRobert Mustacchi.Xr Plwp_iter 3PROC . 77443051d27SRobert Mustacchi.Pp 7757dfe7b8bSJason King.Vt proc_lwp_all_f 77643051d27SRobert Mustacchi.Pp 77743051d27SRobert MustacchiThe 7787dfe7b8bSJason King.Vt proc_lwp_all_f 77943051d27SRobert Mustacchiis a function pointer type that is used with the 78043051d27SRobert Mustacchi.Fn Plwp_iter_all 78172d3dbb9SYuri Pankovfunction. 78272d3dbb9SYuri PankovIt is defined as 78343051d27SRobert Mustacchi.Sy typedef 78443051d27SRobert Mustacchi.Ft int 78543051d27SRobert Mustacchi.Fo proc_lwp_all_f 78643051d27SRobert Mustacchi.Fa "void *" 78743051d27SRobert Mustacchi.Fa "const lwpstatus_t *" 78843051d27SRobert Mustacchi.Fa "const lwpsinfo_t *" 78943051d27SRobert Mustacchi.Fc . 79043051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies. 79143051d27SRobert MustacchiThe second and third arguments contain the thread's status and 79243051d27SRobert Mustacchithread-specific 79343051d27SRobert Mustacchi.Xr ps 1 79472d3dbb9SYuri Pankovinformation respectively. 79572d3dbb9SYuri PankovBoth structures are defined in 796bbf21555SRichard Lowe.Xr proc 5 . 79743051d27SRobert MustacchiFor additional information on using this type, see 79843051d27SRobert Mustacchi.Xr Plwp_iter_all 3PROC . 79943051d27SRobert Mustacchi.Pp 800a02120c4SAndy Fiddaman.Vt proc_fdinfowalk_f 801a02120c4SAndy Fiddaman.Pp 802a02120c4SAndy FiddamanThe 803a02120c4SAndy Fiddaman.Vt proc_fdinfowalk_f 804a02120c4SAndy Fiddamanis a function pointer type that is used with the 805a02120c4SAndy Fiddaman.Fn proc_fdinfowalk 806a02120c4SAndy Fiddamanfunction to walk the miscellaneous data items contained within a 807a02120c4SAndy Fiddaman.Vt prfdinfo_t 808a02120c4SAndy Fiddamanstructure. 809a02120c4SAndy FiddamanIt is defined as 810a02120c4SAndy Fiddaman.Sy typedef 811a02120c4SAndy Fiddaman.Ft int 812a02120c4SAndy Fiddaman.Fo proc_fdinfowalk_f 813a02120c4SAndy Fiddaman.Fa "uint_t" 814a02120c4SAndy Fiddaman.Fa "const void *" 815a02120c4SAndy Fiddaman.Fa "size_t" 816a02120c4SAndy Fiddaman.Fa "void *" 817a02120c4SAndy Fiddaman.Fc . 818a02120c4SAndy FiddamanThe first argument contains the type of the miscellaneous information being 819a02120c4SAndy Fiddamanpresented, the second and third provide a pointer to the associated data and 820a02120c4SAndy Fiddamanthe length of that data. 821a02120c4SAndy FiddamanThe final argument is a pointer to an argument that the user specifies. 822a02120c4SAndy FiddamanFor more information on using this, see 823a02120c4SAndy Fiddaman.Xr proc_fdinfowalk 3PROC . 824a02120c4SAndy Fiddaman.Pp 825a02120c4SAndy Fiddaman.Vt proc_fdwalk_f 826a02120c4SAndy Fiddaman.Pp 827a02120c4SAndy FiddamanThe 828a02120c4SAndy Fiddaman.Vt proc_fdwalk_f 829a02120c4SAndy Fiddamanis a function pointer type that is used with the 830a02120c4SAndy Fiddaman.Fn proc_fdwalk 831a02120c4SAndy Fiddamanfunction. 832a02120c4SAndy FiddamanIt is defined as 833a02120c4SAndy Fiddaman.Sy typedef 834a02120c4SAndy Fiddaman.Ft int 835a02120c4SAndy Fiddaman.Fo proc_fdwalk_f 836a02120c4SAndy Fiddaman.Fa "const prfdinfo_t *" 837a02120c4SAndy Fiddaman.Fa "void *" 838a02120c4SAndy Fiddaman.Fc . 839a02120c4SAndy FiddamanThe first argument contains the file descriptor information. 840a02120c4SAndy FiddamanThe 841a02120c4SAndy Fiddaman.Sy prfdinfo_t 842a02120c4SAndy Fiddamanstructure is defined in 843bbf21555SRichard Lowe.Xr proc 5 . 844a02120c4SAndy FiddamanThe final argument is a pointer to an argument that the user specifies. 845a02120c4SAndy FiddamanFor more information on using this, see 846a02120c4SAndy Fiddaman.Xr proc_fdwalk 3PROC . 847a02120c4SAndy Fiddaman.Pp 8487dfe7b8bSJason King.Vt proc_walk_f 84943051d27SRobert Mustacchi.Pp 85043051d27SRobert MustacchiThe 8517dfe7b8bSJason King.Vt proc_walk_f 85243051d27SRobert Mustacchiis a function pointer type that is used with the 85343051d27SRobert Mustacchi.Fn proc_walk 85472d3dbb9SYuri Pankovfunction. 85572d3dbb9SYuri PankovIt is defined as 85643051d27SRobert Mustacchi.Sy typedef 85743051d27SRobert Mustacchi.Ft int 85843051d27SRobert Mustacchi.Fo proc_walk_f 85943051d27SRobert Mustacchi.Fa "psinfo_t *" 86043051d27SRobert Mustacchi.Fa "lwpsinfo_t *" 86143051d27SRobert Mustacchi.Fa "void *" 86243051d27SRobert Mustacchi.Fc . 86343051d27SRobert MustacchiThe first argument contains the process 86443051d27SRobert Mustacchi.Xr ps 1 86543051d27SRobert Mustacchiinformation and the second argument contains the representative thread's 86643051d27SRobert Mustacchi.Xr ps 1 86772d3dbb9SYuri Pankovinformation. 86872d3dbb9SYuri PankovBoth structures are defined in 869bbf21555SRichard Lowe.Xr proc 5 . 87043051d27SRobert MustacchiThe final argument is a pointer to an argument that the user specifies. 87143051d27SRobert MustacchiFor more information on using this, see 87243051d27SRobert Mustacchi.Xr proc_walk 3PROC . 87343051d27SRobert Mustacchi.Pp 8747dfe7b8bSJason King.Vt proc_map_f 87543051d27SRobert Mustacchi.Pp 87643051d27SRobert MustacchiThe 8777dfe7b8bSJason King.Vt proc_map_f 87843051d27SRobert Mustacchiis a function pointer type that is used with the 87943051d27SRobert Mustacchi.Fn Pmapping_iter , 88043051d27SRobert Mustacchi.Fn Pmapping_iter_resolved , 88143051d27SRobert Mustacchi.Fn Pobject_iter , 88243051d27SRobert Mustacchiand 88343051d27SRobert Mustacchi.Fn Pobject_iter_resolved 88472d3dbb9SYuri Pankovfunctions. 88572d3dbb9SYuri PankovIt is defined as 88643051d27SRobert Mustacchi.Sy typedef 88743051d27SRobert Mustacchi.Ft int 88843051d27SRobert Mustacchi.Fo proc_map_f 88943051d27SRobert Mustacchi.Fa "void *" 89043051d27SRobert Mustacchi.Fa "const prmap_t *" 89143051d27SRobert Mustacchi.Fa "const char *" 89243051d27SRobert Mustacchi.Fc . 89343051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies. 89443051d27SRobert MustacchiThe second argument is describes the mapping information and is defined 89543051d27SRobert Mustacchiin 896bbf21555SRichard Lowe.Xr proc 5 . 89743051d27SRobert MustacchiThe final argument contains the name of the mapping or object file in 89872d3dbb9SYuri Pankovquestion. 89972d3dbb9SYuri PankovFor additional information on using this type, see 90043051d27SRobert Mustacchi.Xr Pmapping_iter 3PROC . 90143051d27SRobert Mustacchi.Pp 9027dfe7b8bSJason King.Vt proc_env_f 90343051d27SRobert Mustacchi.Pp 90443051d27SRobert MustacchiThe 9057dfe7b8bSJason King.Vt proc_env_f 90643051d27SRobert Mustacchiis a function pointer type that is used with the 90743051d27SRobert Mustacchi.Fn Penv_iter 90872d3dbb9SYuri Pankovfunction. 90972d3dbb9SYuri PankovIt is defined as 91043051d27SRobert Mustacchi.Sy typedef 91143051d27SRobert Mustacchi.Ft int 91243051d27SRobert Mustacchi.Fo proc_env_f 91343051d27SRobert Mustacchi.Fa "void *" 91443051d27SRobert Mustacchi.Fa "struct ps_prochandle *" 91543051d27SRobert Mustacchi.Fa "uintptr_t" 91643051d27SRobert Mustacchi.Fa "const char *" 91743051d27SRobert Mustacchi.Fc . 91843051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies. 91943051d27SRobert MustacchiThe second argument is a pointer to the 9207dfe7b8bSJason King.Vt struct ps_prochandle 92172d3dbb9SYuri Pankovthat the callback was passed to. 92272d3dbb9SYuri PankovThe third argument is the address of the environment variable in the process. 92372d3dbb9SYuri PankovThe fourth argument is the environment variable. 92472d3dbb9SYuri PankovValues in the environment follow the convention of the form 92543051d27SRobert Mustacchi.Em variable=value . 92643051d27SRobert MustacchiFor more information on environment variables see 92743051d27SRobert Mustacchi.Xr exec 2 92843051d27SRobert Mustacchiand 929bbf21555SRichard Lowe.Xr environ 7 . 93043051d27SRobert MustacchiFor additional information on using this type, see 93143051d27SRobert Mustacchi.Xr Penv_iter 3PROC . 93243051d27SRobert Mustacchi.Pp 9337dfe7b8bSJason King.Vt proc_sym_f 93443051d27SRobert Mustacchi.Pp 93543051d27SRobert MustacchiThe 9367dfe7b8bSJason King.Vt proc_sym_f 93743051d27SRobert Mustacchiis a function pointer type that is used with the 93843051d27SRobert Mustacchi.Fn Psmbol_iter , 93943051d27SRobert Mustacchi.Fn Psymbol_iter_by_addr , 94043051d27SRobert Mustacchi.Fn Psymbol_iter_by_name , 94143051d27SRobert Mustacchiand 94243051d27SRobert Mustacchi.Fn Psymbol_iter_by_lmid 94372d3dbb9SYuri Pankovfunctions. 94472d3dbb9SYuri PankovIt is defined as 94543051d27SRobert Mustacchi.Sy typedef 94643051d27SRobert Mustacchi.Ft int 94743051d27SRobert Mustacchi.Fo proc_sym_f 94843051d27SRobert Mustacchi.Fa "void *" 94943051d27SRobert Mustacchi.Fa "const GElf_Sym *" 95043051d27SRobert Mustacchi.Fa "const char *" 95143051d27SRobert Mustacchi.Fc . 95243051d27SRobert MustacchiThe first argument is a pointer to an argument that the user supplies. 95343051d27SRobert MustacchiThe second argument is a pointer to the ELF symbol information in a 95472d3dbb9SYuri Pankov32-bit and 64-bit neutral form. 95572d3dbb9SYuri PankovSee 95643051d27SRobert Mustacchi.Xr elf 3ELF 95743051d27SRobert Mustacchiand 95843051d27SRobert Mustacchi.Xr gelf 3ELF 95972d3dbb9SYuri Pankovfor more information on it. 96072d3dbb9SYuri PankovThe final argument points to a character string that has the name of the symbol. 96172d3dbb9SYuri PankovFor additional information on using this type, see 96243051d27SRobert Mustacchi.Xr Psymbol_iter 3PROC , 96343051d27SRobert Mustacchi.Xr Psymbol_iter_by_addr 3PROC , 96443051d27SRobert Mustacchi.Xr Psymbol_iter_by_name 3PROC , 96543051d27SRobert Mustacchiand 96643051d27SRobert Mustacchi.Xr Psymbol_iter_by_lmid 3PROC . 96743051d27SRobert Mustacchi.Pp 9687dfe7b8bSJason King.Vt proc_xsym_f 96943051d27SRobert Mustacchi.Pp 97043051d27SRobert MustacchiThe 9717dfe7b8bSJason King.Vt proc_xsym_f 97243051d27SRobert Mustacchiis a function pointer type that is used with the 97343051d27SRobert Mustacchi.Fn Pxsymbol_iter 97472d3dbb9SYuri Pankovfunction. 97572d3dbb9SYuri PankovIt is defined as 97643051d27SRobert Mustacchi.Sy typedef 97743051d27SRobert Mustacchi.Ft int 97843051d27SRobert Mustacchi.Fo proc_xsym_f 97943051d27SRobert Mustacchi.Fa "void *" 98043051d27SRobert Mustacchi.Fa "const GElf_Sym *" 98143051d27SRobert Mustacchi.Fa "const char *" 98243051d27SRobert Mustacchi.Fa "const prsyminfo_t *" 98343051d27SRobert Mustacchi.Fc . 98443051d27SRobert MustacchiThe first three arguments are identical to those of 9857dfe7b8bSJason King.Vt proc_sym_f . 98643051d27SRobert MustacchiThe final argument contains additional information about the symbol 98772d3dbb9SYuri Pankovitself. 98872d3dbb9SYuri PankovThe members of the 9897dfe7b8bSJason King.Vt prsyminfo_t 99072d3dbb9SYuri Pankovare defined earlier in this section. 99172d3dbb9SYuri PankovFor additional information on using this type, see 99243051d27SRobert Mustacchi.Xr Pxsymbol_iter 3PROC . 99343051d27SRobert Mustacchi.Pp 9947dfe7b8bSJason King.Vt proc_stack_f 99543051d27SRobert Mustacchi.Pp 99643051d27SRobert MustacchiThe 9977dfe7b8bSJason King.Vt proc_stack_f 99843051d27SRobert Mustacchiis a function pointer type that is used with the 99943051d27SRobert Mustacchi.Fn Pstack_iter 100072d3dbb9SYuri Pankovfunction. 100172d3dbb9SYuri PankovIt is defined as 100243051d27SRobert Mustacchi.Sy typedef 100343051d27SRobert Mustacchi.Ft int 100443051d27SRobert Mustacchi.Fo proc_stack_f 100543051d27SRobert Mustacchi.Fa "void *" 100643051d27SRobert Mustacchi.Fa "prgregset_t" 100743051d27SRobert Mustacchi.Fa "uint_t" 100843051d27SRobert Mustacchi.Fa "const long *" 100943051d27SRobert Mustacchi.Fc . 101043051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies. 101172d3dbb9SYuri PankovThe second argument's contents are platform specific. 101272d3dbb9SYuri PankovThe registers that contain stack information, usually the stack pointer and 101372d3dbb9SYuri Pankovframe pointer, will be filled in to point to an entry. 101472d3dbb9SYuri PankovThe 10157dfe7b8bSJason King.Vt prgregset_t 101643051d27SRobert Mustacchiis defined in 1017bbf21555SRichard Lowe.Xr proc 5 . 101843051d27SRobert Mustacchi.Pp 101943051d27SRobert MustacchiThe third argument contains the number of arguments to the current stack 102043051d27SRobert Mustacchiframe and the fourth argument contains an array of addresses that 102172d3dbb9SYuri Pankovcorrespond to the arguments to that stack function. 102272d3dbb9SYuri PankovThe value of the third argument dictates the number of entries in the fourth 102372d3dbb9SYuri Pankovargument. 102443051d27SRobert MustacchiFor additional information on using this type, see 102543051d27SRobert Mustacchi.Xr Pstack_iter 3PROC . 102643051d27SRobert Mustacchi.Pp 10277dfe7b8bSJason King.Vt proc_fdinfo_f 102843051d27SRobert Mustacchi.Pp 102943051d27SRobert MustacchiThe 10307dfe7b8bSJason King.Vt proc_fdinfo_f 103143051d27SRobert Mustacchiis a function pointer type that is used with the 103243051d27SRobert Mustacchi.Fn Pfdinfo_iter 103372d3dbb9SYuri Pankovfunction. 103472d3dbb9SYuri PankovIt is defined as 103543051d27SRobert Mustacchi.Sy typedef 103643051d27SRobert Mustacchi.Ft int 103743051d27SRobert Mustacchi.Fo proc_fdinfo_f 103843051d27SRobert Mustacchi.Fa "void *" 103943051d27SRobert Mustacchi.Fa "prfdinfo_t *" 104043051d27SRobert Mustacchi.Fc . 104143051d27SRobert MustacchiThe first argument is a pointer to an argument that the user specifies. 104243051d27SRobert MustacchiThe second argument contains information about an open file descriptor. 104343051d27SRobert MustacchiThe members of the 10447dfe7b8bSJason King.Vt prfdinfo_t 104572d3dbb9SYuri Pankovare defined earlier in this section. 104672d3dbb9SYuri PankovFor additional information on using this type, see 104743051d27SRobert Mustacchi.Xr Pfdinfo_iter 3PROC . 104843051d27SRobert Mustacchi.Sh PROGRAMMING NOTES 104943051d27SRobert MustacchiWhen working with live processes, whether from the 105072d3dbb9SYuri Pankov.Xr Pgrab 3PROC 105143051d27SRobert Mustacchior 105272d3dbb9SYuri Pankov.Xr Pcreate 3PROC 105343051d27SRobert Mustacchifamily of functions, there are some additional considerations. 105443051d27SRobert MustacchiImportantly, if a process calls any of the 105543051d27SRobert Mustacchi.Xr exec 2 105643051d27SRobert Mustacchisuite of functions, much of the state information that is obtained, 105772d3dbb9SYuri Pankovparticularly that about mappings in the process will be invalid. 105872d3dbb9SYuri PankovCallers must ensure that they call 105943051d27SRobert Mustacchi.Xr Preset_maps 3PROC 106072d3dbb9SYuri Pankovwhen they hold a process handle across an exec. 106172d3dbb9SYuri PankovIn addition, users of the library should familiarize themselves with the 106243051d27SRobert Mustacchi.Sy PROGRAMMING NOTES 106343051d27SRobert Mustacchisection of the 1064bbf21555SRichard Lowe.Xr proc 5 106543051d27SRobert Mustacchimanual page, which discusses issues of privileges and security. 106643051d27SRobert Mustacchi.Sh DEBUGGING 106743051d27SRobert MustacchiThe library provides a means for obtaining additional debugging 106872d3dbb9SYuri Pankovinformation. 106972d3dbb9SYuri PankovThe output itself is not part of the 107043051d27SRobert Mustacchi.Nm 107172d3dbb9SYuri Pankovlibrary's stable interface. 107272d3dbb9SYuri PankovSetting the environment variable 107343051d27SRobert Mustacchi.Ev LIBPROC_DEBUG 107472d3dbb9SYuri Pankovto some value will print information to standard error. 107572d3dbb9SYuri PankovFor example, 10767dfe7b8bSJason King.Ev LIBPROC_DEBUG Ns = Ns Em please . 107743051d27SRobert Mustacchi.Sh LOCKING 107843051d27SRobert MustacchiMost functions operate on a handle to a process in the form of a 107943051d27SRobert Mustacchi.Vt "struct ps_prochandle *" . 108043051d27SRobert MustacchiUnless otherwise indicated, the library does not provide any 108143051d27SRobert Mustacchisynchronization for different routines that are operating on the 108243051d27SRobert Mustacchi.Sy same 108343051d27SRobert Mustacchi.Nm 108472d3dbb9SYuri Pankovlibrary handle. 108572d3dbb9SYuri PankovIt is up to the caller to ensure that only a single thread is using a handle at 108672d3dbb9SYuri Pankovany given time. 108772d3dbb9SYuri PankovMultiple threads may call 108843051d27SRobert Mustacchi.Nm 108943051d27SRobert Mustacchilibrary routines at the same time as long as each thread is using a 109043051d27SRobert Mustacchidifferent handle. 109143051d27SRobert Mustacchi.Pp 109243051d27SRobert MustacchiEach individual function notes its 109343051d27SRobert Mustacchi.Sy MT-Level 109472d3dbb9SYuri Pankovsection. 109572d3dbb9SYuri PankovThe MT-Level of a routine that matches the above description will refer to this 109672d3dbb9SYuri Pankovmanual page. 109772d3dbb9SYuri PankovIf it does not, then it refers to the standard attributes in 1098bbf21555SRichard Lowe.Xr attributes 7 . 109943051d27SRobert Mustacchi.Sh INTERFACE STABILITY 110043051d27SRobert Mustacchi.Sy Uncommitted 110143051d27SRobert Mustacchi.Pp 110243051d27SRobert MustacchiWhile the library is considered an uncommitted interface, and is still 110343051d27SRobert Mustacchievolving, changes that break compatibility have been uncommon and this 110472d3dbb9SYuri Pankovtrend is expected to continue. 110572d3dbb9SYuri PankovIt is documented to allow consumers, whether part of illumos or outside of it, 110611845c32SPeter Tribbleto understand the library and make use of it with the understanding that 110772d3dbb9SYuri Pankovchanges may occur which break both source and binary compatibility. 110843051d27SRobert Mustacchi.Sh SEE ALSO 110943051d27SRobert Mustacchi.Xr gcore 1 , 111043051d27SRobert Mustacchi.Xr mdb 1 , 111143051d27SRobert Mustacchi.Xr proc 1 , 111243051d27SRobert Mustacchi.Xr ps 1 , 111343051d27SRobert Mustacchi.Xr exec 2 , 111443051d27SRobert Mustacchi.Xr fcntl 2 , 111543051d27SRobert Mustacchi.Xr stat 2 , 111643051d27SRobert Mustacchi.Xr Intro 3 , 111743051d27SRobert Mustacchi.Xr dlopen 3C , 111843051d27SRobert Mustacchi.Xr elf 3ELF , 1119bbf21555SRichard Lowe.Xr ctf 5 , 1120bbf21555SRichard Lowe.Xr proc 5 , 1121bbf21555SRichard Lowe.Xr attributes 7 , 1122bbf21555SRichard Lowe.Xr environ 7 , 1123bbf21555SRichard Lowe.Xr privileges 7 , 1124bbf21555SRichard Lowe.Xr coreadm 8 112543051d27SRobert Mustacchi.Pp 112643051d27SRobert Mustacchi.Rs 112743051d27SRobert Mustacchi.%T Linkers and Libraries Guide 112843051d27SRobert Mustacchi.Re 112943051d27SRobert Mustacchi.Pp 113043051d27SRobert Mustacchi.Xr Lfree 3PROC , 113143051d27SRobert Mustacchi.Xr Lgrab 3PROC , 113243051d27SRobert Mustacchi.Xr Lgrab_error 3PROC , 113343051d27SRobert Mustacchi.Xr Pcreate 3PROC , 113443051d27SRobert Mustacchi.Xr Pcreate_agent 3PROC , 113543051d27SRobert Mustacchi.Xr Pcreate_callback 3PROC , 113643051d27SRobert Mustacchi.Xr Pcreate_error 3PROC , 113743051d27SRobert Mustacchi.Xr Pdestroy_agent 3PROC , 113843051d27SRobert Mustacchi.Xr Pfgrab_core 3PROC , 113943051d27SRobert Mustacchi.Xr Pfree 3PROC , 114043051d27SRobert Mustacchi.Xr Pgrab 3PROC , 114143051d27SRobert Mustacchi.Xr Pgrab_core 3PROC , 114243051d27SRobert Mustacchi.Xr Pgrab_error 3PROC , 114343051d27SRobert Mustacchi.Xr Pgrab_file 3PROC , 114443051d27SRobert Mustacchi.Xr Pgrab_ops 3PROC , 114543051d27SRobert Mustacchi.Xr Prelease 3PROC , 114643051d27SRobert Mustacchi.Xr Preopen 3PROC , 114743051d27SRobert Mustacchi.Xr Pxcreate 3PROC 114843051d27SRobert Mustacchi.Pp 114943051d27SRobert Mustacchi.Xr Paddr_to_ctf 3PROC , 115043051d27SRobert Mustacchi.Xr Paddr_to_loadobj 3PROC , 115143051d27SRobert Mustacchi.Xr Paddr_to_map 3PROC , 115243051d27SRobert Mustacchi.Xr Paddr_to_text_map 3PROC , 115343051d27SRobert Mustacchi.Xr Pasfd 3PROC , 115443051d27SRobert Mustacchi.Xr Pclearfault 3PROC , 115543051d27SRobert Mustacchi.Xr Pclearsig 3PROC , 115643051d27SRobert Mustacchi.Xr Pcontent 3PROC , 115743051d27SRobert Mustacchi.Xr Pcred 3PROC , 115843051d27SRobert Mustacchi.Xr Pctlfd 3PROC , 1159*f1cd2b6cSRobert Mustacchi.Xr Pcwd 3PROC , 1160*f1cd2b6cSRobert Mustacchi.Xr Pcwd_free 3PROC , 116143051d27SRobert Mustacchi.Xr Pdelbkpt 3PROC , 116243051d27SRobert Mustacchi.Xr Pdelwapt 3PROC , 116343051d27SRobert Mustacchi.Xr Pdstop 3PROC , 116443051d27SRobert Mustacchi.Xr Pexecname 3PROC , 116543051d27SRobert Mustacchi.Xr Pfault 3PROC , 116643051d27SRobert Mustacchi.Xr Pfgcore 3PROC , 116743051d27SRobert Mustacchi.Xr Pgcore 3PROC , 116843051d27SRobert Mustacchi.Xr Pgetareg 3PROC , 116943051d27SRobert Mustacchi.Xr Pgetauxval 3PROC , 117043051d27SRobert Mustacchi.Xr Pgetauxvec 3PROC , 117143051d27SRobert Mustacchi.Xr Pgetenv 3PROC , 117243051d27SRobert Mustacchi.Xr Pisprocdir 3PROC , 117343051d27SRobert Mustacchi.Xr Pissyscall_prev 3PROC , 117443051d27SRobert Mustacchi.Xr Plmid 3PROC , 117543051d27SRobert Mustacchi.Xr Plmid_to_loadobj 3PROC , 117643051d27SRobert Mustacchi.Xr Plmid_to_map 3PROC , 117743051d27SRobert Mustacchi.Xr Plookup_by_addr 3PROC , 117843051d27SRobert Mustacchi.Xr Plookup_by_name 3PROC , 117943051d27SRobert Mustacchi.Xr Plwp_alt_stack 3PROC , 118043051d27SRobert Mustacchi.Xr Plwp_getfpregs 3PROC , 118143051d27SRobert Mustacchi.Xr Plwp_getpsinfo 3PROC , 118243051d27SRobert Mustacchi.Xr Plwp_getregs 3PROC , 118343051d27SRobert Mustacchi.Xr Plwp_getspymaster 3PROC , 118443051d27SRobert Mustacchi.Xr Plwp_main_stack 3PROC , 118543051d27SRobert Mustacchi.Xr Plwp_setfpregs 3PROC , 118643051d27SRobert Mustacchi.Xr Plwp_setregs 3PROC , 118743051d27SRobert Mustacchi.Xr Plwp_stack 3PROC , 118843051d27SRobert Mustacchi.Xr Pname_to_ctf 3PROC , 118943051d27SRobert Mustacchi.Xr Pname_to_loadobj 3PROC , 119043051d27SRobert Mustacchi.Xr Pname_to_map 3PROC , 119143051d27SRobert Mustacchi.Xr Pobjname 3PROC , 119243051d27SRobert Mustacchi.Xr Pobjname_resolved 3PROC , 119343051d27SRobert Mustacchi.Xr Pplatform 3PROC , 119443051d27SRobert Mustacchi.Xr Ppltdest 3PROC , 119543051d27SRobert Mustacchi.Xr Ppriv 3PROC , 119643051d27SRobert Mustacchi.Xr Ppsinfo 3PROC , 119743051d27SRobert Mustacchi.Xr Pputareg 3PROC , 119843051d27SRobert Mustacchi.Xr Prd_agent 3PROC , 119943051d27SRobert Mustacchi.Xr Pread 3PROC , 120043051d27SRobert Mustacchi.Xr Pread_string 3PROC , 120143051d27SRobert Mustacchi.Xr Preset_maps 3PROC , 1202d2a70789SRichard Lowe.Xr Psecflags 3PROC , 120343051d27SRobert Mustacchi.Xr Psetbkpt 3PROC , 120443051d27SRobert Mustacchi.Xr Psetcred 3PROC , 120543051d27SRobert Mustacchi.Xr Psetfault 3PROC , 120643051d27SRobert Mustacchi.Xr Psetflags 3PROC , 120743051d27SRobert Mustacchi.Xr Psetpriv 3PROC , 120843051d27SRobert Mustacchi.Xr Psetrun 3PROC , 120943051d27SRobert Mustacchi.Xr Psetsignal 3PROC , 121043051d27SRobert Mustacchi.Xr Psetsysentry 3PROC , 121143051d27SRobert Mustacchi.Xr Psetsysexit 3PROC , 121243051d27SRobert Mustacchi.Xr Psetwapt 3PROC , 121343051d27SRobert Mustacchi.Xr Psetzoneid 3PROC , 121443051d27SRobert Mustacchi.Xr Psignal 3PROC , 121543051d27SRobert Mustacchi.Xr Pstate 3PROC , 121643051d27SRobert Mustacchi.Xr Pstatus 3PROC , 121743051d27SRobert Mustacchi.Xr Pstop 3PROC , 121843051d27SRobert Mustacchi.Xr Pstopstatus 3PROC , 121943051d27SRobert Mustacchi.Xr Psync 3PROC , 122043051d27SRobert Mustacchi.Xr Psysentry 3PROC , 122143051d27SRobert Mustacchi.Xr Psysexit 3PROC , 122243051d27SRobert Mustacchi.Xr Puname 3PROC , 1223350ffdd5SRobert Mustacchi.Xr Pupanic 3PROC , 1224350ffdd5SRobert Mustacchi.Xr Pupanic_free 3PROC , 122543051d27SRobert Mustacchi.Xr Punsetflags 3PROC , 122643051d27SRobert Mustacchi.Xr Pupdate_maps 3PROC , 122743051d27SRobert Mustacchi.Xr Pupdate_syms 3PROC , 122843051d27SRobert Mustacchi.Xr Pwait 3PROC , 122943051d27SRobert Mustacchi.Xr Pwrite 3PROC , 123043051d27SRobert Mustacchi.Xr Pxecbkpt 3PROC , 123143051d27SRobert Mustacchi.Xr Pxecwapt 3PROC , 123243051d27SRobert Mustacchi.Xr Pxlookup_by_addr 3PROC , 123343051d27SRobert Mustacchi.Xr Pxlookup_by_addr_resolved 3PROC , 123443051d27SRobert Mustacchi.Xr Pxlookup_by_name 3PROC , 123543051d27SRobert Mustacchi.Xr Pzonename 3PROC , 123643051d27SRobert Mustacchi.Xr Pzonepath 3PROC , 123743051d27SRobert Mustacchi.Xr Pzoneroot 3PROC 123843051d27SRobert Mustacchi.Pp 123943051d27SRobert Mustacchi.Xr Lalt_stack 3PROC , 124043051d27SRobert Mustacchi.Xr Lclearfault 3PROC , 124143051d27SRobert Mustacchi.Xr Lclearsig 3PROC , 124243051d27SRobert Mustacchi.Xr Lctlfd 3PROC , 124343051d27SRobert Mustacchi.Xr Ldstop 3PROC , 124443051d27SRobert Mustacchi.Xr Lgetareg 3PROC , 124543051d27SRobert Mustacchi.Xr Lmain_stack 3PROC , 124643051d27SRobert Mustacchi.Xr Lprochandle 3PROC , 124743051d27SRobert Mustacchi.Xr Lpsinfo 3PROC , 124843051d27SRobert Mustacchi.Xr Lputareg 3PROC , 124943051d27SRobert Mustacchi.Xr Lsetrun 3PROC , 125043051d27SRobert Mustacchi.Xr Lstack 3PROC , 125143051d27SRobert Mustacchi.Xr Lstate 3PROC , 125243051d27SRobert Mustacchi.Xr Lstatus 3PROC , 125343051d27SRobert Mustacchi.Xr Lstop 3PROC , 125443051d27SRobert Mustacchi.Xr Lsync 3PROC , 125543051d27SRobert Mustacchi.Xr Lwait 3PROC , 125643051d27SRobert Mustacchi.Xr Lxecbkpt 3PROC , 125743051d27SRobert Mustacchi.Xr Lxecwapt 3PROC 125843051d27SRobert Mustacchi.Pp 125943051d27SRobert Mustacchi.Xr pr_access 3PROC , 126043051d27SRobert Mustacchi.Xr pr_close 3PROC , 126143051d27SRobert Mustacchi.Xr pr_creat 3PROC , 126243051d27SRobert Mustacchi.Xr pr_door_info 3PROC , 126343051d27SRobert Mustacchi.Xr pr_exit 3PROC , 126443051d27SRobert Mustacchi.Xr pr_fcntl 3PROC , 126543051d27SRobert Mustacchi.Xr pr_fstat 3PROC , 126643051d27SRobert Mustacchi.Xr pr_fstat64 3PROC , 126743051d27SRobert Mustacchi.Xr pr_fstatvfs 3PROC , 126843051d27SRobert Mustacchi.Xr pr_getitimer 3PROC , 126943051d27SRobert Mustacchi.Xr pr_getpeername 3PROC , 127043051d27SRobert Mustacchi.Xr pr_getpeerucred 3PROC , 127143051d27SRobert Mustacchi.Xr pr_getprojid 3PROC , 127243051d27SRobert Mustacchi.Xr pr_getrctl 3PROC , 127343051d27SRobert Mustacchi.Xr pr_getrlimit 3PROC , 127443051d27SRobert Mustacchi.Xr pr_getrlimit64 3PROC , 127543051d27SRobert Mustacchi.Xr pr_getsockname 3PROC , 127643051d27SRobert Mustacchi.Xr pr_getsockopt 3PROC , 127743051d27SRobert Mustacchi.Xr pr_gettaskid 3PROC , 127843051d27SRobert Mustacchi.Xr pr_getzoneid 3PROC , 127943051d27SRobert Mustacchi.Xr pr_ioctl 3PROC , 128043051d27SRobert Mustacchi.Xr pr_link 3PROC , 128143051d27SRobert Mustacchi.Xr pr_llseek 3PROC , 128243051d27SRobert Mustacchi.Xr pr_lseek 3PROC , 128343051d27SRobert Mustacchi.Xr pr_lstat 3PROC , 128443051d27SRobert Mustacchi.Xr pr_lstat64 3PROC , 128543051d27SRobert Mustacchi.Xr pr_memcntl 3PROC , 128643051d27SRobert Mustacchi.Xr pr_meminfo 3PROC , 128743051d27SRobert Mustacchi.Xr pr_mmap 3PROC , 128843051d27SRobert Mustacchi.Xr pr_munmap 3PROC , 128943051d27SRobert Mustacchi.Xr pr_open 3PROC , 129043051d27SRobert Mustacchi.Xr pr_processor_bind 3PROC , 129143051d27SRobert Mustacchi.Xr pr_rename 3PROC , 129243051d27SRobert Mustacchi.Xr pr_setitimer 3PROC , 129343051d27SRobert Mustacchi.Xr pr_setrctl 3PROC , 129443051d27SRobert Mustacchi.Xr pr_setrlimit 3PROC , 129543051d27SRobert Mustacchi.Xr pr_setrlimit64 3PROC , 129643051d27SRobert Mustacchi.Xr pr_settaskid 3PROC , 129743051d27SRobert Mustacchi.Xr pr_sigaction 3PROC , 129843051d27SRobert Mustacchi.Xr pr_stat 3PROC , 129943051d27SRobert Mustacchi.Xr pr_stat64 3PROC , 130043051d27SRobert Mustacchi.Xr pr_statvfs 3PROC , 130143051d27SRobert Mustacchi.Xr pr_unlink 3PROC , 130243051d27SRobert Mustacchi.Xr pr_waitid 3PROC , 130343051d27SRobert Mustacchi.Pp 130443051d27SRobert Mustacchi.Xr Penv_iter 3PROC , 130543051d27SRobert Mustacchi.Xr Plwp_iter 3PROC , 130643051d27SRobert Mustacchi.Xr Plwp_iter_all 3PROC , 130743051d27SRobert Mustacchi.Xr Pmapping_iter 3PROC , 130843051d27SRobert Mustacchi.Xr Pmapping_iter_resolved 3PROC , 130943051d27SRobert Mustacchi.Xr Pobject_iter 3PROC , 131043051d27SRobert Mustacchi.Xr Pobject_iter_resolved 3PROC , 131143051d27SRobert Mustacchi.Xr Pstack_iter 3PROC , 131243051d27SRobert Mustacchi.Xr Psymbol_iter 3PROC , 131343051d27SRobert Mustacchi.Xr Psymbol_iter_by_addr 3PROC , 131443051d27SRobert Mustacchi.Xr Psymbol_iter_by_lmid 3PROC , 131543051d27SRobert Mustacchi.Xr Psymbol_iter_by_name 3PROC , 131643051d27SRobert Mustacchi.Xr Pxsymbol_iter 3PROC , 131743051d27SRobert Mustacchi.Xr Pfdinfo_iter 3PROC 131843051d27SRobert Mustacchi.Pp 131943051d27SRobert Mustacchi.Xr Perror_printf 3PROC , 132043051d27SRobert Mustacchi.Xr proc_arg_grab 3PROC , 132143051d27SRobert Mustacchi.Xr proc_arg_psinfo 3PROC , 132243051d27SRobert Mustacchi.Xr proc_arg_xgrab 3PROC , 132343051d27SRobert Mustacchi.Xr proc_arg_xpsinfo 3PROC , 132443051d27SRobert Mustacchi.Xr proc_content2str 3PROC , 1325542a7b7fSCarlos Neira.Xr proc_dmodelname 3PROC , 132643051d27SRobert Mustacchi.Xr proc_finistdio 3PROC , 132743051d27SRobert Mustacchi.Xr proc_fltname 3PROC , 132843051d27SRobert Mustacchi.Xr proc_fltset2str 3PROC , 132943051d27SRobert Mustacchi.Xr proc_flushstdio 3PROC , 133043051d27SRobert Mustacchi.Xr proc_get_auxv 3PROC , 133143051d27SRobert Mustacchi.Xr proc_get_cred 3PROC , 1332a02120c4SAndy Fiddaman.Xr proc_get_fdinfo 3PROC , 1333a7d7cafeSRobert Mustacchi.Xr proc_get_lwpsinfo 3PROC , 1334a7d7cafeSRobert Mustacchi.Xr proc_get_lwpstatus 3PROC , 133543051d27SRobert Mustacchi.Xr proc_get_priv 3PROC , 133643051d27SRobert Mustacchi.Xr proc_get_psinfo 3PROC , 133743051d27SRobert Mustacchi.Xr proc_get_status 3PROC , 133843051d27SRobert Mustacchi.Xr proc_initstdio 3PROC , 133943051d27SRobert Mustacchi.Xr proc_lwp_in_set 3PROC , 134043051d27SRobert Mustacchi.Xr proc_lwp_range_valid 3PROC , 134143051d27SRobert Mustacchi.Xr proc_signame 3PROC , 134243051d27SRobert Mustacchi.Xr proc_sigset2str 3PROC , 134343051d27SRobert Mustacchi.Xr proc_str2content 3PROC , 134443051d27SRobert Mustacchi.Xr proc_str2flt 3PROC , 134543051d27SRobert Mustacchi.Xr proc_str2fltset 3PROC , 134643051d27SRobert Mustacchi.Xr proc_str2sig 3PROC , 134743051d27SRobert Mustacchi.Xr proc_str2sigset 3PROC , 134843051d27SRobert Mustacchi.Xr proc_str2sys 3PROC , 134943051d27SRobert Mustacchi.Xr proc_str2sysset 3PROC , 135043051d27SRobert Mustacchi.Xr proc_sysname 3PROC , 135143051d27SRobert Mustacchi.Xr proc_sysset2str 3PROC , 135243051d27SRobert Mustacchi.Xr proc_unctrl_psinfo 3PROC , 1353a02120c4SAndy Fiddaman.Xr proc_fdinfowalk 3PROC , 1354a02120c4SAndy Fiddaman.Xr proc_fdwalk 3PROC , 135543051d27SRobert Mustacchi.Xr proc_walk 3PROC 135643051d27SRobert Mustacchi.Pp 135743051d27SRobert Mustacchi.Xr Pldt 3PROC , 135843051d27SRobert Mustacchi.Xr proc_get_ldt 3PROC , 135943051d27SRobert Mustacchi.Pp 136043051d27SRobert Mustacchi.Xr Plwp_getgwindows 3PROC , 136143051d27SRobert Mustacchi.Xr Plwp_getxregs 3PROC , 136243051d27SRobert Mustacchi.Xr Plwp_setxregs 3PROC , 136343051d27SRobert Mustacchi.Pp 136443051d27SRobert Mustacchi.Xr Plwp_getasrs 3PROC , 136543051d27SRobert Mustacchi.Xr Plwp_setasrs 3PROC 1366