perfmonctl -
интерфейс
к блоку
слежения
за
производительностью
IA-64
#include <syscall.h>
#include <perfmon.h>
long perfmonctl(int fd, int cmd, void arg[.narg], int narg);
Замечание:
В glibc нет
обёрточной
функции
для
данного
системного
вызова;
смотрите
ЗАМЕЧАНИЯ.
Специальный
системный
вызов
perfmonctl()
для IA-64
предоставляет
интерфейс
к PMU (блок
слежения
за
производительностью,
perfomance monitoring unit). PMU
содержит
регистры PMD
(данные
производительности,
performance monitoring data) и PMC
(управление
слежением
за
производительностью,
performance monitoring control), в
которых
собирается
статистика
по
аппаратному
обеспечению.
Вызов
perfmonctl()
выполняет
операцию
cmd
над
входными
аргументами,
указанными
в
arg.
Количество
аргументов
указывается
в
narg. В
аргументе
fd задаётся
контекст perfmon
для
операции.
Поддерживаемые
значения
cmd:
- PFM_CREATE_CONTEXT
-
perfmonctl(int fd, PFM_CREATE_CONTEXT, pfarg_context_t *ctxt, 1);
Создаёт
контекст.
- Параметр
fd
игнорируется.
Создаётся
новый
контекст perfmon
согласно
ctxt и его
файловый
дескриптор
возвращается
в ctxt->ctx_fd.
- Файловый
дескриптор
можно
использовать
в
последующих
вызовах
perfmonctl(), а также
для чтения
уведомлений
о событиях
(тип pfm_msg_t) с
помощью read(2).
Файловый
дескриптор
можно
опрашивать
с помощью
select(2), poll(2) и epoll(7).
- Контекст
можно
уничтожить
вызвав close(2),
указав
файловый
дескриптор.
- PFM_WRITE_PMCS
-
perfmonctl(int fd, PFM_WRITE_PMCS, pfarg_reg_t *pmcs, n);
Назначает
значения
регистрам
PMC.
- PFM_WRITE_PMDS
-
perfmonctl(int fd, PFM_WRITE_PMDS, pfarg_reg_t *pmds, n);
Назначает
значения
регистрам
PMD.
- PFM_READ_PMDS
-
perfmonctl(int fd, PFM_READ_PMDS, pfarg_reg_t *pmds, n);
Читает
регистры PMD.
- PFM_START
-
perfmonctl(int fd, PFM_START, NULL, 0);
Запускает
слежение.
- PFM_STOP
-
perfmonctl(int fd, PFM_STOP, NULL, 0);
Останавливает
слежение.
- PFM_LOAD_CONTEXT
-
perfmonctl(int fd, PFM_LOAD_CONTEXT, pfarg_load_t *largs, 1);
Присоединяет
контекст к
нити.
- PFM_UNLOAD_CONTEXT
-
perfmonctl(int fd, PFM_UNLOAD_CONTEXT, NULL, 0);
Отсоединяет
контекст
от нити.
- PFM_RESTART
-
perfmonctl(int fd, PFM_RESTART, NULL, 0);
Перезапускает
слежение
после
приёма
уведомления
о
переполнении.
- PFM_GET_FEATURES
-
perfmonctl(int fd, PFM_GET_FEATURES, pfarg_features_t *arg, 1);
- PFM_DEBUG
-
perfmonctl(int fd, PFM_DEBUG, val, 0);
Если val не
равно нулю,
то
включает
режим
отладки, в
противном
случае
выключает.
- PFM_GET_PMC_RESET_VAL
-
perfmonctl(int fd, PFM_GET_PMC_RESET_VAL, pfarg_reg_t *req, n);
Сбрасывает
регистры PMC
в их
значения
по
умолчанию.
perfmonctl() returns zero when the operation is successful. On error, -1
is returned and
errno is set to indicate the error.
perfmonctl() was added in Linux 2.4; it was removed in Linux 5.10.
Вызов
perfmonctl()
есть
только в Linux и
доступен
только для
архитектуры
IA-64.
This system call was broken for many years, and ultimately removed in Linux
5.10.
glibc does not provide a wrapper for this system call; on kernels where it
exists, call it using
syscall(2).
gprof(1)
Спецификация
интерфейса
perfmon2
Русский
перевод
этой
страницы
руководства
был сделан
Alexey, Azamat Hackimov <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]