143051d27SRobert Mustacchi.\"
243051d27SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
343051d27SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
443051d27SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
543051d27SRobert Mustacchi.\" 1.0 of the CDDL.
643051d27SRobert Mustacchi.\"
743051d27SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
843051d27SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
943051d27SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
1043051d27SRobert Mustacchi.\"
1143051d27SRobert Mustacchi.\"
1243051d27SRobert Mustacchi.\" Copyright 2015 Joyent, Inc.
1343051d27SRobert Mustacchi.\"
1443051d27SRobert Mustacchi.Dd May 11, 2016
1543051d27SRobert Mustacchi.Dt PMAPPING_ITER 3PROC
1643051d27SRobert Mustacchi.Os
1743051d27SRobert Mustacchi.Sh NAME
1843051d27SRobert Mustacchi.Nm Pmapping_iter ,
1943051d27SRobert Mustacchi.Nm Pmapping_iter_resolved ,
2043051d27SRobert Mustacchi.Nm Pobject_iter ,
2143051d27SRobert Mustacchi.Nm Pobject_iter_resolved
2243051d27SRobert Mustacchi.Nd iterate over process mappings and objects
23ab618543SJohn Levon.Sh LIBRARY
2443051d27SRobert Mustacchi.Lb libproc
25ab618543SJohn Levon.Sh SYNOPSIS
2643051d27SRobert Mustacchi.In libproc.h
2743051d27SRobert Mustacchi.Ft int
2843051d27SRobert Mustacchi.Fo Pmapping_iter
2943051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
3043051d27SRobert Mustacchi.Fa "proc_map_f *func"
3143051d27SRobert Mustacchi.Fa "void *data"
3243051d27SRobert Mustacchi.Fc
3343051d27SRobert Mustacchi.Ft int
3443051d27SRobert Mustacchi.Fo Pmapping_iter_resolved
3543051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
3643051d27SRobert Mustacchi.Fa "proc_map_f *func"
3743051d27SRobert Mustacchi.Fa "void *data"
3843051d27SRobert Mustacchi.Fc
3943051d27SRobert Mustacchi.Ft int
4043051d27SRobert Mustacchi.Fo Pobject_iter
4143051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
4243051d27SRobert Mustacchi.Fa "proc_map_f *func"
4343051d27SRobert Mustacchi.Fa "void *data"
4443051d27SRobert Mustacchi.Fc
4543051d27SRobert Mustacchi.Ft int
4643051d27SRobert Mustacchi.Fo Pobject_iter_resolved
4743051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
4843051d27SRobert Mustacchi.Fa "proc_map_f *func"
4943051d27SRobert Mustacchi.Fa "void *data"
5043051d27SRobert Mustacchi.Fc
5143051d27SRobert Mustacchi.Sh DESCRIPTION
5243051d27SRobert MustacchiThe
5343051d27SRobert Mustacchi.Fn Pmapping_iter
5443051d27SRobert Mustacchiand
5543051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
5643051d27SRobert Mustacchifunctions iterate over the memory mappings in the process represented by
5743051d27SRobert Mustacchi.Fa P.
5843051d27SRobert Mustacchi.Pp
5943051d27SRobert MustacchiFor each memory mapping, the callback function
6043051d27SRobert Mustacchi.Fa func
6143051d27SRobert Mustacchiwill be invoked and it will be passed the
6243051d27SRobert Mustacchi.Fa data
6343051d27SRobert Mustacchiargument,
6443051d27SRobert Mustacchithe
6543051d27SRobert Mustacchi.Sy prmap_t
6643051d27SRobert Mustacchistructure defined from
67*bbf21555SRichard Lowe.Xr proc 5 ,
6872d3dbb9SYuri Pankovand a name of the mapping.
6972d3dbb9SYuri PankovThe way that the name is obtained varies based on whether one calls
7043051d27SRobert Mustacchi.Fn Pmapping_iter
7143051d27SRobert Mustacchior
7243051d27SRobert Mustacchi.Fn Pmapping_iter_resolved .
7343051d27SRobert MustacchiIn both cases, the dynamic linker is consulted to determine the file
7472d3dbb9SYuri Pankovname for the mapping, if it's known.
7572d3dbb9SYuri PankovIf the name is unknown, for example an anonymous mapping, then the
7643051d27SRobert Mustacchi.Dv NULL
7772d3dbb9SYuri Pankovpointer is passed in for the name.
7872d3dbb9SYuri PankovIn the case of the
7943051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
8043051d27SRobert Mustacchifunction the system tries to resolve it to a complete file system path.
8143051d27SRobert MustacchiIf that fails, it falls back to the information from the dynamic linker,
8243051d27SRobert Mustacchibefore returning
8343051d27SRobert Mustacchi.Dv NULL
8443051d27SRobert Mustacchiin the case of not being able to find any name.
8543051d27SRobert MustacchiFor more information on the
8643051d27SRobert Mustacchisignature of the
8743051d27SRobert Mustacchi.Ft proc_map_f ,
8843051d27SRobert Mustacchisee
8943051d27SRobert Mustacchi.Xr libproc 3LIB .
9043051d27SRobert Mustacchi.Pp
9143051d27SRobert MustacchiThe return value of
9243051d27SRobert Mustacchi.Fa func
9372d3dbb9SYuri Pankovcontrols whether or not iteration continues.
9472d3dbb9SYuri PankovIf
9543051d27SRobert Mustacchi.Fa func
9643051d27SRobert Mustacchireturns
9743051d27SRobert Mustacchi.Sy 0
9872d3dbb9SYuri Pankovthen iteration continues.
9972d3dbb9SYuri PankovIf
10043051d27SRobert Mustacchi.Fa func
10143051d27SRobert Mustacchireturns non-zero then iteration will halt and the value will be
10272d3dbb9SYuri Pankovreturned to the caller.
10372d3dbb9SYuri PankovBecause
10443051d27SRobert Mustacchi.Sy -1
10572d3dbb9SYuri Pankovindicates internal failure, it is recommended that the callback function not
10672d3dbb9SYuri Pankovreturn
10743051d27SRobert Mustacchi.Sy -1
10872d3dbb9SYuri Pankovto indicate an error itself.
10972d3dbb9SYuri PankovThis allows the caller to distinguish between failure of the callback function
11072d3dbb9SYuri Pankovversus failure of the
11143051d27SRobert Mustacchi.Fn Pmapping_iter
11243051d27SRobert Mustacchiand
11343051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
11443051d27SRobert Mustacchifunctions.
11543051d27SRobert Mustacchi.Pp
11643051d27SRobert MustacchiThe
11743051d27SRobert Mustacchi.Fn Pobject_iter
11843051d27SRobert Mustacchiand
11943051d27SRobert Mustacchi.Fn Pobject_iter_resolved
12043051d27SRobert Mustacchifunctions are similar to the
12143051d27SRobert Mustacchi.Fn Pmapping_iter
12243051d27SRobert Mustacchiand
12343051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
12472d3dbb9SYuri Pankovfunctions.
12572d3dbb9SYuri PankovExcept, rather than iterating over every mapping, they iterate over the objects
12672d3dbb9SYuri Pankovthat the process has loaded by the dynamic linker.
12772d3dbb9SYuri PankovFor example, an anonymous mapping will show up when iterating mappings, but will
12872d3dbb9SYuri Pankovnot show up when iterating objects.
12972d3dbb9SYuri PankovFurther, while most dynamic shared objects have multiple mappings for the text
13072d3dbb9SYuri Pankovand data sections, there will only be a single object that is iterated over.
13143051d27SRobert Mustacchi.Pp
13243051d27SRobert MustacchiThe distinction between the
13343051d27SRobert Mustacchi.Fn Pobject_iter
13443051d27SRobert Mustacchiand
13543051d27SRobert Mustacchi.Fn Pobject_iter_resolved
13643051d27SRobert Mustacchifunctions is identical to the difference in name resolution between the
13743051d27SRobert Mustacchi.Fn Pmapping_iter
13843051d27SRobert Mustacchiand
13943051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
14043051d27SRobert Mustacchifunctions.
14143051d27SRobert Mustacchi.Sh RETURN VALUES
14243051d27SRobert MustacchiUpon successful completion, the
14343051d27SRobert Mustacchi.Fn Pmapping_iter ,
14443051d27SRobert Mustacchi.Fn Pmapping_iter_resolved
14543051d27SRobert Mustacchi.Fn Pobject_iter ,
14643051d27SRobert Mustacchiand
14743051d27SRobert Mustacchi.Fn Pobject_iter_resolved
14843051d27SRobert Mustacchifunctions return
14943051d27SRobert Mustacchi.Sy 0.
15043051d27SRobert MustacchiOtherwise, if there was an internal error then
15143051d27SRobert Mustacchi.Sy -1
15272d3dbb9SYuri Pankovis returned.
15372d3dbb9SYuri PankovOtherwise, if the callback function
15443051d27SRobert Mustacchi.Fa func
15543051d27SRobert Mustacchireturns non-zero, then its return value will be returned instead.
15643051d27SRobert Mustacchi.Sh INTERFACE STABILITY
15743051d27SRobert Mustacchi.Sy Uncommitted
15843051d27SRobert Mustacchi.Sh MT-LEVEL
15943051d27SRobert MustacchiSee
16043051d27SRobert Mustacchi.Sy LOCKING
16143051d27SRobert Mustacchiin
16243051d27SRobert Mustacchi.Xr libproc 3LIB .
16343051d27SRobert Mustacchi.Sh SEE ALSO
16443051d27SRobert Mustacchi.Xr libproc 3LIB ,
165*bbf21555SRichard Lowe.Xr proc 5
166