e_sleep_thread 커널 서비스

용도

호출 커널 스레드가 공유 이벤트 발생을 기다리도록 강제합니다.

구문

#include <sys/sleep.h>
int e_sleep_thread ( event_word,  lock_word,  flags)
tid_t *event_word;
void *lock_word;
int flags;

매개변수

항목 설명
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 커널 서비스는 다음에서 호출될 수 있습니다. 프로세스 환경만.