summaryrefslogtreecommitdiffstats
path: root/templates/man3/pthread_getattr_np.3.pot
diff options
context:
space:
mode:
Diffstat (limited to 'templates/man3/pthread_getattr_np.3.pot')
-rw-r--r--templates/man3/pthread_getattr_np.3.pot1151
1 files changed, 1151 insertions, 0 deletions
diff --git a/templates/man3/pthread_getattr_np.3.pot b/templates/man3/pthread_getattr_np.3.pot
new file mode 100644
index 00000000..cd68bd82
--- /dev/null
+++ b/templates/man3/pthread_getattr_np.3.pot
@@ -0,0 +1,1151 @@
+# 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:04+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_getattr_np"
+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_getattr_np - get attributes of created 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<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
+"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_getattr_np(pthread_t >I<thread>B<, pthread_attr_t *>I<attr>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_getattr_np>() function initializes the thread attributes "
+"object referred to by I<attr> so that it contains actual attribute values "
+"describing the running thread I<thread>."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The returned attribute values may differ from the corresponding attribute "
+"values passed in the I<attr> object that was used to create the thread using "
+"B<pthread_create>(3). In particular, the following attributes may differ:"
+msgstr ""
+
+#. type: IP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "\\[bu]"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"the detach state, since a joinable thread may have detached itself after "
+"creation;"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"the stack size, which the implementation may align to a suitable boundary."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"and the guard size, which the implementation may round upward to a multiple "
+"of the page size, or ignore (i.e., treat as 0), if the application is "
+"allocating its own stack."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Furthermore, if the stack address attribute was not set in the thread "
+"attributes object used to create the thread, then the returned thread "
+"attributes object will report the actual stack address that the "
+"implementation selected for the thread."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"When the thread attributes object returned by B<pthread_getattr_np>() is no "
+"longer required, it should be destroyed using B<pthread_attr_destroy>(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, this function returns 0; on error, it returns a nonzero error "
+"number."
+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: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENOMEM>"
+msgstr ""
+
+#. Can happen (but unlikely) while trying to allocate memory for cpuset
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Insufficient memory."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"In addition, if I<thread> refers to the main thread, then "
+"B<pthread_getattr_np>() can fail because of errors from various underlying "
+"calls: B<fopen>(3), if I</proc/self/maps> can't be opened; and "
+"B<getrlimit>(2), if the B<RLIMIT_STACK> resource limit is not supported."
+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_getattr_np>()"
+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 "GNU; hence the suffix \"_np\" (nonportable) in the name."
+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.2.3."
+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_getattr_np>(). The "
+"program creates a thread that then uses B<pthread_getattr_np>() to retrieve "
+"and display its guard size, stack address, and stack size attributes. "
+"Command-line arguments can be used to set these attributes to values other "
+"than the default when creating the thread. The shell sessions below "
+"demonstrate the use of the program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"In the first run, on an x86-32 system, a thread is created using default "
+"attributes:"
+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< ulimit -s> # No stack limit ==E<gt> default stack size is 2 MB\n"
+"unlimited\n"
+"$B< ./a.out>\n"
+"Attributes of created thread:\n"
+" Guard size = 4096 bytes\n"
+" Stack address = 0x40196000 (EOS = 0x40397000)\n"
+" Stack size = 0x201000 (2101248) bytes\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 following run, we see that if a guard size is specified, it is "
+"rounded up to the next multiple of the system page size (4096 bytes on "
+"x86-32):"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"$B< ./a.out -g 4097>\n"
+"Thread attributes object after initializations:\n"
+" Guard size = 4097 bytes\n"
+" Stack address = (nil)\n"
+" Stack size = 0x0 (0) bytes\n"
+"\\&\n"
+"Attributes of created thread:\n"
+" Guard size = 8192 bytes\n"
+" Stack address = 0x40196000 (EOS = 0x40397000)\n"
+" Stack size = 0x201000 (2101248) bytes\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 last run, the program manually allocates a stack for the thread. In "
+"this case, the guard size attribute is ignored."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"$B< ./a.out -g 4096 -s 0x8000 -a>\n"
+"Allocated thread stack at 0x804d000\n"
+"\\&\n"
+"Thread attributes object after initializations:\n"
+" Guard size = 4096 bytes\n"
+" Stack address = 0x804d000 (EOS = 0x8055000)\n"
+" Stack size = 0x8000 (32768) bytes\n"
+"\\&\n"
+"Attributes of created thread:\n"
+" Guard size = 0 bytes\n"
+" Stack address = 0x804d000 (EOS = 0x8055000)\n"
+" Stack size = 0x8000 (32768) bytes\n"
+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 ""
+"#define _GNU_SOURCE /* To get pthread_getattr_np() declaration */\n"
+"#include E<lt>err.hE<gt>\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"
+"static void\n"
+"display_stack_related_attributes(pthread_attr_t *attr, char *prefix)\n"
+"{\n"
+" int s;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+"\\&\n"
+" s = pthread_attr_getguardsize(attr, &guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getguardsize\");\n"
+" printf(\"%sGuard size = %zu bytes\\en\", prefix, guard_size);\n"
+"\\&\n"
+" s = pthread_attr_getstack(attr, &stack_addr, &stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getstack\");\n"
+" printf(\"%sStack address = %p\", prefix, stack_addr);\n"
+" if (stack_size E<gt> 0)\n"
+" printf(\" (EOS = %p)\", (char *) stack_addr + stack_size);\n"
+" printf(\"\\en\");\n"
+" printf(\"%sStack size = %#zx (%zu) bytes\\en\",\n"
+" prefix, stack_size, stack_size);\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"display_thread_attributes(pthread_t thread, char *prefix)\n"
+"{\n"
+" int s;\n"
+" pthread_attr_t attr;\n"
+"\\&\n"
+" s = pthread_getattr_np(thread, &attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_getattr_np\");\n"
+"\\&\n"
+" display_stack_related_attributes(&attr, prefix);\n"
+"\\&\n"
+" s = pthread_attr_destroy(&attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+"}\n"
+"\\&\n"
+"static void * /* Start function for thread we create */\n"
+"thread_start(void *arg)\n"
+"{\n"
+" printf(\"Attributes of created thread:\\en\");\n"
+" display_thread_attributes(pthread_self(), \"\\et\");\n"
+"\\&\n"
+" exit(EXIT_SUCCESS); /* Terminate all threads */\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"usage(char *pname, char *msg)\n"
+"{\n"
+" if (msg != NULL)\n"
+" fputs(msg, stderr);\n"
+" fprintf(stderr, \"Usage: %s [-s stack-size [-a]]\"\n"
+" \" [-g guard-size]\\en\", pname);\n"
+" fprintf(stderr, \"\\et\\et-a means program should allocate stack\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+"}\n"
+"\\&\n"
+"static pthread_attr_t * /* Get thread attributes from command line */\n"
+"get_thread_attributes_from_cl(int argc, char *argv[],\n"
+" pthread_attr_t *attrp)\n"
+"{\n"
+" int s, opt, allocate_stack;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+" pthread_attr_t *ret_attrp = NULL; /* Set to attrp if we initialize\n"
+" a thread attributes object */\n"
+" allocate_stack = 0;\n"
+" stack_size = -1;\n"
+" guard_size = -1;\n"
+"\\&\n"
+" while ((opt = getopt(argc, argv, \"ag:s:\")) != -1) {\n"
+" switch (opt) {\n"
+" case \\[aq]a\\[aq]: allocate_stack = 1; break;\n"
+" case \\[aq]g\\[aq]: guard_size = strtoul(optarg, NULL, 0); break;\n"
+" case \\[aq]s\\[aq]: stack_size = strtoul(optarg, NULL, 0); break;\n"
+" default: usage(argv[0], NULL);\n"
+" }\n"
+" }\n"
+"\\&\n"
+" if (allocate_stack && stack_size == -1)\n"
+" usage(argv[0], \"Specifying -a without -s makes no sense\\en\");\n"
+"\\&\n"
+" if (argc E<gt> optind)\n"
+" usage(argv[0], \"Extraneous command-line arguments\\en\");\n"
+"\\&\n"
+" if (stack_size != -1 || guard_size E<gt> 0) {\n"
+" ret_attrp = attrp;\n"
+"\\&\n"
+" s = pthread_attr_init(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_init\");\n"
+" }\n"
+"\\&\n"
+" if (stack_size != -1) {\n"
+" if (!allocate_stack) {\n"
+" s = pthread_attr_setstacksize(attrp, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" } else {\n"
+" s = posix_memalign(&stack_addr, sysconf(_SC_PAGESIZE),\n"
+" stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"posix_memalign\");\n"
+" printf(\"Allocated thread stack at %p\\en\\en\", stack_addr);\n"
+"\\&\n"
+" s = pthread_attr_setstack(attrp, stack_addr, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+" }\n"
+"\\&\n"
+" if (guard_size != -1) {\n"
+" s = pthread_attr_setguardsize(attrp, guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+"\\&\n"
+" return ret_attrp;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int s;\n"
+" pthread_t thr;\n"
+" pthread_attr_t attr;\n"
+" pthread_attr_t *attrp = NULL; /* Set to &attr if we initialize\n"
+" a thread attributes object */\n"
+"\\&\n"
+" attrp = get_thread_attributes_from_cl(argc, argv, &attr);\n"
+"\\&\n"
+" if (attrp != NULL) {\n"
+" printf(\"Thread attributes object after initializations:\\en\");\n"
+" display_stack_related_attributes(attrp, \"\\et\");\n"
+" printf(\"\\en\");\n"
+" }\n"
+"\\&\n"
+" s = pthread_create(&thr, attrp, &thread_start, NULL);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_create\");\n"
+"\\&\n"
+" if (attrp != NULL) {\n"
+" s = pthread_attr_destroy(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+" }\n"
+"\\&\n"
+" pause(); /* Terminates when other thread calls exit() */\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<pthread_attr_getaffinity_np>(3), B<pthread_attr_getdetachstate>(3), "
+"B<pthread_attr_getguardsize>(3), B<pthread_attr_getinheritsched>(3), "
+"B<pthread_attr_getschedparam>(3), B<pthread_attr_getschedpolicy>(3), "
+"B<pthread_attr_getscope>(3), B<pthread_attr_getstack>(3), "
+"B<pthread_attr_getstackaddr>(3), B<pthread_attr_getstacksize>(3), "
+"B<pthread_attr_init>(3), B<pthread_create>(3), B<pthreads>(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: SH
+#: debian-bookworm
+#, no-wrap
+msgid "VERSIONS"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "This function is available since glibc 2.2.3."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This function is a nonstandard GNU extension; hence the suffix "
+"\"_np\" (nonportable) in the name."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"$B< ./a.out -g 4097>\n"
+"Thread attributes object after initializations:\n"
+" Guard size = 4097 bytes\n"
+" Stack address = (nil)\n"
+" Stack size = 0x0 (0) bytes\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"Attributes of created thread:\n"
+" Guard size = 8192 bytes\n"
+" Stack address = 0x40196000 (EOS = 0x40397000)\n"
+" Stack size = 0x201000 (2101248) bytes\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"$B< ./a.out -g 4096 -s 0x8000 -a>\n"
+"Allocated thread stack at 0x804d000\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"Thread attributes object after initializations:\n"
+" Guard size = 4096 bytes\n"
+" Stack address = 0x804d000 (EOS = 0x8055000)\n"
+" Stack size = 0x8000 (32768) bytes\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"Attributes of created thread:\n"
+" Guard size = 0 bytes\n"
+" Stack address = 0x804d000 (EOS = 0x8055000)\n"
+" Stack size = 0x8000 (32768) bytes\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE /* To get pthread_getattr_np() declaration */\n"
+"#include E<lt>err.hE<gt>\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"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"display_stack_related_attributes(pthread_attr_t *attr, char *prefix)\n"
+"{\n"
+" int s;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_attr_getguardsize(attr, &guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getguardsize\");\n"
+" printf(\"%sGuard size = %zu bytes\\en\", prefix, guard_size);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_attr_getstack(attr, &stack_addr, &stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getstack\");\n"
+" printf(\"%sStack address = %p\", prefix, stack_addr);\n"
+" if (stack_size E<gt> 0)\n"
+" printf(\" (EOS = %p)\", (char *) stack_addr + stack_size);\n"
+" printf(\"\\en\");\n"
+" printf(\"%sStack size = %#zx (%zu) bytes\\en\",\n"
+" prefix, stack_size, stack_size);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"display_thread_attributes(pthread_t thread, char *prefix)\n"
+"{\n"
+" int s;\n"
+" pthread_attr_t attr;\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_getattr_np(thread, &attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_getattr_np\");\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " display_stack_related_attributes(&attr, prefix);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_attr_destroy(&attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void * /* Start function for thread we create */\n"
+"thread_start(void *arg)\n"
+"{\n"
+" printf(\"Attributes of created thread:\\en\");\n"
+" display_thread_attributes(pthread_self(), \"\\et\");\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" exit(EXIT_SUCCESS); /* Terminate all threads */\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"usage(char *pname, char *msg)\n"
+"{\n"
+" if (msg != NULL)\n"
+" fputs(msg, stderr);\n"
+" fprintf(stderr, \"Usage: %s [-s stack-size [-a]]\"\n"
+" \" [-g guard-size]\\en\", pname);\n"
+" fprintf(stderr, \"\\et\\et-a means program should allocate stack\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static pthread_attr_t * /* Get thread attributes from command line */\n"
+"get_thread_attributes_from_cl(int argc, char *argv[],\n"
+" pthread_attr_t *attrp)\n"
+"{\n"
+" int s, opt, allocate_stack;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+" pthread_attr_t *ret_attrp = NULL; /* Set to attrp if we initialize\n"
+" a thread attributes object */\n"
+" allocate_stack = 0;\n"
+" stack_size = -1;\n"
+" guard_size = -1;\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" while ((opt = getopt(argc, argv, \"ag:s:\")) != -1) {\n"
+" switch (opt) {\n"
+" case \\[aq]a\\[aq]: allocate_stack = 1; break;\n"
+" case \\[aq]g\\[aq]: guard_size = strtoul(optarg, NULL, 0); break;\n"
+" case \\[aq]s\\[aq]: stack_size = strtoul(optarg, NULL, 0); break;\n"
+" default: usage(argv[0], NULL);\n"
+" }\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (allocate_stack && stack_size == -1)\n"
+" usage(argv[0], \"Specifying -a without -s makes no sense\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (argc E<gt> optind)\n"
+" usage(argv[0], \"Extraneous command-line arguments\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (stack_size E<gt>= 0 || guard_size E<gt> 0) {\n"
+" ret_attrp = attrp;\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_attr_init(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_init\");\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (stack_size E<gt>= 0) {\n"
+" if (!allocate_stack) {\n"
+" s = pthread_attr_setstacksize(attrp, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" } else {\n"
+" s = posix_memalign(&stack_addr, sysconf(_SC_PAGESIZE),\n"
+" stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"posix_memalign\");\n"
+" printf(\"Allocated thread stack at %p\\en\\en\", stack_addr);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_attr_setstack(attrp, stack_addr, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (guard_size E<gt>= 0) {\n"
+" s = pthread_attr_setguardsize(attrp, guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" return ret_attrp;\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;\n"
+" pthread_t thr;\n"
+" pthread_attr_t attr;\n"
+" pthread_attr_t *attrp = NULL; /* Set to &attr if we initialize\n"
+" a thread attributes object */\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " attrp = get_thread_attributes_from_cl(argc, argv, &attr);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (attrp != NULL) {\n"
+" printf(\"Thread attributes object after initializations:\\en\");\n"
+" display_stack_related_attributes(attrp, \"\\et\");\n"
+" printf(\"\\en\");\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = pthread_create(&thr, attrp, &thread_start, NULL);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_create\");\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (attrp != NULL) {\n"
+" s = pthread_attr_destroy(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" pause(); /* Terminates when other thread calls exit() */\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 ""
+"#define _GNU_SOURCE /* To get pthread_getattr_np() declaration */\n"
+"#include E<lt>err.hE<gt>\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"
+"static void\n"
+"display_stack_related_attributes(pthread_attr_t *attr, char *prefix)\n"
+"{\n"
+" int s;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+"\\&\n"
+" s = pthread_attr_getguardsize(attr, &guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getguardsize\");\n"
+" printf(\"%sGuard size = %zu bytes\\en\", prefix, guard_size);\n"
+"\\&\n"
+" s = pthread_attr_getstack(attr, &stack_addr, &stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_getstack\");\n"
+" printf(\"%sStack address = %p\", prefix, stack_addr);\n"
+" if (stack_size E<gt> 0)\n"
+" printf(\" (EOS = %p)\", (char *) stack_addr + stack_size);\n"
+" printf(\"\\en\");\n"
+" printf(\"%sStack size = %#zx (%zu) bytes\\en\",\n"
+" prefix, stack_size, stack_size);\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"display_thread_attributes(pthread_t thread, char *prefix)\n"
+"{\n"
+" int s;\n"
+" pthread_attr_t attr;\n"
+"\\&\n"
+" s = pthread_getattr_np(thread, &attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_getattr_np\");\n"
+"\\&\n"
+" display_stack_related_attributes(&attr, prefix);\n"
+"\\&\n"
+" s = pthread_attr_destroy(&attr);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+"}\n"
+"\\&\n"
+"static void * /* Start function for thread we create */\n"
+"thread_start(void *arg)\n"
+"{\n"
+" printf(\"Attributes of created thread:\\en\");\n"
+" display_thread_attributes(pthread_self(), \"\\et\");\n"
+"\\&\n"
+" exit(EXIT_SUCCESS); /* Terminate all threads */\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"usage(char *pname, char *msg)\n"
+"{\n"
+" if (msg != NULL)\n"
+" fputs(msg, stderr);\n"
+" fprintf(stderr, \"Usage: %s [-s stack-size [-a]]\"\n"
+" \" [-g guard-size]\\en\", pname);\n"
+" fprintf(stderr, \"\\et\\et-a means program should allocate stack\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+"}\n"
+"\\&\n"
+"static pthread_attr_t * /* Get thread attributes from command line */\n"
+"get_thread_attributes_from_cl(int argc, char *argv[],\n"
+" pthread_attr_t *attrp)\n"
+"{\n"
+" int s, opt, allocate_stack;\n"
+" size_t stack_size, guard_size;\n"
+" void *stack_addr;\n"
+" pthread_attr_t *ret_attrp = NULL; /* Set to attrp if we initialize\n"
+" a thread attributes object */\n"
+" allocate_stack = 0;\n"
+" stack_size = -1;\n"
+" guard_size = -1;\n"
+"\\&\n"
+" while ((opt = getopt(argc, argv, \"ag:s:\")) != -1) {\n"
+" switch (opt) {\n"
+" case \\[aq]a\\[aq]: allocate_stack = 1; break;\n"
+" case \\[aq]g\\[aq]: guard_size = strtoul(optarg, NULL, 0); break;\n"
+" case \\[aq]s\\[aq]: stack_size = strtoul(optarg, NULL, 0); break;\n"
+" default: usage(argv[0], NULL);\n"
+" }\n"
+" }\n"
+"\\&\n"
+" if (allocate_stack && stack_size == -1)\n"
+" usage(argv[0], \"Specifying -a without -s makes no sense\\en\");\n"
+"\\&\n"
+" if (argc E<gt> optind)\n"
+" usage(argv[0], \"Extraneous command-line arguments\\en\");\n"
+"\\&\n"
+" if (stack_size E<gt>= 0 || guard_size E<gt> 0) {\n"
+" ret_attrp = attrp;\n"
+"\\&\n"
+" s = pthread_attr_init(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_init\");\n"
+" }\n"
+"\\&\n"
+" if (stack_size E<gt>= 0) {\n"
+" if (!allocate_stack) {\n"
+" s = pthread_attr_setstacksize(attrp, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" } else {\n"
+" s = posix_memalign(&stack_addr, sysconf(_SC_PAGESIZE),\n"
+" stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"posix_memalign\");\n"
+" printf(\"Allocated thread stack at %p\\en\\en\", stack_addr);\n"
+"\\&\n"
+" s = pthread_attr_setstack(attrp, stack_addr, stack_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+" }\n"
+"\\&\n"
+" if (guard_size E<gt>= 0) {\n"
+" s = pthread_attr_setguardsize(attrp, guard_size);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_setstacksize\");\n"
+" }\n"
+"\\&\n"
+" return ret_attrp;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int s;\n"
+" pthread_t thr;\n"
+" pthread_attr_t attr;\n"
+" pthread_attr_t *attrp = NULL; /* Set to &attr if we initialize\n"
+" a thread attributes object */\n"
+"\\&\n"
+" attrp = get_thread_attributes_from_cl(argc, argv, &attr);\n"
+"\\&\n"
+" if (attrp != NULL) {\n"
+" printf(\"Thread attributes object after initializations:\\en\");\n"
+" display_stack_related_attributes(attrp, \"\\et\");\n"
+" printf(\"\\en\");\n"
+" }\n"
+"\\&\n"
+" s = pthread_create(&thr, attrp, &thread_start, NULL);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_create\");\n"
+"\\&\n"
+" if (attrp != NULL) {\n"
+" s = pthread_attr_destroy(attrp);\n"
+" if (s != 0)\n"
+" errc(EXIT_FAILURE, s, \"pthread_attr_destroy\");\n"
+" }\n"
+"\\&\n"
+" pause(); /* Terminates when other thread calls exit() */\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 ""