Merge commit 'dc97a43d4a70c8773a619f11b95b07a787f6f5b7' into merges
[unleashed.git] / share / man / man3proc / Pmapping_iter.3proc
blob7f2fb4612454f176f6685e1aff4356cdd7b57753
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 2015 Joyent, Inc.
13 .\"
14 .Dd May 11, 2016
15 .Dt PMAPPING_ITER 3PROC
16 .Os
17 .Sh NAME
18 .Nm Pmapping_iter ,
19 .Nm Pmapping_iter_resolved ,
20 .Nm Pobject_iter ,
21 .Nm Pobject_iter_resolved
22 .Nd iterate over process mappings and objects
23 .Sh SYNOPSIS
24 .Lb libproc
25 .In libproc.h
26 .Ft int
27 .Fo Pmapping_iter
28 .Fa "struct ps_prochandle *P"
29 .Fa "proc_map_f *func"
30 .Fa "void *data"
31 .Fc
32 .Ft int
33 .Fo Pmapping_iter_resolved
34 .Fa "struct ps_prochandle *P"
35 .Fa "proc_map_f *func"
36 .Fa "void *data"
37 .Fc
38 .Ft int
39 .Fo Pobject_iter
40 .Fa "struct ps_prochandle *P"
41 .Fa "proc_map_f *func"
42 .Fa "void *data"
43 .Fc
44 .Ft int
45 .Fo Pobject_iter_resolved
46 .Fa "struct ps_prochandle *P"
47 .Fa "proc_map_f *func"
48 .Fa "void *data"
49 .Fc
50 .Sh DESCRIPTION
51 The
52 .Fn Pmapping_iter
53 and
54 .Fn Pmapping_iter_resolved
55 functions iterate over the memory mappings in the process represented by
56 .Fa P.
57 .Pp
58 For each memory mapping, the callback function
59 .Fa func
60 will be invoked and it will be passed the
61 .Fa data
62 argument,
63 the
64 .Sy prmap_t
65 structure defined from
66 .Xr proc 4 ,
67 and a name of the mapping.
68 The way that the name is obtained varies based on whether one calls
69 .Fn Pmapping_iter
71 .Fn Pmapping_iter_resolved .
72 In both cases, the dynamic linker is consulted to determine the file
73 name for the mapping, if it's known.
74 If the name is unknown, for example an anonymous mapping, then the
75 .Dv NULL
76 pointer is passed in for the name.
77 In the case of the
78 .Fn Pmapping_iter_resolved
79 function the system tries to resolve it to a complete file system path.
80 If that fails, it falls back to the information from the dynamic linker,
81 before returning
82 .Dv NULL
83 in the case of not being able to find any name.
84 For more information on the
85 signature of the
86 .Ft proc_map_f ,
87 see
88 .Xr libproc 3LIB .
89 .Pp
90 The return value of
91 .Fa func
92 controls whether or not iteration continues.
94 .Fa func
95 returns
96 .Sy 0
97 then iteration continues.
99 .Fa func
100 returns non-zero then iteration will halt and the value will be
101 returned to the caller.
102 Because
103 .Sy -1
104 indicates internal failure, it is recommended that the callback function not
105 return
106 .Sy -1
107 to indicate an error itself.
108 This allows the caller to distinguish between failure of the callback function
109 versus failure of the
110 .Fn Pmapping_iter
112 .Fn Pmapping_iter_resolved
113 functions.
116 .Fn Pobject_iter
118 .Fn Pobject_iter_resolved
119 functions are similar to the
120 .Fn Pmapping_iter
122 .Fn Pmapping_iter_resolved
123 functions.
124 Except, rather than iterating over every mapping, they iterate over the objects
125 that the process has loaded by the dynamic linker.
126 For example, an anonymous mapping will show up when iterating mappings, but will
127 not show up when iterating objects.
128 Further, while most dynamic shared objects have multiple mappings for the text
129 and data sections, there will only be a single object that is iterated over.
131 The distinction between the
132 .Fn Pobject_iter
134 .Fn Pobject_iter_resolved
135 functions is identical to the difference in name resolution between the
136 .Fn Pmapping_iter
138 .Fn Pmapping_iter_resolved
139 functions.
140 .Sh RETURN VALUES
141 Upon successful completion, the
142 .Fn Pmapping_iter ,
143 .Fn Pmapping_iter_resolved
144 .Fn Pobject_iter ,
146 .Fn Pobject_iter_resolved
147 functions return
148 .Sy 0.
149 Otherwise, if there was an internal error then
150 .Sy -1
151 is returned.
152 Otherwise, if the callback function
153 .Fa func
154 returns non-zero, then its return value will be returned instead.
155 .Sh INTERFACE STABILITY
156 .Sy Uncommitted
157 .Sh MT-LEVEL
159 .Sy LOCKING
161 .Xr libproc 3LIB .
162 .Sh SEE ALSO
163 .Xr libproc 3LIB ,
164 .Xr proc 4