# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # aereiae , 2014. # Alexey , 2015. # Azamat Hackimov , 2013-2017. # Dmitriy S. Seregin , 2013. # Dmitry Bolkhovskikh , 2017. # ITriskTI , 2013. # Max Is , 2016. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017. # Малянов Евгений Викторович , 2014. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:02+0200\n" "PO-Revision-Date: 2019-10-06 08:59+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \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 debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. 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, 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 Elinux/membarrier.hE> /* Definition of B constants */\n" "B<#include Esys/syscall.hE> /* Definition of B constants */\n" "B<#include Eunistd.hE>\n" msgstr "" "B<#include Elinux/membarrier.hE> /* определения констант B */\n" "B<#include Esys/syscall.hE> /* определения констант B */\n" "B<#include Eunistd.hE>\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<, unsigned int >IB<, int >IB<);>\n" msgstr "BIB<, unsigned int >IB<, int >IB<);>\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I: glibc provides no wrapper for B(), necessitating the " "use of B(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() 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 as simple as replacing memory barriers with " "this system call, but requires understanding of the details below." msgstr "" "Системный вызов B() помогает сократить накладные расходы " "инструкций барьера памяти, которые требуются при доступе к памяти в " "многоядерных системах. Однако данный системный вызов затратнее чем барьер " "памяти, поэтому чтобы использовать его эффективно 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(). The key idea is to replace, for these matching barriers, " "the fast-side memory barriers by simple compiler barriers, for example:" msgstr "" "При работе бывает, что одна сторона барьера (которую будем называть «быстрой " "стороной») применяется чаще чем другая (которую будем называть «медленной " "стороной»). Это основная цель использования B(). Основная идея в " "замене этих барьеров: быстрые стороны барьеров — простыми барьерами " "компилятора:" #. 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()." msgstr "а медленные стороны барьеров — вызовами B()." #. 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() calls " "does not outweigh the performance gain on the fast side." msgstr "" "Это добавит накладных расходов к медленной стороне и удалит расходы у " "быстрой стороны, что в результате повысит общую производительность в " "зависимости от того, как часто используются вызовы B() у " "медленной стороны, из-за которой возникают издержки, и не перевесит ли это " "увеличение производительности быстрой стороны." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I argument is one of the following:" msgstr "Аргумент I может принимать одно из следующих значений:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.3)" msgstr "B (начиная с 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, which has the value 0, " "is not itself included in this bit mask. This command is always supported " "(on kernels where B() is provided)." msgstr "" "Запросить набор поддерживаемых команд. Возвращаемое вызовом значение " "представляет собой битовую маску поддерживаемых команд. Сама команда " "B имеет значение 0 и не включается в эту маску. Данная " "команда поддерживается всегда (в ядрах с поддержкой B())." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.16)" msgstr "B (начиная с 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() system call. All " "threads on the system are targeted by this command." msgstr "" "Проверить, что все потоки всех процессов в системе прошли через состояние, " "где все доступы к памяти по адресам пространства пользователя соответствуют " "программному порядку между входом и возвратом из системного вызова " "B(). Все потоки в системе являются целью этой команды." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.16)" msgstr "B (начиная с 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." msgstr "" "Установить барьер памяти во всех выполняющихся нитях всех процессов, которые " "были ранее зарегистрированы с помощью " "B." #. 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." msgstr "" "После возврата из системного вызова вызвавшей нити гарантируется, что все " "выполняющиеся нити прошли через состояние, где все доступы к памяти по " "адресам пространства пользователя соответствуют программному порядку между " "входом и возвратом из системного вызова (не выполняющиеся нити уже в таком " "состоянии). Это гарантируется только для нитей процессов, которые были ранее " "зарегистрированы с помощью B." #. 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 from a process that has " "not employed B." msgstr "" "Учтите, что регистрация о намерении получать барьеры допускается вызовом " "B только из процесса, который не " "использовал B." #. 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 (since Linux 4.16)" msgstr "B (начиная с 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 " "memory barriers." msgstr "" "Зарегистрировать намерение процесса получать барьеры памяти " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.14)" msgstr "B (начиная с 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 (since Linux 4.14)" msgstr "B (начиная с 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." msgstr "" "Зарегистрировать намерение процесса использовать " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.16)" msgstr "B (начиная с 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, 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, после возврата из системного вызова " "вызвавшей нити гарантируется, что все выполняющиеся, одноуровневые с ней " "нити выполнили ядерную инструкцию сериализации (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 (since Linux 4.16)" msgstr "B (начиная с 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." msgstr "" "Зарегистрировать намерение процесса использовать " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 5.10)" msgstr "B (начиная с 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 parameter is 0; if I parameter is " "B, then this operation is performed only on CPU " "indicated by I. 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 (since Linux 5.10)" msgstr "B (начиная с 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." msgstr "" "Зарегистрировать намерение процесса использовать " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.3)" msgstr "B (начиная с 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 that exists for header " "backward compatibility." msgstr "" "Псевдоним B, существует для обратной совместимости в " "заголовке." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument must be specified as 0 unless the command is " "B, in which case I can be " "either 0 or B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument is ignored unless I is " "B, 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()." msgstr "" "Все доступы к памяти, выполняемые в программном порядке из каждого целевого " "потока, гарантированно упорядочены в отношении B()." #. 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 to represent a compiler barrier forcing " "memory accesses to be performed in program order across the barrier, and " "I to represent explicit memory barriers forcing full memory " "ordering across the barrier, we have the following ordering table for each " "pairing of I, B(), and I. The pair " "ordering is detailed as (O: ordered, X: not ordered):" msgstr "" "Если использовать семантику I для представления барьера " "компилятора, обеспечивающего доступа к памяти, выполняемого в программном " "порядке для пересечения барьера, и I — для представления явных " "барьеров памяти, обеспечивающих полный упорядоченный доступ к памяти через " "барьер, то получится следующая упорядочивающая таблица для каждой пары " "I, B() и I. Наличие порядка в паре показано " "знаком (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 operation returns a bit mask of " #| "supported commands, and the B, " #| "B, " #| "B, " #| "B, " #| "B, " #| "B, and " #| "B operations return " #| "zero. On error, -1 is returned, and I is set appropriately." msgid "" "On success, the B operation returns a bit mask of " "supported commands, and the B, " "B, " "B, " "B, " "B, " "B, and " "B operations return " "zero. On error, -1 is returned, and I is set to indicate the error." msgstr "" "При успешном выполнении операции B возвращается " "битовая маска поддерживаемых команд, а операции B, " "B, " "B, " "B, " "B, " "B и " "B возвращают ноль. При " "ошибке возвращается -1 и в I устанавливается соответствующее значение." #. 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 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 set to 0, " "error handling is required only for the first call to B()." msgstr "" "Для данной команды, если флаг I равен 0, то системный вызов всегда " "гарантирует возврат одного и того же значения до перезагрузки. Последующие " "вызовы с теми же аргументами всегда возвращают тот же результат. Поэтому, " "если I равен 0, то обработка ошибок требуется только при первом " "вызове B()." #. 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 "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is invalid, or I is nonzero, or the B " "command is disabled because the I CPU parameter has been set, or " "the B and " "B commands are not " "implemented by the architecture." msgstr "" "Неверное значение I, значение I не равно нулю, отключена команда " "B, так как указан параметр ЦП I или " "команды B " "иB не реализованы для " "архитектуры." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The B() system call is not implemented by this kernel." msgstr "Системный вызов B() не реализован в данном ядре." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 "BIB<, int >IB<);>\n" msgstr "BIB<, int >IB<);>\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() can be useful include implementations of " "Read-Copy-Update libraries and garbage collectors." msgstr "" "Вызов B() может быть полезным для реализации библиотек чтения-" "копирования-обновления или сборщиков мусора." #. 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():" msgstr "" "Предполагая, что в многонитевой программе «fast_path()» выполняется очень " "часто, а «slow_path()» — редко, следующий код (x86) можно преобразовать " "используя B():" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Estdlib.hE\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() becomes:" msgstr "Этот же код, переписанный с использованием B():" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Estdlib.hE\n" "#include Estdio.hE\n" "#include Eunistd.hE\n" "#include Esys/syscall.hE\n" "#include Elinux/membarrier.hE\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 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() system call was added in Linux 4.3." msgstr "Системный вызов B() впервые появился в Linux версии 4.3." #. type: Plain text #: debian-bookworm msgid "Before Linux 5.10, the prototype for B() 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() is Linux-specific." msgstr "Вызов B() есть только в Linux." #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "#include Estdlib.hE\n" msgstr "#include Estdlib.hE\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 Estdlib.hE\n" "#include Estdio.hE\n" "#include Eunistd.hE\n" "#include Esys/syscall.hE\n" "#include Elinux/membarrier.hE\n" msgstr "" "#define _GNU_SOURCE\n" "#include Estdlib.hE\n" "#include Estdio.hE\n" "#include Eunistd.hE\n" "#include Esys/syscall.hE\n" "#include Elinux/membarrier.hE\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 0) {\n" " perror(\"membarrier\");\n" " return -1;\n" " }\n" msgstr "" " ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);\n" " if (ret E 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 #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. 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" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"