Флаг | Описание |
---|---|
CLONE_FILES | Родительский и порожденный процессы совместно используют открытые файлы |
CLONE_FS | Родительский и порожденный процессы совместно используют информацию о файловой системе |
CLONE_IDLETASK | Установить значение PID в нуль (используется только для холостых (idle) задач) |
CLONE_NEWNS | Создать новое пространство имен для порожденной задачи |
CLONE_PARENT | Родительский процесс вызывающего процесса становится родительским и для порожденного |
CLONE_PTRACE | Продолжить трассировку и для порожденного процесса |
CLONE_SETTID | Возвратить значение идентификатора TID в пространство пользователя |
CLONE_SETTLS | Для порожденного процесса создать новую область локальных данных потока (thread local storage, TLS) |
CLONE_SIGHAND | У порожденного и родительского процессов будут общие обработчики сигналов |
CLONE_SYSVSEM | У родительского и порожденного процессов будет общая семантика обработки флага SEM_UNDO для семафоров System V |
CLONE_THREAD | Родительский и порожденный процессы будут принадлежать одной группе потоков |
CLONE_VFORK | Использовать vfork : родительский процесс будет находиться а приостановленном состоянии, пока порожденный процесс не возобновит его работу |
CLONE_UNTRACED | Запретить родительскому процессу использование флага CLONE_PTRACE для порожденного процесса |
CLONE_STOP | Запустить процесс в состоянии TASK_STOPPED |
CLONE_CHILD_CLEARTID | Очистить идентификатор TID для порожденного процесса |
CLONE_CHILD_SETTID | Установить идентификатор TID для порожденного процесса |
CLONE_PARENT_SETTID | Установить идентификатор TID для родительского процесса |
CLONE_VM | У порожденного и родительского процессов будет общее адресное пространство |
Потоки в пространстве ядра
Часто в ядре полезно выполнить некоторые операции в фоновом режиме. В ядре такая возможность реализована с помощью mm
для них равно NULL
). Эти потоки работают только в пространстве ядра, и их контекст не переключается в пространство пользователя. Тем не менее потоки в пространстве ядра планируются и вытесняются так же, как и обычные процессы.
В ядре Linux потоки пространства ядра выполняют определенные задания, наиболее часто используемые, — это
int kernel_thread(int (*fn)(void*), void* arg, unsigned long flags);