summaryrefslogtreecommitdiffstats
path: root/po/ru/man2/membarrier.2.po
diff options
context:
space:
mode:
Diffstat (limited to 'po/ru/man2/membarrier.2.po')
-rw-r--r--po/ru/man2/membarrier.2.po1300
1 files changed, 1300 insertions, 0 deletions
diff --git a/po/ru/man2/membarrier.2.po b/po/ru/man2/membarrier.2.po
new file mode 100644
index 00000000..5dc99c66
--- /dev/null
+++ b/po/ru/man2/membarrier.2.po
@@ -0,0 +1,1300 @@
+# Russian translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# aereiae <aereiae@gmail.com>, 2014.
+# Alexey <a.chepugov@gmail.com>, 2015.
+# Azamat Hackimov <azamat.hackimov@gmail.com>, 2013-2017.
+# Dmitriy S. Seregin <dseregin@59.ru>, 2013.
+# Dmitry Bolkhovskikh <d20052005@yandex.ru>, 2017.
+# ITriskTI <ITriskTI@gmail.com>, 2013.
+# Max Is <ismax799@gmail.com>, 2016.
+# Yuri Kozlov <yuray@komyakino.ru>, 2011-2019.
+# Иван Павлов <pavia00@gmail.com>, 2017.
+# Малянов Евгений Викторович <maljanow@outlook.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: manpages-l10n\n"
+"POT-Creation-Date: 2024-03-01 17:01+0100\n"
+"PO-Revision-Date: 2019-10-06 08:59+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <man-pages-ru-talks@lists.sourceforge.net>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+"X-Generator: Lokalize 2.0\n"
+
+#. type: TH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "membarrier"
+msgstr "membarrier"
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2023-10-31"
+msgstr "31 октября 2023 г."
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+msgstr "Linux man-pages 6.06"
+
+#. 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 "membarrier - issue memory barriers on a set of threads"
+msgstr "membarrier - задаёт барьеры памяти в наборе нитей"
+
+#. 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 "Standard C library (I<libc>, I<-lc>)"
+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>linux/membarrier.hE<gt>> /* Definition of B<MEMBARRIER_*> constants */\n"
+"B<#include E<lt>sys/syscall.hE<gt>> /* Definition of B<SYS_*> constants */\n"
+"B<#include E<lt>unistd.hE<gt>>\n"
+msgstr ""
+"B<#include E<lt>linux/membarrier.hE<gt>> /* определения констант B<MEMBARRIER_*> */\n"
+"B<#include E<lt>sys/syscall.hE<gt>> /* определения констант B<SYS_*> */\n"
+"B<#include E<lt>unistd.hE<gt>>\n"
+
+#. 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 syscall(SYS_membarrier, int >I<cmd>B<, unsigned int >I<flags>B<, int >I<cpu_id>B<);>\n"
+msgstr "B<int syscall(SYS_membarrier, int >I<cmd>B<, unsigned int >I<flags>B<, int >I<cpu_id>B<);>\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<Note>: glibc provides no wrapper for B<membarrier>(), necessitating the "
+"use of B<syscall>(2)."
+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<membarrier>() system call helps reducing the overhead of the memory "
+"barrier instructions required to order memory accesses on multi-core "
+"systems. However, this system call is heavier than a memory barrier, so "
+"using it effectively is I<not> as simple as replacing memory barriers with "
+"this system call, but requires understanding of the details below."
+msgstr ""
+"Системный вызов B<membarrier>() помогает сократить накладные расходы "
+"инструкций барьера памяти, которые требуются при доступе к памяти в "
+"многоядерных системах. Однако данный системный вызов затратнее чем барьер "
+"памяти, поэтому чтобы использовать его эффективно I<недостаточно> просто "
+"заменить им барьеры памяти, требуется понимание описанного далее."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Use of memory barriers needs to be done taking into account that a memory "
+"barrier always needs to be either matched with its memory barrier "
+"counterparts, or that the architecture's memory model doesn't require the "
+"matching barriers."
+msgstr ""
+"При использовании барьеров памяти нужно принимать во внимание, что барьер "
+"памяти всегда должен или иметь противоположную сторону барьера, или что "
+"модель памяти архитектуры этого не требует."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"There are cases where one side of the matching barriers (which we will refer "
+"to as \"fast side\") is executed much more often than the other (which we "
+"will refer to as \"slow side\"). This is a prime target for the use of "
+"B<membarrier>(). The key idea is to replace, for these matching barriers, "
+"the fast-side memory barriers by simple compiler barriers, for example:"
+msgstr ""
+"При работе бывает, что одна сторона барьера (которую будем называть «быстрой "
+"стороной») применяется чаще чем другая (которую будем называть «медленной "
+"стороной»). Это основная цель использования B<membarrier>(). Основная идея в "
+"замене этих барьеров: быстрые стороны барьеров — простыми барьерами "
+"компилятора:"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "asm volatile (\"\" : : : \"memory\")\n"
+msgstr "asm volatile (\"\" : : : \"memory\")\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "and replace the slow-side memory barriers by calls to B<membarrier>()."
+msgstr "а медленные стороны барьеров — вызовами B<membarrier>()."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This will add overhead to the slow side, and remove overhead from the fast "
+"side, thus resulting in an overall performance increase as long as the slow "
+"side is infrequent enough that the overhead of the B<membarrier>() calls "
+"does not outweigh the performance gain on the fast side."
+msgstr ""
+"Это добавит накладных расходов к медленной стороне и удалит расходы у "
+"быстрой стороны, что в результате повысит общую производительность в "
+"зависимости от того, как часто используются вызовы B<membarrier>() у "
+"медленной стороны, из-за которой возникают издержки, и не перевесит ли это "
+"увеличение производительности быстрой стороны."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The I<cmd> argument is one of the following:"
+msgstr "Аргумент I<cmd> может принимать одно из следующих значений:"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_QUERY> (since Linux 4.3)"
+msgstr "B<MEMBARRIER_CMD_QUERY> (начиная с Linux 4.3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Query the set of supported commands. The return value of the call is a bit "
+"mask of supported commands. B<MEMBARRIER_CMD_QUERY>, which has the value 0, "
+"is not itself included in this bit mask. This command is always supported "
+"(on kernels where B<membarrier>() is provided)."
+msgstr ""
+"Запросить набор поддерживаемых команд. Возвращаемое вызовом значение "
+"представляет собой битовую маску поддерживаемых команд. Сама команда "
+"B<MEMBARRIER_CMD_QUERY> имеет значение 0 и не включается в эту маску. Данная "
+"команда поддерживается всегда (в ядрах с поддержкой B<membarrier>())."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_GLOBAL> (since Linux 4.16)"
+msgstr "B<MEMBARRIER_CMD_GLOBAL> (начиная с Linux 4.16)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Ensure that all threads from all processes on the system pass through a "
+"state where all memory accesses to user-space addresses match program order "
+"between entry to and return from the B<membarrier>() system call. All "
+"threads on the system are targeted by this command."
+msgstr ""
+"Проверить, что все потоки всех процессов в системе прошли через состояние, "
+"где все доступы к памяти по адресам пространства пользователя соответствуют "
+"программному порядку между входом и возвратом из системного вызова "
+"B<membarrier>(). Все потоки в системе являются целью этой команды."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_GLOBAL_EXPEDITED> (since Linux 4.16)"
+msgstr "B<MEMBARRIER_CMD_GLOBAL_EXPEDITED> (начиная с Linux 4.16)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Execute a memory barrier on all running threads of all processes that "
+"previously registered with B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+msgstr ""
+"Установить барьер памяти во всех выполняющихся нитях всех процессов, которые "
+"были ранее зарегистрированы с помощью "
+"B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Upon return from the system call, the calling thread has a guarantee that "
+"all running threads have passed through a state where all memory accesses to "
+"user-space addresses match program order between entry to and return from "
+"the system call (non-running threads are de facto in such a state). This "
+"guarantee is provided only for the threads of processes that previously "
+"registered with B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+msgstr ""
+"После возврата из системного вызова вызвавшей нити гарантируется, что все "
+"выполняющиеся нити прошли через состояние, где все доступы к памяти по "
+"адресам пространства пользователя соответствуют программному порядку между "
+"входом и возвратом из системного вызова (не выполняющиеся нити уже в таком "
+"состоянии). Это гарантируется только для нитей процессов, которые были ранее "
+"зарегистрированы с помощью B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Given that registration is about the intent to receive the barriers, it is "
+"valid to invoke B<MEMBARRIER_CMD_GLOBAL_EXPEDITED> from a process that has "
+"not employed B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+msgstr ""
+"Учтите, что регистрация о намерении получать барьеры допускается вызовом "
+"B<MEMBARRIER_CMD_GLOBAL_EXPEDITED> только из процесса, который не "
+"использовал B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The \"expedited\" commands complete faster than the non-expedited ones; they "
+"never block, but have the downside of causing extra overhead."
+msgstr ""
+"«Курируемые» (expedited) команды выполняются быстрее чем не курируемые; они "
+"никогда не блокируются, но на них приходятся дополнительные издержки."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED> (since Linux 4.16)"
+msgstr "B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED> (начиная с Linux 4.16)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Register the process's intent to receive B<MEMBARRIER_CMD_GLOBAL_EXPEDITED> "
+"memory barriers."
+msgstr ""
+"Зарегистрировать намерение процесса получать барьеры памяти "
+"B<MEMBARRIER_CMD_GLOBAL_EXPEDITED>."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED> (since Linux 4.14)"
+msgstr "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED> (начиная с Linux 4.14)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Execute a memory barrier on each running thread belonging to the same "
+"process as the calling thread."
+msgstr ""
+"Применить барьер памяти на все выполняющиеся нити, принадлежащие тому же "
+"процессу, что и вызвавшая нить."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Upon return from the system call, the calling thread has a guarantee that "
+"all its running thread siblings have passed through a state where all memory "
+"accesses to user-space addresses match program order between entry to and "
+"return from the system call (non-running threads are de facto in such a "
+"state). This guarantee is provided only for threads in the same process as "
+"the calling thread."
+msgstr ""
+"После возврата из системного вызова вызвавшей нити гарантируется, что все "
+"выполняющиеся, одноуровневые с ней нити прошли через состояние, где все "
+"доступы к памяти по адресам пространства пользователя соответствуют "
+"программному порядку между входом и возвратом из системного вызова "
+"(невыполняющиеся нити уже в таком состоянии). Это гарантируется только для "
+"нитей того же процесса, что и вызвавшая нить."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"A process must register its intent to use the private expedited command "
+"prior to using it."
+msgstr ""
+"Процессу нужно регистрировать своё намерение использовать частную курируемую "
+"команду до её использования."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED> (since Linux 4.14)"
+msgstr "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED> (начиная с Linux 4.14)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Register the process's intent to use B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>."
+msgstr ""
+"Зарегистрировать намерение процесса использовать "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE> (since Linux 4.16)"
+msgstr "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE> (начиная с Linux 4.16)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"In addition to providing the memory ordering guarantees described in "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>, upon return from system call the "
+"calling thread has a guarantee that all its running thread siblings have "
+"executed a core serializing instruction. This guarantee is provided only "
+"for threads in the same process as the calling thread."
+msgstr ""
+"В дополнении к гарантии упорядочивания памяти, описанной в "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>, после возврата из системного вызова "
+"вызвавшей нити гарантируется, что все выполняющиеся, одноуровневые с ней "
+"нити выполнили ядерную инструкцию сериализации (core serializing "
+"instruction). Это гарантируется только для нитей того же процесса, что и "
+"вызвавшая нить."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The \"expedited\" commands complete faster than the non-expedited ones, they "
+"never block, but have the downside of causing extra overhead."
+msgstr ""
+"«Курируемые» (expedited) команды выполняются быстрее чем не курируемые; они "
+"никогда не блокируются, но на них приходятся дополнительные издержки."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"A process must register its intent to use the private expedited sync core "
+"command prior to using it."
+msgstr ""
+"Процессу нужно регистрировать своё намерение использовать частную курируемую "
+"ядерную команду синхронизации до её использования."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> (since Linux 4.16)"
+msgstr "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> (начиная с Linux 4.16)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Register the process's intent to use "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE>."
+msgstr ""
+"Зарегистрировать намерение процесса использовать "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE>."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ> (since Linux 5.10)"
+msgstr "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ> (начиная с Linux 5.10)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Ensure the caller thread, upon return from system call, that all its running "
+"thread siblings have any currently running rseq critical sections restarted "
+"if I<flags> parameter is 0; if I<flags> parameter is "
+"B<MEMBARRIER_CMD_FLAG_CPU>, then this operation is performed only on CPU "
+"indicated by I<cpu_id>. This guarantee is provided only for threads in the "
+"same process as the calling thread."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "RSEQ membarrier is only available in the \"private expedited\" form."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, fuzzy
+#| msgid ""
+#| "A process must register its intent to use the private expedited command "
+#| "prior to using it."
+msgid ""
+"A process must register its intent to use the private expedited rseq command "
+"prior to using it."
+msgstr ""
+"Процессу нужно регистрировать своё намерение использовать частную курируемую "
+"команду до её использования."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ> (since Linux 5.10)"
+msgstr "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ> (начиная с Linux 5.10)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Register the process's intent to use "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ>."
+msgstr ""
+"Зарегистрировать намерение процесса использовать "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ>."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<MEMBARRIER_CMD_SHARED> (since Linux 4.3)"
+msgstr "B<MEMBARRIER_CMD_SHARED> (начиная с Linux 4.3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This is an alias for B<MEMBARRIER_CMD_GLOBAL> that exists for header "
+"backward compatibility."
+msgstr ""
+"Псевдоним B<MEMBARRIER_CMD_GLOBAL>, существует для обратной совместимости в "
+"заголовке."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<flags> argument must be specified as 0 unless the command is "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ>, in which case I<flags> can be "
+"either 0 or B<MEMBARRIER_CMD_FLAG_CPU>."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<cpu_id> argument is ignored unless I<flags> is "
+"B<MEMBARRIER_CMD_FLAG_CPU>, in which case it must specify the CPU targeted "
+"by this membarrier command."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"All memory accesses performed in program order from each targeted thread are "
+"guaranteed to be ordered with respect to B<membarrier>()."
+msgstr ""
+"Все доступы к памяти, выполняемые в программном порядке из каждого целевого "
+"потока, гарантированно упорядочены в отношении B<membarrier>()."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If we use the semantic I<barrier()> to represent a compiler barrier forcing "
+"memory accesses to be performed in program order across the barrier, and "
+"I<smp_mb()> to represent explicit memory barriers forcing full memory "
+"ordering across the barrier, we have the following ordering table for each "
+"pairing of I<barrier()>, B<membarrier>(), and I<smp_mb()>. The pair "
+"ordering is detailed as (O: ordered, X: not ordered):"
+msgstr ""
+"Если использовать семантику I<barrier()> для представления барьера "
+"компилятора, обеспечивающего доступа к памяти, выполняемого в программном "
+"порядке для пересечения барьера, и I<smp_mb()> — для представления явных "
+"барьеров памяти, обеспечивающих полный упорядоченный доступ к памяти через "
+"барьер, то получится следующая упорядочивающая таблица для каждой пары "
+"I<barrier()>, B<membarrier>() и I<smp_mb()>. Наличие порядка в паре показано "
+"знаком (O: упорядочено, X: не упорядочено):"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "barrier()"
+msgstr "barrier()"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "smp_mb()"
+msgstr "smp_mb()"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "membarrier()"
+msgstr "membarrier()"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "X"
+msgstr "X"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "O"
+msgstr "O"
+
+#. 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
+#, fuzzy
+#| msgid ""
+#| "On success, the B<MEMBARRIER_CMD_QUERY> operation returns a bit mask of "
+#| "supported commands, and the B<MEMBARRIER_CMD_GLOBAL>, "
+#| "B<MEMBARRIER_CMD_GLOBAL_EXPEDITED>, "
+#| "B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>, "
+#| "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>, "
+#| "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED>, "
+#| "B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE>, and "
+#| "B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> operations return "
+#| "zero. On error, -1 is returned, and I<errno> is set appropriately."
+msgid ""
+"On success, the B<MEMBARRIER_CMD_QUERY> operation returns a bit mask of "
+"supported commands, and the B<MEMBARRIER_CMD_GLOBAL>, "
+"B<MEMBARRIER_CMD_GLOBAL_EXPEDITED>, "
+"B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>, "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>, "
+"B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED>, "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE>, and "
+"B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> operations return "
+"zero. On error, -1 is returned, and I<errno> is set to indicate the error."
+msgstr ""
+"При успешном выполнении операции B<MEMBARRIER_CMD_QUERY> возвращается "
+"битовая маска поддерживаемых команд, а операции B<MEMBARRIER_CMD_GLOBAL>, "
+"B<MEMBARRIER_CMD_GLOBAL_EXPEDITED>, "
+"B<MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED>, "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED>, "
+"B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED>, "
+"B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE> и "
+"B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> возвращают ноль. При "
+"ошибке возвращается -1 и в I<errno> устанавливается соответствующее значение."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"For a given command, with I<flags> set to 0, this system call is guaranteed "
+"to always return the same value until reboot. Further calls with the same "
+"arguments will lead to the same result. Therefore, with I<flags> set to 0, "
+"error handling is required only for the first call to B<membarrier>()."
+msgstr ""
+"Для данной команды, если флаг I<flags> равен 0, то системный вызов всегда "
+"гарантирует возврат одного и того же значения до перезагрузки. Последующие "
+"вызовы с теми же аргументами всегда возвращают тот же результат. Поэтому, "
+"если I<flags> равен 0, то обработка ошибок требуется только при первом "
+"вызове B<membarrier>()."
+
+#. 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<EINVAL>"
+msgstr "B<EINVAL>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<cmd> is invalid, or I<flags> is nonzero, or the B<MEMBARRIER_CMD_GLOBAL> "
+"command is disabled because the I<nohz_full> CPU parameter has been set, or "
+"the B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE> and "
+"B<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> commands are not "
+"implemented by the architecture."
+msgstr ""
+"Неверное значение I<cmd>, значение I<flags> не равно нулю, отключена команда "
+"B<MEMBARRIER_CMD_GLOBAL>, так как указан параметр ЦП I<nohz_full> или "
+"команды B<MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE> "
+"иB<MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE> не реализованы для "
+"архитектуры."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENOSYS>"
+msgstr "B<ENOSYS>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The B<membarrier>() system call is not implemented by this kernel."
+msgstr "Системный вызов B<membarrier>() не реализован в данном ядре."
+
+#. 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 "B<EPERM>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The current process was not registered prior to using private expedited "
+"commands."
+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 "Linux."
+msgstr "Linux."
+
+#. 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
+#, fuzzy
+#| msgid "Linux"
+msgid "Linux 4.3."
+msgstr "Linux"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Before Linux 5.10, the prototype was:"
+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 membarrier(int >I<cmd>B<, int >I<flags>B<);>\n"
+msgstr "B<int membarrier(int >I<cmd>B<, int >I<flags>B<);>\n"
+
+#. 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 ""
+"A memory barrier instruction is part of the instruction set of architectures "
+"with weakly ordered memory models. It orders memory accesses prior to the "
+"barrier and after the barrier with respect to matching barriers on other "
+"cores. For instance, a load fence can order loads prior to and following "
+"that fence with respect to stores ordered by store fences."
+msgstr ""
+"Инструкция барьера памяти является частью системы команд архитектуры со "
+"слабо упорядоченными моделями памяти. Она упорядочивает доступ к памяти до "
+"барьера и после барьера в соответствии совпадающими барьерами на других "
+"ядрах. Например, загрузка барьера (fence) может упорядочить загрузку до и "
+"после этого барьера в соответствии порядком хранилища, установленного "
+"барьерами хранилища."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Program order is the order in which instructions are ordered in the program "
+"assembly code."
+msgstr ""
+"Программный порядок — это порядок, в котором инструкции упорядочены в "
+"ассемблерном коде программы."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Examples where B<membarrier>() can be useful include implementations of "
+"Read-Copy-Update libraries and garbage collectors."
+msgstr ""
+"Вызов B<membarrier>() может быть полезным для реализации библиотек чтения-"
+"копирования-обновления или сборщиков мусора."
+
+#. 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 ""
+"Assuming a multithreaded application where \"fast_path()\" is executed very "
+"frequently, and where \"slow_path()\" is executed infrequently, the "
+"following code (x86) can be transformed using B<membarrier>():"
+msgstr ""
+"Предполагая, что в многонитевой программе «fast_path()» выполняется очень "
+"часто, а «slow_path()» — редко, следующий код (x86) можно преобразовать "
+"используя B<membarrier>():"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"#include E<lt>stdlib.hE<gt>\n"
+"\\&\n"
+"static volatile int a, b;\n"
+"\\&\n"
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_a = a;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(void)\n"
+"{\n"
+" int read_a, read_b;\n"
+"\\&\n"
+" /*\n"
+" * Real applications would call fast_path() and slow_path()\n"
+" * from different threads. Call those from main() to keep\n"
+" * this example short.\n"
+" */\n"
+"\\&\n"
+" slow_path(&read_a);\n"
+" fast_path(&read_b);\n"
+"\\&\n"
+" /*\n"
+" * read_b == 0 implies read_a == 1 and\n"
+" * read_a == 0 implies read_b == 1.\n"
+" */\n"
+"\\&\n"
+" if (read_b == 0 && read_a == 0)\n"
+" abort();\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The code above transformed to use B<membarrier>() becomes:"
+msgstr "Этот же код, переписанный с использованием B<membarrier>():"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>sys/syscall.hE<gt>\n"
+"#include E<lt>linux/membarrier.hE<gt>\n"
+"\\&\n"
+"static volatile int a, b;\n"
+"\\&\n"
+"static int\n"
+"membarrier(int cmd, unsigned int flags, int cpu_id)\n"
+"{\n"
+" return syscall(__NR_membarrier, cmd, flags, cpu_id);\n"
+"}\n"
+"\\&\n"
+"static int\n"
+"init_membarrier(void)\n"
+"{\n"
+" int ret;\n"
+"\\&\n"
+" /* Check that membarrier() is supported. */\n"
+"\\&\n"
+" ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);\n"
+" if (ret E<lt> 0) {\n"
+" perror(\"membarrier\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" if (!(ret & MEMBARRIER_CMD_GLOBAL)) {\n"
+" fprintf(stderr,\n"
+" \"membarrier does not support MEMBARRIER_CMD_GLOBAL\\en\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" return 0;\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+"\\&\n"
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);\n"
+" *read_a = a;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int read_a, read_b;\n"
+"\\&\n"
+" if (init_membarrier())\n"
+" exit(EXIT_FAILURE);\n"
+"\\&\n"
+" /*\n"
+" * Real applications would call fast_path() and slow_path()\n"
+" * from different threads. Call those from main() to keep\n"
+" * this example short.\n"
+" */\n"
+"\\&\n"
+" slow_path(&read_a);\n"
+" fast_path(&read_b);\n"
+"\\&\n"
+" /*\n"
+" * read_b == 0 implies read_a == 1 and\n"
+" * read_a == 0 implies read_b == 1.\n"
+" */\n"
+"\\&\n"
+" if (read_b == 0 && read_a == 0)\n"
+" abort();\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "2022-12-15"
+msgstr "15 декабря 2022 г."
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "Linux man-pages 6.03"
+msgstr "Linux man-pages 6.03"
+
+#. type: SH
+#: debian-bookworm
+#, no-wrap
+msgid "VERSIONS"
+msgstr "ВЕРСИИ"
+
+#. type: Plain text
+#: debian-bookworm
+msgid "The B<membarrier>() system call was added in Linux 4.3."
+msgstr "Системный вызов B<membarrier>() впервые появился в Linux версии 4.3."
+
+#. type: Plain text
+#: debian-bookworm
+msgid "Before Linux 5.10, the prototype for B<membarrier>() was:"
+msgstr ""
+
+#. .SH SEE ALSO
+#. FIXME See if the following syscalls make it into Linux 4.15 or later
+#. .BR cpu_opv (2),
+#. .BR rseq (2)
+#. type: Plain text
+#: debian-bookworm
+msgid "B<membarrier>() is Linux-specific."
+msgstr "Вызов B<membarrier>() есть только в Linux."
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "#include E<lt>stdlib.hE<gt>\n"
+msgstr "#include E<lt>stdlib.hE<gt>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "static volatile int a, b;\n"
+msgstr "static volatile int a, b;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+msgstr ""
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_a = a;\n"
+"}\n"
+msgstr ""
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" asm volatile (\"mfence\" : : : \"memory\");\n"
+" *read_a = a;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(void)\n"
+"{\n"
+" int read_a, read_b;\n"
+msgstr ""
+"int\n"
+"main(void)\n"
+"{\n"
+" int read_a, read_b;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /*\n"
+" * Real applications would call fast_path() and slow_path()\n"
+" * from different threads. Call those from main() to keep\n"
+" * this example short.\n"
+" */\n"
+msgstr ""
+" /*\n"
+" * В реальных приложениях вызовы fast_path() и slow_path()\n"
+" * были бы в разных нитях. Их вызов из main() сделан только\n"
+" * для укорачивания данного примера.\n"
+" */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" slow_path(&read_a);\n"
+" fast_path(&read_b);\n"
+msgstr ""
+" slow_path(&read_a);\n"
+" fast_path(&read_b);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /*\n"
+" * read_b == 0 implies read_a == 1 and\n"
+" * read_a == 0 implies read_b == 1.\n"
+" */\n"
+msgstr ""
+" /*\n"
+" * read_b == 0 подразумевает read_a == 1 и\n"
+" * read_a == 0 подразумевает read_b == 1.\n"
+" */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (read_b == 0 && read_a == 0)\n"
+" abort();\n"
+msgstr ""
+" if (read_b == 0 && read_a == 0)\n"
+" abort();\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>sys/syscall.hE<gt>\n"
+"#include E<lt>linux/membarrier.hE<gt>\n"
+msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>sys/syscall.hE<gt>\n"
+"#include E<lt>linux/membarrier.hE<gt>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static int\n"
+"membarrier(int cmd, unsigned int flags, int cpu_id)\n"
+"{\n"
+" return syscall(__NR_membarrier, cmd, flags, cpu_id);\n"
+"}\n"
+msgstr ""
+"static int\n"
+"membarrier(int cmd, unsigned int flags, int cpu_id)\n"
+"{\n"
+" return syscall(__NR_membarrier, cmd, flags, cpu_id);\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static int\n"
+"init_membarrier(void)\n"
+"{\n"
+" int ret;\n"
+msgstr ""
+"static int\n"
+"init_membarrier(void)\n"
+"{\n"
+" int ret;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Check that membarrier() is supported. */\n"
+msgstr " /* Проверка поддержки в функции membarrier() */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);\n"
+" if (ret E<lt> 0) {\n"
+" perror(\"membarrier\");\n"
+" return -1;\n"
+" }\n"
+msgstr ""
+" ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);\n"
+" if (ret E<lt> 0) {\n"
+" perror(\"membarrier\");\n"
+" return -1;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (!(ret & MEMBARRIER_CMD_GLOBAL)) {\n"
+" fprintf(stderr,\n"
+" \"membarrier does not support MEMBARRIER_CMD_GLOBAL\\en\");\n"
+" return -1;\n"
+" }\n"
+msgstr ""
+" if (!(ret & MEMBARRIER_CMD_GLOBAL)) {\n"
+" fprintf(stderr,\n"
+" \"membarrier не поддерживает MEMBARRIER_CMD_GLOBAL\\en\");\n"
+" return -1;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" return 0;\n"
+"}\n"
+msgstr ""
+" return 0;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+msgstr ""
+"static void\n"
+"fast_path(int *read_b)\n"
+"{\n"
+" a = 1;\n"
+" asm volatile (\"\" : : : \"memory\");\n"
+" *read_b = b;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);\n"
+" *read_a = a;\n"
+"}\n"
+msgstr ""
+"static void\n"
+"slow_path(int *read_a)\n"
+"{\n"
+" b = 1;\n"
+" membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);\n"
+" *read_a = a;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int read_a, read_b;\n"
+msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int read_a, read_b;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (init_membarrier())\n"
+" exit(EXIT_FAILURE);\n"
+msgstr ""
+" if (init_membarrier())\n"
+" exit(EXIT_FAILURE);\n"
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-05-03"
+msgstr "3 мая 2023 г."
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+msgstr "Linux man-pages 6.05.01"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2023-03-30"
+msgstr "30 марта 2023 г."
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux man-pages 6.04"
+msgstr "Linux man-pages 6.04"