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