Man page - pthread_getschedparam(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

PTHREAD_SETSCHEDPARAM

名 前
書 式
čŖ¬ ꘎
čæ” 悊 値
エ 惩 ー
属 ꀧ
ęŗ– ꋠ
注 ꄏ
例
惗 惭 悰 惩 惠 恮 ソ ー ス
関 連 項 ē›®
恓 恮 ꖇ 書 恫 恤 恄 恦

名 前

pthread_setschedparam, pthread_getschedparam - ス 惬 惃 惉 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 惑 惩 惔 ー タ ー 悒 設 定 /取 得 恙 悋

書 式

#include <pthread.h>

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

-pthread 恧 コ ン 惑 悤 惫 恗 恦 リ ン ク 恙 悋 怂

čŖ¬ ꘎

pthread_setschedparam () 関 ꕰ は 态 ス 惬 惃 惉 thread 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と ス 悱 ジ 惄 ー リ ン 悰 惑 惩 惔 ー タ ー 悒 設 定 恙 悋 怂

policy は thread 恮 ꖰ 恗 恄 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 悒 ꌇ 定 恙 悋 怂 policy 恫 ꌇ 定 恧 恍 悋 値 と 恝 恮 ꄏ 味 は sched (7) 恧 čŖ¬ ꘎ 恕 悌 恦 恄 悋 怂

param が ꌇ 恙 ꧋ 造 体 は thread 恮 ꖰ 恗 恄 ス 悱 ジ 惄 ー リ ン 悰 惑 惩 惔 ー タ ー 悒 ꌇ 定 恙 悋 怂 ス 悱 ジ 惄 ー リ ン 悰 惑 惩 惔 ー タ ー は 仄 äø‹ 恮 ꧋ 造 体 恧 ē®” 理 恕 悌 悋 怂

struct sched_param {
int sched_priority; /* Scheduling priority */
};

見 恦 分 恋 悋 通 悊 态 悵 惝 ー 惈 恕 悌 恦 恄 悋 ス 悱 ジ 惄 ー リ ン 悰 惑 惩 惔 ー タ ー は äø€ 恤 恠 恑 恧 恂 悋 怂 各 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 恧 許 åÆ 恕 悌 悋 ス 悱 ジ 惄 ー リ ン 悰 優 先 åŗ¦ 恮 詳 ē“° 恫 恤 恄 恦 は 态 sched (7) 悒 参 ē…§ 恮 恓 と 怂

pthread_getschedparam () 関 ꕰ は 态 ス 惬 惃 惉 thread 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 惑 惩 惔 ー タ ー 悒 态 恝 悌 恞 悌 policy と param が ꌇ 恙 惐 惃 惕 ć‚” ー 恫 å…„ 悌 恦 čæ” 恙 怂 čæ” 恕 悌 た 優 先 åŗ¦ 恮 値 は 态 ꜀ 悂 ꜀ čæ‘ 実 蔌 恗 た thread 恫 å½± 響 悒 äøŽ 恈 悋 pthread_setschedparam (), pthread_setschedprio , pthread_create 恧 設 定 恕 悌 た 値 と な 悋 怂 čæ” 恕 悌 た 優 先 åŗ¦ は 态 優 先 åŗ¦ 恮 ē¶™ 承 悄 優 先 åŗ¦ 恮 上 限 悒 設 定 恙 悋 関 ꕰ (例 恈 恰 pthread_mutexattr_setprioceiling (3) 悄 pthread_mutexattr_setprotocol (3) 悒 参 ē…§ ) 恮 呼 び 出 恗 恮 結 Ꞝ 蔌 悏 悌 悋 äø€ Ꙃ ēš„ な 優 先 åŗ¦ 恮 čŖæ ę•“ 恮 å½± 響 悒 受 恑 な 恄 怂

čæ” 悊 値

ꈐ 功 恙 悋 と 态 恓 悌 悉 恮 関 ꕰ は 0 悒 čæ” 恙 怂 エ 惩 ー 恮 å “ 合 态 0 仄 外 恮 エ 惩 ー 番 号 悒 čæ” 恙 怂 pthread_setschedparam () が 失 ꕗ 恗 た å “ 合 态 thread 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 惑 惩 惔 ー タ ー は 変 ꛓ 恕 悌 な 恄 怂

エ 惩 ー

恓 悌 悉 恮 関 ꕰ は 恩 恔 悉 悂 仄 äø‹ 恮 エ 惩 ー 恧 失 ꕗ 恙 悋 å “ 合 が 恂 悋 怂

ESRCH

ID が thread 恮 ス 惬 惃 惉 が 見 恤 恋 悉 な 恋 っ た 怂

pthread_setschedparam () は 恕 悉 恫 仄 äø‹ 恮 エ 惩 ー 恧 失 ꕗ 恙 悋 å “ 合 が 恂 悋 怂

EINVAL

policy が čŖ 識 恧 恍 な 恄 惝 リ ć‚· ー 恧 恂 悋 恋 态 param が policy 恧 は ꄏ 味 悒 持 た な 恄 値 恧 恂 悋 怂

EPERM

呼 び 出 恗 偓 が 态 ꌇ 定 恕 悌 た ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 悄 惑 惩 惔 ー タ ー 悒 設 定 恙 悋 恮 恫 åæ… 要 な 特 権 悒 持 た な 恄 怂

POSIX.1 恧 は 态 pthread_setschedparam () 恫 関 恗 恦 エ 惩 ー ENOTSUP ("悵 惝 ー 惈 恕 悌 恦 恄 な 恄 値 悒 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 悄 惑 惩 惔 ー タ ー 恫 設 定 恗 悈 恆 と 恗 た ") 悂 čæ½ 加 恧 č¦ 定 恕 悌 恦 恄 悋 怂

属 ꀧ

恓 恮 節 恧 使 用 恕 悌 恦 恄 悋 用 čŖž 恮 čŖ¬ ꘎ 恫 恤 恄 恦 は 态 attributes (7) 悒 参 ē…§ 怂

Image grohtml-30345-1.png

ęŗ– ꋠ

POSIX.1-2001, POSIX.1-2008.

注 ꄏ

ス 惬 惃 惉 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 悄 優 先 åŗ¦ 悒 変 ꛓ 恙 悋 た 悁 恫 åæ… 要 な 許 åÆ 悄 変 ꛓ 恗 た å “ 合 恮 å½± 響 态 お 悈 び 各 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 恧 čŖ 悁 悉 悌 悋 優 先 åŗ¦ 恮 範 囲 恮 詳 ē“° 恫 恤 恄 恦 は 态 sched (7) 悒 参 ē…§ 怂

例

仄 äø‹ 恮 惗 惭 悰 惩 惠 は pthread_setschedparam () と pthread_getschedparam () 悄 ス 悱 ジ 惄 ー リ ン 悰 恫 関 連 恙 悋 pthreads 恮 他 恮 恄 悍 恄 悍 な 関 ꕰ 恮 使 用 例 悒 示 恙 悂 恮 恧 恂 悋 怂

仄 äø‹ 恮 実 蔌 例 恧 は 态 惔 悤 ン ス 惬 惃 惉 は 态 自 分 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 悒 優 先 åŗ¦ 10 恮 SCHED_FIFO 悒 設 定 恗 态 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 悒 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー 属 ꀧ SCHED_RR と ス 悱 ジ 惄 ー リ ン 悰 優 先 åŗ¦ 属 ꀧ 20 恧 初 期 化 恙 悋 怂 ꬔ 恫 态 恓 恮 惗 惭 悰 惩 惠 は ( pthread_attr_setinheritsched (3) 悒 使 っ 恦 ) 恝 恮 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 恮 inherit scheduler 属 ꀧ 恫 PTHREAD_EXPLICIT_SCHED 悒 設 定 恙 悋 怂 PTHREAD_EXPLICIT_SCHED は 态 恝 恮 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 悒 使 っ 恦 作 ꈐ 恕 悌 た ス 惬 惃 惉 は ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 恋 悉 ス 悱 ジ 惄 ー リ ン 悰 属 ꀧ 悒 取 得 恗 恦 使 恆 恓 と 悒 ꄏ 味 恙 悋 怂 恝 悌 恋 悉 态 恓 恮 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 悒 使 っ 恦 ス 惬 惃 惉 悒 作 ꈐ 恗 态 作 ꈐ 恗 た ス 惬 惃 惉 恮 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 優 先 åŗ¦ 悒 蔨 示 恙 悋 怂

$ su # Need privilege to set real-time scheduling policies
Password:
# ./a.out -mf10 -ar20 -i e
Scheduler settings of main thread
policy=SCHED_FIFO, priority=10

Scheduler settings in 'attr'
policy=SCHED_RR, priority=20
inheritsched is EXPLICIT

Scheduler attributes of new thread
policy=SCHED_RR, priority=20

上 記 恮 出 力 恧 は 态 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 優 先 åŗ¦ が ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 恧 ꌇ 定 恕 悌 た 値 恋 悉 取 悉 悌 恦 恄 悋 恓 と が 分 恋 悋 怂

ꬔ 恮 実 蔌 例 は 前 恮 悂 恮 と 同 恘 恠 が 态 inherit scheduler 属 ꀧ が PTHREAD_INHERIT_SCHED 恫 設 定 恕 悌 悋 点 が ē•° な 悋 怂 PTHREAD_INHERIT_SCHED は 态 恝 恮 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 悒 使 っ 恦 作 ꈐ 恕 悌 た ス 惬 惃 惉 は 态 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 恋 悉 ス 悱 ジ 惄 ー リ ン 悰 属 ꀧ 悒 ē„” 視 恗 态 代 悏 悊 恫 呼 び 出 恗 た ス 惬 惃 惉 恋 悉 ス 悱 ジ 惄 ー リ ン 悰 属 ꀧ 悒 取 得 恙 悋 恓 と 悒 ꄏ 味 恙 悋 怂

# ./a.out -mf10 -ar20 -i i
Scheduler settings of main thread
policy=SCHED_FIFO, priority=10

Scheduler settings in 'attr'
policy=SCHED_RR, priority=20
inheritsched is INHERIT

Scheduler attributes of new thread
policy=SCHED_FIFO, priority=10

上 記 恮 出 力 恧 は 态 ス 悱 ジ 惄 ー リ ン 悰 惝 リ ć‚· ー と 優 先 åŗ¦ が 态 ス 惬 惃 惉 属 ꀧ オ 惖 ジ 悧 ク 惈 恋 悉 恧 は な 恏 态 ス 惬 惃 惉 悒 作 ꈐ 恗 た ス 惬 惃 惉 恋 悉 取 悌 悌 恦 恄 悋 恓 と が 分 恋 悋 怂

な お 态 -iĀ i 悒 省 ē•„ 恗 た å “ 合 恧 悂 态 PTHREAD_INHERIT_SCHED が inherit scheduler 属 ꀧ 恮 惇 惕 ć‚© 惫 惈 値 な 恮 恧 态 出 力 は 同 恘 恫 な 悋 怂

惗 惭 悰 惩 惠 恮 ソ ー ス

/* pthreads_sched_test.c */

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

#define handle_error_en(en, msg) \
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)

