Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       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
       <azamat.hackimov@gmail.com>,  kogamatranslator49  <r.podarov@yandex.ru>,  Kogan,  Max   Is
       <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.