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