1.\" 2.\" This file and its contents are supplied under the terms of the 3.\" Common Development and Distribution License ("CDDL"), version 1.0. 4.\" You may only use this file in accordance with the terms of version 5.\" 1.0 of the CDDL. 6.\" 7.\" A full copy of the text of the CDDL should have accompanied this 8.\" source. A copy of the CDDL is also available via the Internet at 9.\" http://www.illumos.org/license/CDDL. 10.\" 11.\" 12.\" Copyright 2018 Joyent, Inc. 13.\" Copyright (c) 2019 Carlos Neira <cneirabustos@gmail.com> 14.\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association. 15.\" Copyright 2024 Oxide Computer Company 16.\" 17.Dd May 10, 2024 18.Dt LIBPROC 3LIB 19.Os 20.Sh NAME 21.Nm libproc 22.Nd process control library 23.Sh SYNOPSIS 24.Lb libproc 25.In libproc.h 26.Sh DESCRIPTION 27The 28.Nm 29library provides consumers a general series of interfaces to inspect 30and control both live processes and core files. 31It is intended for introspection tools such as debuggers by providing a 32high-level interface to the /proc file system 33.Pf ( Xr proc 5 ) . 34.Pp 35The 36.Nm 37library provides interfaces that focus on: 38.Bl -bullet -offset indent 39.It 40Creating and attaching to live process, core files, and arbitrary ELF 41objects. 42.It 43Interrogating the state of a process or core file. 44.It 45Manipulating the current state of a process or thread. 46.It 47Interrogating the state of threads of a process or core file. 48.It 49Running system calls in the context of another process. 50.It 51Various utilities for iterating process and core file file descriptors, 52mappings, symbols, and more. 53.It 54Various utilities to support debugging tools. 55.El 56.Ss Live Processes 57The 58.Nm 59library can be used to manipulate running processes and to create new 60ones. 61To manipulate an existing process first 62.Em grab 63it with the 64.Fn Pgrab 65function. 66A process is generally stopped as a side effect of grabbing it. 67Callers must exercise caution, as if they do not use the library correctly, or 68they terminate unexpectedly, a process may remain stopped. 69.Pp 70Unprivileged users may only grab their own processes. 71Users with the privilege 72.Brq Sy PRIV_PROC_OWNER 73may manipulate processes that they do not own; however, additional 74restrictions as described in 75.Xr privileges 7 76apply. 77.Pp 78In addition, the 79.Fn Pcreate 80and 81.Fn Pxcreate 82functions may be used to create processes which are always controlled by 83the library. 84.Ss Core Files 85The 86.Nm 87library has the ability to open and interpret core files produced by 88processes on the system. 89Process core dump generation is controlled by the 90.Xr coreadm 8 91command. 92In addition, the library has the ability to understand and interpret core dumps 93generated by Linux kernel and can provide a subset of its functionality on such 94core files, provided the original binary is also present. 95.Pp 96Not all functions in the 97.Nm 98library are valid for core files. 99In general, none of the commands which manipulate the current state of a process 100or thread or that try to force system calls on a victim process will work. 101Furthermore several of the information and iteration interfaces are limited 102based on the data that is available in the core file. 103For example, if the core file is of a process that omits the frame pointer, the 104ability to iterate the stack will be limited. 105.Pp 106Use the 107.Fn Pgrab_core 108or 109.Fn Pfgrab_core 110function to open a core file. 111Use the 112.Fn Pgrab_file 113function to open an ELF object file. 114This is useful for obtaining information stored in ELF headers and 115sections. 116.Ss Debug Information 117Many of the operations in the library rely on debug information being 118present in a process and its associated libraries. 119The library leverages symbol table information, CTF data 120.Pq Xr ctf 5 121sections, and frame unwinding information based on the use of an ABI 122defined frame pointer, e\&.g\&. 123.Sy %ebp 124and 125.Sy %rbp 126on x86 systems. 127.Pp 128Some software providers strip programs of this information or build 129their executables such that the information will not be present in a 130core dump. 131To deal with this fact, the library is able to consume information that is not 132present in the core file or the running process. 133It can both consume it from the underlying executable and it also supports 134finding it from related ELF objects that are linked to it via the 135.Sy .gnu_debuglink 136and the 137.Sy .note.gnu.build-id 138ELF sections. 139.Ss Iteration Interfaces 140The 141.Nm 142library provides the ability to iterate over the following aspects of a 143process or core file: 144.Bl -bullet -offset indent 145.It 146Active threads 147.It 148Active and zombie threads 149.It 150All non-system processes 151.It 152All process mappings 153.It 154All objects in a process 155.It 156The environment 157.It 158The symbol table 159.It 160Stack frames 161.It 162File Descriptors 163.El 164.Ss System Call Injection 165The 166.Nm 167library allows the caller to force system calls to be executed in the 168context of the running process. 169This can be used both as a tool for introspection, allowing one to get 170information outside its current context as well as performing modifications to a 171process. 172.Pp 173These functions run in the context of the calling process. 174This is often an easier way of getting non-exported information about a 175process from the system. 176For example, the 177.Xr pfiles 1 178command uses this interface to get more detailed information about a 179process's open file descriptors, which it would not have access to 180otherwise. 181.Sh INTERFACES 182The shared object 183.Sy libproc.so.1 184provides the public interfaces defined below. 185See 186.Xr Intro 3 187for additional information on shared object interfaces. 188Functions are organized into categories that describe their purpose. 189Individual functions are documented in their own manual pages. 190.Ss Creation, Grabbing, and Releasing 191The following routines are related to creating library handles, 192grabbing cores, processes, and threads, and releasing those resources. 193.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 194.It Sy Lfree Ta Sy Lgrab 195.It Sy Lgrab_error Ta Sy Pcreate 196.It Sy Pcreate_agent Ta Sy Pcreate_callback 197.It Sy Pcreate_error Ta Sy Pdestroy_agent 198.It Sy Pfgrab_core Ta Sy Pfree 199.It Sy Pgrab Ta Sy Pgrab_core 200.It Sy Pgrab_error Ta Sy Pgrab_file 201.It Sy Pgrab_ops Ta Sy Prelease 202.It Sy Preopen Ta Sy Pxcreate 203.El 204.Ss Process interrogation and manipulation 205The following routines obtain information about a process and allow 206manipulation of the process itself. 207.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 208.It Sy Paddr_to_ctf Ta Sy Paddr_to_loadobj 209.It Sy Paddr_to_map Ta Sy Paddr_to_text_map 210.It Sy Pasfd Ta Sy Pclearfault 211.It Sy Pclearsig Ta Sy Pcontent 212.It Sy Pcred Ta Sy Pctlfd 213.It Sy Pcwd Ta Sy Pcwd_free 214.It Sy Pdelbkpt Ta Sy Pdelwapt 215.It Sy Pdstop Ta Sy Pexecname 216.It Sy Pfault Ta Sy Pfgcore 217.It Sy Pgcore Ta Sy Pgetareg 218.It Sy Pgetauxval Ta Sy Pgetauxvec 219.It Sy Pgetenv Ta Sy Pisprocdir 220.It Sy Pissyscall_prev Ta Sy Plmid 221.It Sy Plmid_to_loadobj Ta Sy Plmid_to_map 222.It Sy Plookup_by_addr Ta Sy Plookup_by_name 223.It Sy Pname_to_ctf Ta Sy Pname_to_loadobj 224.It Sy Pname_to_map Ta Sy Pobjname 225.It Sy Pobjname_resolved Ta Sy Pplatform 226.It Sy Ppltdest Ta Sy Ppriv 227.It Sy Ppsinfo Ta Sy Pputareg 228.It Sy Prd_agent Ta Sy Pread 229.It Sy Pread_string Ta Sy Preset_maps 230.It Sy Psetbkpt Ta Sy Psecflags 231.It Sy Psetcred Ta Sy Psetfault 232.It Sy Psetflags Ta Sy Psetpriv 233.It Sy Psetrun Ta Sy Psetsignal 234.It Sy Psetsysentry Ta Sy Psetsysexit 235.It Sy Psetwapt Ta Sy Psetzoneid 236.It Sy Psignal Ta Sy Pstate 237.It Sy Pstatus Ta Sy Pstop 238.It Sy Pstopstatus Ta Sy Psync 239.It Sy Psysentry Ta Sy Psysexit 240.It Sy Puname Ta Sy Pupanic 241.It Sy Pupanic_free Ta Sy Punsetflags 242.It Sy Pupdate_maps Ta Sy Pupdate_syms 243.It Sy Pwait Ta Sy Pwrite 244.It Sy Pxecbkpt Ta Sy Pxecwapt 245.It Sy Pxlookup_by_addr Ta Sy Pxlookup_by_addr_resolved 246.It Sy Pxlookup_by_name Ta Sy Pzonename 247.It Sy Pzonepath Ta Sy Pzoneroot Ta 248.El 249.Ss Thread interrogation and manipulation 250The following routines obtain information about a thread and allow 251manipulation of the thread itself. 252.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 253.It Sy Lalt_stack Ta Sy Lclearfault 254.It Sy Lclearsig Ta Sy Lctlfd 255.It Sy Ldstop Ta Sy Lgetareg 256.It Sy Lgetfpregs Ta Sy Lgetregs 257.It Sy Lgetxregs Ta Sy Lmain_stack 258.It Sy Lprochandle Ta Sy Lpsinfo 259.It Sy Lputareg Ta Sy Lsetrun 260.It Sy Lsetfpregs Ta Sy Lsetregs 261.It Sy Lsetxregs Ta Sy Lstack 262.It Sy Lstate Ta Sy Lstatus 263.It Sy Lstop Ta Sy Lsync 264.It Sy Lwait Ta Sy Lxecbkpt 265.It Sy Lxecwapt Ta Sy "" 266.El 267.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 268.It Sy Plwp_alt_stack Ta Sy Plwp_freexregs 269.It Sy Plwp_getfpregs Ta Sy Plwp_getname 270.It Sy Plwp_getpsinfo Ta Sy Plwp_getregs 271.It Sy Plwp_getspymaster Ta Sy Plwp_main_stack 272.It Sy Plwp_getxregs Ta Sy Plwp_setfpregs 273.It Sy Plwp_setregs Ta Sy Plwp_setxregs 274.It Sy Plwp_stack Ta Sy "" 275.El 276.Ss System Call Injection 277The following routines are used to inject specific system calls and have 278them run in the context of a process. 279.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 280.It Sy pr_access Ta Sy pr_close 281.It Sy pr_creat Ta Sy pr_door_info 282.It Sy pr_exit Ta Sy pr_fcntl 283.It Sy pr_fstat Ta Sy pr_fstat64 284.It Sy pr_fstatvfs Ta Sy pr_getitimer 285.It Sy pr_getpeername Ta Sy pr_getpeerucred 286.It Sy pr_getprojid Ta Sy pr_getrctl 287.It Sy pr_getrlimit Ta Sy pr_getrlimit64 288.It Sy pr_getsockname Ta Sy pr_getsockopt 289.It Sy pr_gettaskid Ta Sy pr_getzoneid 290.It Sy pr_ioctl Ta Sy pr_link 291.It Sy pr_llseek Ta Sy pr_lseek 292.It Sy pr_lstat Ta Sy pr_lstat64 293.It Sy pr_memcntl Ta Sy pr_meminfo 294.It Sy pr_mmap Ta Sy pr_munmap 295.It Sy pr_open Ta Sy pr_processor_bind 296.It Sy pr_rename Ta Sy pr_setitimer 297.It Sy pr_setrctl Ta Sy pr_setrlimit 298.It Sy pr_setrlimit64 Ta Sy pr_settaskid 299.It Sy pr_sigaction Ta Sy pr_stat 300.It Sy pr_stat64 Ta Sy pr_statvfs 301.It Sy pr_unlink Ta Sy pr_waitid 302.El 303.Ss Iteration routines 304These routines are used to iterate over the contents of a process. 305.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 306.It Sy Penv_iter Ta Sy Plwp_iter 307.It Sy Plwp_iter_all Ta Sy Pmapping_iter 308.It Sy Pmapping_iter_resolved Ta Sy Pobject_iter 309.It Sy Pobject_iter_resolved Ta Sy Pstack_iter 310.It Sy Psymbol_iter Ta Sy Psymbol_iter_by_addr 311.It Sy Psymbol_iter_by_lmid Ta Sy Psymbol_iter_by_name 312.It Sy Pxsymbol_iter Ta Sy Pfdinfo_iter 313.El 314.Ss Utility routines 315The following routines are utilities that are useful to consumers of the 316library. 317.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 318.It Sy Perror_printf Ta Sy proc_arg_grab 319.It Sy proc_arg_psinfo Ta Sy proc_arg_xgrab 320.It Sy proc_arg_xpsinfo Ta Sy proc_content2str 321.It Sy proc_dmodelname Ta Sy proc_finistdio 322.It Sy proc_fltname Ta Sy proc_fltset2str 323.It Sy proc_flushstdio Ta Sy proc_get_auxv 324.It Sy proc_fdinfo_misc Ta Sy proc_get_cred 325.It Sy proc_get_fdinfo Ta Sy proc_get_lwpsinfo 326.It Sy proc_get_lwpstatus Ta Sy proc_get_priv 327.It Sy proc_get_psinfo Ta Sy proc_get_status 328.It Sy proc_get_initstdio Ta Sy proc_lwp_in_set 329.It Sy proc_lwp_range_valid Ta Sy proc_signame 330.It Sy proc_sigset2str Ta Sy proc_str2content 331.It Sy proc_str2flt Ta Sy proc_str2fltset 332.It Sy proc_str2sig Ta Sy proc_str2sigset 333.It Sy proc_str2sys Ta Sy proc_str2sysset 334.It Sy proc_sysname Ta Sy proc_sysset2str 335.It Sy proc_unctrl_psinfo Ta Sy "" 336.El 337.Ss x86 Specific Routines 338The following routines are specific to the x86, 32-bit and 64-bit, 339versions of the 340.Nm 341library. 342.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 343.It Sy Pldt Ta Sy proc_get_ldt 344.El 345.Ss SPARC specific Routines 346The following functions are specific to the SPARC, 32-bit and 64-bit, 347versions of the 348.Nm 349library. 350.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 351.It Sy Plwp_getgwindows Ta Sy "" 352.El 353.Pp 354The following functions are specific to the 64-bit SPARC version of the 355.Nm 356library. 357.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" 358.It Sy Plwp_getasrs Ta Sy Plwp_setasrs 359.El 360.Sh PROCESS STATES 361Every process handle that exists in 362.Nm 363has a state. 364In some cases, such as for core files, these states are static. 365In other cases, such as handles that correspond to a running process or a 366created process, these states are dynamic and change based on actions taken in 367the library. 368The state can be obtained with the 369.Xr Pstate 3PROC 370function. 371.Pp 372The various states are: 373.Bl -tag -width Dv -offset indent 374.It Dv PS_RUN 375An actively running process. 376This may be a process that was obtained by creating it with functions such as 377.Xr Pcreate 3PROC 378or by grabbing an existing process such as 379.Xr Pgrab 3PROC . 380.It Dv PS_STOP 381An active process that is no longer executing. 382A process may stop for many reasons such as an explicit stop request (through 383.Xr pstop 1 384for example) or if a tracing event is hit. 385.Pp 386The reason a process is stopped may be obtained through the thread's 387.Vt lwpstatus_t 388structure read directly from /proc or obtained through the 389.Xr Lstatus 3PROC 390function. 391.It Dv PS_LOST 392Control over the process has been lost. 393This may happen when the process executes a new image requiring a different set 394of privileges. 395To resume control call 396.Xr Preopen 3PROC . 397For more information on losing control of a process, see 398.Xr proc 5 . 399.It Dv PS_UNDEAD 400A zombie process. 401It has terminated, but it has not been cleaned up yet by its parent. 402For more on the conditions of becoming a zombie, see 403.Xr exec 2 . 404.It Dv PS_DEAD 405Processes in this state are always core files. 406See the earlier section 407.Sx Core Files 408for more information on working with core files. 409.It Dv PS_IDLE 410A process that has never been run. 411This is always the case for handles that refer to files as the files cannot be 412executed. 413Those process handles are obtained through calling 414.Xr Pgrab_file 3PROC . 415.El 416.Pp 417Many functions relating to tracing processes, for example 418.Xr Psignal 3PROC , 419.Xr Psetsignal 3PROC , 420.Xr Psetfault 3PROC , 421.Xr Psysentry 3PROC , 422and others, mention that they only act upon 423.Em Active Processes . 424This specifically refers to processes whose state are in 425.Dv PS_RUN 426and 427.Dv PS_STOP . 428Process handles in the other states have no notion of settable tracing 429flags, though core files 430.Pq type Dv PS_DEAD 431may have a read-only snapshot of their tracing settings available. 432.Sh TYPES 433The 434.Nm 435library uses many types that come from the /proc file system 436.Pq Xr proc 5 437and the ELF format 438.Pq Xr elf 3ELF . 439However, it also defines the following types: 440.Pp 441.Vt struct ps_prochandle 442.Pp 443The 444.Vt struct ps_prochandle 445is an opaque handle to the library and the core element of control for a 446process. 447Consumers obtain pointers to a handle through the use of the 448.Fn Pcreate , 449.Fn Pgrab , 450and related functions. 451When a caller is done with a handle, then it should call one of the 452.Fn Pfree 453and 454.Fn Prelease 455functions to relinquish the handle, release associated resources, and 456potentially set the process to run again. 457.Pp 458.Vt struct ps_lwphandle 459.Pp 460The 461.Vt struct ps_lwphandle 462is analogous to the 463.Vt struct ps_prochandle , 464but it represents the control of an individual thread, rather than a 465process. 466Consumers obtain pointers to a handle through the 467.Fn Lgrab 468function and relinquish it with the 469.Fn Lfree 470function. 471.Pp 472.Vt core_content_t 473.Pp 474The 475.Vt core_content_t 476is a value which describes the various content types of core files. 477These are used in functions such as 478.Xr Pcontent 3PROC 479and 480.Xr Pgcore 3PROC 481to describe and control the types of content that get included. 482Various content types may be included together through a bitwise-inclusive-OR. 483The default system core contents are controlled with the 484.Xr coreadm 8 485tool. 486The following table lists the current set of core contents in the system, though 487the set may increase over time. 488The string after the macro is the human readable string that corresponds with 489the constant and is used by 490.Xr coreadm 8 , 491.Xr proc_content2str 3PROC , 492and 493.Xr proc_str2content 3PROC . 494.Bl -tag -offset indent -width indent 495.It Dv CC_CONTENT_STACK ("stack") 496The contents include the process stack. 497Note, this only covers the main thread's stack. 498The stack of other threads is covered by 499.Dv CC_CONTENT_ANON . 500.It Dv CC_CONTENT_HEAP ("heap") 501The contents include the process heap. 502.It Dv CC_CONTENT_SHFILE ("shfile") 503The contents include shared mappings that are backed by files (e.g. 504mapped through 505.Xr mmap 2 506with the 507.Dv MAP_SHARED 508flag). 509.It Dv CC_CONTENT_SHANNON ("shannon") 510The contents include shared mappings that are backed by anonymous memory 511(e.g. mapped through 512.Xr mmap 2 513with the 514.Dv MAP_SHARED 515and 516.Dv MAP_ANON 517flags). 518.It Dv CC_CONTENT_RODATA ("rodata") 519The contents include private read-only file mappings, such as shared 520library text. 521.It Dv CC_CONTENT_ANON ("anon") 522The contents include private anonymous mappings. 523This includes the stacks of threads which are not the main thread. 524.It Dv CC_CONTENT_SHM ("shm") 525The contents include system V shared memory. 526.It Dv CC_CONTENT_ISM ("ism") 527The contents include ISM (intimate shared memory) mappings. 528.It Dv CC_CONTENT_DISM ("dism") 529The contents include DISM (dynamic shared memory) mappings. 530.It Dv CC_CONTENT_CTF ("ctf") 531The contents include 532.Xr ctf 5 533(Compact C Type Format) information. 534Note, not all objects in the process may have CTF information available. 535.It Dv CC_CONTENT_SYMTAB ("symtab") 536The contents include the symbol table. 537Note, not all objects in the process may have a symbol table available. 538.It Dv CC_CONTENT_ALL ("all") 539This value indicates that all of the above content values are present. 540Note that additional values may be added in the future, in which case 541the value of the symbol will be updated to include them. 542Comparisons with 543.Dv CC_CONTENT_ALL 544should validate all the expected bits are set by an expression such as 545.Li (c & CC_CONTENT_ALL) == CC_CONTENT_ALL . 546.It Dv CC_CONTENT_NONE ("none") 547This value indicates that there is no content present. 548.It Dv CC_CONTENT_DEFAULT ("default") 549The content includes the following set of default values: 550.Dv CC_CONTENT_STACK , 551.Dv CC_CONTENT_HEAP , 552.Dv CC_CONTENT_ISM , 553.Dv CC_CONTENT_DISM , 554.Dv CC_CONTENT_SHM , 555.Dv CC_CONTENT_SHANON , 556.Dv CC_CONTENT_TEXT , 557.Dv CC_CONTENT_DATA , 558.Dv CC_CONTENT_RODATA , 559.Dv CC_CONTENT_ANON , 560.Dv CC_CONTENT_CTF , 561and 562.Dv CC_CONTENT_SYMTAB . 563Note that the default may change. 564Comparisons with CC_CONTENT_DEFAULT should validate that all of the expected 565bits are set with an expression such as 566.Li (c\ &\ CC_CONTENT_DEFAULT)\ ==\ CC_CONTENT_DEFAULT . 567.It Dv CC_CONTENT_INVALID 568This indicates that the contents are invalid. 569.El 570.Pp 571.Vt prfdinfo_t 572.Pp 573The 574.Vt prfdinfo_t 575structure is used with the 576.Fn Pfdinfo_iter , 577.Fn proc_fdwalk , 578.Fn proc_fdinfowalk 579and 580.Fn proc_get_fdinfo 581functions and describes information about a file descriptor. 582The structure is defined as follows: 583.Bd -literal 584typedef struct prfdinfo { 585 int pr_fd; /* file descriptor number */ 586 mode_t pr_mode; /* (see st_mode in stat(2)) */ 587 ino64_t pr_ino; /* inode number */ 588 off64_t pr_size; /* file size */ 589 off64_t pr_offset; /* current offset */ 590 uid_t pr_uid; /* owner's user id */ 591 gid_t pr_gid; /* owner's group id */ 592 major_t pr_major; /* major number of device */ 593 minor_t pr_minor; /* minor number of device */ 594 major_t pr_rmajor; /* major number (if special file) */ 595 minor_t pr_rminor; /* minor number (if special file) */ 596 int pr_fileflags; /* (see F_GETXFL in fcntl(2)) */ 597 int pr_fdflags; /* (see F_GETFD in fcntl(2)) */ 598 short pr_locktype; /* (see F_GETLK in fcntl(2)) */ 599 pid_t pr_lockpid; /* process holding file lock */ 600 int pr_locksysid; /* sysid of locking process */ 601 pid_t pr_peerpid; /* peer process (socket, door) */ 602 int pr_filler[25]; /* reserved for future use */ 603 char pr_peername[PRFNSZ]; /* peer process name */ 604#if __STDC_VERSION__ >= 199901L 605 uint8_t pr_misc[]; /* self describing structures */ 606else 607 uint8_t pr_misc[1]; /* self describing structures */ 608#endif 609} prfdinfo_t; 610.Ed 611.Pp 612The structure has similar information to that found in the 613.Sy stat 614structure that's used as part of the stat family of system calls, 615defined in 616.Xr stat 2 . 617The member 618.Sy pr_fd 619contains the number of the file descriptor of the file. 620The members 621.Fa pr_mode , 622.Fa pr_uid , 623.Fa pr_gid , 624.Fa pr_ino , 625and 626.Fa pr_size 627are the same as the members 628.Fa st_mode , 629.Fa st_uid , 630.Fa st_gid , 631.Fa st_ino , 632and 633.Fa st_size 634in the 635.Fa stat 636structure. 637.Pp 638The 639.Fa pr_major 640and 641.Fa pr_minor 642members contain the major and minor numbers of the device containing the 643directory for this file. 644This is similar to the 645.Fa st_dev 646member of the 647.Vt stat 648structure, except that it is broken out into its major and minor components. 649The 650.Fa pr_rmajor 651and 652.Fa pr_rminor 653members are similar in spirit to 654.Fa pr_major 655and 656.Fa pr_minor ; 657however, they are equivalent to the 658.Fa st_rdev 659member of the 660.Vt stat 661structure and thus have meaning for special character and block files. 662.Pp 663The 664.Fa pr_offset 665member contains the current seek offset of the file descriptor. 666The 667.Fa pr_fileflags 668and 669.Fa pr_fdflags 670members contain the flags that would have been returned by a call to 671.Xr fcntl 2 672with the arguments 673.Dv F_GETXFL 674and 675.Dv F_GETFD 676respectively. 677.Pp 678The 679.Fa pr_locktype , 680.Fa pr_lockpid , 681and 682.Fa pr_locksysid 683contain the information that would have been returned by a call to 684.Xr fcntl 2 685with an argument of 686.Dv F_GETLK . 687.Pp 688The 689.Fa pr_peerpid 690and 691.Fa pr_peername 692members contain the process ID and name of any peer endpoint of a 693connection-oriented socket or stream fd. 694This information is the same as that which would be returned by a call to 695.Xr getpeerucred 3C 696.Pp 697The 698.Fa pr_misc 699member contains miscellaneous additional data relating to the file descriptor. 700The format of these data is described in 701.Xr proc 5 . 702.Pp 703.Vt prsyminfo_t 704.Pp 705The 706.Vt prsyminfo_t 707structure is used with the various symbol look up functions 708.Fn Pxlookup_by_name , 709.Fn Pxlookup_by_addr , 710and 711.Fn Pxlookup_by_addr_resolved 712which describes additional information about a symbol. 713The structure is defined as follows: 714.Bd -literal 715typedef struct prsyminfo { 716 const char *prs_object; /* object name */ 717 const char *prs_name; /* symbol name */ 718 Lmid_t prs_lmid; /* link map id */ 719 uint_t prs_id; /* symbol id */ 720 uint_t prs_table; /* symbol table id */ 721} prsyminfo_t; 722.Ed 723.Pp 724The member 725.Fa prs_object 726points to a string that contains the name of the object file, if known, 727that the symbol comes from. 728The member 729.Fa prs_name 730points to the name of the symbol, if known. 731This may be unknown due to a stripped binary that contains no symbol table. 732The member 733.Fa prs_lmid 734indicates the link map identifier that the symbol was found on. 735For more information on link map identifiers refer to the 736.%B Linker and Libraries Guide 737and 738.Xr dlopen 3C . 739.Pp 740The members 741.Fa prs_id 742and 743.Fa prs_table 744can be used to determine both the symbol table that the entry came from 745and which entry in the table it corresponds to. 746If the value of 747.Fa prs_table 748is 749.Dv PR_SYMTAB 750then it came from the ELF standard symbol table. 751However, if it is instead 752.Dv PR_DYNSYM , 753then that indicates that it comes from the process's dynamic section. 754.Pp 755.Vt proc_lwp_f 756.Pp 757The 758.Vt proc_lwp_f 759is a function pointer type that is used with the 760.Fn Plwp_iter 761function. 762It is defined as 763.Sy typedef 764.Ft int 765.Fo proc_lwp_f 766.Fa "void *" 767.Fa "const lwpstatus_t *" 768.Fc . 769The first argument is a pointer to an argument that the user specifies, 770while the second has the thread's status information and is defined in 771.Xr proc 5 . 772For additional information on using this type, see 773.Xr Plwp_iter 3PROC . 774.Pp 775.Vt proc_lwp_all_f 776.Pp 777The 778.Vt proc_lwp_all_f 779is a function pointer type that is used with the 780.Fn Plwp_iter_all 781function. 782It is defined as 783.Sy typedef 784.Ft int 785.Fo proc_lwp_all_f 786.Fa "void *" 787.Fa "const lwpstatus_t *" 788.Fa "const lwpsinfo_t *" 789.Fc . 790The first argument is a pointer to an argument that the user specifies. 791The second and third arguments contain the thread's status and 792thread-specific 793.Xr ps 1 794information respectively. 795Both structures are defined in 796.Xr proc 5 . 797For additional information on using this type, see 798.Xr Plwp_iter_all 3PROC . 799.Pp 800.Vt proc_fdinfowalk_f 801.Pp 802The 803.Vt proc_fdinfowalk_f 804is a function pointer type that is used with the 805.Fn proc_fdinfowalk 806function to walk the miscellaneous data items contained within a 807.Vt prfdinfo_t 808structure. 809It is defined as 810.Sy typedef 811.Ft int 812.Fo proc_fdinfowalk_f 813.Fa "uint_t" 814.Fa "const void *" 815.Fa "size_t" 816.Fa "void *" 817.Fc . 818The first argument contains the type of the miscellaneous information being 819presented, the second and third provide a pointer to the associated data and 820the length of that data. 821The final argument is a pointer to an argument that the user specifies. 822For more information on using this, see 823.Xr proc_fdinfowalk 3PROC . 824.Pp 825.Vt proc_fdwalk_f 826.Pp 827The 828.Vt proc_fdwalk_f 829is a function pointer type that is used with the 830.Fn proc_fdwalk 831function. 832It is defined as 833.Sy typedef 834.Ft int 835.Fo proc_fdwalk_f 836.Fa "const prfdinfo_t *" 837.Fa "void *" 838.Fc . 839The first argument contains the file descriptor information. 840The 841.Sy prfdinfo_t 842structure is defined in 843.Xr proc 5 . 844The final argument is a pointer to an argument that the user specifies. 845For more information on using this, see 846.Xr proc_fdwalk 3PROC . 847.Pp 848.Vt proc_walk_f 849.Pp 850The 851.Vt proc_walk_f 852is a function pointer type that is used with the 853.Fn proc_walk 854function. 855It is defined as 856.Sy typedef 857.Ft int 858.Fo proc_walk_f 859.Fa "psinfo_t *" 860.Fa "lwpsinfo_t *" 861.Fa "void *" 862.Fc . 863The first argument contains the process 864.Xr ps 1 865information and the second argument contains the representative thread's 866.Xr ps 1 867information. 868Both structures are defined in 869.Xr proc 5 . 870The final argument is a pointer to an argument that the user specifies. 871For more information on using this, see 872.Xr proc_walk 3PROC . 873.Pp 874.Vt proc_map_f 875.Pp 876The 877.Vt proc_map_f 878is a function pointer type that is used with the 879.Fn Pmapping_iter , 880.Fn Pmapping_iter_resolved , 881.Fn Pobject_iter , 882and 883.Fn Pobject_iter_resolved 884functions. 885It is defined as 886.Sy typedef 887.Ft int 888.Fo proc_map_f 889.Fa "void *" 890.Fa "const prmap_t *" 891.Fa "const char *" 892.Fc . 893The first argument is a pointer to an argument that the user specifies. 894The second argument is describes the mapping information and is defined 895in 896.Xr proc 5 . 897The final argument contains the name of the mapping or object file in 898question. 899For additional information on using this type, see 900.Xr Pmapping_iter 3PROC . 901.Pp 902.Vt proc_env_f 903.Pp 904The 905.Vt proc_env_f 906is a function pointer type that is used with the 907.Fn Penv_iter 908function. 909It is defined as 910.Sy typedef 911.Ft int 912.Fo proc_env_f 913.Fa "void *" 914.Fa "struct ps_prochandle *" 915.Fa "uintptr_t" 916.Fa "const char *" 917.Fc . 918The first argument is a pointer to an argument that the user specifies. 919The second argument is a pointer to the 920.Vt struct ps_prochandle 921that the callback was passed to. 922The third argument is the address of the environment variable in the process. 923The fourth argument is the environment variable. 924Values in the environment follow the convention of the form 925.Em variable=value . 926For more information on environment variables see 927.Xr exec 2 928and 929.Xr environ 7 . 930For additional information on using this type, see 931.Xr Penv_iter 3PROC . 932.Pp 933.Vt proc_sym_f 934.Pp 935The 936.Vt proc_sym_f 937is a function pointer type that is used with the 938.Fn Psmbol_iter , 939.Fn Psymbol_iter_by_addr , 940.Fn Psymbol_iter_by_name , 941and 942.Fn Psymbol_iter_by_lmid 943functions. 944It is defined as 945.Sy typedef 946.Ft int 947.Fo proc_sym_f 948.Fa "void *" 949.Fa "const GElf_Sym *" 950.Fa "const char *" 951.Fc . 952The first argument is a pointer to an argument that the user supplies. 953The second argument is a pointer to the ELF symbol information in a 95432-bit and 64-bit neutral form. 955See 956.Xr elf 3ELF 957and 958.Xr gelf 3ELF 959for more information on it. 960The final argument points to a character string that has the name of the symbol. 961For additional information on using this type, see 962.Xr Psymbol_iter 3PROC , 963.Xr Psymbol_iter_by_addr 3PROC , 964.Xr Psymbol_iter_by_name 3PROC , 965and 966.Xr Psymbol_iter_by_lmid 3PROC . 967.Pp 968.Vt proc_xsym_f 969.Pp 970The 971.Vt proc_xsym_f 972is a function pointer type that is used with the 973.Fn Pxsymbol_iter 974function. 975It is defined as 976.Sy typedef 977.Ft int 978.Fo proc_xsym_f 979.Fa "void *" 980.Fa "const GElf_Sym *" 981.Fa "const char *" 982.Fa "const prsyminfo_t *" 983.Fc . 984The first three arguments are identical to those of 985.Vt proc_sym_f . 986The final argument contains additional information about the symbol 987itself. 988The members of the 989.Vt prsyminfo_t 990are defined earlier in this section. 991For additional information on using this type, see 992.Xr Pxsymbol_iter 3PROC . 993.Pp 994.Vt proc_stack_f 995.Pp 996The 997.Vt proc_stack_f 998is a function pointer type that is used with the 999.Fn Pstack_iter 1000function. 1001It is defined as 1002.Sy typedef 1003.Ft int 1004.Fo proc_stack_f 1005.Fa "void *" 1006.Fa "prgregset_t" 1007.Fa "uint_t" 1008.Fa "const long *" 1009.Fc . 1010The first argument is a pointer to an argument that the user specifies. 1011The second argument's contents are platform specific. 1012The registers that contain stack information, usually the stack pointer and 1013frame pointer, will be filled in to point to an entry. 1014The 1015.Vt prgregset_t 1016is defined in 1017.Xr proc 5 . 1018.Pp 1019The third argument contains the number of arguments to the current stack 1020frame and the fourth argument contains an array of addresses that 1021correspond to the arguments to that stack function. 1022The value of the third argument dictates the number of entries in the fourth 1023argument. 1024For additional information on using this type, see 1025.Xr Pstack_iter 3PROC . 1026.Pp 1027.Vt proc_fdinfo_f 1028.Pp 1029The 1030.Vt proc_fdinfo_f 1031is a function pointer type that is used with the 1032.Fn Pfdinfo_iter 1033function. 1034It is defined as 1035.Sy typedef 1036.Ft int 1037.Fo proc_fdinfo_f 1038.Fa "void *" 1039.Fa "prfdinfo_t *" 1040.Fc . 1041The first argument is a pointer to an argument that the user specifies. 1042The second argument contains information about an open file descriptor. 1043The members of the 1044.Vt prfdinfo_t 1045are defined earlier in this section. 1046For additional information on using this type, see 1047.Xr Pfdinfo_iter 3PROC . 1048.Sh PROGRAMMING NOTES 1049When working with live processes, whether from the 1050.Xr Pgrab 3PROC 1051or 1052.Xr Pcreate 3PROC 1053family of functions, there are some additional considerations. 1054Importantly, if a process calls any of the 1055.Xr exec 2 1056suite of functions, much of the state information that is obtained, 1057particularly that about mappings in the process will be invalid. 1058Callers must ensure that they call 1059.Xr Preset_maps 3PROC 1060when they hold a process handle across an exec. 1061In addition, users of the library should familiarize themselves with the 1062.Sy PROGRAMMING NOTES 1063section of the 1064.Xr proc 5 1065manual page, which discusses issues of privileges and security. 1066.Sh DEBUGGING 1067The library provides a means for obtaining additional debugging 1068information. 1069The output itself is not part of the 1070.Nm 1071library's stable interface. 1072Setting the environment variable 1073.Ev LIBPROC_DEBUG 1074to some value will print information to standard error. 1075For example, 1076.Ev LIBPROC_DEBUG Ns = Ns Em please . 1077.Sh LOCKING 1078Most functions operate on a handle to a process in the form of a 1079.Vt "struct ps_prochandle *" . 1080Unless otherwise indicated, the library does not provide any 1081synchronization for different routines that are operating on the 1082.Sy same 1083.Nm 1084library handle. 1085It is up to the caller to ensure that only a single thread is using a handle at 1086any given time. 1087Multiple threads may call 1088.Nm 1089library routines at the same time as long as each thread is using a 1090different handle. 1091.Pp 1092Each individual function notes its 1093.Sy MT-Level 1094section. 1095The MT-Level of a routine that matches the above description will refer to this 1096manual page. 1097If it does not, then it refers to the standard attributes in 1098.Xr attributes 7 . 1099.Sh INTERFACE STABILITY 1100.Sy Uncommitted 1101.Pp 1102While the library is considered an uncommitted interface, and is still 1103evolving, changes that break compatibility have been uncommon and this 1104trend is expected to continue. 1105It is documented to allow consumers, whether part of illumos or outside of it, 1106to understand the library and make use of it with the understanding that 1107changes may occur which break both source and binary compatibility. 1108.Sh SEE ALSO 1109.Xr gcore 1 , 1110.Xr mdb 1 , 1111.Xr proc 1 , 1112.Xr ps 1 , 1113.Xr exec 2 , 1114.Xr fcntl 2 , 1115.Xr stat 2 , 1116.Xr Intro 3 , 1117.Xr dlopen 3C , 1118.Xr elf 3ELF , 1119.Xr ctf 5 , 1120.Xr proc 5 , 1121.Xr attributes 7 , 1122.Xr environ 7 , 1123.Xr privileges 7 , 1124.Xr coreadm 8 1125.Pp 1126.Rs 1127.%T Linkers and Libraries Guide 1128.Re 1129.Pp 1130.Xr Lfree 3PROC , 1131.Xr Lgrab 3PROC , 1132.Xr Lgrab_error 3PROC , 1133.Xr Pcreate 3PROC , 1134.Xr Pcreate_agent 3PROC , 1135.Xr Pcreate_callback 3PROC , 1136.Xr Pcreate_error 3PROC , 1137.Xr Pdestroy_agent 3PROC , 1138.Xr Pfgrab_core 3PROC , 1139.Xr Pfree 3PROC , 1140.Xr Pgrab 3PROC , 1141.Xr Pgrab_core 3PROC , 1142.Xr Pgrab_error 3PROC , 1143.Xr Pgrab_file 3PROC , 1144.Xr Pgrab_ops 3PROC , 1145.Xr Prelease 3PROC , 1146.Xr Preopen 3PROC , 1147.Xr Pxcreate 3PROC 1148.Pp 1149.Xr Paddr_to_ctf 3PROC , 1150.Xr Paddr_to_loadobj 3PROC , 1151.Xr Paddr_to_map 3PROC , 1152.Xr Paddr_to_text_map 3PROC , 1153.Xr Pasfd 3PROC , 1154.Xr Pclearfault 3PROC , 1155.Xr Pclearsig 3PROC , 1156.Xr Pcontent 3PROC , 1157.Xr Pcred 3PROC , 1158.Xr Pctlfd 3PROC , 1159.Xr Pcwd 3PROC , 1160.Xr Pcwd_free 3PROC , 1161.Xr Pdelbkpt 3PROC , 1162.Xr Pdelwapt 3PROC , 1163.Xr Pdstop 3PROC , 1164.Xr Pexecname 3PROC , 1165.Xr Pfault 3PROC , 1166.Xr Pfgcore 3PROC , 1167.Xr Pgcore 3PROC , 1168.Xr Pgetareg 3PROC , 1169.Xr Pgetauxval 3PROC , 1170.Xr Pgetauxvec 3PROC , 1171.Xr Pgetenv 3PROC , 1172.Xr Pisprocdir 3PROC , 1173.Xr Pissyscall_prev 3PROC , 1174.Xr Plmid 3PROC , 1175.Xr Plmid_to_loadobj 3PROC , 1176.Xr Plmid_to_map 3PROC , 1177.Xr Plookup_by_addr 3PROC , 1178.Xr Plookup_by_name 3PROC , 1179.Xr Plwp_alt_stack 3PROC , 1180.Xr Plwp_getfpregs 3PROC , 1181.Xr Plwp_getpsinfo 3PROC , 1182.Xr Plwp_getregs 3PROC , 1183.Xr Plwp_getspymaster 3PROC , 1184.Xr Plwp_main_stack 3PROC , 1185.Xr Plwp_setfpregs 3PROC , 1186.Xr Plwp_setregs 3PROC , 1187.Xr Plwp_stack 3PROC , 1188.Xr Pname_to_ctf 3PROC , 1189.Xr Pname_to_loadobj 3PROC , 1190.Xr Pname_to_map 3PROC , 1191.Xr Pobjname 3PROC , 1192.Xr Pobjname_resolved 3PROC , 1193.Xr Pplatform 3PROC , 1194.Xr Ppltdest 3PROC , 1195.Xr Ppriv 3PROC , 1196.Xr Ppsinfo 3PROC , 1197.Xr Pputareg 3PROC , 1198.Xr Prd_agent 3PROC , 1199.Xr Pread 3PROC , 1200.Xr Pread_string 3PROC , 1201.Xr Preset_maps 3PROC , 1202.Xr Psecflags 3PROC , 1203.Xr Psetbkpt 3PROC , 1204.Xr Psetcred 3PROC , 1205.Xr Psetfault 3PROC , 1206.Xr Psetflags 3PROC , 1207.Xr Psetpriv 3PROC , 1208.Xr Psetrun 3PROC , 1209.Xr Psetsignal 3PROC , 1210.Xr Psetsysentry 3PROC , 1211.Xr Psetsysexit 3PROC , 1212.Xr Psetwapt 3PROC , 1213.Xr Psetzoneid 3PROC , 1214.Xr Psignal 3PROC , 1215.Xr Pstate 3PROC , 1216.Xr Pstatus 3PROC , 1217.Xr Pstop 3PROC , 1218.Xr Pstopstatus 3PROC , 1219.Xr Psync 3PROC , 1220.Xr Psysentry 3PROC , 1221.Xr Psysexit 3PROC , 1222.Xr Puname 3PROC , 1223.Xr Pupanic 3PROC , 1224.Xr Pupanic_free 3PROC , 1225.Xr Punsetflags 3PROC , 1226.Xr Pupdate_maps 3PROC , 1227.Xr Pupdate_syms 3PROC , 1228.Xr Pwait 3PROC , 1229.Xr Pwrite 3PROC , 1230.Xr Pxecbkpt 3PROC , 1231.Xr Pxecwapt 3PROC , 1232.Xr Pxlookup_by_addr 3PROC , 1233.Xr Pxlookup_by_addr_resolved 3PROC , 1234.Xr Pxlookup_by_name 3PROC , 1235.Xr Pzonename 3PROC , 1236.Xr Pzonepath 3PROC , 1237.Xr Pzoneroot 3PROC 1238.Pp 1239.Xr Lalt_stack 3PROC , 1240.Xr Lclearfault 3PROC , 1241.Xr Lclearsig 3PROC , 1242.Xr Lctlfd 3PROC , 1243.Xr Ldstop 3PROC , 1244.Xr Lgetareg 3PROC , 1245.Xr Lmain_stack 3PROC , 1246.Xr Lprochandle 3PROC , 1247.Xr Lpsinfo 3PROC , 1248.Xr Lputareg 3PROC , 1249.Xr Lsetrun 3PROC , 1250.Xr Lstack 3PROC , 1251.Xr Lstate 3PROC , 1252.Xr Lstatus 3PROC , 1253.Xr Lstop 3PROC , 1254.Xr Lsync 3PROC , 1255.Xr Lwait 3PROC , 1256.Xr Lxecbkpt 3PROC , 1257.Xr Lxecwapt 3PROC 1258.Pp 1259.Xr pr_access 3PROC , 1260.Xr pr_close 3PROC , 1261.Xr pr_creat 3PROC , 1262.Xr pr_door_info 3PROC , 1263.Xr pr_exit 3PROC , 1264.Xr pr_fcntl 3PROC , 1265.Xr pr_fstat 3PROC , 1266.Xr pr_fstat64 3PROC , 1267.Xr pr_fstatvfs 3PROC , 1268.Xr pr_getitimer 3PROC , 1269.Xr pr_getpeername 3PROC , 1270.Xr pr_getpeerucred 3PROC , 1271.Xr pr_getprojid 3PROC , 1272.Xr pr_getrctl 3PROC , 1273.Xr pr_getrlimit 3PROC , 1274.Xr pr_getrlimit64 3PROC , 1275.Xr pr_getsockname 3PROC , 1276.Xr pr_getsockopt 3PROC , 1277.Xr pr_gettaskid 3PROC , 1278.Xr pr_getzoneid 3PROC , 1279.Xr pr_ioctl 3PROC , 1280.Xr pr_link 3PROC , 1281.Xr pr_llseek 3PROC , 1282.Xr pr_lseek 3PROC , 1283.Xr pr_lstat 3PROC , 1284.Xr pr_lstat64 3PROC , 1285.Xr pr_memcntl 3PROC , 1286.Xr pr_meminfo 3PROC , 1287.Xr pr_mmap 3PROC , 1288.Xr pr_munmap 3PROC , 1289.Xr pr_open 3PROC , 1290.Xr pr_processor_bind 3PROC , 1291.Xr pr_rename 3PROC , 1292.Xr pr_setitimer 3PROC , 1293.Xr pr_setrctl 3PROC , 1294.Xr pr_setrlimit 3PROC , 1295.Xr pr_setrlimit64 3PROC , 1296.Xr pr_settaskid 3PROC , 1297.Xr pr_sigaction 3PROC , 1298.Xr pr_stat 3PROC , 1299.Xr pr_stat64 3PROC , 1300.Xr pr_statvfs 3PROC , 1301.Xr pr_unlink 3PROC , 1302.Xr pr_waitid 3PROC , 1303.Pp 1304.Xr Penv_iter 3PROC , 1305.Xr Plwp_iter 3PROC , 1306.Xr Plwp_iter_all 3PROC , 1307.Xr Pmapping_iter 3PROC , 1308.Xr Pmapping_iter_resolved 3PROC , 1309.Xr Pobject_iter 3PROC , 1310.Xr Pobject_iter_resolved 3PROC , 1311.Xr Pstack_iter 3PROC , 1312.Xr Psymbol_iter 3PROC , 1313.Xr Psymbol_iter_by_addr 3PROC , 1314.Xr Psymbol_iter_by_lmid 3PROC , 1315.Xr Psymbol_iter_by_name 3PROC , 1316.Xr Pxsymbol_iter 3PROC , 1317.Xr Pfdinfo_iter 3PROC 1318.Pp 1319.Xr Perror_printf 3PROC , 1320.Xr proc_arg_grab 3PROC , 1321.Xr proc_arg_psinfo 3PROC , 1322.Xr proc_arg_xgrab 3PROC , 1323.Xr proc_arg_xpsinfo 3PROC , 1324.Xr proc_content2str 3PROC , 1325.Xr proc_dmodelname 3PROC , 1326.Xr proc_finistdio 3PROC , 1327.Xr proc_fltname 3PROC , 1328.Xr proc_fltset2str 3PROC , 1329.Xr proc_flushstdio 3PROC , 1330.Xr proc_get_auxv 3PROC , 1331.Xr proc_get_cred 3PROC , 1332.Xr proc_get_fdinfo 3PROC , 1333.Xr proc_get_lwpsinfo 3PROC , 1334.Xr proc_get_lwpstatus 3PROC , 1335.Xr proc_get_priv 3PROC , 1336.Xr proc_get_psinfo 3PROC , 1337.Xr proc_get_status 3PROC , 1338.Xr proc_initstdio 3PROC , 1339.Xr proc_lwp_in_set 3PROC , 1340.Xr proc_lwp_range_valid 3PROC , 1341.Xr proc_signame 3PROC , 1342.Xr proc_sigset2str 3PROC , 1343.Xr proc_str2content 3PROC , 1344.Xr proc_str2flt 3PROC , 1345.Xr proc_str2fltset 3PROC , 1346.Xr proc_str2sig 3PROC , 1347.Xr proc_str2sigset 3PROC , 1348.Xr proc_str2sys 3PROC , 1349.Xr proc_str2sysset 3PROC , 1350.Xr proc_sysname 3PROC , 1351.Xr proc_sysset2str 3PROC , 1352.Xr proc_unctrl_psinfo 3PROC , 1353.Xr proc_fdinfowalk 3PROC , 1354.Xr proc_fdwalk 3PROC , 1355.Xr proc_walk 3PROC 1356.Pp 1357.Xr Pldt 3PROC , 1358.Xr proc_get_ldt 3PROC , 1359.Pp 1360.Xr Plwp_getgwindows 3PROC , 1361.Xr Plwp_getxregs 3PROC , 1362.Xr Plwp_setxregs 3PROC , 1363.Pp 1364.Xr Plwp_getasrs 3PROC , 1365.Xr Plwp_setasrs 3PROC 1366