Sem_exit()
Функция sem_exit() вызывается из do_exit() и отвечает за выполнение всех "откатов" по завершении процесса.
Если процесс находится в состоянии ожидания на семафоре, то он удаляется из списка при заблокированном семафоре.
Производится просмотр списка "откатов" текущего процесса и для каждого элемента списка выполняются следующие действия:
Проверяется структура "отката" и ID набора семафоров.
В списке "откатов" соответствующего набора семафоров отыскиваются ссылки на структуры, которые удаляются из списка.
К набору семафоров применяются корректировки из структуры "отката".
Обновляется поле sem_otime в наборе семафоров.
Вызывается , которая просматривает список отложенных операций и активирует задачи, которые могут быть разблокированы в результате "отката".
Память, занимаемая структурой, освобождается.
По окончании обработки списка очищается поле current->semundo.
Содержание раздела