€•'Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/driver-api/tty/tty_struct”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒG/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ TTY Struct”h]”hŒ TTY Struct”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒtopic”“”)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hhh]”hŒ paragraph”“”)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒInitialization”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œinitialization”uh1hñhhîubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhhéubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒName”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œname”uh1hñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒReference counting”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œreference-counting”uh1hñhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒInstall”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œinstall”uh1hñhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Read & Write”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ read-write”uh1hñhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Start & Stop”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œ start-stop”uh1hñhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒWakeup”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œwakeup”uh1hñhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒHangup”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œhangup”uh1hñhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒMisc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œmisc”uh1hñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒTTY Struct Flags”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œtty-struct-flags”uh1hñhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒTTY Struct Reference”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œtty-struct-reference”uh1hñhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâhhßh²hh³Nh´Nubah}”(h]”Œcontents”ah ]”(Œcontents”Œlocal”eh"]”Œcontents”ah$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhí)�”}”(hXstruct tty_struct is allocated by the TTY layer upon the first open of the TTY device and released after the last close. The TTY layer passes this structure to most of struct tty_operation's hooks. Members of tty_struct are documented in `TTY Struct Reference`_ at the bottom.”h]”(hŒðstruct tty_struct is allocated by the TTY layer upon the first open of the TTY device and released after the last close. The TTY layer passes this structure to most of struct tty_operation’s hooks. Members of tty_struct are documented in ”…”�”}”(hjsh²hh³Nh´Nubhò)�”}”(hŒ`TTY Struct Reference`_”h]”hŒTTY Struct Reference”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒTTY Struct Reference”Œrefid”jVuh1hñhjsŒresolved”KubhŒ at the bottom.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInitialization”h]”hŒInitialization”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹hüuh1hÍhj—h²hh³hÇh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œtty_init_termios (C function)”Œc.tty_init_termios”hNt”auh1j¨hj—h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ.void tty_init_termios (struct tty_struct *tty)”h]”hŒdesc_signature_line”“”)�”}”(hŒ-void tty_init_termios(struct tty_struct *tty)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jÊhjÆh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´MºubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jÜhjÆh²hh³jÛh´MºubhŒ desc_name”“”)�”}”(hŒtty_init_termios”h]”hŒ desc_sig_name”“”)�”}”(hŒtty_init_termios”h]”hŒtty_init_termios”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jóhjïubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jíhjÆh²hh³jÛh´MºubhŒdesc_parameterlist”“”)�”}”(hŒ(struct tty_struct *tty)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct tty_struct *tty”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j<Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jVŒ ASTIdentifier”“”)�”}”jQj÷sbŒc.tty_init_termios”†”asbuh1hhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jqhjubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjÆh²hh³jÛh´Mºubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jÄŒsphinx_line_type”Œ declarator”hjÀh²hh³jÛh´Mºubah}”(h]”j·ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j¾h³jÛh´Mºhj»h²hubhŒ desc_content”“”)�”}”(hhh]”hí)�”}”(hŒhelper for termios setup”h]”hŒhelper for termios setup”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´Mºhj³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj»h²hh³jÛh´Mºubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”Œdomain”jOŒobjtype”jÎŒdesctype”jÎŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j¹h²hhj—h³Nh´NubhŒ container”“”)�”}”(hŒÐ**Parameters** ``struct tty_struct *tty`` the tty to set up **Description** Initialise the termios structure for this tty. This runs under the ``tty_mutex`` currently so we can be relaxed about ordering.”h]”(hí)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjàh]”hŒ Parameters”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´M¾hjÚubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ-``struct tty_struct *tty`` the tty to set up ”h]”(hŒterm”“”)�”}”(hŒ``struct tty_struct *tty``”h]”hŒliteral”“”)�”}”(hjh]”hŒstruct tty_struct *tty”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´M»hjÿubhŒ definition”“”)�”}”(hhh]”hí)�”}”(hŒthe tty to set up”h]”hŒthe tty to set up”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´M»hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´M»hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjÚubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjFh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´M½hjÚubhí)�”}”(hŒInitialise the termios structure for this tty. This runs under the ``tty_mutex`` currently so we can be relaxed about ordering.”h]”(hŒCInitialise the termios structure for this tty. This runs under the ”…”�”}”(hj\h²hh³Nh´Nubj )�”}”(hŒ ``tty_mutex``”h]”hŒ tty_mutex”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ubhŒ/ currently so we can be relaxed about ordering.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:17: ./drivers/tty/tty_io.c”h´M¼hjÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj—h²hh³Nh´Nubeh}”(h]”jah ]”h"]”Œinitialization”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒName”h]”hŒName”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹juh1hÍhj‹h²hh³hÇh´Kubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_name (C function)”Œ c.tty_name”hNt”auh1j¨hj‹h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ4const char * tty_name (const struct tty_struct *tty)”h]”jÅ)�”}”(hŒ2const char *tty_name(const struct tty_struct *tty)”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj±h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´KìubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj±h²hh³jÃh´KìubjË)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj±h²hh³jÃh´KìubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj±h²hh³jÃh´Kìubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhj±h²hh³jÃh´Kìubjî)�”}”(hŒtty_name”h]”jô)�”}”(hŒtty_name”h]”hŒtty_name”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjûubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj±h²hh³jÃh´Kìubj )�”}”(hŒ(const struct tty_struct *tty)”h]”j)�”}”(hŒconst struct tty_struct *tty”h]”(j)�”}”(hj·h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubj)�”}”(hjh]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jVŒmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjsbŒ c.tty_name”†”asbuh1hhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj±h²hh³jÃh´Kìubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj­h²hh³jÃh´Kìubah}”(h]”j¨ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³jÃh´Kìhjªh²hubj²)�”}”(hhh]”hí)�”}”(hŒreturn tty naming”h]”hŒreturn tty naming”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´Kìhj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjªh²hh³jÃh´Kìubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjÑjÔjÑjÕ‰jÖ‰j׉uh1j¹h²hhj‹h³Nh´NubjÙ)�”}”(hŒâ**Parameters** ``const struct tty_struct *tty`` tty structure **Description** Convert a tty structure into a name. The name reflects the kernel naming policy and if udev is in use may not reflect user space Locking: none”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´KðhjÕubjù)�”}”(hhh]”jþ)�”}”(hŒ/``const struct tty_struct *tty`` tty structure ”h]”(j)�”}”(hŒ ``const struct tty_struct *tty``”h]”j )�”}”(hjúh]”hŒconst struct tty_struct *tty”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´Kíhjôubj )�”}”(hhh]”hí)�”}”(hŒ tty structure”h]”hŒ tty structure”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´Kíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´Kíhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjÕubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj5h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´KïhjÕubhí)�”}”(hŒ€Convert a tty structure into a name. The name reflects the kernel naming policy and if udev is in use may not reflect user space”h]”hŒ€Convert a tty structure into a name. The name reflects the kernel naming policy and if udev is in use may not reflect user space”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´KîhjÕubhí)�”}”(hŒ Locking: none”h]”hŒ Locking: none”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:23: ./drivers/tty/tty_io.c”h´KñhjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj‹h²hh³Nh´Nubeh}”(h]”j$ah ]”h"]”Œname”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒReference counting”h]”hŒReference counting”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹j@uh1hÍhjwh²hh³hÇh´Kubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_kref_get (C function)”Œc.tty_kref_get”hNt”auh1j¨hjwh²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ9struct tty_struct * tty_kref_get (struct tty_struct *tty)”h]”jÅ)�”}”(hŒ7struct tty_struct *tty_kref_get(struct tty_struct *tty)”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj�h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´M…ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj�h²hh³j®h´M…ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jÂŒmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQŒ tty_kref_get”sbŒc.tty_kref_get”†”asbuh1hhj�h²hh³j®h´M…ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj�h²hh³j®h´M…ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhj�h²hh³j®h´M…ubjî)�”}”(hŒ tty_kref_get”h]”jô)�”}”(hjÞh]”hŒ tty_kref_get”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjüubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj�h²hh³j®h´M…ubj )�”}”(hŒ(struct tty_struct *tty)”h]”j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”j;Œmodname”NŒ classname”NjUjX)�”}”j[]”jÜŒc.tty_kref_get”†”asbuh1hhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj�h²hh³j®h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj™h²hh³j®h´M…ubah}”(h]”j”ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j®h´M…hj–h²hubj²)�”}”(hhh]”hí)�”}”(hŒget a tty reference”h]”hŒget a tty reference”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´M…hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj–h²hh³j®h´M…ubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓj´jÔj´jÕ‰jÖ‰j׉uh1j¹h²hhjwh³Nh´NubjÙ)�”}”(hŒä**Parameters** ``struct tty_struct *tty`` tty device **Return** a new reference to a tty object **Description** Locking: The caller must hold sufficient locks/counts to ensure that their existing reference cannot go away.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hj¾h]”hŒ Parameters”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´M‰hj¸ubjù)�”}”(hhh]”jþ)�”}”(hŒ&``struct tty_struct *tty`` tty device ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hjÝh]”hŒstruct tty_struct *tty”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´M†hj×ubj )�”}”(hhh]”hí)�”}”(hŒ tty device”h]”hŒ tty device”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jòh´M†hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jòh´M†hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¸ubhí)�”}”(hŒ **Return**”h]”jã)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´Mˆhj¸ubhí)�”}”(hŒa new reference to a tty object”h]”hŒa new reference to a tty object”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´Mˆhj¸ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj?h]”hŒ Description”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´MŠhj¸ubhí)�”}”(hŒmLocking: The caller must hold sufficient locks/counts to ensure that their existing reference cannot go away.”h]”hŒmLocking: The caller must hold sufficient locks/counts to ensure that their existing reference cannot go away.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:29: ./include/linux/tty.h”h´M‰hj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjwh²hh³Nh´Nubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_kref_put (C function)”Œc.tty_kref_put”hNt”auh1j¨hjwh²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ*void tty_kref_put (struct tty_struct *tty)”h]”jÅ)�”}”(hŒ)void tty_kref_put(struct tty_struct *tty)”h]”(jË)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj€h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´MóubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj€h²hh³j’h´Móubjî)�”}”(hŒ tty_kref_put”h]”jô)�”}”(hŒ tty_kref_put”h]”hŒ tty_kref_put”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj¡ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj€h²hh³j’h´Móubj )�”}”(hŒ(struct tty_struct *tty)”h]”j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj½ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj½ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jáŒmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQj§sbŒc.tty_kref_put”†”asbuh1hhj½ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj½ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhj½ubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¹ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj€h²hh³j’h´Móubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj|h²hh³j’h´Móubah}”(h]”jwah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j’h´Móhjyh²hubj²)�”}”(hhh]”hí)�”}”(hŒrelease a tty kref”h]”hŒrelease a tty kref”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´MóhjA h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjyh²hh³j’h´Móubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓj\ jÔj\ jÕ‰jÖ‰j׉uh1j¹h²hhjwh³Nh´NubjÙ)�”}”(hŒ±**Parameters** ``struct tty_struct *tty`` tty device **Description** Release a reference to the **tty** device and if need be let the kref layer destruct the object for us.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjf h]”hŒ Parameters”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´M÷hj` ubjù)�”}”(hhh]”jþ)�”}”(hŒ&``struct tty_struct *tty`` tty device ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hj… h]”hŒstruct tty_struct *tty”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´Môhj ubj )�”}”(hhh]”hí)�”}”(hŒ tty device”h]”hŒ tty device”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jš h´Môhj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jš h´Môhj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj` ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjÀ h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´Möhj` ubhí)�”}”(hŒgRelease a reference to the **tty** device and if need be let the kref layer destruct the object for us.”h]”(hŒRelease a reference to the ”…”�”}”(hjÖ h²hh³Nh´Nubjã)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÖ ubhŒE device and if need be let the kref layer destruct the object for us.”…”�”}”(hjÖ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:32: ./drivers/tty/tty_io.c”h´Mõhj` ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjwh²hh³Nh´Nubeh}”(h]”jFah ]”h"]”Œreference counting”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInstall”h]”hŒInstall”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹jbuh1hÍhj h²hh³hÇh´K$ubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒ!tty_standard_install (C function)”Œc.tty_standard_install”hNt”auh1j¨hj h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒLint tty_standard_install (struct tty_driver *driver, struct tty_struct *tty)”h]”jÅ)�”}”(hŒKint tty_standard_install(struct tty_driver *driver, struct tty_struct *tty)”h]”(jË)�”}”(hŒint”h]”hŒint”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj+ h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´M×ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj+ h²hh³j= h´M×ubjî)�”}”(hŒtty_standard_install”h]”jô)�”}”(hŒtty_standard_install”h]”hŒtty_standard_install”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjL ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj+ h²hh³j= h´M×ubj )�”}”(hŒ3(struct tty_driver *driver, struct tty_struct *tty)”h]”(j)�”}”(hŒstruct tty_driver *driver”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjh ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjh ubh)�”}”(hhh]”jô)�”}”(hŒ tty_driver”h]”hŒ tty_driver”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jŒ Œmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjR sbŒc.tty_standard_install”†”asbuh1hhjh ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjh ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjh ubjô)�”}”(hŒdriver”h]”hŒdriver”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjh ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjd ubj)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjÚ ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjÚ ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjù ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jþ Œmodname”NŒ classname”NjUjX)�”}”j[]”j¦ Œc.tty_standard_install”†”asbuh1hhjÚ ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjÚ ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjÚ ubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjÚ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjd ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj+ h²hh³j= h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj' h²hh³j= h´M×ubah}”(h]”j" ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j= h´M×hj$ h²hubj²)�”}”(hhh]”hí)�”}”(hŒusual tty->ops->install”h]”hŒusual tty->ops->install”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´M×hj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj$ h²hh³j= h´M×ubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjw jÔjw jÕ‰jÖ‰j׉uh1j¹h²hhj h³Nh´NubjÙ)�”}”(hŒý**Parameters** ``struct tty_driver *driver`` the driver for the tty ``struct tty_struct *tty`` the tty **Description** If the **driver** overrides **tty->ops->install**, it still can call this function to perform the standard install operations.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hj� h]”hŒ Parameters”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´MÛhj{ ubjù)�”}”(hhh]”(jþ)�”}”(hŒ5``struct tty_driver *driver`` the driver for the tty ”h]”(j)�”}”(hŒ``struct tty_driver *driver``”h]”j )�”}”(hj  h]”hŒstruct tty_driver *driver”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´MØhjš ubj )�”}”(hhh]”hí)�”}”(hŒthe driver for the tty”h]”hŒthe driver for the tty”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jµ h´MØhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jµ h´MØhj— ubjþ)�”}”(hŒ#``struct tty_struct *tty`` the tty ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hjÙ h]”hŒstruct tty_struct *tty”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´MÙhjÓ ubj )�”}”(hhh]”hí)�”}”(hŒthe tty”h]”hŒthe tty”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jî h´MÙhjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jî h´MÙhj— ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj{ ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´MÛhj{ ubhí)�”}”(hŒ~If the **driver** overrides **tty->ops->install**, it still can call this function to perform the standard install operations.”h]”(hŒIf the ”…”�”}”(hj* h²hh³Nh´Nubjã)�”}”(hŒ **driver**”h]”hŒdriver”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj* ubhŒ overrides ”…”�”}”(hj* h²hh³Nh´Nubjã)�”}”(hŒ**tty->ops->install**”h]”hŒtty->ops->install”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj* ubhŒM, it still can call this function to perform the standard install operations.”…”�”}”(hj* h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:38: ./drivers/tty/tty_io.c”h´MÚhj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj h²hh³Nh´Nubeh}”(h]”jhah ]”h"]”Œinstall”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K$ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Read & Write”h]”hŒ Read & Write”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹j„uh1hÍhjk h²hh³hÇh´K*ubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_put_char (C function)”Œc.tty_put_char”hNt”auh1j¨hjk h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ0int tty_put_char (struct tty_struct *tty, u8 ch)”h]”jÅ)�”}”(hŒ/int tty_put_char(struct tty_struct *tty, u8 ch)”h]”(jË)�”}”(hŒint”h]”hŒint”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj‘ h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M9 ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj‘ h²hh³j£ h´M9 ubjî)�”}”(hŒ tty_put_char”h]”jô)�”}”(hŒ tty_put_char”h]”hŒ tty_put_char”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj² ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj‘ h²hh³j£ h´M9 ubj )�”}”(hŒ(struct tty_struct *tty, u8 ch)”h]”(j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjÎ ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjÎ ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjí ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jò Œmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQj¸ sbŒc.tty_put_char”†”asbuh1hhjÎ ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjÎ ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjÎ ubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÊ ubj)�”}”(hŒu8 ch”h]”(h)�”}”(hhh]”jô)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjD ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jI Œmodname”NŒ classname”NjUjX)�”}”j[]”j Œc.tty_put_char”†”asbuh1hhj@ ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj@ ubjô)�”}”(hŒch”h]”hŒch”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj@ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÊ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj‘ h²hh³j£ h´M9 ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj� h²hh³j£ h´M9 ubah}”(h]”jˆ ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j£ h´M9 hjŠ h²hubj²)�”}”(hhh]”hí)�”}”(hŒwrite one character to a tty”h]”hŒwrite one character to a tty”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M9 hjš h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjŠ h²hh³j£ h´M9 ubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjµ jÔjµ jÕ‰jÖ‰j׉uh1j¹h²hhjk h³Nh´NubjÙ)�”}”(hXu**Parameters** ``struct tty_struct *tty`` tty ``u8 ch`` character to write **Description** Write one byte to the **tty** using the provided **tty->ops->put_char\(\)** method if present. **Note** the specific put_char operation in the driver layer may go away soon. Don't call it directly, use this method **Return** the number of characters successfully output.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hj¿ h]”hŒ Parameters”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M= hj¹ ubjù)�”}”(hhh]”(jþ)�”}”(hŒ``struct tty_struct *tty`` tty ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hjÞ h]”hŒstruct tty_struct *tty”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M: hjØ ubj )�”}”(hhh]”hí)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jó h´M: hjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jó h´M: hjÕ ubjþ)�”}”(hŒ``u8 ch`` character to write ”h]”(j)�”}”(hŒ ``u8 ch``”h]”j )�”}”(hjh]”hŒu8 ch”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M; hjubj )�”}”(hhh]”hí)�”}”(hŒcharacter to write”h]”hŒcharacter to write”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j,h´M; hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j,h´M; hjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¹ ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjRh]”hŒ Description”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M= hj¹ ubhí)�”}”(hŒ^Write one byte to the **tty** using the provided **tty->ops->put_char\(\)** method if present.”h]”(hŒWrite one byte to the ”…”�”}”(hjhh²hh³Nh´Nubjã)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjhubhŒ using the provided ”…”�”}”(hjhh²hh³Nh´Nubjã)�”}”(hŒ**tty->ops->put_char\(\)**”h]”hŒtty->ops->put_char()”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjhubhŒ method if present.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M< hj¹ ubhí)�”}”(hŒ**Note**”h]”jã)�”}”(hj�h]”hŒNote”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M? hj¹ ubhí)�”}”(hŒmthe specific put_char operation in the driver layer may go away soon. Don't call it directly, use this method”h]”hŒothe specific put_char operation in the driver layer may go away soon. Don’t call it directly, use this method”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´M@ hj¹ ubhí)�”}”(hŒ **Return**”h]”jã)�”}”(hjÄh]”hŒReturn”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´MC hj¹ ubhí)�”}”(hŒ-the number of characters successfully output.”h]”hŒ-the number of characters successfully output.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:44: ./drivers/tty/tty_io.c”h´MC hj¹ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjk h²hh³Nh´Nubeh}”(h]”jŠah ]”h"]”Œ read & write”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K*ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Start & Stop”h]”hŒ Start & Stop”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹j¦uh1hÍhj÷h²hh³hÇh´K0ubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒstop_tty (C function)”Œ c.stop_tty”hNt”auh1j¨hj÷h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ&void stop_tty (struct tty_struct *tty)”h]”jÅ)�”}”(hŒ%void stop_tty(struct tty_struct *tty)”h]”(jË)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MðubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjh²hh³j/h´Mðubjî)�”}”(hŒstop_tty”h]”jô)�”}”(hŒstop_tty”h]”hŒstop_tty”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj>ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhjh²hh³j/h´Mðubj )�”}”(hŒ(struct tty_struct *tty)”h]”j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjZubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjZubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”j~Œmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjDsbŒ c.stop_tty”†”asbuh1hhjZubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjZubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjZubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjh²hh³j/h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hjh²hh³j/h´Mðubah}”(h]”jah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j/h´Mðhjh²hubj²)�”}”(hhh]”hí)�”}”(hŒpropagate flow control”h]”hŒpropagate flow control”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MðhjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjh²hh³j/h´Mðubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjùjÔjùjÕ‰jÖ‰j׉uh1j¹h²hhj÷h³Nh´NubjÙ)�”}”(hXÍ**Parameters** ``struct tty_struct *tty`` tty to stop **Description** Perform flow control to the driver. May be called on an already stopped device and will not re-call the :c:type:`tty_driver->stop\(\) ` method. This functionality is used by both the line disciplines for halting incoming flow and by the driver. It may therefore be called from any context, may be under the tty ``atomic_write_lock`` but not always. Locking: flow.lock”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Môhjýubjù)�”}”(hhh]”jþ)�”}”(hŒ'``struct tty_struct *tty`` tty to stop ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hj"h]”hŒstruct tty_struct *tty”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mñhjubj )�”}”(hhh]”hí)�”}”(hŒ tty to stop”h]”hŒ tty to stop”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j7h´Mñhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j7h´Mñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjýubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj]h]”hŒ Description”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Móhjýubhí)�”}”(hŒ›Perform flow control to the driver. May be called on an already stopped device and will not re-call the :c:type:`tty_driver->stop\(\) ` method.”h]”(hŒhPerform flow control to the driver. May be called on an already stopped device and will not re-call the ”…”�”}”(hjsh²hh³Nh´Nubh)�”}”(hŒ+:c:type:`tty_driver->stop\(\) `”h]”j )�”}”(hj}h]”hŒtty_driver->stop()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jOŒc-type”eh"]”h$]”h&]”uh1j hj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/tty/tty_struct”Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUjX)�”}”j[]”sbŒ reftarget”Œ tty_driver”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MòhjsubhŒ method.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j h´Mòhjýubhí)�”}”(hŒÌThis functionality is used by both the line disciplines for halting incoming flow and by the driver. It may therefore be called from any context, may be under the tty ``atomic_write_lock`` but not always.”h]”(hŒ§This functionality is used by both the line disciplines for halting incoming flow and by the driver. It may therefore be called from any context, may be under the tty ”…”�”}”(hj«h²hh³Nh´Nubj )�”}”(hŒ``atomic_write_lock``”h]”hŒatomic_write_lock”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«ubhŒ but not always.”…”�”}”(hj«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mõhjýubjù)�”}”(hhh]”jþ)�”}”(hŒLocking: flow.lock”h]”(j)�”}”(hŒLocking:”h]”hŒLocking:”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MùhjÏubj )�”}”(hhh]”hí)�”}”(hŒ flow.lock”h]”hŒ flow.lock”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Múhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jáh´MùhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj÷h²hh³Nh´Nubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒstart_tty (C function)”Œ c.start_tty”hNt”auh1j¨hj÷h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ'void start_tty (struct tty_struct *tty)”h]”jÅ)�”}”(hŒ&void start_tty(struct tty_struct *tty)”h]”(jË)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj"h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj"h²hh³j4h´Mubjî)�”}”(hŒ start_tty”h]”jô)�”}”(hŒ start_tty”h]”hŒ start_tty”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjCubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj"h²hh³j4h´Mubj )�”}”(hŒ(struct tty_struct *tty)”h]”j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj_ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj_ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jƒŒmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjIsbŒ c.start_tty”†”asbuh1hhj_ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj_ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhj_ubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj[ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj"h²hh³j4h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hjh²hh³j4h´Mubah}”(h]”jah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j4h´Mhjh²hubj²)�”}”(hhh]”hí)�”}”(hŒpropagate flow control”h]”hŒpropagate flow control”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mhjãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjh²hh³j4h´Mubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjþjÔjþjÕ‰jÖ‰j׉uh1j¹h²hhj÷h³Nh´NubjÙ)�”}”(hX8**Parameters** ``struct tty_struct *tty`` tty to start **Description** Start a tty that has been stopped if at all possible. If **tty** was previously stopped and is now being started, the :c:type:`tty_driver->start\(\) ` method is invoked and the line discipline woken. Locking: flow.lock”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mhjubjù)�”}”(hhh]”jþ)�”}”(hŒ(``struct tty_struct *tty`` tty to start ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hj'h]”hŒstruct tty_struct *tty”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mhj!ubj )�”}”(hhh]”hí)�”}”(hŒ tty to start”h]”hŒ tty to start”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j<h´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j<h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjbh]”hŒ Description”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mhjubhí)�”}”(hŒÓStart a tty that has been stopped if at all possible. If **tty** was previously stopped and is now being started, the :c:type:`tty_driver->start\(\) ` method is invoked and the line discipline woken.”h]”(hŒ9Start a tty that has been stopped if at all possible. If ”…”�”}”(hjxh²hh³Nh´Nubjã)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjxubhŒ6 was previously stopped and is now being started, the ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`tty_driver->start\(\) `”h]”j )�”}”(hj”h]”hŒtty_driver->start()”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒ tty_driver”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MhjxubhŒ1 method is invoked and the line discipline woken.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j±h´Mhjubjù)�”}”(hhh]”jþ)�”}”(hŒLocking: flow.lock”h]”(j)�”}”(hŒLocking:”h]”hŒLocking:”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´Mhj¿ubj )�”}”(hhh]”hí)�”}”(hŒ flow.lock”h]”hŒ flow.lock”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:50: ./drivers/tty/tty_io.c”h´MhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÑh´Mhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj÷h²hh³Nh´Nubeh}”(h]”j¬ah ]”h"]”Œ start & stop”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K0ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒWakeup”h]”hŒWakeup”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹jÈuh1hÍhjh²hh³hÇh´K6ubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_wakeup (C function)”Œ c.tty_wakeup”hNt”auh1j¨hjh²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ(void tty_wakeup (struct tty_struct *tty)”h]”jÅ)�”}”(hŒ'void tty_wakeup(struct tty_struct *tty)”h]”(jË)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj*h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´MôubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj*h²hh³j<h´Môubjî)�”}”(hŒ tty_wakeup”h]”jô)�”}”(hŒ tty_wakeup”h]”hŒ tty_wakeup”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjKubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj*h²hh³j<h´Môubj )�”}”(hŒ(struct tty_struct *tty)”h]”j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjgubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjgubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”j‹Œmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjQsbŒ c.tty_wakeup”†”asbuh1hhjgubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjgubjr)�”}”(hjuh]”hŒ*”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjgubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjcubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj*h²hh³j<h´Môubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj&h²hh³j<h´Môubah}”(h]”j!ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j<h´Môhj#h²hubj²)�”}”(hhh]”hí)�”}”(hŒrequest more data”h]”hŒrequest more data”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´Môhjëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj#h²hh³j<h´Môubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓjjÔjjÕ‰jÖ‰j׉uh1j¹h²hhjh³Nh´NubjÙ)�”}”(hŒã**Parameters** ``struct tty_struct *tty`` terminal **Description** Internal and external helper for wakeups of tty. This function informs the line discipline if present that the driver is ready to receive more output data.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´Møhj ubjù)�”}”(hhh]”jþ)�”}”(hŒ$``struct tty_struct *tty`` terminal ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hj/h]”hŒstruct tty_struct *tty”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´Mõhj)ubj )�”}”(hhh]”hí)�”}”(hŒterminal”h]”hŒterminal”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jDh´MõhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jDh´Mõhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjjh]”hŒ Description”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´M÷hj ubhí)�”}”(hŒ›Internal and external helper for wakeups of tty. This function informs the line discipline if present that the driver is ready to receive more output data.”h]”hŒ›Internal and external helper for wakeups of tty. This function informs the line discipline if present that the driver is ready to receive more output data.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:56: ./drivers/tty/tty_io.c”h´Möhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjh²hh³Nh´Nubeh}”(h]”jÎah ]”h"]”Œwakeup”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K6ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒHangup”h]”hŒHangup”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹jêuh1hÍhj�h²hh³hÇh´Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´M¯hj6ubjù)�”}”(hhh]”jþ)�”}”(hŒ)``struct tty_struct *tty`` tty to hangup ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hj[h]”hŒstruct tty_struct *tty”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´M¬hjUubj )�”}”(hhh]”hí)�”}”(hŒ tty to hangup”h]”hŒ tty to hangup”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jph´M¬hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jph´M¬hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj6ubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj–h]”hŒ Description”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´M®hj6ubhí)�”}”(hŒÇThe user has asked via system call for the terminal to be hung up. We do this synchronously so that when the syscall returns the process is complete. That guarantee is necessary for security reasons.”h]”hŒÇThe user has asked via system call for the terminal to be hung up. We do this synchronously so that when the syscall returns the process is complete. That guarantee is necessary for security reasons.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´M­hj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj�h²hh³Nh´Nubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_hung_up_p (C function)”Œc.tty_hung_up_p”hNt”auh1j¨hj�h²hh³Nh´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ%int tty_hung_up_p (struct file *filp)”h]”jÅ)�”}”(hŒ$int tty_hung_up_p(struct file *filp)”h]”(jË)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhj×h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´MÛubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj×h²hh³jéh´MÛubjî)�”}”(hŒ tty_hung_up_p”h]”jô)�”}”(hŒ tty_hung_up_p”h]”hŒ tty_hung_up_p”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjøubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj×h²hh³jéh´MÛubj )�”}”(hŒ(struct file *filp)”h]”j)�”}”(hŒstruct file *filp”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubh)�”}”(hhh]”jô)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”j8Œmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQjþsbŒc.tty_hung_up_p”†”asbuh1hhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjubjô)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj×h²hh³jéh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hjÓh²hh³jéh´MÛubah}”(h]”jÎah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³jéh´MÛhjÐh²hubj²)�”}”(hhh]”hí)�”}”(hŒwas tty hung up”h]”hŒwas tty hung up”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´MÛhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÐh²hh³jéh´MÛubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓj³jÔj³jÕ‰jÖ‰j׉uh1j¹h²hhj�h³Nh´NubjÙ)�”}”(hŒˆ**Parameters** ``struct file *filp`` file pointer of tty **Return** true if the tty has been subject to a vhangup or a carrier loss”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´Mßhj·ubjù)�”}”(hhh]”jþ)�”}”(hŒ*``struct file *filp`` file pointer of tty ”h]”(j)�”}”(hŒ``struct file *filp``”h]”j )�”}”(hjÜh]”hŒstruct file *filp”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´MÜhjÖubj )�”}”(hhh]”hí)�”}”(hŒfile pointer of tty”h]”hŒfile pointer of tty”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jñh´MÜhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jñh´MÜhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj·ubhí)�”}”(hŒ **Return**”h]”jã)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´MÞhj·ubhí)�”}”(hŒ?true if the tty has been subject to a vhangup or a carrier loss”h]”hŒ?true if the tty has been subject to a vhangup or a carrier loss”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:62: ./drivers/tty/tty_io.c”h´MÞhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhj�h²hh³Nh´Nubeh}”(h]”jðah ]”h"]”Œhangup”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kint tty_do_resize (struct tty_struct *tty, struct winsize *ws)”h]”jÅ)�”}”(hŒ=int tty_do_resize(struct tty_struct *tty, struct winsize *ws)”h]”(jË)�”}”(hŒint”h]”hŒint”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j×ah"]”h$]”h&]”uh1jÊhjph²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´MôubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjph²hh³j‚h´Môubjî)�”}”(hŒ tty_do_resize”h]”jô)�”}”(hŒ tty_do_resize”h]”hŒ tty_do_resize”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj‘ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhjph²hh³j‚h´Môubj )�”}”(hŒ,(struct tty_struct *tty, struct winsize *ws)”h]”(j)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj­ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj­ubh)�”}”(hhh]”jô)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jÑŒmodname”NŒ classname”NjUjX)�”}”j[]”j^)�”}”jQj—sbŒc.tty_do_resize”†”asbuh1hhj­ubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj­ubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhj­ubjô)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj©ubj)�”}”(hŒstruct winsize *ws”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubh)�”}”(hhh]”jô)�”}”(hŒwinsize”h]”hŒwinsize”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jOŒreftype”jQŒ reftarget”jCŒmodname”NŒ classname”NjUjX)�”}”j[]”jëŒc.tty_do_resize”†”asbuh1hhjubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhjubjr)�”}”(hjuh]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jqhjubjô)�”}”(hŒws”h]”hŒws”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj©ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjph²hh³j‚h´Môubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hjlh²hh³j‚h´Môubah}”(h]”jgah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j‚h´Môhjih²hubj²)�”}”(hhh]”hí)�”}”(hŒ resize event”h]”hŒ resize event”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´Môhj¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjih²hh³j‚h´Môubeh}”(h]”h ]”(jOŒfunction”eh"]”h$]”h&]”jÒjOjÓj¼jÔj¼jÕ‰jÖ‰j׉uh1j¹h²hhjJh³Nh´NubjÙ)�”}”(hŒÜ**Parameters** ``struct tty_struct *tty`` tty being resized ``struct winsize *ws`` new dimensions **Description** Update the termios variables and send the necessary signals to peform a terminal resize correctly.”h]”(hí)�”}”(hŒ**Parameters**”h]”jã)�”}”(hjÆh]”hŒ Parameters”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´MøhjÀubjù)�”}”(hhh]”(jþ)�”}”(hŒ-``struct tty_struct *tty`` tty being resized ”h]”(j)�”}”(hŒ``struct tty_struct *tty``”h]”j )�”}”(hjåh]”hŒstruct tty_struct *tty”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´Mõhjßubj )�”}”(hhh]”hí)�”}”(hŒtty being resized”h]”hŒtty being resized”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³júh´Mõhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³júh´MõhjÜubjþ)�”}”(hŒ&``struct winsize *ws`` new dimensions ”h]”(j)�”}”(hŒ``struct winsize *ws``”h]”j )�”}”(hjh]”hŒstruct winsize *ws”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´Möhjubj )�”}”(hhh]”hí)�”}”(hŒnew dimensions”h]”hŒnew dimensions”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j3h´Möhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j3h´MöhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjÀubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hjYh]”hŒ Description”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´MøhjÀubhí)�”}”(hŒbUpdate the termios variables and send the necessary signals to peform a terminal resize correctly.”h]”hŒbUpdate the termios variables and send the necessary signals to peform a terminal resize correctly.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:68: ./drivers/tty/tty_io.c”h´M÷hjÀubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjJh²hh³Nh´Nubeh}”(h]”jah ]”h"]”Œmisc”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KBubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTTY Struct Flags”h]”hŒTTY Struct Flags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹j.uh1hÍhjŒh²hh³hÇh´KHubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_struct_flags (C enum)”Œc.tty_struct_flags”hNt”auh1j¨hjŒh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒtty_struct_flags”h]”jÅ)�”}”(hŒenum tty_struct_flags”h]”(j)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj³h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´KubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj³h²hh³jÅh´Kubjî)�”}”(hŒtty_struct_flags”h]”jô)�”}”(hj±h]”hŒtty_struct_flags”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhjÔubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj³h²hh³jÅh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj¯h²hh³jÅh´Kubah}”(h]”j©ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³jÅh´Khj¬h²hubj²)�”}”(hhh]”hí)�”}”(hŒTTY Struct Flags”h]”hŒTTY Struct Flags”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Kÿhj÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¬h²hh³jÅh´Kubeh}”(h]”h ]”(jOŒenum”eh"]”h$]”h&]”jÒjOjÓjjÔjjÕ‰jÖ‰j׉uh1j¹h²hhjŒh³j«h´NubjÙ)�”}”(hX�**Constants** ``TTY_THROTTLED`` Driver input is throttled. The ldisc should call :c:member:`tty_driver.unthrottle()` in order to resume reception when it is ready to process more data (at threshold min). ``TTY_IO_ERROR`` If set, causes all subsequent userspace read/write calls on the tty to fail, returning -``EIO``. (May be no ldisc too.) ``TTY_OTHER_CLOSED`` Device is a pty and the other side has closed. ``TTY_EXCLUSIVE`` Exclusive open mode (a single opener). ``TTY_DO_WRITE_WAKEUP`` If set, causes the driver to call the :c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume transmission when it can accept more data to transmit. ``TTY_LDISC_OPEN`` Indicates that a line discipline is open. For debugging purposes only. ``TTY_PTY_LOCK`` A flag private to pty code to implement ``TIOCSPTLCK``/``TIOCGPTLCK`` logic. ``TTY_NO_WRITE_SPLIT`` Prevent driver from splitting up writes into smaller chunks (preserve write boundaries to driver). ``TTY_HUPPED`` The TTY was hung up. This is set post :c:member:`tty_driver.hangup()`. ``TTY_HUPPING`` The TTY is in the process of hanging up to abort potential readers. ``TTY_LDISC_CHANGING`` Line discipline for this TTY is being changed. I/O should not block when this is set. Use tty_io_nonblock() to check. ``TTY_LDISC_HALTED`` Line discipline for this TTY was stopped. No work should be queued to this ldisc.”h]”(hí)�”}”(hŒ **Constants**”h]”jã)�”}”(hjh]”hŒ Constants”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Mhjubjù)�”}”(hhh]”(jþ)�”}”(hŒ¾``TTY_THROTTLED`` Driver input is throttled. The ldisc should call :c:member:`tty_driver.unthrottle()` in order to resume reception when it is ready to process more data (at threshold min). ”h]”(j)�”}”(hŒ``TTY_THROTTLED``”h]”j )�”}”(hj;h]”hŒ TTY_THROTTLED”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Mhj5ubj )�”}”(hhh]”hí)�”}”(hŒ«Driver input is throttled. The ldisc should call :c:member:`tty_driver.unthrottle()` in order to resume reception when it is ready to process more data (at threshold min).”h]”(hŒ1Driver input is throttled. The ldisc should call ”…”�”}”(hjTh²hh³Nh´Nubh)�”}”(hŒ#:c:member:`tty_driver.unthrottle()`”h]”j )�”}”(hj^h]”hŒtty_driver.unthrottle()”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-member”eh"]”h$]”h&]”uh1j hj\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jUj›jžŒtty_driver.unthrottle()”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjTubhŒW in order to resume reception when it is ready to process more data (at threshold min).”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j{h´MhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jPh´Mhj2ubjþ)�”}”(hŒ‰``TTY_IO_ERROR`` If set, causes all subsequent userspace read/write calls on the tty to fail, returning -``EIO``. (May be no ldisc too.) ”h]”(j)�”}”(hŒ``TTY_IO_ERROR``”h]”j )�”}”(hj˜h]”hŒ TTY_IO_ERROR”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M hj’ubj )�”}”(hhh]”hí)�”}”(hŒwIf set, causes all subsequent userspace read/write calls on the tty to fail, returning -``EIO``. (May be no ldisc too.)”h]”(hŒXIf set, causes all subsequent userspace read/write calls on the tty to fail, returning -”…”�”}”(hj±h²hh³Nh´Nubj )�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±ubhŒ. (May be no ldisc too.)”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j­h´M hj2ubjþ)�”}”(hŒD``TTY_OTHER_CLOSED`` Device is a pty and the other side has closed. ”h]”(j)�”}”(hŒ``TTY_OTHER_CLOSED``”h]”j )�”}”(hjäh]”hŒTTY_OTHER_CLOSED”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjÞubj )�”}”(hhh]”hí)�”}”(hŒ.Device is a pty and the other side has closed.”h]”hŒ.Device is a pty and the other side has closed.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jùh´Mhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jùh´Mhj2ubjþ)�”}”(hŒ9``TTY_EXCLUSIVE`` Exclusive open mode (a single opener). ”h]”(j)�”}”(hŒ``TTY_EXCLUSIVE``”h]”j )�”}”(hjh]”hŒ TTY_EXCLUSIVE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Mhjubj )�”}”(hhh]”hí)�”}”(hŒ&Exclusive open mode (a single opener).”h]”hŒ&Exclusive open mode (a single opener).”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j2h´Mhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j2h´Mhj2ubjþ)�”}”(hŒ¸``TTY_DO_WRITE_WAKEUP`` If set, causes the driver to call the :c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume transmission when it can accept more data to transmit. ”h]”(j)�”}”(hŒ``TTY_DO_WRITE_WAKEUP``”h]”j )�”}”(hjVh]”hŒTTY_DO_WRITE_WAKEUP”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjPubj )�”}”(hhh]”hí)�”}”(hŒŸIf set, causes the driver to call the :c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume transmission when it can accept more data to transmit.”h]”(hŒ&If set, causes the driver to call the ”…”�”}”(hjoh²hh³Nh´Nubh)�”}”(hŒ(:c:member:`tty_ldisc_ops.write_wakeup()`”h]”j )�”}”(hjyh]”hŒtty_ldisc_ops.write_wakeup()”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-member”eh"]”h$]”h&]”uh1j hjwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jUj›jžŒtty_ldisc_ops.write_wakeup()”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjoubhŒQ method in order to resume transmission when it can accept more data to transmit.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j–h´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jkh´Mhj2ubjþ)�”}”(hŒZ``TTY_LDISC_OPEN`` Indicates that a line discipline is open. For debugging purposes only. ”h]”(j)�”}”(hŒ``TTY_LDISC_OPEN``”h]”j )�”}”(hj³h]”hŒTTY_LDISC_OPEN”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Mhj­ubj )�”}”(hhh]”hí)�”}”(hŒFIndicates that a line discipline is open. For debugging purposes only.”h]”hŒFIndicates that a line discipline is open. For debugging purposes only.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÈh´MhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÈh´Mhj2ubjþ)�”}”(hŒ^``TTY_PTY_LOCK`` A flag private to pty code to implement ``TIOCSPTLCK``/``TIOCGPTLCK`` logic. ”h]”(j)�”}”(hŒ``TTY_PTY_LOCK``”h]”j )�”}”(hjìh]”hŒ TTY_PTY_LOCK”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´Mhjæubj )�”}”(hhh]”hí)�”}”(hŒLA flag private to pty code to implement ``TIOCSPTLCK``/``TIOCGPTLCK`` logic.”h]”(hŒ(A flag private to pty code to implement ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ``TIOCSPTLCK``”h]”hŒ TIOCSPTLCK”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ/”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ``TIOCGPTLCK``”h]”hŒ TIOCGPTLCK”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ logic.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´Mhj2ubjþ)�”}”(hŒz``TTY_NO_WRITE_SPLIT`` Prevent driver from splitting up writes into smaller chunks (preserve write boundaries to driver). ”h]”(j)�”}”(hŒ``TTY_NO_WRITE_SPLIT``”h]”j )�”}”(hjIh]”hŒTTY_NO_WRITE_SPLIT”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M!hjCubj )�”}”(hhh]”hí)�”}”(hŒbPrevent driver from splitting up writes into smaller chunks (preserve write boundaries to driver).”h]”hŒbPrevent driver from splitting up writes into smaller chunks (preserve write boundaries to driver).”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j^h´M!hj2ubjþ)�”}”(hŒV``TTY_HUPPED`` The TTY was hung up. This is set post :c:member:`tty_driver.hangup()`. ”h]”(j)�”}”(hŒ``TTY_HUPPED``”h]”j )�”}”(hjƒh]”hŒ TTY_HUPPED”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M$hj}ubj )�”}”(hhh]”hí)�”}”(hŒFThe TTY was hung up. This is set post :c:member:`tty_driver.hangup()`.”h]”(hŒ&The TTY was hung up. This is set post ”…”�”}”(hjœh²hh³Nh´Nubh)�”}”(hŒ:c:member:`tty_driver.hangup()`”h]”j )�”}”(hj¦h]”hŒtty_driver.hangup()”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-member”eh"]”h$]”h&]”uh1j hj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jUj›jžŒtty_driver.hangup()”uh1hh³j˜h´M$hjœubhŒ.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j˜h´M$hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j˜h´M$hj2ubjþ)�”}”(hŒT``TTY_HUPPING`` The TTY is in the process of hanging up to abort potential readers. ”h]”(j)�”}”(hŒ``TTY_HUPPING``”h]”j )�”}”(hjßh]”hŒ TTY_HUPPING”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M'hjÙubj )�”}”(hhh]”hí)�”}”(hŒCThe TTY is in the process of hanging up to abort potential readers.”h]”hŒCThe TTY is in the process of hanging up to abort potential readers.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jôh´M'hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jôh´M'hj2ubjþ)�”}”(hŒ�``TTY_LDISC_CHANGING`` Line discipline for this TTY is being changed. I/O should not block when this is set. Use tty_io_nonblock() to check. ”h]”(j)�”}”(hŒ``TTY_LDISC_CHANGING``”h]”j )�”}”(hjh]”hŒTTY_LDISC_CHANGING”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M+hjubj )�”}”(hhh]”hí)�”}”(hŒuLine discipline for this TTY is being changed. I/O should not block when this is set. Use tty_io_nonblock() to check.”h]”hŒuLine discipline for this TTY is being changed. I/O should not block when this is set. Use tty_io_nonblock() to check.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M*hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j-h´M+hj2ubjþ)�”}”(hŒf``TTY_LDISC_HALTED`` Line discipline for this TTY was stopped. No work should be queued to this ldisc.”h]”(j)�”}”(hŒ``TTY_LDISC_HALTED``”h]”j )�”}”(hjRh]”hŒTTY_LDISC_HALTED”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M.hjLubj )�”}”(hhh]”hí)�”}”(hŒQLine discipline for this TTY was stopped. No work should be queued to this ldisc.”h]”hŒQLine discipline for this TTY was stopped. No work should be queued to this ldisc.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jgh´M.hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jgh´M.hj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjŒh²hh³j«h´Nubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj”h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´M1hjŒh²hubhí)�”}”(hŒ>These bits are used in the :c:member:`tty_struct.flags` field.”h]”(hŒThese bits are used in the ”…”�”}”(hjªh²hh³Nh´Nubh)�”}”(hŒ:c:member:`tty_struct.flags`”h]”j )�”}”(hj´h]”hŒtty_struct.flags”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-member”eh"]”h$]”h&]”uh1j hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jUj›jžŒtty_struct.flags”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjªubhŒ field.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÑh´MhjŒh²hubhí)�”}”(hŒÛSo that interrupts won't be able to mess up the queues, copy_to_cooked must be atomic with respect to itself, as must tty->write. Thus, you must use the inline functions set_bit() and clear_bit() to make things atomic.”h]”hŒÝSo that interrupts won’t be able to mess up the queues, copy_to_cooked must be atomic with respect to itself, as must tty->write. Thus, you must use the inline functions set_bit() and clear_bit() to make things atomic.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:74: ./include/linux/tty.h”h´MhjŒh²hubeh}”(h]”j4ah ]”h"]”Œtty struct flags”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KHubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTTY Struct Reference”h]”hŒTTY Struct Reference”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j‹jPuh1hÍhjòh²hh³hÇh´KNubj©)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jµŒtty_struct (C struct)”Œ c.tty_struct”hNt”auh1j¨hjòh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Nubjº)�”}”(hhh]”(j¿)�”}”(hŒ tty_struct”h]”jÅ)�”}”(hŒstruct tty_struct”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j%ah"]”h$]”h&]”uh1jhj h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KubjÝ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jéah"]”h$]”h&]”uh1jÜhj h²hh³j* h´Kubjî)�”}”(hŒ tty_struct”h]”jô)�”}”(hj h]”hŒ tty_struct”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jóhj9 ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj h²hh³j* h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj£ˆuh1jÄj¤j¥hj h²hh³j* h´Kubah}”(h]”j ah ]”(j©jªeh"]”h$]”h&]”j®ˆj¯)j°huh1j¾h³j* h´Khj h²hubj²)�”}”(hhh]”hí)�”}”(hŒ&state associated with a tty while open”h]”hŒ&state associated with a tty while open”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kzhj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj h²hh³j* h´Kubeh}”(h]”h ]”(jOŒstruct”eh"]”h$]”h&]”jÒjOjÓjw jÔjw jÕ‰jÖ‰j׉uh1j¹h²hhjòh³j h´NubjÙ)�”}”(hX)**Definition**:: struct tty_struct { struct kref kref; int index; struct device *dev; struct tty_driver *driver; struct tty_port *port; const struct tty_operations *ops; struct tty_ldisc *ldisc; struct ld_semaphore ldisc_sem; struct mutex atomic_write_lock; struct mutex legacy_mutex; struct mutex throttle_mutex; struct rw_semaphore termios_rwsem; struct mutex winsize_mutex; struct ktermios termios, termios_locked; char name[64]; unsigned long flags; int count; unsigned int receive_room; struct winsize winsize; struct { spinlock_t lock; bool stopped; bool tco_stopped; } flow; struct { struct pid *pgrp; struct pid *session; spinlock_t lock; unsigned char pktstatus; bool packet; } ctrl; bool hw_stopped; bool closing; int flow_change; struct tty_struct *link; struct fasync_struct *fasync; wait_queue_head_t write_wait; wait_queue_head_t read_wait; wait_queue_head_t break_wait; struct work_struct hangup_work; void *disc_data; void *driver_data; spinlock_t files_lock; int write_cnt; u8 *write_buf; struct list_head tty_files; struct work_struct SAK_work; }; **Members** ``kref`` reference counting by tty_kref_get() and tty_kref_put(), reaching zero frees the structure ``index`` index of this tty (e.g. to construct **name** like tty12) ``dev`` class device or ``NULL`` (e.g. ptys, serdev) ``driver`` :c:type:`struct tty_driver ` operating this tty ``port`` persistent storage for this device (i.e. :c:type:`struct tty_port `) ``ops`` :c:type:`struct tty_operations ` of **driver** for this tty (open, close, etc.) ``ldisc`` the current line discipline for this tty (n_tty by default) ``ldisc_sem`` protects line discipline changes (**ldisc**) -- lock tty not pty ``atomic_write_lock`` protects against concurrent writers, i.e. locks **write_cnt**, **write_buf** and similar ``legacy_mutex`` leftover from history (BKL -> BTM -> **legacy_mutex**), protecting several operations on this tty ``throttle_mutex`` protects against concurrent tty_throttle_safe() and tty_unthrottle_safe() (but not tty_unthrottle()) ``termios_rwsem`` protects **termios** and **termios_locked** ``winsize_mutex`` protects **winsize** ``termios`` termios for the current tty, copied from/to **driver.termios** ``termios_locked`` locked termios (by ``TIOCGLCKTRMIOS`` and ``TIOCSLCKTRMIOS`` ioctls) ``name`` name of the tty constructed by tty_line_name() (e.g. ttyS3) ``flags`` bitwise OR of ``TTY_THROTTLED``, ``TTY_IO_ERROR``, ... ``count`` count of open processes, reaching zero cancels all the work for this tty and drops a **kref** too (but does not free this tty) ``receive_room`` bytes permitted to feed to **ldisc** without any being lost ``winsize`` size of the terminal "window" (cf. **winsize_mutex**) ``flow`` flow settings grouped together ``flow.lock`` lock for **flow** members ``flow.stopped`` tty stopped/started by stop_tty()/start_tty() ``flow.tco_stopped`` tty stopped/started by ``TCOOFF``/``TCOON`` ioctls (it has precedence over **flow.stopped**) ``ctrl`` control settings grouped together ``ctrl.pgrp`` process group of this tty (setpgrp(2)) ``ctrl.session`` session of this tty (setsid(2)). Writes are protected by both **ctrl.lock** and **legacy_mutex**, readers must use at least one of them. ``ctrl.lock`` lock for **ctrl** members ``ctrl.pktstatus`` packet mode status (bitwise OR of ``TIOCPKT_`` constants) ``ctrl.packet`` packet mode enabled ``hw_stopped`` not controlled by the tty layer, under **driver**'s control for CTS handling ``closing`` when set during close, n_tty processes only START & STOP chars ``flow_change`` controls behavior of throttling, see tty_throttle_safe() and tty_unthrottle_safe() ``link`` link to another pty (master -> slave and vice versa) ``fasync`` state for ``O_ASYNC`` (for ``SIGIO``); managed by fasync_helper() ``write_wait`` concurrent writers are waiting in this queue until they are allowed to write ``read_wait`` readers wait for data in this queue ``break_wait`` wait queue for timed breaks ``hangup_work`` normally a work to perform a hangup (do_tty_hangup()); while freeing the tty, (re)used to release_one_tty() ``disc_data`` pointer to **ldisc**'s private data (e.g. to :c:type:`struct n_tty_data `) ``driver_data`` pointer to **driver**'s private data (e.g. :c:type:`struct uart_state `) ``files_lock`` protects **tty_files** list ``write_cnt`` count of bytes written in tty_write() to **write_buf** ``write_buf`` temporary buffer used during tty_write() to copy user data to ``tty_files`` list of (re)openers of this tty (i.e. linked :c:type:`struct tty_file_private `) ``SAK_work`` if the tty has a pending do_SAK, it is queued here”h]”(hí)�”}”(hŒ**Definition**::”h]”(jã)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K~hj{ ubhŒ literal_block”“”)�”}”(hXôstruct tty_struct { struct kref kref; int index; struct device *dev; struct tty_driver *driver; struct tty_port *port; const struct tty_operations *ops; struct tty_ldisc *ldisc; struct ld_semaphore ldisc_sem; struct mutex atomic_write_lock; struct mutex legacy_mutex; struct mutex throttle_mutex; struct rw_semaphore termios_rwsem; struct mutex winsize_mutex; struct ktermios termios, termios_locked; char name[64]; unsigned long flags; int count; unsigned int receive_room; struct winsize winsize; struct { spinlock_t lock; bool stopped; bool tco_stopped; } flow; struct { struct pid *pgrp; struct pid *session; spinlock_t lock; unsigned char pktstatus; bool packet; } ctrl; bool hw_stopped; bool closing; int flow_change; struct tty_struct *link; struct fasync_struct *fasync; wait_queue_head_t write_wait; wait_queue_head_t read_wait; wait_queue_head_t break_wait; struct work_struct hangup_work; void *disc_data; void *driver_data; spinlock_t files_lock; int write_cnt; u8 *write_buf; struct list_head tty_files; struct work_struct SAK_work; };”h]”hXôstruct tty_struct { struct kref kref; int index; struct device *dev; struct tty_driver *driver; struct tty_port *port; const struct tty_operations *ops; struct tty_ldisc *ldisc; struct ld_semaphore ldisc_sem; struct mutex atomic_write_lock; struct mutex legacy_mutex; struct mutex throttle_mutex; struct rw_semaphore termios_rwsem; struct mutex winsize_mutex; struct ktermios termios, termios_locked; char name[64]; unsigned long flags; int count; unsigned int receive_room; struct winsize winsize; struct { spinlock_t lock; bool stopped; bool tco_stopped; } flow; struct { struct pid *pgrp; struct pid *session; spinlock_t lock; unsigned char pktstatus; bool packet; } ctrl; bool hw_stopped; bool closing; int flow_change; struct tty_struct *link; struct fasync_struct *fasync; wait_queue_head_t write_wait; wait_queue_head_t read_wait; wait_queue_head_t break_wait; struct work_struct hangup_work; void *disc_data; void *driver_data; spinlock_t files_lock; int write_cnt; u8 *write_buf; struct list_head tty_files; struct work_struct SAK_work; };”…”�”}”hjž sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jœ h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K€hj{ ubhí)�”}”(hŒ **Members**”h]”jã)�”}”(hj¯ h]”hŒMembers”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj­ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K²hj{ ubjù)�”}”(hhh]”(jþ)�”}”(hŒd``kref`` reference counting by tty_kref_get() and tty_kref_put(), reaching zero frees the structure ”h]”(j)�”}”(hŒ``kref``”h]”j )�”}”(hjÎ h]”hŒkref”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÌ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K~hjÈ ubj )�”}”(hhh]”hí)�”}”(hŒZreference counting by tty_kref_get() and tty_kref_put(), reaching zero frees the structure”h]”hŒZreference counting by tty_kref_get() and tty_kref_put(), reaching zero frees the structure”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K}hjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jã h´K~hjÅ ubjþ)�”}”(hŒD``index`` index of this tty (e.g. to construct **name** like tty12) ”h]”(j)�”}”(hŒ ``index``”h]”j )�”}”(hj!h]”hŒindex”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K‚hj!ubj )�”}”(hhh]”hí)�”}”(hŒ9index of this tty (e.g. to construct **name** like tty12)”h]”(hŒ%index of this tty (e.g. to construct ”…”�”}”(hj!!h²hh³Nh´Nubjã)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj)!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj!!ubhŒ like tty12)”…”�”}”(hj!!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j!h´K‚hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j!h´K‚hjÅ ubjþ)�”}”(hŒ5``dev`` class device or ``NULL`` (e.g. ptys, serdev) ”h]”(j)�”}”(hŒ``dev``”h]”j )�”}”(hjS!h]”hŒdev”…”�”}”(hjU!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KhjM!ubj )�”}”(hhh]”hí)�”}”(hŒ,class device or ``NULL`` (e.g. ptys, serdev)”h]”(hŒclass device or ”…”�”}”(hjl!h²hh³Nh´Nubj )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjt!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl!ubhŒ (e.g. ptys, serdev)”…”�”}”(hjl!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh!h´Khji!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh!h´KhjÅ ubjþ)�”}”(hŒG``driver`` :c:type:`struct tty_driver ` operating this tty ”h]”(j)�”}”(hŒ ``driver``”h]”j )�”}”(hjž!h]”hŒdriver”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K€hj˜!ubj )�”}”(hhh]”hí)�”}”(hŒ;:c:type:`struct tty_driver ` operating this tty”h]”(h)�”}”(hŒ(:c:type:`struct tty_driver `”h]”j )�”}”(hj½!h]”hŒstruct tty_driver”…”�”}”(hj¿!h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj»!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒ tty_driver”uh1hh³j³!h´K€hj·!ubhŒ operating this tty”…”�”}”(hj·!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j³!h´K€hj´!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j³!h´K€hjÅ ubjþ)�”}”(hŒX``port`` persistent storage for this device (i.e. :c:type:`struct tty_port `) ”h]”(j)�”}”(hŒ``port``”h]”j )�”}”(hjö!h]”hŒport”…”�”}”(hjø!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjô!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¸hjð!ubj )�”}”(hhh]”hí)�”}”(hŒNpersistent storage for this device (i.e. :c:type:`struct tty_port `)”h]”(hŒ)persistent storage for this device (i.e. ”…”�”}”(hj"h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`struct tty_port `”h]”j )�”}”(hj"h]”hŒstruct tty_port”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒtty_port”uh1hh³j "h´K¸hj"ubhŒ)”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j "h´K¸hj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j "h´K¸hjÅ ubjþ)�”}”(hŒh``ops`` :c:type:`struct tty_operations ` of **driver** for this tty (open, close, etc.) ”h]”(j)�”}”(hŒ``ops``”h]”j )�”}”(hjR"h]”hŒops”…”�”}”(hjT"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K�hjL"ubj )�”}”(hhh]”hí)�”}”(hŒ_:c:type:`struct tty_operations ` of **driver** for this tty (open, close, etc.)”h]”(h)�”}”(hŒ0:c:type:`struct tty_operations `”h]”j )�”}”(hjq"h]”hŒstruct tty_operations”…”�”}”(hjs"h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hjo"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒtty_operations”uh1hh³jg"h´K�hjk"ubhŒ of ”…”�”}”(hjk"h²hh³Nh´Nubjã)�”}”(hŒ **driver**”h]”hŒdriver”…”�”}”(hj’"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjk"ubhŒ! for this tty (open, close, etc.)”…”�”}”(hjk"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jg"h´K�hjh"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jg"h´K�hjÅ ubjþ)�”}”(hŒF``ldisc`` the current line discipline for this tty (n_tty by default) ”h]”(j)�”}”(hŒ ``ldisc``”h]”j )�”}”(hj¼"h]”hŒldisc”…”�”}”(hj¾"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K„hj¶"ubj )�”}”(hhh]”hí)�”}”(hŒ;the current line discipline for this tty (n_tty by default)”h]”hŒ;the current line discipline for this tty (n_tty by default)”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÑ"h´K„hjÒ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÑ"h´K„hjÅ ubjþ)�”}”(hŒO``ldisc_sem`` protects line discipline changes (**ldisc**) -- lock tty not pty ”h]”(j)�”}”(hŒ ``ldisc_sem``”h]”j )�”}”(hjõ"h]”hŒ ldisc_sem”…”�”}”(hj÷"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kƒhjï"ubj )�”}”(hhh]”hí)�”}”(hŒ@protects line discipline changes (**ldisc**) -- lock tty not pty”h]”(hŒ"protects line discipline changes (”…”�”}”(hj#h²hh³Nh´Nubjã)�”}”(hŒ **ldisc**”h]”hŒldisc”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj#ubhŒ) -- lock tty not pty”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j #h´Kƒhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjï"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j #h´KƒhjÅ ubjþ)�”}”(hŒo``atomic_write_lock`` protects against concurrent writers, i.e. locks **write_cnt**, **write_buf** and similar ”h]”(j)�”}”(hŒ``atomic_write_lock``”h]”j )�”}”(hj@#h]”hŒatomic_write_lock”…”�”}”(hjB#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K†hj:#ubj )�”}”(hhh]”hí)�”}”(hŒXprotects against concurrent writers, i.e. locks **write_cnt**, **write_buf** and similar”h]”(hŒ0protects against concurrent writers, i.e. locks ”…”�”}”(hjY#h²hh³Nh´Nubjã)�”}”(hŒ **write_cnt**”h]”hŒ write_cnt”…”�”}”(hja#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjY#ubhŒ, ”…”�”}”(hjY#h²hh³Nh´Nubjã)�”}”(hŒ **write_buf**”h]”hŒ write_buf”…”�”}”(hjs#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjY#ubhŒ and similar”…”�”}”(hjY#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K…hjV#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jU#h´K†hjÅ ubjþ)�”}”(hŒs``legacy_mutex`` leftover from history (BKL -> BTM -> **legacy_mutex**), protecting several operations on this tty ”h]”(j)�”}”(hŒ``legacy_mutex``”h]”j )�”}”(hjž#h]”hŒ legacy_mutex”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kˆhj˜#ubj )�”}”(hhh]”hí)�”}”(hŒaleftover from history (BKL -> BTM -> **legacy_mutex**), protecting several operations on this tty”h]”(hŒ%leftover from history (BKL -> BTM -> ”…”�”}”(hj·#h²hh³Nh´Nubjã)�”}”(hŒ**legacy_mutex**”h]”hŒ legacy_mutex”…”�”}”(hj¿#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj·#ubhŒ,), protecting several operations on this tty”…”�”}”(hj·#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K‡hj´#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j³#h´KˆhjÅ ubjþ)�”}”(hŒx``throttle_mutex`` protects against concurrent tty_throttle_safe() and tty_unthrottle_safe() (but not tty_unthrottle()) ”h]”(j)�”}”(hŒ``throttle_mutex``”h]”j )�”}”(hjê#h]”hŒthrottle_mutex”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KŠhjä#ubj )�”}”(hhh]”hí)�”}”(hŒdprotects against concurrent tty_throttle_safe() and tty_unthrottle_safe() (but not tty_unthrottle())”h]”hŒdprotects against concurrent tty_throttle_safe() and tty_unthrottle_safe() (but not tty_unthrottle())”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K‰hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÿ#h´KŠhjÅ ubjþ)�”}”(hŒ>``termios_rwsem`` protects **termios** and **termios_locked** ”h]”(j)�”}”(hŒ``termios_rwsem``”h]”j )�”}”(hj$$h]”hŒ termios_rwsem”…”�”}”(hj&$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K‹hj$ubj )�”}”(hhh]”hí)�”}”(hŒ+protects **termios** and **termios_locked**”h]”(hŒ protects ”…”�”}”(hj=$h²hh³Nh´Nubjã)�”}”(hŒ **termios**”h]”hŒtermios”…”�”}”(hjE$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj=$ubhŒ and ”…”�”}”(hj=$h²hh³Nh´Nubjã)�”}”(hŒ**termios_locked**”h]”hŒtermios_locked”…”�”}”(hjW$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj=$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j9$h´K‹hj:$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j9$h´K‹hjÅ ubjþ)�”}”(hŒ'``winsize_mutex`` protects **winsize** ”h]”(j)�”}”(hŒ``winsize_mutex``”h]”j )�”}”(hj}$h]”hŒ winsize_mutex”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KŒhjw$ubj )�”}”(hhh]”hí)�”}”(hŒprotects **winsize**”h]”(hŒ protects ”…”�”}”(hj–$h²hh³Nh´Nubjã)�”}”(hŒ **winsize**”h]”hŒwinsize”…”�”}”(hjž$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj–$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j’$h´KŒhj“$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j’$h´KŒhjÅ ubjþ)�”}”(hŒK``termios`` termios for the current tty, copied from/to **driver.termios** ”h]”(j)�”}”(hŒ ``termios``”h]”j )�”}”(hjÄ$h]”hŒtermios”…”�”}”(hjÆ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K�hj¾$ubj )�”}”(hhh]”hí)�”}”(hŒ>termios for the current tty, copied from/to **driver.termios**”h]”(hŒ,termios for the current tty, copied from/to ”…”�”}”(hjÝ$h²hh³Nh´Nubjã)�”}”(hŒ**driver.termios**”h]”hŒdriver.termios”…”�”}”(hjå$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÝ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÙ$h´K�hjÚ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÙ$h´K�hjÅ ubjþ)�”}”(hŒX``termios_locked`` locked termios (by ``TIOCGLCKTRMIOS`` and ``TIOCSLCKTRMIOS`` ioctls) ”h]”(j)�”}”(hŒ``termios_locked``”h]”j )�”}”(hj %h]”hŒtermios_locked”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K�hj%ubj )�”}”(hhh]”hí)�”}”(hŒDlocked termios (by ``TIOCGLCKTRMIOS`` and ``TIOCSLCKTRMIOS`` ioctls)”h]”(hŒlocked termios (by ”…”�”}”(hj$%h²hh³Nh´Nubj )�”}”(hŒ``TIOCGLCKTRMIOS``”h]”hŒTIOCGLCKTRMIOS”…”�”}”(hj,%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$%ubhŒ and ”…”�”}”(hj$%h²hh³Nh´Nubj )�”}”(hŒ``TIOCSLCKTRMIOS``”h]”hŒTIOCSLCKTRMIOS”…”�”}”(hj>%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$%ubhŒ ioctls)”…”�”}”(hj$%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KŽhj!%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j %h´K�hjÅ ubjþ)�”}”(hŒE``name`` name of the tty constructed by tty_line_name() (e.g. ttyS3) ”h]”(j)�”}”(hŒ``name``”h]”j )�”}”(hji%h]”hŒname”…”�”}”(hjk%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjg%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K�hjc%ubj )�”}”(hhh]”hí)�”}”(hŒ;name of the tty constructed by tty_line_name() (e.g. ttyS3)”h]”hŒ;name of the tty constructed by tty_line_name() (e.g. ttyS3)”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j~%h´K�hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j~%h´K�hjÅ ubjþ)�”}”(hŒA``flags`` bitwise OR of ``TTY_THROTTLED``, ``TTY_IO_ERROR``, ... ”h]”(j)�”}”(hŒ ``flags``”h]”j )�”}”(hj¢%h]”hŒflags”…”�”}”(hj¤%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K‘hjœ%ubj )�”}”(hhh]”hí)�”}”(hŒ6bitwise OR of ``TTY_THROTTLED``, ``TTY_IO_ERROR``, ...”h]”(hŒbitwise OR of ”…”�”}”(hj»%h²hh³Nh´Nubj )�”}”(hŒ``TTY_THROTTLED``”h]”hŒ TTY_THROTTLED”…”�”}”(hjÃ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»%ubhŒ, ”…”�”}”(hj»%h²hh³Nh´Nubj )�”}”(hŒ``TTY_IO_ERROR``”h]”hŒ TTY_IO_ERROR”…”�”}”(hjÕ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»%ubhŒ, ...”…”�”}”(hj»%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j·%h´K‘hj¸%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j·%h´K‘hjÅ ubjþ)�”}”(hŒ‰``count`` count of open processes, reaching zero cancels all the work for this tty and drops a **kref** too (but does not free this tty) ”h]”(j)�”}”(hŒ ``count``”h]”j )�”}”(hjÿ%h]”hŒcount”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K“hjù%ubj )�”}”(hhh]”hí)�”}”(hŒ~count of open processes, reaching zero cancels all the work for this tty and drops a **kref** too (but does not free this tty)”h]”(hŒUcount of open processes, reaching zero cancels all the work for this tty and drops a ”…”�”}”(hj&h²hh³Nh´Nubjã)�”}”(hŒ**kref**”h]”hŒkref”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj&ubhŒ! too (but does not free this tty)”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K’hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j&h´K“hjÅ ubjþ)�”}”(hŒM``receive_room`` bytes permitted to feed to **ldisc** without any being lost ”h]”(j)�”}”(hŒ``receive_room``”h]”j )�”}”(hjK&h]”hŒ receive_room”…”�”}”(hjM&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjI&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¤hjE&ubj )�”}”(hhh]”hí)�”}”(hŒ;bytes permitted to feed to **ldisc** without any being lost”h]”(hŒbytes permitted to feed to ”…”�”}”(hjd&h²hh³Nh´Nubjã)�”}”(hŒ **ldisc**”h]”hŒldisc”…”�”}”(hjl&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjd&ubhŒ without any being lost”…”�”}”(hjd&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j`&h´K¤hja&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j`&h´K¤hjÅ ubjþ)�”}”(hŒB``winsize`` size of the terminal "window" (cf. **winsize_mutex**) ”h]”(j)�”}”(hŒ ``winsize``”h]”j )�”}”(hj–&h]”hŒwinsize”…”�”}”(hj˜&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K”hj�&ubj )�”}”(hhh]”hí)�”}”(hŒ5size of the terminal "window" (cf. **winsize_mutex**)”h]”(hŒ'size of the terminal “windowâ€� (cf. ”…”�”}”(hj¯&h²hh³Nh´Nubjã)�”}”(hŒ**winsize_mutex**”h]”hŒ winsize_mutex”…”�”}”(hj·&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj¯&ubhŒ)”…”�”}”(hj¯&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j«&h´K”hj¬&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j«&h´K”hjÅ ubjþ)�”}”(hŒ(``flow`` flow settings grouped together ”h]”(j)�”}”(hŒ``flow``”h]”j )�”}”(hjá&h]”hŒflow”…”�”}”(hjã&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjß&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K•hjÛ&ubj )�”}”(hhh]”hí)�”}”(hŒflow settings grouped together”h]”hŒflow settings grouped together”…”�”}”(hjú&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jö&h´K•hj÷&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jö&h´K•hjÅ ubjþ)�”}”(hŒ(``flow.lock`` lock for **flow** members ”h]”(j)�”}”(hŒ ``flow.lock``”h]”j )�”}”(hj'h]”hŒ flow.lock”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K–hj'ubj )�”}”(hhh]”hí)�”}”(hŒlock for **flow** members”h]”(hŒ lock for ”…”�”}”(hj3'h²hh³Nh´Nubjã)�”}”(hŒ**flow**”h]”hŒflow”…”�”}”(hj;'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj3'ubhŒ members”…”�”}”(hj3'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j/'h´K–hj0'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j/'h´K–hjÅ ubjþ)�”}”(hŒ?``flow.stopped`` tty stopped/started by stop_tty()/start_tty() ”h]”(j)�”}”(hŒ``flow.stopped``”h]”j )�”}”(hje'h]”hŒ flow.stopped”…”�”}”(hjg'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjc'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K—hj_'ubj )�”}”(hhh]”hí)�”}”(hŒ-tty stopped/started by stop_tty()/start_tty()”h]”hŒ-tty stopped/started by stop_tty()/start_tty()”…”�”}”(hj~'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jz'h´K—hj{'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jz'h´K—hjÅ ubjþ)�”}”(hŒr``flow.tco_stopped`` tty stopped/started by ``TCOOFF``/``TCOON`` ioctls (it has precedence over **flow.stopped**) ”h]”(j)�”}”(hŒ``flow.tco_stopped``”h]”j )�”}”(hjž'h]”hŒflow.tco_stopped”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K™hj˜'ubj )�”}”(hhh]”hí)�”}”(hŒ\tty stopped/started by ``TCOOFF``/``TCOON`` ioctls (it has precedence over **flow.stopped**)”h]”(hŒtty stopped/started by ”…”�”}”(hj·'h²hh³Nh´Nubj )�”}”(hŒ ``TCOOFF``”h]”hŒTCOOFF”…”�”}”(hj¿'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·'ubhŒ/”…”�”}”(hj·'h²hh³Nh´Nubj )�”}”(hŒ ``TCOON``”h]”hŒTCOON”…”�”}”(hjÑ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·'ubhŒ ioctls (it has precedence over ”…”�”}”(hj·'h²hh³Nh´Nubjã)�”}”(hŒ**flow.stopped**”h]”hŒ flow.stopped”…”�”}”(hjã'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj·'ubhŒ)”…”�”}”(hj·'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K˜hj´'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j³'h´K™hjÅ ubjþ)�”}”(hŒ+``ctrl`` control settings grouped together ”h]”(j)�”}”(hŒ``ctrl``”h]”j )�”}”(hj(h]”hŒctrl”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kšhj(ubj )�”}”(hhh]”hí)�”}”(hŒ!control settings grouped together”h]”hŒ!control settings grouped together”…”�”}”(hj'(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j#(h´Kšhj$(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j#(h´KšhjÅ ubjþ)�”}”(hŒ5``ctrl.pgrp`` process group of this tty (setpgrp(2)) ”h]”(j)�”}”(hŒ ``ctrl.pgrp``”h]”j )�”}”(hjG(h]”hŒ ctrl.pgrp”…”�”}”(hjI(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjE(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KœhjA(ubj )�”}”(hhh]”hí)�”}”(hŒ&process group of this tty (setpgrp(2))”h]”hŒ&process group of this tty (setpgrp(2))”…”�”}”(hj`(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j\(h´Kœhj](ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j\(h´KœhjÅ ubjþ)�”}”(hŒš``ctrl.session`` session of this tty (setsid(2)). Writes are protected by both **ctrl.lock** and **legacy_mutex**, readers must use at least one of them. ”h]”(j)�”}”(hŒ``ctrl.session``”h]”j )�”}”(hj€(h]”hŒ ctrl.session”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KŸhjz(ubj )�”}”(hhh]”hí)�”}”(hŒˆsession of this tty (setsid(2)). Writes are protected by both **ctrl.lock** and **legacy_mutex**, readers must use at least one of them.”h]”(hŒ>session of this tty (setsid(2)). Writes are protected by both ”…”�”}”(hj™(h²hh³Nh´Nubjã)�”}”(hŒ **ctrl.lock**”h]”hŒ ctrl.lock”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj™(ubhŒ and ”…”�”}”(hj™(h²hh³Nh´Nubjã)�”}”(hŒ**legacy_mutex**”h]”hŒ legacy_mutex”…”�”}”(hj³(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj™(ubhŒ(, readers must use at least one of them.”…”�”}”(hj™(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K�hj–(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j•(h´KŸhjÅ ubjþ)�”}”(hŒ(``ctrl.lock`` lock for **ctrl** members ”h]”(j)�”}”(hŒ ``ctrl.lock``”h]”j )�”}”(hjÞ(h]”hŒ ctrl.lock”…”�”}”(hjà(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K›hjØ(ubj )�”}”(hhh]”hí)�”}”(hŒlock for **ctrl** members”h]”(hŒ lock for ”…”�”}”(hj÷(h²hh³Nh´Nubjã)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hjÿ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj÷(ubhŒ members”…”�”}”(hj÷(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jó(h´K›hjô(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jó(h´K›hjÅ ubjþ)�”}”(hŒM``ctrl.pktstatus`` packet mode status (bitwise OR of ``TIOCPKT_`` constants) ”•ÓLh]”(j)�”}”(hŒ``ctrl.pktstatus``”h]”j )�”}”(hj))h]”hŒctrl.pktstatus”…”�”}”(hj+)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj')ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K hj#)ubj )�”}”(hhh]”hí)�”}”(hŒ9packet mode status (bitwise OR of ``TIOCPKT_`` constants)”h]”(hŒ"packet mode status (bitwise OR of ”…”�”}”(hjB)h²hh³Nh´Nubj )�”}”(hŒ ``TIOCPKT_``”h]”hŒTIOCPKT_”…”�”}”(hjJ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB)ubhŒ constants)”…”�”}”(hjB)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j>)h´K hj?)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j>)h´K hjÅ ubjþ)�”}”(hŒ$``ctrl.packet`` packet mode enabled ”h]”(j)�”}”(hŒ``ctrl.packet``”h]”j )�”}”(hjt)h]”hŒ ctrl.packet”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjr)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¡hjn)ubj )�”}”(hhh]”hí)�”}”(hŒpacket mode enabled”h]”hŒpacket mode enabled”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‰)h´K¡hjŠ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j‰)h´K¡hjÅ ubjþ)�”}”(hŒ\``hw_stopped`` not controlled by the tty layer, under **driver**'s control for CTS handling ”h]”(j)�”}”(hŒ``hw_stopped``”h]”j )�”}”(hj­)h]”hŒ hw_stopped”…”�”}”(hj¯)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K£hj§)ubj )�”}”(hhh]”hí)�”}”(hŒLnot controlled by the tty layer, under **driver**'s control for CTS handling”h]”(hŒ'not controlled by the tty layer, under ”…”�”}”(hjÆ)h²hh³Nh´Nubjã)�”}”(hŒ **driver**”h]”hŒdriver”…”�”}”(hjÎ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÆ)ubhŒ’s control for CTS handling”…”�”}”(hjÆ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¢hjÃ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÂ)h´K£hjÅ ubjþ)�”}”(hŒK``closing`` when set during close, n_tty processes only START & STOP chars ”h]”(j)�”}”(hŒ ``closing``”h]”j )�”}”(hjù)h]”hŒclosing”…”�”}”(hjû)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K´hjó)ubj )�”}”(hhh]”hí)�”}”(hŒ>when set during close, n_tty processes only START & STOP chars”h]”hŒ>when set during close, n_tty processes only START & STOP chars”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j*h´K´hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j*h´K´hjÅ ubjþ)�”}”(hŒc``flow_change`` controls behavior of throttling, see tty_throttle_safe() and tty_unthrottle_safe() ”h]”(j)�”}”(hŒ``flow_change``”h]”j )�”}”(hj2*h]”hŒ flow_change”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¦hj,*ubj )�”}”(hhh]”hí)�”}”(hŒRcontrols behavior of throttling, see tty_throttle_safe() and tty_unthrottle_safe()”h]”hŒRcontrols behavior of throttling, see tty_throttle_safe() and tty_unthrottle_safe()”…”�”}”(hjK*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¥hjH*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jG*h´K¦hjÅ ubjþ)�”}”(hŒ>``link`` link to another pty (master -> slave and vice versa) ”h]”(j)�”}”(hŒ``link``”h]”j )�”}”(hjl*h]”hŒlink”…”�”}”(hjn*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K§hjf*ubj )�”}”(hhh]”hí)�”}”(hŒ4link to another pty (master -> slave and vice versa)”h]”hŒ4link to another pty (master -> slave and vice versa)”…”�”}”(hj…*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j�*h´K§hj‚*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j�*h´K§hjÅ ubjþ)�”}”(hŒM``fasync`` state for ``O_ASYNC`` (for ``SIGIO``); managed by fasync_helper() ”h]”(j)�”}”(hŒ ``fasync``”h]”j )�”}”(hj¥*h]”hŒfasync”…”�”}”(hj§*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¨hjŸ*ubj )�”}”(hhh]”hí)�”}”(hŒAstate for ``O_ASYNC`` (for ``SIGIO``); managed by fasync_helper()”h]”(hŒ state for ”…”�”}”(hj¾*h²hh³Nh´Nubj )�”}”(hŒ ``O_ASYNC``”h]”hŒO_ASYNC”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾*ubhŒ (for ”…”�”}”(hj¾*h²hh³Nh´Nubj )�”}”(hŒ ``SIGIO``”h]”hŒSIGIO”…”�”}”(hjØ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾*ubhŒ); managed by fasync_helper()”…”�”}”(hj¾*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jº*h´K¨hj»*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jº*h´K¨hjÅ ubjþ)�”}”(hŒ\``write_wait`` concurrent writers are waiting in this queue until they are allowed to write ”h]”(j)�”}”(hŒ``write_wait``”h]”j )�”}”(hj+h]”hŒ write_wait”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kªhjü*ubj )�”}”(hhh]”hí)�”}”(hŒLconcurrent writers are waiting in this queue until they are allowed to write”h]”hŒLconcurrent writers are waiting in this queue until they are allowed to write”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K©hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j+h´KªhjÅ ubjþ)�”}”(hŒ2``read_wait`` readers wait for data in this queue ”h]”(j)�”}”(hŒ ``read_wait``”h]”j )�”}”(hj<+h]”hŒ read_wait”…”�”}”(hj>+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K«hj6+ubj )�”}”(hhh]”hí)�”}”(hŒ#readers wait for data in this queue”h]”hŒ#readers wait for data in this queue”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jQ+h´K«hjR+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jQ+h´K«hjÅ ubjþ)�”}”(hŒ+``break_wait`` wait queue for timed breaks ”h]”(j)�”}”(hŒ``break_wait``”h]”j )�”}”(hju+h]”hŒ break_wait”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjs+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¬hjo+ubj )�”}”(hhh]”hí)�”}”(hŒwait queue for timed breaks”h]”hŒwait queue for timed breaks”…”�”}”(hjŽ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jŠ+h´K¬hj‹+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jŠ+h´K¬hjÅ ubjþ)�”}”(hŒ|``hangup_work`` normally a work to perform a hangup (do_tty_hangup()); while freeing the tty, (re)used to release_one_tty() ”h]”(j)�”}”(hŒ``hangup_work``”h]”j )�”}”(hj®+h]”hŒ hangup_work”…”�”}”(hj°+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K®hj¨+ubj )�”}”(hhh]”hí)�”}”(hŒknormally a work to perform a hangup (do_tty_hangup()); while freeing the tty, (re)used to release_one_tty()”h]”hŒknormally a work to perform a hangup (do_tty_hangup()); while freeing the tty, (re)used to release_one_tty()”…”�”}”(hjÇ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K­hjÄ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÃ+h´K®hjÅ ubjþ)�”}”(hŒe``disc_data`` pointer to **ldisc**'s private data (e.g. to :c:type:`struct n_tty_data `) ”h]”(j)�”}”(hŒ ``disc_data``”h]”j )�”}”(hjè+h]”hŒ disc_data”…”�”}”(hjê+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjæ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¯hjâ+ubj )�”}”(hhh]”hí)�”}”(hŒVpointer to **ldisc**'s private data (e.g. to :c:type:`struct n_tty_data `)”h]”(hŒ pointer to ”…”�”}”(hj,h²hh³Nh´Nubjã)�”}”(hŒ **ldisc**”h]”hŒldisc”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj,ubhŒ’s private data (e.g. to ”…”�”}”(hj,h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct n_tty_data `”h]”j )�”}”(hj,h]”hŒstruct n_tty_data”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒ n_tty_data”uh1hh³jý+h´K¯hj,ubhŒ)”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jý+h´K¯hjþ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jý+h´K¯hjÅ ubjþ)�”}”(hŒe``driver_data`` pointer to **driver**'s private data (e.g. :c:type:`struct uart_state `) ”h]”(j)�”}”(hŒ``driver_data``”h]”j )�”}”(hjV,h]”hŒ driver_data”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K°hjP,ubj )�”}”(hhh]”hí)�”}”(hŒTpointer to **driver**'s private data (e.g. :c:type:`struct uart_state `)”h]”(hŒ pointer to ”…”�”}”(hjo,h²hh³Nh´Nubjã)�”}”(hŒ **driver**”h]”hŒdriver”…”�”}”(hjw,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjo,ubhŒ’s private data (e.g. ”…”�”}”(hjo,h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct uart_state `”h]”j )�”}”(hj‹,h]”hŒstruct uart_state”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj‰,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒ uart_state”uh1hh³jk,h´K°hjo,ubhŒ)”…”�”}”(hjo,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jk,h´K°hjl,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jk,h´K°hjÅ ubjþ)�”}”(hŒ+``files_lock`` protects **tty_files** list ”h]”(j)�”}”(hŒ``files_lock``”h]”j )�”}”(hjÄ,h]”hŒ files_lock”…”�”}”(hjÆ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K±hj¾,ubj )�”}”(hhh]”hí)�”}”(hŒprotects **tty_files** list”h]”(hŒ protects ”…”�”}”(hjÝ,h²hh³Nh´Nubjã)�”}”(hŒ **tty_files**”h]”hŒ tty_files”…”�”}”(hjå,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjÝ,ubhŒ list”…”�”}”(hjÝ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÙ,h´K±hjÚ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÙ,h´K±hjÅ ubjþ)�”}”(hŒE``write_cnt`` count of bytes written in tty_write() to **write_buf** ”h]”(j)�”}”(hŒ ``write_cnt``”h]”j )�”}”(hj-h]”hŒ write_cnt”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¶hj -ubj )�”}”(hhh]”hí)�”}”(hŒ6count of bytes written in tty_write() to **write_buf**”h]”(hŒ)count of bytes written in tty_write() to ”…”�”}”(hj(-h²hh³Nh´Nubjã)�”}”(hŒ **write_buf**”h]”hŒ write_buf”…”�”}”(hj0-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj(-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j$-h´K¶hj%-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj -ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j$-h´K¶hjÅ ubjþ)�”}”(hŒL``write_buf`` temporary buffer used during tty_write() to copy user data to ”h]”(j)�”}”(hŒ ``write_buf``”h]”j )�”}”(hjV-h]”hŒ write_buf”…”�”}”(hjX-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´KµhjP-ubj )�”}”(hhh]”hí)�”}”(hŒ=temporary buffer used during tty_write() to copy user data to”h]”hŒ=temporary buffer used during tty_write() to copy user data to”…”�”}”(hjo-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jk-h´Kµhjl-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jk-h´KµhjÅ ubjþ)�”}”(hŒq``tty_files`` list of (re)openers of this tty (i.e. linked :c:type:`struct tty_file_private `) ”h]”(j)�”}”(hŒ ``tty_files``”h]”j )�”}”(hj�-h]”hŒ tty_files”…”�”}”(hj‘-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K³hj‰-ubj )�”}”(hhh]”hí)�”}”(hŒblist of (re)openers of this tty (i.e. linked :c:type:`struct tty_file_private `)”h]”(hŒ-list of (re)openers of this tty (i.e. linked ”…”�”}”(hj¨-h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct tty_file_private `”h]”j )�”}”(hj²-h]”hŒstruct tty_file_private”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj°-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒtty_file_private”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K²hj¨-ubhŒ)”…”�”}”(hj¨-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÏ-h´K²hj¥-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j¤-h´K³hjÅ ubjþ)�”}”(hŒ?``SAK_work`` if the tty has a pending do_SAK, it is queued here”h]”(j)�”}”(hŒ ``SAK_work``”h]”j )�”}”(hjì-h]”hŒSAK_work”…”�”}”(hjî-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjê-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¶hjæ-ubj )�”}”(hhh]”hí)�”}”(hŒ2if the tty has a pending do_SAK, it is queued here”h]”hŒ2if the tty has a pending do_SAK, it is queued here”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K·hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j.h´K¶hjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jØhjòh²hh³j h´Nubhí)�”}”(hŒ**Description**”h]”jã)�”}”(hj/.h]”hŒ Description”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhj-.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´Kºhjòh²hubhí)�”}”(hŒºAll of the state associated with a tty while the tty is open. Persistent storage for tty devices is referenced here as **port** and is documented in :c:type:`struct tty_port `.”h]”(hŒwAll of the state associated with a tty while the tty is open. Persistent storage for tty devices is referenced here as ”…”�”}”(hjE.h²hh³Nh´Nubjã)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjM.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jâhjE.ubhŒ and is documented in ”…”�”}”(hjE.h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`struct tty_port `”h]”j )�”}”(hja.h]”hŒstruct tty_port”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”(j‰jOŒc-type”eh"]”h$]”h&]”uh1j hj_.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j•Œ refdomain”jOŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jUj›jžŒtty_port”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_struct:80: ./include/linux/tty.h”h´K¸hjE.ubhŒ.”…”�”}”(hjE.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j~.h´K¸hjòh²hubeh}”(h]”jVah ]”h"]”Œtty struct reference”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KNŒ referenced”Kubeh}”(h]”Œ tty-struct”ah ]”h"]”Œ tty struct”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j¼.Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œtty struct reference”]”j{asŒrefids”}”Œnameids”}”(j–.j“.jpjkjˆjjtj$j jFjh jhjôjŠjj¬jšjÎjGjðj‰jjïj4j�.jVuŒ nametypes”}”(j–.‰jp‰jˆ‰jt‰j ‰jh ‰jô‰j‰jš‰jG‰j‰‰jï‰j�.‰uh}”(j“.hÊjkhßjj—j·jÀj$j‹j¨j­jFjwj”j™jwj|jhj j" j' jŠjk jˆ j� j¬j÷jjjjjÎjj!j&jðj�jºj¿jMjRjÎjÓjjJjgjlj4jŒj©j¯jVjòj j hühójjj@j7jbjYj„j{j¦j�jÈj¿jêjáj jj.j%jPjGuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jÊ.K s…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.