Обнаружение тупиков на мьютексах в многопоточных приложениях - page 6

В.С. Белоус
,
В.А. Крищенко
,
Н.Ю. Рязанова
6
минимальный и максимальный идентификаторы потоков, те-
кущего приложения (используется для фильтрации результатов).
Полученная информация заносится в связный список для после-
дующего анализа. Код функции-ловушки приведен на рис. 6. Функ-
ция получает три параметра: указатель uaddr — смещение мьютекса в
пространстве пользователя; значение op — операция, выполняемая
над мьютексом (FUTEX_WAIT_PRIVATE — мьютекс занят,
FUTEX_WAKE_PRIVATE — мьютекс свободен) и значение val,
находящее по адресу uaddr — при (val == 2) происходит блокировка
потока на мьютексе, а при (val == 1) — его освобождение.
Рис. 6.
Функция-ловушка
Для передачи данных из пространства ядра в пространство поль-
зователя используется файловая система ProcFS, связанная с катало-
гом /proc. Эта файловая система позволяет установить функции, вы-
1,2,3,4,5 7,8,9,10,11
Powered by FlippingBook