xref: /freebsd/lib/libpmc/pmc_attach.3 (revision cf6c5eebe7a6f0f1e8b75d249a54989c5fa3bcdc)
1677d4530SJoseph Koshy.\" Copyright (c) 2007 Joseph Koshy.  All rights reserved.
2677d4530SJoseph Koshy.\"
3677d4530SJoseph Koshy.\" Redistribution and use in source and binary forms, with or without
4677d4530SJoseph Koshy.\" modification, are permitted provided that the following conditions
5677d4530SJoseph Koshy.\" are met:
6677d4530SJoseph Koshy.\" 1. Redistributions of source code must retain the above copyright
7677d4530SJoseph Koshy.\"    notice, this list of conditions and the following disclaimer.
8677d4530SJoseph Koshy.\" 2. Redistributions in binary form must reproduce the above copyright
9677d4530SJoseph Koshy.\"    notice, this list of conditions and the following disclaimer in the
10677d4530SJoseph Koshy.\"    documentation and/or other materials provided with the distribution.
11677d4530SJoseph Koshy.\"
12677d4530SJoseph Koshy.\" This software is provided by Joseph Koshy ``as is'' and
13677d4530SJoseph Koshy.\" any express or implied warranties, including, but not limited to, the
14677d4530SJoseph Koshy.\" implied warranties of merchantability and fitness for a particular purpose
15677d4530SJoseph Koshy.\" are disclaimed.  in no event shall Joseph Koshy be liable
16677d4530SJoseph Koshy.\" for any direct, indirect, incidental, special, exemplary, or consequential
17677d4530SJoseph Koshy.\" damages (including, but not limited to, procurement of substitute goods
18677d4530SJoseph Koshy.\" or services; loss of use, data, or profits; or business interruption)
19677d4530SJoseph Koshy.\" however caused and on any theory of liability, whether in contract, strict
20677d4530SJoseph Koshy.\" liability, or tort (including negligence or otherwise) arising in any way
21677d4530SJoseph Koshy.\" out of the use of this software, even if advised of the possibility of
22677d4530SJoseph Koshy.\" such damage.
23677d4530SJoseph Koshy.\"
24677d4530SJoseph Koshy.\" $FreeBSD$
25677d4530SJoseph Koshy.\"
26cf6c5eebSChristian Brueffer.Dd November 25, 2007
27677d4530SJoseph Koshy.Os
28677d4530SJoseph Koshy.Dt PMC_ATTACH 3
29677d4530SJoseph Koshy.Sh NAME
30677d4530SJoseph Koshy.Nm pmc_attach ,
31677d4530SJoseph Koshy.Nm pmc_detach
32677d4530SJoseph Koshy.Nd attaching and detaching process scope PMCs to target processes
33677d4530SJoseph Koshy.Sh LIBRARY
34677d4530SJoseph Koshy.Lb libpmc
35677d4530SJoseph Koshy.Sh SYNOPSIS
36677d4530SJoseph Koshy.In pmc.h
37677d4530SJoseph Koshy.Ft int
38677d4530SJoseph Koshy.Fn pmc_attach "pmc_id_t pmcid" "pid_t pid"
39677d4530SJoseph Koshy.Ft int
40677d4530SJoseph Koshy.Fn pmc_detach "pmc_id_t pmcid" "pid_t pid"
41677d4530SJoseph Koshy.Sh DESCRIPTION
42677d4530SJoseph KoshyThese functions control the set of target processes tracked by a
43677d4530SJoseph Koshyprocess scope PMC.
44677d4530SJoseph Koshy.Pp
45677d4530SJoseph KoshyFunction
46677d4530SJoseph Koshy.Fn pmc_attach
47677d4530SJoseph Koshyis used to attach a process scope PMC specified by argument
48677d4530SJoseph Koshy.Fa pmcid
49677d4530SJoseph Koshyto a target process specified by argument
50677d4530SJoseph Koshy.Fa pid .
51677d4530SJoseph KoshyArgument
52677d4530SJoseph Koshy.Fa pid
53677d4530SJoseph Koshymay be zero to denote the current process.
54677d4530SJoseph KoshyIf the PMC was allocated with modifier
55677d4530SJoseph Koshy.Dv PMC_F_DESCENDANTS ,
56677d4530SJoseph Koshythe PMC will additionally attach to current and future descendents of
57677d4530SJoseph Koshythe specified target process.
58677d4530SJoseph KoshyThe PMC should be in a quiescent state (i.e., not running).
59677d4530SJoseph Koshy.Pp
60677d4530SJoseph KoshyFunction
61677d4530SJoseph Koshy.Fn pmc_detach
62677d4530SJoseph Koshyis used to detach a process scope PMC specified by argument
63677d4530SJoseph Koshy.Fa pmcid
64677d4530SJoseph Koshyfrom a process specified by argument
65677d4530SJoseph Koshy.Fa pid .
66677d4530SJoseph KoshyArgument
67677d4530SJoseph Koshy.Fa pid
68677d4530SJoseph Koshymay be zero to denote the current process.
69677d4530SJoseph Koshy.Sh RETURN VALUES
70677d4530SJoseph Koshy.Rv -std
71677d4530SJoseph Koshy.Sh ERRORS
72677d4530SJoseph KoshyA call to function
73677d4530SJoseph Koshy.Fn pmc_attach
74677d4530SJoseph Koshymay fail with the following errors:
75677d4530SJoseph Koshy.Bl -tag -width Er
76677d4530SJoseph Koshy.It Bq Er EBUSY
77677d4530SJoseph KoshyArgument
78677d4530SJoseph Koshy.Fa pmcid
79677d4530SJoseph Koshyspecified a PMC that was not in a quiescent state.
80677d4530SJoseph Koshy.It Bq Er EBUSY
81677d4530SJoseph KoshyThe target process specified by function
82677d4530SJoseph Koshy.Fa pmc_attach
83677d4530SJoseph Koshyis being tracked by another process scope PMC that uses the same PMC
84677d4530SJoseph Koshyhardware resources.
85677d4530SJoseph Koshy.It Bq Er EEXIST
86677d4530SJoseph KoshyThe target process is already being tracked by the specified PMC.
87677d4530SJoseph Koshy.It Bq Er EINVAL
88677d4530SJoseph KoshyArgument
89677d4530SJoseph Koshy.Fa pmcid
90677d4530SJoseph Koshyspecified a PMC with system scope.
91677d4530SJoseph Koshy.It Bq Er EINVAL
92677d4530SJoseph KoshyArgument
93677d4530SJoseph Koshy.Fa pid
94677d4530SJoseph Koshyspecified an illegal process id.
95677d4530SJoseph Koshy.It Bq Er EINVAL
96677d4530SJoseph KoshyThe current process does not own a PMC with the handle specified in
97677d4530SJoseph Koshyargument
98677d4530SJoseph Koshy.Fa pmcid .
99677d4530SJoseph Koshy.It Bq Er EPERM
100677d4530SJoseph KoshyThe caller lacked the privilege needed to attach PMCs to
101677d4530SJoseph Koshythe specified target process.
102677d4530SJoseph Koshy.It Bq Er EPERM
103677d4530SJoseph Koshy(i386 and amd64 architectures) The PMC specified by argument
104677d4530SJoseph Koshy.Fa pmcid
105677d4530SJoseph Koshyhas been setup to allow the use of the RDPMC instruction for
106677d4530SJoseph Koshyself measurement.
107677d4530SJoseph Koshy.It Bq Er ESRCH
108677d4530SJoseph KoshyThe current process does not own any PMCs.
109677d4530SJoseph Koshy.It Bq Er ESRCH
110677d4530SJoseph KoshyThe process specified by argument
111677d4530SJoseph Koshy.Fa pid
112677d4530SJoseph Koshydid not exist.
113677d4530SJoseph Koshy.El
114677d4530SJoseph Koshy.Pp
115677d4530SJoseph KoshyA call to function
116677d4530SJoseph Koshy.Fn pmc_detach
117677d4530SJoseph Koshymay fail with the following errors:
118677d4530SJoseph Koshy.Bl -tag -width Er
119677d4530SJoseph Koshy.It Bq Er EINVAL
120677d4530SJoseph KoshyArgument
121677d4530SJoseph Koshy.Fa pmcid
122677d4530SJoseph Koshyspecified a PMC with system scope.
123677d4530SJoseph Koshy.It Bq Er EINVAL
124677d4530SJoseph KoshyArgument
125677d4530SJoseph Koshy.Fa pid
126677d4530SJoseph Koshyspecified an illegal process id.
127677d4530SJoseph Koshy.It Bq Er EINVAL
128677d4530SJoseph KoshyThe current process does not own a PMC with the handle specified in
129677d4530SJoseph Koshyargument
130677d4530SJoseph Koshy.Fa pmcid .
131677d4530SJoseph Koshy.It Bq Er EINVAL
132677d4530SJoseph KoshyThe specified PMC was not attached to the target process.
133677d4530SJoseph Koshy.It Bq Er ESRCH
134677d4530SJoseph KoshyThe current process does not own any PMCs.
135677d4530SJoseph Koshy.It Bq Er ESRCH
136677d4530SJoseph KoshyThe process specified by argument
137677d4530SJoseph Koshy.Fa pid
138677d4530SJoseph Koshyis not being monitored by
139677d4530SJoseph Koshy.Xr hwpmc 4 .
140677d4530SJoseph Koshy.It Bq Er ESRCH
141677d4530SJoseph KoshyThe process specified by argument
142677d4530SJoseph Koshy.Fa pid
143677d4530SJoseph Koshydid not exist.
144677d4530SJoseph Koshy.El
145677d4530SJoseph Koshy.Sh SEE ALSO
146677d4530SJoseph Koshy.Xr pmc 3 ,
147677d4530SJoseph Koshy.Xr pmc_start 3 ,
148677d4530SJoseph Koshy.Xr pmc_stop 3 ,
149677d4530SJoseph Koshy.Xr hwpmc 4
150