# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "pthread_mutexattr_setrobust" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "pthread_mutexattr_getrobust, pthread_mutexattr_setrobust - get and set the " "robustness attribute of a mutex attributes object" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX threads library (I, I<-lpthread>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Epthread.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<,>\n" "B< int *>IB<);>\n" "BIB<,>\n" "B< int >IB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Feature Test Macro Requirements for glibc (see B(7)):" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(), B():" msgstr "" #. FIXME . #. But see https://sourceware.org/bugzilla/show_bug.cgi?id=22125 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " _POSIX_C_SOURCE E= 200809L\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function places the value of the " "robustness attribute of the mutex attributes object referred to by I " "in I<*robustness>. The B() function sets the " "value of the robustness attribute of the mutex attributes object referred to " "by I to the value specified in I<*robustness>." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The robustness attribute specifies the behavior of the mutex when the owning " "thread dies without unlocking the mutex. The following values are valid for " "I:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This is the default value for a mutex attributes object. If a mutex is " "initialized with the B attribute and its owner dies " "without unlocking it, the mutex remains locked afterwards and any future " "attempts to call B(3) on the mutex will block " "indefinitely." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If a mutex is initialized with the B attribute and its " "owner dies without unlocking it, any future attempts to call " "B(3) on this mutex will succeed and return " "B to indicate that the original owner no longer exists and the " "mutex is in an inconsistent state. Usually after B is returned, " "the next owner should call B(3) on the acquired " "mutex to make it consistent again before using it any further." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the next owner unlocks the mutex using B(3) before " "making it consistent, the mutex will be permanently unusable and any " "subsequent attempts to lock it using B(3) will fail " "with the error B. The only permitted operation on such a " "mutex is B(3)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the next owner terminates before calling B(3), " "further B(3) operations on this mutex will still return " "B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note that the I argument of B() and " "B() should refer to a mutex attributes object " "that was initialized by B(3), otherwise the behavior " "is undefined." 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 positive " "error number." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the glibc implementation, B() always return " "zero." 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" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A value other than B or B was " "passed to B()." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "VERSIONS" msgstr "" #. E.g., Solaris, according to its manual page #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the Linux implementation, when using process-shared robust mutexes, a " "waiting thread also receives the B notification if the owner of " "a robust mutex performs an B(2) without first unlocking the mutex. " "POSIX.1 does not specify this detail, but the same behavior also occurs in " "at least some other implementations." 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-bookworm 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.12. POSIX.1-2008." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Before the addition of B() and " "B() to POSIX, glibc defined the following " "equivalent nonstandard functions if B<_GNU_SOURCE> was defined:" 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<[[deprecated]]>\n" "BIB<,>\n" "B< int *>IB<);>\n" "B<[[deprecated]]>\n" "BIB<,>\n" "B< int >IB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Correspondingly, the constants B and " "B were also defined." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "These GNU-specific APIs, which first appeared in glibc 2.4, are nowadays " "obsolete and should not be used in new programs; since glibc 2.34 these APIs " "are marked as deprecated." 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 the robustness attribute of a " "mutex attributes object. In this program, a thread holding the mutex dies " "prematurely without unlocking the mutex. The main thread subsequently " "acquires the mutex successfully and gets the error B, after " "which it makes the mutex consistent." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following shell session shows what we see when running this program:" 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<./a.out>\n" "[original owner] Setting lock...\n" "[original owner] Locked. Now exiting without unlocking.\n" "[main] Attempting to lock the robust mutex.\n" "[main] pthread_mutex_lock() returned EOWNERDEAD\n" "[main] Now make the mutex consistent\n" "[main] Mutex is now consistent; unlocking\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 debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" "\\&\n" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" "\\&\n" "static pthread_mutex_t mtx;\n" "\\&\n" "static void *\n" "original_owner_thread(void *ptr)\n" "{\n" " printf(\"[original owner] Setting lock...\\en\");\n" " pthread_mutex_lock(&mtx);\n" " printf(\"[original owner] Locked. Now exiting without unlocking.\\en\");\n" " pthread_exit(NULL);\n" "}\n" "\\&\n" "int\n" "main(void)\n" "{\n" " pthread_t thr;\n" " pthread_mutexattr_t attr;\n" " int s;\n" "\\&\n" " pthread_mutexattr_init(&attr);\n" "\\&\n" " pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);\n" "\\&\n" " pthread_mutex_init(&mtx, &attr);\n" "\\&\n" " pthread_create(&thr, NULL, original_owner_thread, NULL);\n" "\\&\n" " sleep(2);\n" "\\&\n" " /* \"original_owner_thread\" should have exited by now. */\n" "\\&\n" " printf(\"[main] Attempting to lock the robust mutex.\\en\");\n" " s = pthread_mutex_lock(&mtx);\n" " if (s == EOWNERDEAD) {\n" " printf(\"[main] pthread_mutex_lock() returned EOWNERDEAD\\en\");\n" " printf(\"[main] Now make the mutex consistent\\en\");\n" " s = pthread_mutex_consistent(&mtx);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_mutex_consistent\");\n" " printf(\"[main] Mutex is now consistent; unlocking\\en\");\n" " s = pthread_mutex_unlock(&mtx);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_mutex_unlock\");\n" "\\&\n" " exit(EXIT_SUCCESS);\n" " } else if (s == 0) {\n" " printf(\"[main] pthread_mutex_lock() unexpectedly succeeded\\en\");\n" " exit(EXIT_FAILURE);\n" " } else {\n" " printf(\"[main] pthread_mutex_lock() unexpectedly failed\\en\");\n" " handle_error_en(s, \"pthread_mutex_lock\");\n" " }\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), " "B(3), B(3), " "B(3), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2022-12-04" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B() and B() were " "added in glibc 2.12." msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "static pthread_mutex_t mtx;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void *\n" "original_owner_thread(void *ptr)\n" "{\n" " printf(\"[original owner] Setting lock...\\en\");\n" " pthread_mutex_lock(&mtx);\n" " printf(\"[original owner] Locked. Now exiting without unlocking.\\en\");\n" " pthread_exit(NULL);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(void)\n" "{\n" " pthread_t thr;\n" " pthread_mutexattr_t attr;\n" " int s;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pthread_mutexattr_init(&attr);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pthread_mutex_init(&mtx, &attr);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pthread_create(&thr, NULL, original_owner_thread, NULL);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " sleep(2);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* \"original_owner_thread\" should have exited by now. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"[main] Attempting to lock the robust mutex.\\en\");\n" " s = pthread_mutex_lock(&mtx);\n" " if (s == EOWNERDEAD) {\n" " printf(\"[main] pthread_mutex_lock() returned EOWNERDEAD\\en\");\n" " printf(\"[main] Now make the mutex consistent\\en\");\n" " s = pthread_mutex_consistent(&mtx);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_mutex_consistent\");\n" " printf(\"[main] Mutex is now consistent; unlocking\\en\");\n" " s = pthread_mutex_unlock(&mtx);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_mutex_unlock\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" " } else if (s == 0) {\n" " printf(\"[main] pthread_mutex_lock() unexpectedly succeeded\\en\");\n" " exit(EXIT_FAILURE);\n" " } else {\n" " printf(\"[main] pthread_mutex_lock() unexpectedly failed\\en\");\n" " handle_error_en(s, \"pthread_mutex_lock\");\n" " }\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""