SCHED_SETPARAM(2)

명칭
sched_setparam, sched_getparam - 스케줄 파라미터의 설정 / 취득

프로그램 라이브러리
libc

서식
<sched.h> int sched_setparam(pid_t pid, const struct sched_param *param) int sched_getparam(pid_t pid, struct sched_param *param)

해설
sched_setparam() 함수는, pid 그리고 지정하는 프로세스의 스케줄 파라미터를, param 하지만 가리키는 구조체 sched_param 의 지정하는 값으로 설정합니다. 구조체 param 의 멤버 sched_priority 의 값은, pid 그리고 지정하는 프로세스의 현재의 스케줄 방침용의 우선 순위 범위내 (양단 포함한다)의 정수일 필요가 있습니다. 우선 순위의 수치가 높을 정도 우선 순위가 높은 일을 나타냅니다.

이 실장에서는, pid 의 값이 부의 경우, 함수는 처리에 실패합니다.

pid 그리고 지정하는 프로세스가 존재해, 한편 호출원프로세스에 퍼미션이 있는 경우, 프로세스 ID 가 pid (와)과 동일한 프로세스에 대해서 스케줄 파라미터를 설정합니다.

pid 하지만 0 의 경우, 호출원프로세스에 대해서 스케줄 파라미터를 설정합니다.

이 실장에서는, 어느 프로세스가 다른 프로세스의 스케줄 파라미터에 언제 영향을 미칠 수 있는가 할 방침은, 기록 스타일 조작으로서 p1003_1b (으)로 지정되어 있는 것입니다.

타겟 프로세스는, 실행중이든 실행중이 아니든, 우선 순위가 동일한가 또는보다 높은, 다른 모든 실행 가능한 프로세스가 실행되도록(듯이) 스케줄 된 다음에, 실행을 재개합니다.

pid 인수로 지정하는 프로세스의 우선 순위가, 가장 우선 순위의 낮은 실행중의 프로세스의 우선 순위보다 높게 설정되어 있어 게다가 지정의 프로세스의 실행 준비가 되어 있는 경우, pid 인수로 지정하는 프로세스는 우선 순위가 가장 낮은 실행중의 프로세스를 프리엔프트 합니다. 똑같이, sched_setparam() (을)를 호출하고 있는 프로세스가 그 우선 순위를, 1 개(살) 또는 복수의 하늘이 아닌 프로세스 리스트의 우선 순위보다 낮게 설정하는 경우, 우선 순위가 가장 높은 리스트의 선두의 프로세스도 호출원프로세스를 프리엔프트 합니다. 이와 같이, 어느 케이스에서도, 우선 순위의 높은 프로세스가 실행되어 버릴 때까지, 원래의 프로세스가 요구한 우선 순위 변경의 완료 통지를 수신하지 않을 가능성이 있습니다.

이 실장에서는, pid 그리고 지정하는 프로세스의 현재의 스케줄 방침이 통상의 타임 쉐어링 (SCHED_OTHER; POSIX 소스가 아닌 경우는 SCHED_NORMAL) 일까 아이돌 방침 (POSIX 소스가 아닌 경우는 SCHED_IDLE)이다면, 그 동작은, 실재하는 리얼타임 우선 순위보다 낮은 우선 순위의 SCHED_RR 로 프로세스가 실행되고 있었는지와 같이 됩니다.

sched_getparam() 함수는, pid 그리고 지정하는 프로세스의 스케줄 파라미터를 param 하지만 가리킨다 sched_param 구조체에 넣어 돌려줍니다.

pid 그리고 지정하는 프로세스가 존재해 한편, 호출원프로세스에 퍼미션이 있는 경우, 프로세스 ID 가 pid 에 동일한 프로세스의 스케줄 파라미터를 돌려줍니다.

이 실장에서는, 어느 프로세스가 다른 프로세스의 스케줄 파라미터를 언제 얻을 수 있을까의 방침은, 읽기 스타일 조작으로서 p1003_1b 에 상세 해설 되고 있는 것입니다.

pid 하지만 0 의 경우, 호출원프로세스의 스케줄 파라미터를 돌려줍니다. 이 실장에서는, pid 하지만 부의 경우, sched_getparam 함수는 처리에 실패합니다.

반환값

에러
처리에 실패하면(자), errno (을)를 대응하는 값으로 설정합니다.

[ENOSYS]
    시스템은 이 기능을 서포트하도록(듯이) 구성되어 있지 않습니다.

[EPERM]
    요구하고 있는 프로세스는, p1003_1b 그리고 상세 해설 되고 있는 퍼미션을 가지고 있지 않습니다.

[ESRCH]
    pid 그리고 지정한 프로세스에 대응하는 프로세스가 발견되지 않습니다.

[EINVAL]
    sched_setparam() 그리고, 요구된 1 개(살) 이상의 스케줄 파라미터가, 지정의 pid 의 스케줄 방침으로 정의된 범위의 외측에 있습니다.

관련 항목
sched_getscheduler(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_rr_get_interval(2), sched_setscheduler(2), sched_yield(2)

표준
sched_setparam() 함수와 sched_getparam() 함수는 p1003.1b-93 에 준거하고 있습니다.