1 .\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
2 .\" and Copyright (C) 2013 Michael Kerrisk <mtk.manpages@gmail.com>
3 .\" Written by Ivana Varekova <varekova@redhat.com>
5 .\" %%%LICENSE_START(VERBATIM)
6 .\" Permission is granted to make and distribute verbatim copies of this
7 .\" manual provided the copyright notice and this permission notice are
8 .\" preserved on all copies.
10 .\" Permission is granted to copy and distribute modified versions of this
11 .\" manual under the conditions for verbatim copying, provided that the
12 .\" entire resulting derived work is distributed under the terms of a
13 .\" permission notice identical to this one.
15 .\" Since the Linux kernel and libraries are constantly changing, this
16 .\" manual page may be incorrect or out-of-date. The author(s) assume no
17 .\" responsibility for errors or omissions, or for damages resulting from
18 .\" the use of the information contained herein. The author(s) may not
19 .\" have taken the same level of care in the production of this manual,
20 .\" which is licensed free of charge, as they might when working
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
27 .TH PERFMONCTL 2 2017-09-15 Linux "Linux Programmer's Manual"
29 perfmonctl \- interface to IA-64 performance monitoring unit
32 .B #include <syscall.h>
33 .B #include <perfmon.h>
35 .BI "long perfmonctl(int " fd ", int " cmd ", void *" arg ", int " narg ");
38 There is no glibc wrapper for this system call; see NOTES.
42 system call provides an interface to the
43 PMU (performance monitoring unit).
44 The PMU consists of PMD (performance monitoring data) registers and
45 PMC (performance monitoring control) registers,
46 which gather hardware statistics.
51 to the input arguments specified by
53 The number of arguments is defined by \fInarg\fR.
56 argument specifies the perfmon context to operate on.
64 .BI "perfmonctl(int " fd ", PFM_CREATE_CONTEXT, pfarg_context_t *" ctxt ", 1);
71 A new perfmon context is created as specified in
73 and its file descriptor is returned in \fIctxt->ctx_fd\fR.
75 The file descriptor can be used in subsequent calls to
77 and can be used to read event notifications (type
81 The file descriptor is pollable using
87 The context can be destroyed by calling
89 on the file descriptor.
94 .BI "perfmonctl(int " fd ", PFM_WRITE_PMCS, pfarg_reg_t *" pmcs ", n);
100 .BI "perfmonctl(int " fd ", PFM_WRITE_PMDS, pfarg_reg_t *" pmds ", n);
108 .BI "perfmonctl(int " fd ", PFM_READ_PMDS, pfarg_reg_t *" pmds ", n);
115 .\" .BI "perfmonctl(int " fd ", PFM_START, arg, 1);
116 .BI "perfmonctl(int " fd ", PFM_START, NULL, 0);
123 .BI "perfmonctl(int " fd ", PFM_STOP, NULL, 0);
128 .\" pfm_context_load()
130 .BI "perfmonctl(int " fd ", PFM_LOAD_CONTEXT, pfarg_load_t *" largs ", 1);
132 Attach the context to a thread.
134 .B PFM_UNLOAD_CONTEXT
135 .\" pfm_context_unload()
137 .BI "perfmonctl(int " fd ", PFM_UNLOAD_CONTEXT, NULL, 0);
139 Detach the context from a thread.
144 .BI "perfmonctl(int " fd ", PFM_RESTART, NULL, 0);
146 Restart monitoring after receiving an overflow notification.
149 .\" pfm_get_features()
151 .BI "perfmonctl(int " fd ", PFM_GET_FEATURES, pfarg_features_t *" arg ", 1);
157 .BI "perfmonctl(int " fd ", PFM_DEBUG, " val ", 0);
161 is nonzero, enable debugging mode, otherwise disable.
163 .B PFM_GET_PMC_RESET_VAL
164 .\" pfm_get_pmc_reset()
166 .BI "perfmonctl(int " fd ", PFM_GET_PMC_RESET_VAL, pfarg_reg_t *" req ", n);
168 Reset PMC registers to default values.
172 .\" .B PFM_CREATE_EVTSETS
174 .\" create or modify event sets
176 .\" .BI "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
179 .\" .B PFM_DELETE_EVTSETS
180 .\" delete event sets
182 .\" .BI "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
185 .\" .B PFM_GETINFO_EVTSETS
186 .\" get information about event sets
188 .\" .BI "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
192 returns zero when the operation is successful.
193 On error, \-1 is returned and
195 is set to indicate the cause of the error.
198 is available since Linux 2.4.
201 is Linux-specific and is available only on the IA-64 architecture.
203 Glibc does not provide a wrapper for this system call; call it using
208 The perfmon2 interface specification