static void
usage(char *prog_name, char *msg)
{
if (msg != NULL)
fputs(msg, stderr);

fprintf(stderr, "Usage: %s [options]\n", prog_name);
fprintf(stderr, "Options are:\n");
#define fpe(msg) fprintf(stderr, "\t%s", msg); /* Shorter */
fpe("-a<policy><prio> Set scheduling policy and priority in\n");
fpe(" thread attributes object\n");
fpe(" <policy> can be\n");
fpe(" f SCHED_FIFO\n");
fpe(" r SCHED_RR\n");
fpe(" o SCHED_OTHER\n");
fpe("-A Use default thread attributes object\n");
fpe("-i {e|i} Set inherit scheduler attribute to\n");
fpe(" 'explicit' or 'inherit'\n");
fpe("-m<policy><prio> Set scheduling policy and priority on\n");
fpe(" main thread before pthread_create() call\n");
exit(EXIT_FAILURE);
}

static int
get_policy(char p, int *policy)
{
switch (p) {
case 'f': *policy = SCHED_FIFO; return 1;
case 'r': *policy = SCHED_RR; return 1;
case 'o': *policy = SCHED_OTHER; return 1;
default: return 0;
}
}

static void
display_sched_attr(int policy, struct sched_param *param)
{
printf(" policy=%s, priority=%d\n",
(policy == SCHED_FIFO) ? "SCHED_FIFO" :
(policy == SCHED_RR) ? "SCHED_RR" :
(policy == SCHED_OTHER) ? "SCHED_OTHER" :
"???",
param->sched_priority);
}

