솔라리스/리눅스

pthread_setschedparam, pthread_getschedparam

지니아부지 2011. 10. 10. 20:32
 

이름

pthread_setschedparam, pthread_getschedparam - 쓰레드 스케줄링 파라미터의 제어

사용법

#include <pthread.h>

int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param *param);

int pthread_getschedparam(pthread_t target_thread, int *policy, struct sched_param *param);

설명

pthread_setschedparamtarget_thread 쓰레드의 스케줄링 파라미터를 policy 인수와 param 인수로 설정한다. policySCHED_OTHER (일반적인, 비-실시간 스케줄링)이나 SCHED_RR (실시간 라운드 로빈)이나 SCHED_FIFO (실시간 선입선출)중의 하나로 설정해야 한다. param 은 두가지 실시간 정책을 위한 스케줄링 우선순위를 지정한다. 스케줄링 정책에 대한 자세한 내용은 sched_setpolicy(2) 를 살펴보기 바란다.

실시간 스케줄링 정책인 SCHED_RRSCHED_FIFO 는 오직 수퍼유저 권한으로 실행되는 프로세스에만 적용할 수 있다.

pthread_getschedparamtarget_thread 쓰레드의 스케줄링 정책과 스케줄링 파라미터 값을 얻어와서 policyparam 이 지정하는 위치에 각각 저장한다.

반환값

pthread_setschedparampthread_getschedparam 는 성공시에 0을 반환하고, 실패시에 0이 아닌 에러 코드를 반환한다.

에러

에러가 발생하면 pthread_setschedparam 는 다음과 같은 에러 코드를 반환한다:
EINVAL
policy 인수가 SCHED_OTHER, SCHED_RR, SCHED_FIFO 중의 하나가 아니다.

EINVAL
param 이 가리키는 우선순위 값이 해당 정책에 맞는 값이 아니다.

EPERM
호출한 프로세스가 수퍼유저 권한을 가지고 있지 않다.
ESRCH
target_thread 를 찾을 수 없거나 이미 종료되었다.

EFAULT
param 이 프로세스의 메모리 공간 밖을 가리킨다.

에러가 발생하면 pthread_getschedparam 은 다음과 같은 에러를 반환한다:

ESRCH
target_thread 를 찾을 수 없거나 이미 종료되었다.

EFAULT
policy 혹은 param 이 프로세스의 메모리 공간 밖을 가리킨다.