summaryrefslogtreecommitdiffstats
path: root/templates/man3/pthread_setschedparam.3.pot
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /templates/man3/pthread_setschedparam.3.pot
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man3/pthread_setschedparam.3.pot')
-rw-r--r--templates/man3/pthread_setschedparam.3.pot1423
1 files changed, 1423 insertions, 0 deletions
diff --git a/templates/man3/pthread_setschedparam.3.pot b/templates/man3/pthread_setschedparam.3.pot
new file mode 100644
index 00000000..349e7b58
--- /dev/null
+++ b/templates/man3/pthread_setschedparam.3.pot
@@ -0,0 +1,1423 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-03-01 17:05+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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 fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2023-10-31"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+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<libpthread>, 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 E<lt>pthread.hE<gt>>\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 ""
+"B<int pthread_setschedparam(pthread_t >I<thread>B<, int >I<policy>B<,>\n"
+"B< const struct sched_param *>I<param>B<);>\n"
+"B<int pthread_getschedparam(pthread_t >I<thread>B<, int *restrict >I<policy>B<,>\n"
+"B< struct sched_param *restrict >I<param>B<);>\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<pthread_setschedparam>() function sets the scheduling policy and "
+"parameters of the thread I<thread>."
+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<policy> specifies the new scheduling policy for I<thread>. The supported "
+"values for I<policy>, and their semantics, are described in B<sched>(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<param> specifies the new scheduling parameters "
+"for I<thread>. 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<sched>(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<pthread_getschedparam>() function returns the scheduling policy and "
+"parameters of the thread I<thread>, in the buffers pointed to by I<policy> "
+"and I<param>, respectively. The returned priority value is that set by the "
+"most recent B<pthread_setschedparam>(), B<pthread_setschedprio>(3), or "
+"B<pthread_create>(3) call that affected I<thread>. 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<pthread_mutexattr_setprioceiling>(3) and "
+"B<pthread_mutexattr_setprotocol>(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<pthread_setschedparam>() fails, the scheduling policy and "
+"parameters of I<thread> 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<ESRCH>"
+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<thread> 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<pthread_setschedparam>() 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<EINVAL>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<policy> is not a recognized policy, or I<param> does not make sense for "
+"the I<policy>."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EPERM>"
+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<ENOTSUP> (\"attempt was made to set the policy "
+"or scheduling parameters to an unsupported value\") error for "
+"B<pthread_setschedparam>()."
+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<attributes>(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<pthread_setschedparam>(),\n"
+"B<pthread_getschedparam>()"
+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<sched>(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<pthread_setschedparam>() and "
+"B<pthread_getschedparam>(), 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<SCHED_FIFO> with a priority of 10, and initializes a thread attributes "
+"object with a scheduling policy attribute of B<SCHED_RR> and a scheduling "
+"priority attribute of 20. The program then sets (using "
+"B<pthread_attr_setinheritsched>(3)) the inherit scheduler attribute of the "
+"thread attributes object to B<PTHREAD_EXPLICIT_SCHED>, 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<su> # 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<PTHREAD_INHERIT_SCHED>, 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<PTHREAD_INHERIT_SCHED> 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 fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid ""
+"/* pthreads_sched_test.c */\n"
+"\\&\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>pthread.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\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(\"-aE<lt>policyE<gt>E<lt>prioE<gt> Set scheduling policy and priority in\\en\");\n"
+" fpe(\" thread attributes object\\en\");\n"
+" fpe(\" E<lt>policyE<gt> 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(\"-mE<lt>policyE<gt>E<lt>prioE<gt> 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-E<gt>sched_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, &param);\n"
+" if (s != 0)\n"
+" handle_error_en(s, \"pthread_getschedparam\");\n"
+"\\&\n"
+" printf(\"%s\\en\", msg);\n"
+" display_sched_attr(policy, &param);\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, &param);\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, &param);\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, &param);\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, &param);\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<getrlimit>(2), B<sched_get_priority_min>(2), B<pthread_attr_init>(3), "
+"B<pthread_attr_setinheritsched>(3), B<pthread_attr_setschedparam>(3), "
+"B<pthread_attr_setschedpolicy>(3), B<pthread_create>(3), B<pthread_self>(3), "
+"B<pthread_setschedprio>(3), B<pthreads>(7), B<sched>(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<su> # 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 E<lt>errno.hE<gt>\n"
+"#include E<lt>pthread.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\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(\"-aE<lt>policyE<gt>E<lt>prioE<gt> Set scheduling policy and priority in\\en\");\n"
+" fpe(\" thread attributes object\\en\");\n"
+" fpe(\" E<lt>policyE<gt> 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(\"-mE<lt>policyE<gt>E<lt>prioE<gt> 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-E<gt>sched_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, &param);\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, &param);\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, &param);\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, &param);\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, &param);\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, &param);\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
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-07-20"
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+msgstr ""
+
+#. type: Plain text
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"/* pthreads_sched_test.c */\n"
+"\\&\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>pthread.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"#define handle_error_en(en, msg) \\e\n"
+" do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n"
+"\\&\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(\"-aE<lt>policyE<gt>E<lt>prioE<gt> Set scheduling policy and priority in\\en\");\n"
+" fpe(\" thread attributes object\\en\");\n"
+" fpe(\" E<lt>policyE<gt> 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(\"-mE<lt>policyE<gt>E<lt>prioE<gt> 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, 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-E<gt>sched_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, &param);\n"
+" if (s != 0)\n"
+" handle_error_en(s, \"pthread_getschedparam\");\n"
+"\\&\n"
+" printf(\"%s\\en\", msg);\n"
+" display_sched_attr(policy, &param);\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, &param);\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, &param);\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, &param);\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, &param);\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 ""
+
+#. 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 ""