static void
display_thread_sched_attr(char *msg)
{
int policy, s;
struct sched_param param;

s = pthread_getschedparam(pthread_self(), &policy, &param);
if (s != 0)
handle_error_en(s, "pthread_getschedparam");

printf("%s\n", msg);
display_sched_attr(policy, &param);
}

static void *
thread_start(void *arg)
{
display_thread_sched_attr("Scheduler attributes of new thread");

return NULL;
}

int
main(int argc, char *argv[])
{
int s, opt, inheritsched, use_null_attrib, policy;
pthread_t thread;
pthread_attr_t attr;
pthread_attr_t *attrp;
char *attr_sched_str, *main_sched_str, *inheritsched_str;
struct sched_param param;

/* Process command-line options */

use_null_attrib = 0;
attr_sched_str = NULL;
main_sched_str = NULL;
inheritsched_str = NULL;

while ((opt = getopt(argc, argv, "a:Ai:m:")) != -1) {
switch (opt) {
case 'a': attr_sched_str = optarg; break;
case 'A': use_null_attrib = 1; break;
case 'i': inheritsched_str = optarg; break;
case 'm': main_sched_str = optarg; break;
default: usage(argv[0], "Unrecognized option\n");
}
}

if (use_null_attrib &&
(inheritsched_str != NULL || attr_sched_str != NULL))
usage(argv[0], "Can't specify -A with -i or -a\n");

/* Optionally set scheduling attributes of main thread,
and display the attributes */

if (main_sched_str != NULL) {
if (!get_policy(main_sched_str[0], &policy))
usage(argv[0], "Bad policy for main thread (-m)\n");
param.sched_priority = strtol(&main_sched_str[1], NULL, 0);

s = pthread_setschedparam(pthread_self(), policy, &param);
if (s != 0)
handle_error_en(s, "pthread_setschedparam");
}

display_thread_sched_attr("Scheduler settings of main thread");
printf("\n");

/* Initialize thread attributes object according to options */

attrp = NULL;

if (!use_null_attrib) {
s = pthread_attr_init(&attr);
if (s != 0)
handle_error_en(s, "pthread_attr_init");
attrp = &attr;
}

if (inheritsched_str != NULL) {
if (inheritsched_str[0] == 'e')
inheritsched = PTHREAD_EXPLICIT_SCHED;
else if (inheritsched_str[0] == 'i')
inheritsched = PTHREAD_INHERIT_SCHED;
else
usage(argv[0], "Value for -i must be 'e' or 'i'\n");

s = pthread_attr_setinheritsched(&attr, inheritsched);
if (s != 0)
handle_error_en(s, "pthread_attr_setinheritsched");
}

if (attr_sched_str != NULL) {
if (!get_policy(attr_sched_str[0], &policy))
usage(argv[0],
"Bad policy for 'attr' (-a)\n");
param.sched_priority = strtol(&attr_sched_str[1], NULL, 0);

s = pthread_attr_setschedpolicy(&attr, policy);
if (s != 0)
handle_error_en(s, "pthread_attr_setschedpolicy");
s = pthread_attr_setschedparam(&attr, &param);
if (s != 0)
handle_error_en(s, "pthread_attr_setschedparam");
}

/* If we initialized a thread attributes object, display
the scheduling attributes that were set in the object */

if (attrp != NULL) {
s = pthread_attr_getschedparam(&attr, &param);
if (s != 0)
handle_error_en(s, "pthread_attr_getschedparam");
s = pthread_attr_getschedpolicy(&attr, &policy);
if (s != 0)
handle_error_en(s, "pthread_attr_getschedpolicy");

printf("Scheduler settings in 'attr'\n");
display_sched_attr(policy, &param);

s = pthread_attr_getinheritsched(&attr, &inheritsched);
printf(" inheritsched is %s\n",
(inheritsched == PTHREAD_INHERIT_SCHED) ? "INHERIT" :
(inheritsched == PTHREAD_EXPLICIT_SCHED) ? "EXPLICIT" :
"???");
printf("\n");
}

/* Create a thread that will display its scheduling attributes */

s = pthread_create(&thread, attrp, &thread_start, NULL);
if (s != 0)
handle_error_en(s, "pthread_create");

/* Destroy unneeded thread attributes object */

if (!use_null_attrib) {
s = pthread_attr_destroy(&attr);
if (s != 0)
handle_error_en(s, "pthread_attr_destroy");
}

s = pthread_join(thread, NULL);
if (s != 0)
handle_error_en(s, "pthread_join");

exit(EXIT_SUCCESS);
}

関 連 項 ē›®

getrlimit (2), sched_get_priority_min (2), pthread_attr_init (3), pthread_attr_setinheritsched (3), pthread_attr_setschedparam (3), pthread_attr_setschedpolicy (3), pthread_create (3), pthread_self (3), pthread_setschedprio (3), pthreads (7), sched (7)

恓 恮 ꖇ 書 恫 恤 恄 恦

恓 恮 man ペ ー ジ は Linux man-pages 惗 惭 ジ 悧 ク 惈 恮 リ リ ー ス 5.10 恮 äø€ 部 恧 恂 悋 怂 惗 惭 ジ 悧 ク 惈 恮 čŖ¬ ꘎ と 惐 悰 å ± 告 恫 関 恙 悋 ꃅ å ± は https://www.kernel.org/doc/man-pages/ 恫 書 恋 悌 恦 恄 悋 怂