Имена функций, реализующих системные вызовы,
Имена функций, реализующих системные вызовы, в Linux начинаются с префикса sys_, но они, как правило, ограничиваются только проверкой аргументов или платформо-зависимой передачей информации, а фактически всю работу выполняют функции do_. Это касается и sys_exit(), которая вызываетdo_exit() для выполнения необходимых действий. Хотя, в других частях ядра иногда встречается вызов sys_exit (), на самом деле вызывается do_exit ().
Функция do_exit() размещена в kernel/exit.c. Некоторые примечания по поводу функции do_exit():
Устанавливает глобальную блокировку ядра (устанавливает, но не снимает).
Вызывает schedule(), которая уже не возвращает управление.
Переводит задачу в состояние TASK_ZOMBIE.
Передает всем потомкам current->pdeath_signal, если он не ноль.
Передает "родителю" current->exit_signal, который обычно равен SIGCHLD.
Освобождает ресурсы, захваченные при ветвлении, закрывает открытые файлы и т.д.
Содержание Назад Вперед