Главная » 2017 » Ноябрь » 19 » man 2 getunwind
22:32
man 2 getunwind

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


getunwind - копирует раскрученные данные в буфер вызывающего



ОБЗОР


#include <syscall.h>
#include <linux/unwind.h>

long getunwind(void *buf, size_t buf_size);

Замечание: в glibc нет обёрточной функции для данного системного вызова; смотрите
ЗАМЕЧАНИЯ.



ОПИСАНИЕ


Замечание: этот вызов устарел.

Специальный системный вызов getunwind() для IA-64 копирует раскрученные данные
кадра вызова ядра в буфер, указанный в buf, и возвращает размер раскрученных
данных; эти данные описывают шлюзовую страницу (gate page, код ядра, который
отображается в адресное пространство пользователя).

Размер буфера buf задаётся в buf_size. Данные копируются только, если значение
buf_size больше или равно размеру раскрученных данных и значение buf не равно
NULL; в противном случае, данные не копируются и вызов завершается без ошибки,
возвращая размер, который необходим для хранения раскрученных данных.

В начале раскрученных данных содержится таблица раскрутки. После неё хранится
связанная с раскруткой информация в произвольном порядке. В таблице раскрутки
содержатся записи в следующем виде:

u64 start; (64-битный адрес начала функции)
u64 end; (64-битный адрес конца функции)
u64 info; (смещение относительно BUF на раскрученную информацию)

Запись, у которой значение start равно нулю, указывает на конец таблицы.
Подробности формата смотрите в руководстве IA-64 Software Conventions and Runtime
Architecture.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении getunwind() возвращает размер раскрученных данных. При
ошибке возвращается -1, а в errno задаётся причина ошибки.



ОШИБКИ


Вызов getunwind() завершается с ошибкой EFAULT, если раскрученную информацию
невозможно сохранить в пространство, указанное buf.



ВЕРСИИ


Данный системный вызов доступен в Linux начиная с версии 2.4.



СООТВЕТСТВИЕ СТАНДАРТАМ


Данный системный вызов есть только в Linux и доступен только на архитектуре IA-64.



ЗАМЕЧАНИЯ


Данный системный вызов устарел. Современным способом получить раскрученные данные
ядра является работа через vdso(7).

В glibc нет обёрточной функции для данного системного вызова; в маловероятном

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 444 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar