e_sleep_thread 커널 서비스
용도
호출 커널 스레드가 공유 이벤트 발생을 기다리도록 강제합니다.
구문
#include <sys/sleep.h>
매개변수
| 항목 | 설명 |
|---|---|
| event_word | 공유 이벤트 단어를 지정합니다. 커널은 다음을 사용합니다. event_word 매개변수를 이 공유 이벤트를 기다리는 스레드 목록에 대한 앵커로 사용합니다. |
| lock_word | 잠금 해제할 단순 또는 복합 잠금을 지정합니다. |
| flags | 잠금 및 신호 처리 옵션을 지정합니다. |
설명
그만큼 e_sleep_thread 커널 서비스는 호출 스레드가 공유 이벤트가 발생할 때까지 기다리도록 강제합니다. 커널은 호출 스레드를 이벤트 목록에 배치합니다. event_word 매개변수. 이 목록은 다음에서 사용됩니다. e_wakeup , e_wakeup_one , 그리고 e_wakeup_w_result 이벤트가 발생하기를 기다리는 일부 또는 모든 스레드를 깨우는 커널 서비스입니다.
잠금을 지정할 수 있습니다. 커널 서비스가 시작되면 스레드가 차단되기 직전에 잠금이 해제됩니다. 이 잠금은 다음에서 지정한 대로 단순 잠금이거나 복합 잠금일 수 있습니다. 깃발 매개변수. 커널 서비스가 종료되면 잠금이 다시 획득됩니다.
플래그
그만큼 깃발 매개변수는 커널 서비스에 대한 옵션을 지정합니다. 여러 플래그를 비트 OR 연산자와 결합할 수 있습니다. 아래에 설명되어 있습니다.
다음 네 개의 플래그는 잠금 유형을 지정합니다. 만약 lock_word 매개변수가 아님 없는 , 이 플래그 중 정확히 하나만 사용해야 합니다.
| 플래그 지정 | 설명 |
|---|---|
| LOCK_HANDLER | lock_word 스레드 인터럽트 또는 인터럽트 인터럽트 중요 섹션을 보호하는 단순 잠금을 지정합니다. |
| LOCK_SIMPLE | lock_word 스레드 스레드 중요 섹션을 보호하는 간단한 잠금을 지정합니다. |
| lock_read | lock_word 공유 읽기 모드에서 복잡한 잠금을 지정합니다. |
| lock_write | lock_word 배타적 쓰기 모드에서 복합 잠금을 지정합니다. |
다음 플래그는 신호 처리를 지정합니다. 기본적으로 스레드가 휴면 상태인 동안 신호는 깨어날 때까지 보류됩니다.
| 항목 | 설명 |
|---|---|
| 중단 가능 | 커널 스레드가 휴면 중인 동안 신호를 확인해야 합니다. 신호를 전달해야 하는 경우 스레드가 깨어납니다. |
리턴 값
그만큼 e_sleep_thread 커널 서비스는 커널 스레드가 어떻게 깨어났는지 나타내는 값을 반환합니다. 다음 값이 정의됩니다.
| 항목 | 설명 |
|---|---|
| THREAD_AWAKENED | 정상적인 깨우기를 나타냅니다. 이벤트가 발생했습니다. |
| THREAD_INTERRUPTED | 신호에 의한 중단을 나타냅니다. 이 값은 다음과 같은 경우에도 반환될 수 있습니다. 중단 가능 플래그는 다음에 의해 생성될 수도 있으므로 설정되지 않습니다. e_clear_wait 또는 e_wakeup_w_result 커널 서비스. |
| THREAD_TIMED_OUT | 시간 초과 만료를 나타냅니다. 그만큼 e_sleep_thread 시간 초과가 없습니다. 그러나, 그 e_clear_wait 또는 e_wakeup_w_result 커널 서비스는 이 반환 값을 생성할 수 있습니다. |
| THREAD_OTHER | 하위 시스템 수준에서 정의해야 하는 코드와 사전 정의된 시스템 코드를 구분합니다. 하위 시스템은 이 값보다 크거나 같은 자체 값을 정의해야 합니다. |
실행 환경
그만큼 e_sleep_thread 커널 서비스는 다음에서 호출될 수 있습니다. 프로세스 환경만.