diff --git a/documentation/content/pt-br/books/arch-handbook/locking/_index.adoc b/documentation/content/pt-br/books/arch-handbook/locking/_index.adoc new file mode 100644 index 00000000000..e8f8199a8d9 --- /dev/null +++ b/documentation/content/pt-br/books/arch-handbook/locking/_index.adoc @@ -0,0 +1,145 @@ +--- +description: 'Notas sobre Bloqueios (Locking)' +next: books/arch-handbook/kobj +params: + path: /books/arch-handbook/locking/ +prev: books/arch-handbook/boot +showBookMenu: 'true' +tags: ["locking", "notes", "SMP", "Mutexes"] +title: 'Capítulo 2. Notas sobre Bloqueios' +weight: 3 +--- + +[[locking]] += Notas sobre Bloqueios (Locking) +:doctype: book +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:sectnumoffset: 2 +:partnums: +:source-highlighter: rouge +:experimental: +:images-path: books/arch-handbook/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +:imagesdir: ../../../../images/{images-path} +endif::[] +ifndef::book[] +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +toc::[] +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +toc::[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +_Este capítulo é mantido pelo Projeto FreeBSD SMP Next Generation._ + +Este documento descreve o sistema de bloqueio usado no kernel do FreeBSD para permitir o multiprocessamento eficiente dentro do kernel. O bloqueio pode ser obtido por diversos meios. Estruturas de dados podem ser protegidas por mutexes ou por bloqueios (man:lockmgr[9] locks). Algumas variáveis ​​são protegidas simplesmente pelo uso de operações atômicas para acessá-las. + +[[locking-mutexes]] +== Mutexes + +Um mutex é simplesmente um mecanismo de bloqueio usado para garantir exclusão mútua. Especificamente, um mutex só pode pertencer a uma entidade por vez. Se outra entidade desejar obter um mutex que já esteja em uso, ela deverá esperar até que o mutex seja liberado. No kernel do FreeBSD, os mutexes pertencem aos processos. + +Os mutexes podem ser adquiridos recursivamente, mas destinam-se a ser mantidos por um curto período de tempo. Especificamente, não se pode dormir enquanto se mantém um mutex. Se precisar manter um bloqueio durante um período de sono, use um bloqueio man:lockmgr[9]. + +Cada mutex possui diversas propriedades de interesse: + +Nome da variável:: +O nome da variável struct mtx no código-fonte do kernel. + +Nome lógico:: +O nome do mutex atribuído a ele por `mtx_init`. Esse nome é exibido nas mensagens de rastreamento do KTR e nos erros e avisos de testemunha, sendo usado para distinguir mutexes no código de testemunha. + +Tipo:: +O tipo do mutex em termos dos sinalizadores `MTX_*`. O significado de cada sinalizador está relacionado ao seu significado conforme documentado em man:mutex[9]. + +`MTX_DEF`::: +Um mutex de sono + +`MTX_SPIN`::: +Um spin mutex + +`MTX_RECURSE`::: +Este mutex tem permissão para recursão. + +Protegidos:: +Uma lista de estruturas de dados ou membros de estruturas de dados que esta entrada protege. Para membros de estruturas de dados, o nome estará no formato `nome da estrutura`.`nome do membro`. + +Funções Dependentes:: +Funções que só podem ser chamadas se este mutex estiver ativo. + +.Lista de Mutex +[cols="15%,10%,10%,55%,20%", frame="all", options="header"] +|=== +| Nome da variável +| Nome lógico +| Tipo +| Protegidos +| Funções Dependentes + +|sched_lock +|"sched lock" +|`MTX_SPIN` \| `MTX_RECURSE` +|`_gmonparam`, `cnt.v_swtch`, `cp_time`, `curpriority`, `mtx`.`mtx_blocked`, `mtx`.`mtx_contested`, `proc`.`p_procq`, `proc`.`p_slpq`, `proc`.`p_sflag`, `proc`.`p_stat`, `proc`.`p_estcpu`, `proc`.`p_cpticks` `proc`.`p_pctcpu`, `proc`.`p_wchan`, `proc`.`p_wmesg`, `proc`.`p_swtime`, `proc`.`p_slptime`, `proc`.`p_runtime`, `proc`.`p_uu`, `proc`.`p_su`, `proc`.`p_iu`, `proc`.`p_uticks`, `proc`.`p_sticks`, `proc`.`p_iticks`, `proc`.`p_oncpu`, `proc`.`p_lastcpu`, `proc`.`p_rqindex`, `proc`.`p_heldmtx`, `proc`.`p_blocked`, `proc`.`p_mtxname`, `proc`.`p_contested`, `proc`.`p_priority`, `proc`.`p_usrpri`, `proc`.`p_nativepri`, `proc`.`p_nice`, `proc`.`p_rtprio`, `pscnt`, `slpque`, `itqueuebits`, `itqueues`, `rtqueuebits`, `rtqueues`, `queuebits`, `queues`, `idqueuebits`, `idqueues`, `switchtime`, `switchticks` +|`setrunqueue`, `remrunqueue`, `mi_switch`, `chooseproc`, `schedclock`, `resetpriority`, `updatepri`, `maybe_resched`, `cpu_switch`, `cpu_throw`, `need_resched`, `resched_wanted`, `clear_resched`, `aston`, `astoff`, `astpending`, `calcru`, `proc_compare` + +|vm86pcb_lock +|"vm86pcb lock" +|`MTX_DEF` +|`vm86pcb` +|`vm86_bioscall` + +|Giant +|"Giant" +|`MTX_DEF` \| `MTX_RECURSE` +|quase tudo +|muitas + +|callout_lock +|"callout lock" +|`MTX_SPIN` \| `MTX_RECURSE` +|`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, `proc`.`p_slpcallout`, `softticks`, `ticks` +| +|=== + +[[locking-sx]] +== Shared Exclusive Locks + +Esses bloqueios fornecem funcionalidade básica de leitura e gravação e podem ser mantidos por um processo inativo. Atualmente, eles são suportados por man:lockmgr[9]. + +.Shared Exclusive Lock List +[cols="20%,80%", options="header"] +|=== +| Nome da variável +| Protegidos + +|`allproc_lock` +|`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid` + +|`proctree_lock` +|`proc`.`p_children` `proc`.`p_sibling` +|=== + +[[locking-atomic]] +== Atomically Protected Variables + +Uma variável atomicamente protegida é uma variável especial que não é protegida por um bloqueio explícito. Em vez disso, todos os acessos a dados da variável usam operações atômicas especiais, conforme descrito em man:atomic[9]. Pouquíssimas variáveis ​​são tratadas dessa forma, embora outras primitivas de sincronização, como mutexes, sejam implementadas com variáveis ​​atomicamente protegidas. + +* `mtx`.`mtx_lock` diff --git a/documentation/content/pt-br/books/arch-handbook/locking/_index.mo b/documentation/content/pt-br/books/arch-handbook/locking/_index.mo new file mode 100644 index 00000000000..0aff6d48dbf Binary files /dev/null and b/documentation/content/pt-br/books/arch-handbook/locking/_index.mo differ diff --git a/documentation/content/pt-br/books/arch-handbook/locking/_index.po b/documentation/content/pt-br/books/arch-handbook/locking/_index.po new file mode 100644 index 00000000000..47be901624c --- /dev/null +++ b/documentation/content/pt-br/books/arch-handbook/locking/_index.po @@ -0,0 +1,327 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-05-01 19:56-0300\n" +"PO-Revision-Date: 2026-04-20 16:55-0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.9\n" + +#. type: Title = +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:1 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:14 +#, no-wrap +msgid "Locking Notes" +msgstr "Notas sobre Bloqueios (Locking)" + +#. type: YAML Front Matter: title +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:1 +#, no-wrap +msgid "Chapter 2. Locking Notes" +msgstr "Capítulo 2. Notas sobre Bloqueios" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:52 +msgid "_This chapter is maintained by the FreeBSD SMP Next Generation Project._" +msgstr "_Este capítulo é mantido pelo Projeto FreeBSD SMP Next Generation._" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:54 +msgid "This document outlines the locking used in the FreeBSD kernel to permit effective multi-processing within the kernel. Locking can be achieved via several means. Data structures can be protected by mutexes or man:lockmgr[9] locks. A few variables are protected simply by always using atomic operations to access them." +msgstr "Este documento descreve o sistema de bloqueio usado no kernel do FreeBSD para permitir o multiprocessamento eficiente dentro do kernel. O bloqueio pode ser obtido por diversos meios. Estruturas de dados podem ser protegidas por mutexes ou por bloqueios (man:lockmgr[9] locks). Algumas variáveis ​​são protegidas simplesmente pelo uso de operações atômicas para acessá-las." + +#. type: Title == +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:56 +#, no-wrap +msgid "Mutexes" +msgstr "Mutexes" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:59 +msgid "A mutex is simply a lock used to guarantee mutual exclusion. Specifically, a mutex may only be owned by one entity at a time. If another entity wishes to obtain a mutex that is already owned, it must wait until the mutex is released. In the FreeBSD kernel, mutexes are owned by processes." +msgstr "Um mutex é simplesmente um mecanismo de bloqueio usado para garantir exclusão mútua. Especificamente, um mutex só pode pertencer a uma entidade por vez. Se outra entidade desejar obter um mutex que já esteja em uso, ela deverá esperar até que o mutex seja liberado. No kernel do FreeBSD, os mutexes pertencem aos processos." + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:61 +msgid "Mutexes may be recursively acquired, but they are intended to be held for a short period of time. Specifically, one may not sleep while holding a mutex. If you need to hold a lock across a sleep, use a man:lockmgr[9] lock." +msgstr "Os mutexes podem ser adquiridos recursivamente, mas destinam-se a ser mantidos por um curto período de tempo. Especificamente, não se pode dormir enquanto se mantém um mutex. Se precisar manter um bloqueio durante um período de sono, use um bloqueio man:lockmgr[9]." + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:63 +msgid "Each mutex has several properties of interest:" +msgstr "Cada mutex possui diversas propriedades de interesse:" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:64 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:92 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:131 +#, no-wrap +msgid "Variable Name" +msgstr "Nome da variável" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:66 +msgid "The name of the struct mtx variable in the kernel source." +msgstr "O nome da variável struct mtx no código-fonte do kernel." + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:67 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:93 +#, no-wrap +msgid "Logical Name" +msgstr "Nome lógico" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:69 +msgid "The name of the mutex assigned to it by `mtx_init`. This name is displayed in KTR trace messages and witness errors and warnings and is used to distinguish mutexes in the witness code." +msgstr "O nome do mutex atribuído a ele por `mtx_init`. Esse nome é exibido nas mensagens de rastreamento do KTR e nos erros e avisos de testemunha, sendo usado para distinguir mutexes no código de testemunha." + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:70 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:94 +#, no-wrap +msgid "Type" +msgstr "Tipo" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:72 +msgid "The type of the mutex in terms of the `MTX_*` flags. The meaning for each flag is related to its meaning as documented in man:mutex[9]." +msgstr "O tipo do mutex em termos dos sinalizadores `MTX_*`. O significado de cada sinalizador está relacionado ao seu significado conforme documentado em man:mutex[9]." + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:73 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:106 +#, no-wrap +msgid "`MTX_DEF`" +msgstr "`MTX_DEF`" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:75 +msgid "A sleep mutex" +msgstr "Um mutex de sono" + +#. type: Labeled list +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:76 +#, no-wrap +msgid "`MTX_SPIN`" +msgstr "`MTX_SPIN`" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:78 +msgid "A spin mutex" +msgstr "Um spin mutex" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:79 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:100 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:112 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:118 +#, no-wrap +msgid "`MTX_RECURSE`" +msgstr "`MTX_RECURSE`" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:81 +msgid "This mutex is allowed to recurse." +msgstr "Este mutex tem permissão para recursão." + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:82 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:95 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:133 +#, no-wrap +msgid "Protectees" +msgstr "Protegidos" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:84 +msgid "A list of data structures or data structure members that this entry protects. For data structure members, the name will be in the form of `structure name`.`member name`." +msgstr "Uma lista de estruturas de dados ou membros de estruturas de dados que esta entrada protege. Para membros de estruturas de dados, o nome estará no formato `nome da estrutura`.`nome do membro`." + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:85 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:97 +#, no-wrap +msgid "Dependent Functions" +msgstr "Funções Dependentes" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:87 +msgid "Functions that can only be called if this mutex is held." +msgstr "Funções que só podem ser chamadas se este mutex estiver ativo." + +#. type: Block title +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:88 +#, no-wrap +msgid "Mutex List" +msgstr "Lista de Mutex" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:98 +#, no-wrap +msgid "sched_lock" +msgstr "sched_lock" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:99 +#, no-wrap +msgid "\"sched lock\"" +msgstr "\"sched lock\"" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:99 +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:117 +#, no-wrap +msgid "`MTX_SPIN` \\" +msgstr "`MTX_SPIN` \\" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:101 +#, no-wrap +msgid "`_gmonparam`, `cnt.v_swtch`, `cp_time`, `curpriority`, `mtx`.`mtx_blocked`, `mtx`.`mtx_contested`, `proc`.`p_procq`, `proc`.`p_slpq`, `proc`.`p_sflag`, `proc`.`p_stat`, `proc`.`p_estcpu`, `proc`.`p_cpticks` `proc`.`p_pctcpu`, `proc`.`p_wchan`, `proc`.`p_wmesg`, `proc`.`p_swtime`, `proc`.`p_slptime`, `proc`.`p_runtime`, `proc`.`p_uu`, `proc`.`p_su`, `proc`.`p_iu`, `proc`.`p_uticks`, `proc`.`p_sticks`, `proc`.`p_iticks`, `proc`.`p_oncpu`, `proc`.`p_lastcpu`, `proc`.`p_rqindex`, `proc`.`p_heldmtx`, `proc`.`p_blocked`, `proc`.`p_mtxname`, `proc`.`p_contested`, `proc`.`p_priority`, `proc`.`p_usrpri`, `proc`.`p_nativepri`, `proc`.`p_nice`, `proc`.`p_rtprio`, `pscnt`, `slpque`, `itqueuebits`, `itqueues`, `rtqueuebits`, `rtqueues`, `queuebits`, `queues`, `idqueuebits`, `idqueues`, `switchtime`, `switchticks`" +msgstr "`_gmonparam`, `cnt.v_swtch`, `cp_time`, `curpriority`, `mtx`.`mtx_blocked`, `mtx`.`mtx_contested`, `proc`.`p_procq`, `proc`.`p_slpq`, `proc`.`p_sflag`, `proc`.`p_stat`, `proc`.`p_estcpu`, `proc`.`p_cpticks` `proc`.`p_pctcpu`, `proc`.`p_wchan`, `proc`.`p_wmesg`, `proc`.`p_swtime`, `proc`.`p_slptime`, `proc`.`p_runtime`, `proc`.`p_uu`, `proc`.`p_su`, `proc`.`p_iu`, `proc`.`p_uticks`, `proc`.`p_sticks`, `proc`.`p_iticks`, `proc`.`p_oncpu`, `proc`.`p_lastcpu`, `proc`.`p_rqindex`, `proc`.`p_heldmtx`, `proc`.`p_blocked`, `proc`.`p_mtxname`, `proc`.`p_contested`, `proc`.`p_priority`, `proc`.`p_usrpri`, `proc`.`p_nativepri`, `proc`.`p_nice`, `proc`.`p_rtprio`, `pscnt`, `slpque`, `itqueuebits`, `itqueues`, `rtqueuebits`, `rtqueues`, `queuebits`, `queues`, `idqueuebits`, `idqueues`, `switchtime`, `switchticks`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:103 +#, no-wrap +msgid "`setrunqueue`, `remrunqueue`, `mi_switch`, `chooseproc`, `schedclock`, `resetpriority`, `updatepri`, `maybe_resched`, `cpu_switch`, `cpu_throw`, `need_resched`, `resched_wanted`, `clear_resched`, `aston`, `astoff`, `astpending`, `calcru`, `proc_compare`" +msgstr "`setrunqueue`, `remrunqueue`, `mi_switch`, `chooseproc`, `schedclock`, `resetpriority`, `updatepri`, `maybe_resched`, `cpu_switch`, `cpu_throw`, `need_resched`, `resched_wanted`, `clear_resched`, `aston`, `astoff`, `astpending`, `calcru`, `proc_compare`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:104 +#, no-wrap +msgid "vm86pcb_lock" +msgstr "vm86pcb_lock" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:105 +#, no-wrap +msgid "\"vm86pcb lock\"" +msgstr "\"vm86pcb lock\"" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:107 +#, no-wrap +msgid "`vm86pcb`" +msgstr "`vm86pcb`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:109 +#, no-wrap +msgid "`vm86_bioscall`" +msgstr "`vm86_bioscall`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:110 +#, no-wrap +msgid "Giant" +msgstr "Giant" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:111 +#, no-wrap +msgid "\"Giant\"" +msgstr "\"Giant\"" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:111 +#, no-wrap +msgid "`MTX_DEF` \\" +msgstr "`MTX_DEF` \\" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:113 +#, no-wrap +msgid "nearly everything" +msgstr "quase tudo" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:115 +#, no-wrap +msgid "lots" +msgstr "muitas" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:116 +#, no-wrap +msgid "callout_lock" +msgstr "callout_lock" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:117 +#, no-wrap +msgid "\"callout lock\"" +msgstr "\"callout lock\"" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:119 +#, no-wrap +msgid "`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, `proc`.`p_slpcallout`, `softticks`, `ticks`" +msgstr "`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, `proc`.`p_slpcallout`, `softticks`, `ticks`" + +#. type: Title == +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:123 +#, no-wrap +msgid "Shared Exclusive Locks" +msgstr "Shared Exclusive Locks" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:126 +msgid "These locks provide basic reader-writer type functionality and may be held by a sleeping process. Currently they are backed by man:lockmgr[9]." +msgstr "Esses bloqueios fornecem funcionalidade básica de leitura e gravação e podem ser mantidos por um processo inativo. Atualmente, eles são suportados por man:lockmgr[9]." + +#. type: Block title +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:127 +#, no-wrap +msgid "Shared Exclusive Lock List" +msgstr "Shared Exclusive Lock List" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:134 +#, no-wrap +msgid "`allproc_lock`" +msgstr "`allproc_lock`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:136 +#, no-wrap +msgid "`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid`" +msgstr "`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:137 +#, no-wrap +msgid "`proctree_lock`" +msgstr "`proctree_lock`" + +#. type: Table +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:138 +#, no-wrap +msgid "`proc`.`p_children` `proc`.`p_sibling`" +msgstr "`proc`.`p_children` `proc`.`p_sibling`" + +#. type: Title == +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:141 +#, no-wrap +msgid "Atomically Protected Variables" +msgstr "Atomically Protected Variables" + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:144 +msgid "An atomically protected variable is a special variable that is not protected by an explicit lock. Instead, all data accesses to the variables use special atomic operations as described in man:atomic[9]. Very few variables are treated this way, although other synchronization primitives such as mutexes are implemented with atomically protected variables." +msgstr "Uma variável atomicamente protegida é uma variável especial que não é protegida por um bloqueio explícito. Em vez disso, todos os acessos a dados da variável usam operações atômicas especiais, conforme descrito em man:atomic[9]. Pouquíssimas variáveis ​​são tratadas dessa forma, embora outras primitivas de sincronização, como mutexes, sejam implementadas com variáveis ​​atomicamente protegidas." + +#. type: Plain text +#: documentation/content/en/books/arch-handbook/locking/_index.adoc:145 +msgid "`mtx`.`mtx_lock`" +msgstr "`mtx`.`mtx_lock`"