# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "pthread_setschedparam" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "pthread_setschedparam, pthread_getschedparam - set/get scheduling policy and " "parameters of a thread" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX threads library (I, I<-lpthread>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Epthread.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<, int >IB<,>\n" "B< const struct sched_param *>IB<);>\n" "BIB<, int *restrict >IB<,>\n" "B< struct sched_param *restrict >IB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function sets the scheduling policy and " "parameters of the thread I." msgstr "" #. FIXME . pthread_setschedparam() places no restriction on the policy, #. but pthread_attr_setschedpolicy() restricts policy to RR/FIFO/OTHER #. http://sourceware.org/bugzilla/show_bug.cgi?id=7013 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I specifies the new scheduling policy for I. The supported " "values for I, and their semantics, are described in B(7)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The structure pointed to by I specifies the new scheduling parameters " "for I. Scheduling parameters are maintained in the following " "structure:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "struct sched_param {\n" " int sched_priority; /* Scheduling priority */\n" "};\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "As can be seen, only one scheduling parameter is supported. For details of " "the permitted ranges for scheduling priorities in each scheduling policy, " "see B(7)." msgstr "" #. FIXME . nptl/pthread_setschedparam.c has the following #. /* If the thread should have higher priority because of some #. PTHREAD_PRIO_PROTECT mutexes it holds, adjust the priority. */ #. Eventually (perhaps after writing the mutexattr pages), we #. may want to add something on the topic to this page. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function returns the scheduling policy and " "parameters of the thread I, in the buffers pointed to by I " "and I, respectively. The returned priority value is that set by the " "most recent B(), B(3), or " "B(3) call that affected I. The returned priority " "does not reflect any temporary priority adjustments as a result of calls to " "any priority inheritance or priority ceiling functions (see, for example, " "B(3) and " "B(3))." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, these functions return 0; on error, they return a nonzero error " "number. If B() fails, the scheduling policy and " "parameters of I are not changed." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Both of these functions can fail with the following error:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "No thread with the ID I could be found." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() may additionally fail with the following errors:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is not a recognized policy, or I does not make sense for " "the I." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The caller does not have appropriate privileges to set the specified " "scheduling policy and parameters." msgstr "" #. #-#-#-#-# archlinux: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# debian-bookworm: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. .SH VERSIONS #. Available since glibc 2.0 #. type: Plain text #. #-#-#-#-# debian-unstable: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# fedora-40: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# fedora-rawhide: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# mageia-cauldron: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: pthread_setschedparam.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "POSIX.1 also documents an B (\"attempt was made to set the policy " "or scheduling parameters to an unsupported value\") error for " "B()." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ATTRIBUTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For an explanation of the terms used in this section, see B(7)." msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Interface" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Attribute" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Value" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".na\n" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".nh\n" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B(),\n" "B()" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Thread safety" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "MT-Safe" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "glibc 2.0 POSIX.1-2001." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For a description of the permissions required to, and the effect of, " "changing a thread's scheduling policy and priority, and details of the " "permitted ranges for priorities in each scheduling policy, see B(7)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below demonstrates the use of B() and " "B(), as well as the use of a number of other " "scheduling-related pthreads functions." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the following run, the main thread sets its scheduling policy to " "B with a priority of 10, and initializes a thread attributes " "object with a scheduling policy attribute of B and a scheduling " "priority attribute of 20. The program then sets (using " "B(3)) the inherit scheduler attribute of the " "thread attributes object to B, meaning that threads " "created using this attributes object should take their scheduling attributes " "from the thread attributes object. The program then creates a thread using " "the thread attributes object, and that thread displays its scheduling policy " "and priority." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "$ B # Need privilege to set real-time scheduling policies\n" "Password:\n" "# B<./a.out -mf10 -ar20 -i e>\n" "Scheduler settings of main thread\n" " policy=SCHED_FIFO, priority=10\n" "\\&\n" "Scheduler settings in \\[aq]attr\\[aq]\n" " policy=SCHED_RR, priority=20\n" " inheritsched is EXPLICIT\n" "\\&\n" "Scheduler attributes of new thread\n" " policy=SCHED_RR, priority=20\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the above output, one can see that the scheduling policy and priority " "were taken from the values specified in the thread attributes object." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The next run is the same as the previous, except that the inherit scheduler " "attribute is set to B, meaning that threads created " "using the thread attributes object should ignore the scheduling attributes " "specified in the attributes object and instead take their scheduling " "attributes from the creating thread." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "# B<./a.out -mf10 -ar20 -i i>\n" "Scheduler settings of main thread\n" " policy=SCHED_FIFO, priority=10\n" "\\&\n" "Scheduler settings in \\[aq]attr\\[aq]\n" " policy=SCHED_RR, priority=20\n" " inheritsched is INHERIT\n" "\\&\n" "Scheduler attributes of new thread\n" " policy=SCHED_FIFO, priority=10\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the above output, one can see that the scheduling policy and priority " "were taken from the creating thread, rather than the thread attributes " "object." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note that if we had omitted the I<-i\\ i> option, the output would have been " "the same, since B is the default for the inherit " "scheduler attribute." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "/* pthreads_sched_test.c */\n" "\\&\n" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" "\\&\n" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" "\\&\n" "[[noreturn]]\n" "static void\n" "usage(char *prog_name, char *msg)\n" "{\n" " if (msg != NULL)\n" " fputs(msg, stderr);\n" "\\&\n" " fprintf(stderr, \"Usage: %s [options]\\en\", prog_name);\n" " fprintf(stderr, \"Options are:\\en\");\n" "#define fpe(msg) fprintf(stderr, \"\\et%s\", msg) /* Shorter */\n" " fpe(\"-aEpolicyEEprioE Set scheduling policy and priority in\\en\");\n" " fpe(\" thread attributes object\\en\");\n" " fpe(\" EpolicyE can be\\en\");\n" " fpe(\" f SCHED_FIFO\\en\");\n" " fpe(\" r SCHED_RR\\en\");\n" " fpe(\" o SCHED_OTHER\\en\");\n" " fpe(\"-A Use default thread attributes object\\en\");\n" " fpe(\"-i {e|i} Set inherit scheduler attribute to\\en\");\n" " fpe(\" \\[aq]explicit\\[aq] or \\[aq]inherit\\[aq]\\en\");\n" " fpe(\"-mEpolicyEEprioE Set scheduling policy and priority on\\en\");\n" " fpe(\" main thread before pthread_create() call\\en\");\n" " exit(EXIT_FAILURE);\n" "}\n" "\\&\n" "static int\n" "get_policy(char p, int *policy)\n" "{\n" " switch (p) {\n" " case \\[aq]f\\[aq]: *policy = SCHED_FIFO; return 1;\n" " case \\[aq]r\\[aq]: *policy = SCHED_RR; return 1;\n" " case \\[aq]o\\[aq]: *policy = SCHED_OTHER; return 1;\n" " default: return 0;\n" " }\n" "}\n" "\\&\n" "static void\n" "display_sched_attr(int policy, const struct sched_param *param)\n" "{\n" " printf(\" policy=%s, priority=%d\\en\",\n" " (policy == SCHED_FIFO) ? \"SCHED_FIFO\" :\n" " (policy == SCHED_RR) ? \"SCHED_RR\" :\n" " (policy == SCHED_OTHER) ? \"SCHED_OTHER\" :\n" " \"???\",\n" " param-Esched_priority);\n" "}\n" "\\&\n" "static void\n" "display_thread_sched_attr(char *msg)\n" "{\n" " int policy, s;\n" " struct sched_param param;\n" "\\&\n" " s = pthread_getschedparam(pthread_self(), &policy, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_getschedparam\");\n" "\\&\n" " printf(\"%s\\en\", msg);\n" " display_sched_attr(policy, ¶m);\n" "}\n" "\\&\n" "static void *\n" "thread_start(void *arg)\n" "{\n" " display_thread_sched_attr(\"Scheduler attributes of new thread\");\n" "\\&\n" " return NULL;\n" "}\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int s, opt, inheritsched, use_null_attrib, policy;\n" " pthread_t thread;\n" " pthread_attr_t attr;\n" " pthread_attr_t *attrp;\n" " char *attr_sched_str, *main_sched_str, *inheritsched_str;\n" " struct sched_param param;\n" "\\&\n" " /* Process command-line options. */\n" "\\&\n" " use_null_attrib = 0;\n" " attr_sched_str = NULL;\n" " main_sched_str = NULL;\n" " inheritsched_str = NULL;\n" "\\&\n" " while ((opt = getopt(argc, argv, \"a:Ai:m:\")) != -1) {\n" " switch (opt) {\n" " case \\[aq]a\\[aq]: attr_sched_str = optarg; break;\n" " case \\[aq]A\\[aq]: use_null_attrib = 1; break;\n" " case \\[aq]i\\[aq]: inheritsched_str = optarg; break;\n" " case \\[aq]m\\[aq]: main_sched_str = optarg; break;\n" " default: usage(argv[0], \"Unrecognized option\\en\");\n" " }\n" " }\n" "\\&\n" " if (use_null_attrib\n" " && (inheritsched_str != NULL || attr_sched_str != NULL))\n" " {\n" " usage(argv[0], \"Can\\[aq]t specify -A with -i or -a\\en\");\n" " }\n" "\\&\n" " /* Optionally set scheduling attributes of main thread,\n" " and display the attributes. */\n" "\\&\n" " if (main_sched_str != NULL) {\n" " if (!get_policy(main_sched_str[0], &policy))\n" " usage(argv[0], \"Bad policy for main thread (-m)\\en\");\n" " param.sched_priority = strtol(&main_sched_str[1], NULL, 0);\n" "\\&\n" " s = pthread_setschedparam(pthread_self(), policy, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_setschedparam\");\n" " }\n" "\\&\n" " display_thread_sched_attr(\"Scheduler settings of main thread\");\n" " printf(\"\\en\");\n" "\\&\n" " /* Initialize thread attributes object according to options. */\n" "\\&\n" " attrp = NULL;\n" "\\&\n" " if (!use_null_attrib) {\n" " s = pthread_attr_init(&attr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_init\");\n" " attrp = &attr;\n" " }\n" "\\&\n" " if (inheritsched_str != NULL) {\n" " if (inheritsched_str[0] == \\[aq]e\\[aq])\n" " inheritsched = PTHREAD_EXPLICIT_SCHED;\n" " else if (inheritsched_str[0] == \\[aq]i\\[aq])\n" " inheritsched = PTHREAD_INHERIT_SCHED;\n" " else\n" " usage(argv[0], \"Value for -i must be \\[aq]e\\[aq] or \\[aq]i\\[aq]\\en\");\n" "\\&\n" " s = pthread_attr_setinheritsched(&attr, inheritsched);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setinheritsched\");\n" " }\n" "\\&\n" " if (attr_sched_str != NULL) {\n" " if (!get_policy(attr_sched_str[0], &policy))\n" " usage(argv[0], \"Bad policy for \\[aq]attr\\[aq] (-a)\\en\");\n" " param.sched_priority = strtol(&attr_sched_str[1], NULL, 0);\n" "\\&\n" " s = pthread_attr_setschedpolicy(&attr, policy);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setschedpolicy\");\n" " s = pthread_attr_setschedparam(&attr, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setschedparam\");\n" " }\n" "\\&\n" " /* If we initialized a thread attributes object, display\n" " the scheduling attributes that were set in the object. */\n" "\\&\n" " if (attrp != NULL) {\n" " s = pthread_attr_getschedparam(&attr, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_getschedparam\");\n" " s = pthread_attr_getschedpolicy(&attr, &policy);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_getschedpolicy\");\n" "\\&\n" " printf(\"Scheduler settings in \\[aq]attr\\[aq]\\en\");\n" " display_sched_attr(policy, ¶m);\n" "\\&\n" " pthread_attr_getinheritsched(&attr, &inheritsched);\n" " printf(\" inheritsched is %s\\en\",\n" " (inheritsched == PTHREAD_INHERIT_SCHED) ? \"INHERIT\" :\n" " (inheritsched == PTHREAD_EXPLICIT_SCHED) ? \"EXPLICIT\" :\n" " \"???\");\n" " printf(\"\\en\");\n" " }\n" "\\&\n" " /* Create a thread that will display its scheduling attributes. */\n" "\\&\n" " s = pthread_create(&thread, attrp, &thread_start, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_create\");\n" "\\&\n" " /* Destroy unneeded thread attributes object. */\n" "\\&\n" " if (!use_null_attrib) {\n" " s = pthread_attr_destroy(&attr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_destroy\");\n" " }\n" "\\&\n" " s = pthread_join(thread, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_join\");\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), B(3), " "B(3), B(3), " "B(3), B(3), B(3), " "B(3), B(7), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm msgid "POSIX.1-2001, POSIX.1-2008." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "$ B # Need privilege to set real-time scheduling policies\n" "Password:\n" "# B<./a.out -mf10 -ar20 -i e>\n" "Scheduler settings of main thread\n" " policy=SCHED_FIFO, priority=10\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "Scheduler settings in \\[aq]attr\\[aq]\n" " policy=SCHED_RR, priority=20\n" " inheritsched is EXPLICIT\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "Scheduler attributes of new thread\n" " policy=SCHED_RR, priority=20\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "# B<./a.out -mf10 -ar20 -i i>\n" "Scheduler settings of main thread\n" " policy=SCHED_FIFO, priority=10\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "Scheduler settings in \\[aq]attr\\[aq]\n" " policy=SCHED_RR, priority=20\n" " inheritsched is INHERIT\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "Scheduler attributes of new thread\n" " policy=SCHED_FIFO, priority=10\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "/* pthreads_sched_test.c */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void\n" "usage(char *prog_name, char *msg)\n" "{\n" " if (msg != NULL)\n" " fputs(msg, stderr);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fprintf(stderr, \"Usage: %s [options]\\en\", prog_name);\n" " fprintf(stderr, \"Options are:\\en\");\n" "#define fpe(msg) fprintf(stderr, \"\\et%s\", msg) /* Shorter */\n" " fpe(\"-aEpolicyEEprioE Set scheduling policy and priority in\\en\");\n" " fpe(\" thread attributes object\\en\");\n" " fpe(\" EpolicyE can be\\en\");\n" " fpe(\" f SCHED_FIFO\\en\");\n" " fpe(\" r SCHED_RR\\en\");\n" " fpe(\" o SCHED_OTHER\\en\");\n" " fpe(\"-A Use default thread attributes object\\en\");\n" " fpe(\"-i {e|i} Set inherit scheduler attribute to\\en\");\n" " fpe(\" \\[aq]explicit\\[aq] or \\[aq]inherit\\[aq]\\en\");\n" " fpe(\"-mEpolicyEEprioE Set scheduling policy and priority on\\en\");\n" " fpe(\" main thread before pthread_create() call\\en\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static int\n" "get_policy(char p, int *policy)\n" "{\n" " switch (p) {\n" " case \\[aq]f\\[aq]: *policy = SCHED_FIFO; return 1;\n" " case \\[aq]r\\[aq]: *policy = SCHED_RR; return 1;\n" " case \\[aq]o\\[aq]: *policy = SCHED_OTHER; return 1;\n" " default: return 0;\n" " }\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void\n" "display_sched_attr(int policy, struct sched_param *param)\n" "{\n" " printf(\" policy=%s, priority=%d\\en\",\n" " (policy == SCHED_FIFO) ? \"SCHED_FIFO\" :\n" " (policy == SCHED_RR) ? \"SCHED_RR\" :\n" " (policy == SCHED_OTHER) ? \"SCHED_OTHER\" :\n" " \"???\",\n" " param-Esched_priority);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void\n" "display_thread_sched_attr(char *msg)\n" "{\n" " int policy, s;\n" " struct sched_param param;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_getschedparam(pthread_self(), &policy, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_getschedparam\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"%s\\en\", msg);\n" " display_sched_attr(policy, ¶m);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void *\n" "thread_start(void *arg)\n" "{\n" " display_thread_sched_attr(\"Scheduler attributes of new thread\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " return NULL;\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int s, opt, inheritsched, use_null_attrib, policy;\n" " pthread_t thread;\n" " pthread_attr_t attr;\n" " pthread_attr_t *attrp;\n" " char *attr_sched_str, *main_sched_str, *inheritsched_str;\n" " struct sched_param param;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* Process command-line options. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " use_null_attrib = 0;\n" " attr_sched_str = NULL;\n" " main_sched_str = NULL;\n" " inheritsched_str = NULL;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " while ((opt = getopt(argc, argv, \"a:Ai:m:\")) != -1) {\n" " switch (opt) {\n" " case \\[aq]a\\[aq]: attr_sched_str = optarg; break;\n" " case \\[aq]A\\[aq]: use_null_attrib = 1; break;\n" " case \\[aq]i\\[aq]: inheritsched_str = optarg; break;\n" " case \\[aq]m\\[aq]: main_sched_str = optarg; break;\n" " default: usage(argv[0], \"Unrecognized option\\en\");\n" " }\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (use_null_attrib\n" " && (inheritsched_str != NULL || attr_sched_str != NULL))\n" " {\n" " usage(argv[0], \"Can\\[aq]t specify -A with -i or -a\\en\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Optionally set scheduling attributes of main thread,\n" " and display the attributes. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (main_sched_str != NULL) {\n" " if (!get_policy(main_sched_str[0], &policy))\n" " usage(argv[0], \"Bad policy for main thread (-m)\\en\");\n" " param.sched_priority = strtol(&main_sched_str[1], NULL, 0);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_setschedparam(pthread_self(), policy, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_setschedparam\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " display_thread_sched_attr(\"Scheduler settings of main thread\");\n" " printf(\"\\en\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* Initialize thread attributes object according to options. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " attrp = NULL;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (!use_null_attrib) {\n" " s = pthread_attr_init(&attr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_init\");\n" " attrp = &attr;\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (inheritsched_str != NULL) {\n" " if (inheritsched_str[0] == \\[aq]e\\[aq])\n" " inheritsched = PTHREAD_EXPLICIT_SCHED;\n" " else if (inheritsched_str[0] == \\[aq]i\\[aq])\n" " inheritsched = PTHREAD_INHERIT_SCHED;\n" " else\n" " usage(argv[0], \"Value for -i must be \\[aq]e\\[aq] or \\[aq]i\\[aq]\\en\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_attr_setinheritsched(&attr, inheritsched);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setinheritsched\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (attr_sched_str != NULL) {\n" " if (!get_policy(attr_sched_str[0], &policy))\n" " usage(argv[0], \"Bad policy for \\[aq]attr\\[aq] (-a)\\en\");\n" " param.sched_priority = strtol(&attr_sched_str[1], NULL, 0);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_attr_setschedpolicy(&attr, policy);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setschedpolicy\");\n" " s = pthread_attr_setschedparam(&attr, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_setschedparam\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* If we initialized a thread attributes object, display\n" " the scheduling attributes that were set in the object. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (attrp != NULL) {\n" " s = pthread_attr_getschedparam(&attr, ¶m);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_getschedparam\");\n" " s = pthread_attr_getschedpolicy(&attr, &policy);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_getschedpolicy\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Scheduler settings in \\[aq]attr\\[aq]\\en\");\n" " display_sched_attr(policy, ¶m);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " pthread_attr_getinheritsched(&attr, &inheritsched);\n" " printf(\" inheritsched is %s\\en\",\n" " (inheritsched == PTHREAD_INHERIT_SCHED) ? \"INHERIT\" :\n" " (inheritsched == PTHREAD_EXPLICIT_SCHED) ? \"EXPLICIT\" :\n" " \"???\");\n" " printf(\"\\en\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* Create a thread that will display its scheduling attributes. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_create(&thread, attrp, &thread_start, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_create\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* Destroy unneeded thread attributes object. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (!use_null_attrib) {\n" " s = pthread_attr_destroy(&attr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_attr_destroy\");\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_join(thread, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_join\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""