diff options
Diffstat (limited to 'templates/man3/pthread_getattr_np.3.pot')
-rw-r--r-- | templates/man3/pthread_getattr_np.3.pot | 1151 |
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 "" |