€•hŒ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_ldisc”Œ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_ldisc”Œ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_ldisc”Œ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_ldisc”Œ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_ldisc”Œ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_ldisc”Œ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_ldisc”Œ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³ŒF/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒTTY Line Discipline”h]”hŒTTY Line Discipline”…”�”}”(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Œ Registration”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œ registration”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ŒOther Functions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œother-functions”uh1hñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ$Line Discipline Operations Reference”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œ$line-discipline-operations-reference”uh1hñhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Driver Access”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ driver-access”uh1hñhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ TTY Flags”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ tty-flags”uh1hñhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒLocking”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œlocking”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ŒInternal Functions”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œinternal-functions”uh1hñhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj¹ubah}”(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í)�”}”(hXQTTY line discipline process all incoming and outgoing character from/to a tty device. The default line discipline is :doc:`N_TTY `. It is also a fallback if establishing any other discipline for a tty fails. If even N_TTY fails, N_NULL takes over. That never fails, but also does not process any characters -- it throws them away.”h]”(hŒuTTY line discipline process all incoming and outgoing character from/to a tty device. The default line discipline is ”…”�”}”(hjëh²hh³Nh´Nubh)�”}”(hŒ:doc:`N_TTY `”h]”hŒinline”“”)�”}”(hjõh]”hŒN_TTY”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j÷hjóubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/tty/tty_ldisc”Œ refdomain”jŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œn_tty”uh1hh³hÇh´K hjëubhŒÈ. It is also a fallback if establishing any other discipline for a tty fails. If even N_TTY fails, N_NULL takes over. That never fails, but also does not process any characters -- it throws them away.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Registration”h]”hŒ Registration”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”hüuh1hÍhj"h²hh³hÇh´Kubhí)�”}”(hXhLine disciplines are registered with tty_register_ldisc() passing the ldisc structure. At the point of registration the discipline must be ready to use and it is possible it will get used before the call returns success. If the call returns an error then it won’t get called. Do not reuse ldisc numbers as they are part of the userspace ABI and writing over an existing ldisc will cause demons to eat your computer. You must not re-register over the top of the line discipline even with the same data or your computer again will be eaten by demons. In order to remove a line discipline call tty_unregister_ldisc().”h]”hXhLine disciplines are registered with tty_register_ldisc() passing the ldisc structure. At the point of registration the discipline must be ready to use and it is possible it will get used before the call returns success. If the call returns an error then it won’t get called. Do not reuse ldisc numbers as they are part of the userspace ABI and writing over an existing ldisc will cause demons to eat your computer. You must not re-register over the top of the line discipline even with the same data or your computer again will be eaten by demons. In order to remove a line discipline call tty_unregister_ldisc().”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´Khj"h²hubhí)�”}”(hX¶Heed this warning: the reference count field of the registered copies of the tty_ldisc structure in the ldisc table counts the number of lines using this discipline. The reference count of the tty_ldisc structure within a tty counts the number of active users of the ldisc at this instant. In effect it counts the number of threads of execution within an ldisc method (plus those about to enter and exit although this detail matters not).”h]”hX¶Heed this warning: the reference count field of the registered copies of the tty_ldisc structure in the ldisc table counts the number of lines using this discipline. The reference count of the tty_ldisc structure within a tty counts the number of active users of the ldisc at this instant. In effect it counts the number of threads of execution within an ldisc method (plus those about to enter and exit although this detail matters not).”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´Khj"h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œtty_register_ldisc (C function)”Œc.tty_register_ldisc”hNt”auh1jPhj"h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ>int tty_register_ldisc (const struct tty_ldisc_ops *new_ldisc)”h]”hŒdesc_signature_line”“”)�”}”(hŒ=int tty_register_ldisc(const struct tty_ldisc_ops *new_ldisc)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jrhjnh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K2ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j„hjnh²hh³jƒh´K2ubhŒ desc_name”“”)�”}”(hŒtty_register_ldisc”h]”hŒ desc_sig_name”“”)�”}”(hŒtty_register_ldisc”h]”hŒtty_register_ldisc”…”�”}”(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•hjnh²hh³jƒh´K2ubhŒdesc_parameterlist”“”)�”}”(hŒ'(const struct tty_ldisc_ops *new_ldisc)”h]”hŒdesc_parameter”“”)�”}”(hŒ%const struct tty_ldisc_ops *new_ldisc”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jÀhj¼ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¼ubjÁ)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¼ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¼ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_ldisc_ops”h]”hŒ tty_ldisc_ops”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jŒ ASTIdentifier”“”)�”}”jjŸsbŒc.tty_register_ldisc”†”asbuh1hhj¼ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¼ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j5hj¼ubjœ)�”}”(hŒ new_ldisc”h]”hŒ new_ldisc”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj¶ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjnh²hh³jƒh´K2ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jlŒsphinx_line_type”Œ declarator”hjhh²hh³jƒh´K2ubah}”(h]”j_ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jfh³jƒh´K2hjch²hubhŒ desc_content”“”)�”}”(hhh]”hí)�”}”(hŒinstall a line discipline”h]”hŒinstall a line discipline”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K2hjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjch²hh³jƒh´K2ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”Œdomain”jŒobjtype”j’Œdesctype”j’Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jah²hhj"h³Nh´NubhŒ container”“”)�”}”(hXB**Parameters** ``const struct tty_ldisc_ops *new_ldisc`` pointer to the ldisc object **Description** Installs a new line discipline into the kernel. The discipline is set up as unreferenced and then made available to the kernel from this point onwards. Locking: takes ``tty_ldiscs_lock`` to guard against ldisc races”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_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K6hjžubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒF``const struct tty_ldisc_ops *new_ldisc`` pointer to the ldisc object ”h]”(hŒterm”“”)�”}”(hŒ)``const struct tty_ldisc_ops *new_ldisc``”h]”hŒliteral”“”)�”}”(hjËh]”hŒ%const struct tty_ldisc_ops *new_ldisc”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K3hjÃubhŒ definition”“”)�”}”(hhh]”hí)�”}”(hŒpointer to the ldisc object”h]”hŒpointer to the ldisc object”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jâh´K3hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jâh´K3hj¾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¦hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K5hjžubhí)�”}”(hŒ—Installs a new line discipline into the kernel. The discipline is set up as unreferenced and then made available to the kernel from this point onwards.”h]”hŒ—Installs a new line discipline into the kernel. The discipline is set up as unreferenced and then made available to the kernel from this point onwards.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K4hjžubhí)�”}”(hŒ?Locking: takes ``tty_ldiscs_lock`` to guard against ldisc races”h]”(hŒLocking: takes ”…”�”}”(hj/h²hh³Nh´NubjÎ)�”}”(hŒ``tty_ldiscs_lock``”h]”hŒtty_ldiscs_lock”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj/ubhŒ to guard against ldisc races”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:34: ./drivers/tty/tty_ldisc.c”h´K7hjžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œ!tty_unregister_ldisc (C function)”Œc.tty_unregister_ldisc”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ=void tty_unregister_ldisc (const struct tty_ldisc_ops *ldisc)”h]”jm)�”}”(hŒhj> ubhŒ literal_block”“”)�”}”(hX®struct tty_ldisc_ops { char *name; int num; int (*open)(struct tty_struct *tty); void (*close)(struct tty_struct *tty); void (*flush_buffer)(struct tty_struct *tty); ssize_t (*read)(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr, void **cookie, unsigned long offset); ssize_t (*write)(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr); int (*ioctl)(struct tty_struct *tty, unsigned int cmd, unsigned long arg); int (*compat_ioctl)(struct tty_struct *tty, unsigned int cmd, unsigned long arg); void (*set_termios)(struct tty_struct *tty, const struct ktermios *old); __poll_t (*poll)(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait); void (*hangup)(struct tty_struct *tty); void (*receive_buf)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); void (*write_wakeup)(struct tty_struct *tty); void (*dcd_change)(struct tty_struct *tty, bool active); size_t (*receive_buf2)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); void (*lookahead_buf)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); struct module *owner; };”h]”hX®struct tty_ldisc_ops { char *name; int num; int (*open)(struct tty_struct *tty); void (*close)(struct tty_struct *tty); void (*flush_buffer)(struct tty_struct *tty); ssize_t (*read)(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr, void **cookie, unsigned long offset); ssize_t (*write)(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr); int (*ioctl)(struct tty_struct *tty, unsigned int cmd, unsigned long arg); int (*compat_ioctl)(struct tty_struct *tty, unsigned int cmd, unsigned long arg); void (*set_termios)(struct tty_struct *tty, const struct ktermios *old); __poll_t (*poll)(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait); void (*hangup)(struct tty_struct *tty); void (*receive_buf)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); void (*write_wakeup)(struct tty_struct *tty); void (*dcd_change)(struct tty_struct *tty, bool active); size_t (*receive_buf2)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); void (*lookahead_buf)(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count); struct module *owner; };”…”�”}”hja sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j_ h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K@hj> ubhí)�”}”(hŒ **Members**”h]”j§)�”}”(hjr h]”hŒMembers”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KUhj> ubj½)�”}”(hhh]”(jÂ)�”}”(hŒ9``name`` name of this ldisc rendered in /proc/tty/ldiscs ”h]”(jÈ)�”}”(hŒ``name``”h]”jÎ)�”}”(hj‘ h]”hŒname”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K=hj‹ ubjä)�”}”(hhh]”hí)�”}”(hŒ/name of this ldisc rendered in /proc/tty/ldiscs”h]”hŒ/name of this ldisc rendered in /proc/tty/ldiscs”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¦ h´K=hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j¦ h´K=hjˆ ubjÂ)�”}”(hŒK``num`` ``N_*`` number (``N_TTY``, ``N_HDLC``, ...) reserved to this ldisc ”h]”(jÈ)�”}”(hŒ``num``”h]”jÎ)�”}”(hjÊ h]”hŒnum”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÈ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K>hjÄ ubjä)�”}”(hhh]”hí)�”}”(hŒB``N_*`` number (``N_TTY``, ``N_HDLC``, ...) reserved to this ldisc”h]”(jÎ)�”}”(hŒ``N_*``”h]”hŒN_*”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjã ubhŒ number (”…”�”}”(hjã h²hh³Nh´NubjÎ)�”}”(hŒ ``N_TTY``”h]”hŒN_TTY”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjã ubhŒ, ”…”�”}”(hjã h²hh³Nh´NubjÎ)�”}”(hŒ ``N_HDLC``”h]”hŒN_HDLC”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjã ubhŒ, ...) reserved to this ldisc”…”�”}”(hjã h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jß h´K>hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÄ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jß h´K>hjˆ ubjÂ)�”}”(hŒ2``open`` [TTY] ``int ()(struct tty_struct *tty)`` ”h]”(jÈ)�”}”(hŒ``open``”h]”jÎ)�”}”(hj5 h]”hŒopen”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K@hj/ ubjä)�”}”(hhh]”hí)�”}”(hŒ([TTY] ``int ()(struct tty_struct *tty)``”h]”(hŒ[TTY] ”…”�”}”(hjN h²hh³Nh´NubjÎ)�”}”(hŒ"``int ()(struct tty_struct *tty)``”h]”hŒint ()(struct tty_struct *tty)”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jJ h´K@hjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jJ h´K@hjˆ ubjÂ)�”}”(hŒ4``close`` [TTY] ``void ()(struct tty_struct *tty)`` ”h]”(jÈ)�”}”(hŒ ``close``”h]”jÎ)�”}”(hj| h]”hŒclose”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KLhjv ubjä)�”}”(hhh]”hí)�”}”(hŒ)[TTY] ``void ()(struct tty_struct *tty)``”h]”(hŒ[TTY] ”…”�”}”(hj• h²hh³Nh´NubjÎ)�”}”(hŒ#``void ()(struct tty_struct *tty)``”h]”hŒvoid ()(struct tty_struct *tty)”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‘ h´KLhj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j‘ h´KLhjˆ ubjÂ)�”}”(hŒ;``flush_buffer`` [TTY] ``void ()(struct tty_struct *tty)`` ”h]”(jÈ)�”}”(hŒ``flush_buffer``”h]”jÎ)�”}”(hjà h]”hŒ flush_buffer”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KUhj½ ubjä)�”}”(hhh]”hí)�”}”(hŒ)[TTY] ``void ()(struct tty_struct *tty)``”h]”(hŒ[TTY] ”…”�”}”(hjÜ h²hh³Nh´NubjÎ)�”}”(hŒ#``void ()(struct tty_struct *tty)``”h]”hŒvoid ()(struct tty_struct *tty)”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jØ h´KUhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj½ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jØ h´KUhjˆ ubjÂ)�”}”(hŒ]``read`` [TTY] ``ssize_t ()(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr)`` ”h]”(jÈ)�”}”(hŒ``read``”h]”jÎ)�”}”(hj h]”hŒread”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K^hj ubjä)�”}”(hhh]”hí)�”}”(hŒS[TTY] ``ssize_t ()(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr)``”h]”(hŒ[TTY] ”…”�”}”(hj# h²hh³Nh´NubjÎ)�”}”(hŒM``ssize_t ()(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr)``”h]”hŒIssize_t ()(struct tty_struct *tty, struct file *file, u8 *buf, size_t nr)”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K]hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j h´K^hjˆ ubjÂ)�”}”(hŒd``write`` [TTY] ``ssize_t ()(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr)`` ”h]”(jÈ)�”}”(hŒ ``write``”h]”jÎ)�”}”(hjR h]”hŒwrite”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KihjL ubjä)�”}”(hhh]”hí)�”}”(hŒY[TTY] ``ssize_t ()(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr)``”h]”(hŒ[TTY] ”…”�”}”(hjk h²hh³Nh´NubjÎ)�”}”(hŒS``ssize_t ()(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr)``”h]”hŒOssize_t ()(struct tty_struct *tty, struct file *file, const u8 *buf, size_t nr)”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´Khhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jg h´Kihjˆ ubjÂ)�”}”(hŒX``ioctl`` [TTY] ``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)`` ”h]”(jÈ)�”}”(hŒ ``ioctl``”h]”jÎ)�”}”(hjš h]”hŒioctl”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´Kthj” ubjä)�”}”(hhh]”hí)�”}”(hŒM[TTY] ``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)``”h]”(hŒ[TTY] ”…”�”}”(hj³ h²hh³Nh´NubjÎ)�”}”(hŒG``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)``”h]”hŒCint ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj³ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´Kshj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj” ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j¯ h´Kthjˆ ubjÂ)�”}”(hŒ_``compat_ioctl`` [TTY] ``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)`` ”h]”(jÈ)�”}”(hŒ``compat_ioctl``”h]”jÎ)�”}”(hjâ h]”hŒ compat_ioctl”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K€hjÜ ubjä)�”}”(hhh]”hí)�”}”(hŒM[TTY] ``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)``”h]”(hŒ[TTY] ”…”�”}”(hjû h²hh³Nh´NubjÎ)�”}”(hŒG``int ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)``”h]”hŒCint ()(struct tty_struct *tty, unsigned int cmd, unsigned long arg)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjû ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´Khjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j÷ h´K€hjˆ ubjÂ)�”}”(hŒV``set_termios`` [TTY] ``void ()(struct tty_struct *tty, const struct ktermios *old)`` ”h]”(jÈ)�”}”(hŒ``set_termios``”h]”jÎ)�”}”(hj* h]”hŒ set_termios”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K‹hj$ ubjä)�”}”(hhh]”hí)�”}”(hŒE[TTY] ``void ()(struct tty_struct *tty, const struct ktermios *old)``”h]”(hŒ[TTY] ”…”�”}”(hjC h²hh³Nh´NubjÎ)�”}”(hŒ?``void ()(struct tty_struct *tty, const struct ktermios *old)``”h]”hŒ;void ()(struct tty_struct *tty, const struct ktermios *old)”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j? h´K‹hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j? h´K‹hjˆ ubjÂ)�”}”(hŒe``poll`` [TTY] ``int ()(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait)`` ”h]”(jÈ)�”}”(hŒ``poll``”h]”jÎ)�”}”(hjq h]”hŒpoll”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K“hjk ubjä)�”}”(hhh]”hí)�”}”(hŒ[[TTY] ``int ()(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait)``”h]”(hŒ[TTY] ”…”�”}”(hjŠ h²hh³Nh´NubjÎ)�”}”(hŒU``int ()(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait)``”h]”hŒQint ()(struct tty_struct *tty, struct file *file, struct poll_table_struct *wait)”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŠ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K’hj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j† h´K“hjˆ ubjÂ)�”}”(hŒ5``hangup`` [TTY] ``void ()(struct tty_struct *tty)`` ”h]”(jÈ)�”}”(hŒ ``hangup``”h]”jÎ)�”}”(hj¹ h]”hŒhangup”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K›hj³ ubjä)�”}”(hhh]”hí)�”}”(hŒ)[TTY] ``void ()(struct tty_struct *tty)``”h]”(hŒ[TTY] ”…”�”}”(hjÒ h²hh³Nh´NubjÎ)�”}”(hŒ#``void ()(struct tty_struct *tty)``”h]”hŒvoid ()(struct tty_struct *tty)”…”�”}”(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&]”uh1jãhj³ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jÎ h´K›hjˆ ubjÂ)�”}”(hŒd``receive_buf`` [DRV] ``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)`` ”h]”(jÈ)�”}”(hŒ``receive_buf``”h]”jÎ)�”}”(hjh]”hŒ receive_buf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K¥hjú ubjä)�”}”(hhh]”hí)�”}”(hŒS[DRV] ``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”(hŒ[DRV] ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒM``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”hŒIvoid ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K¤hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjú ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jh´K¥hjˆ ubjÂ)�”}”(hŒ;``write_wakeup`` [DRV] ``void ()(struct tty_struct *tty)`` ”h]”(jÈ)�”}”(hŒ``write_wakeup``”h]”jÎ)�”}”(hjHh]”hŒ write_wakeup”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K°hjBubjä)�”}”(hhh]”hí)�”}”(hŒ)[DRV] ``void ()(struct tty_struct *tty)``”h]”(hŒ[DRV] ”…”�”}”(hjah²hh³Nh´NubjÎ)�”}”(hŒ#``void ()(struct tty_struct *tty)``”h]”hŒvoid ()(struct tty_struct *tty)”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j]h´K°hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j]h´K°hjˆ ubjÂ)�”}”(hŒF``dcd_change`` [DRV] ``void ()(struct tty_struct *tty, bool active)`` ”h]”(jÈ)�”}”(hŒ``dcd_change``”h]”jÎ)�”}”(hj�h]”hŒ dcd_change”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K»hj‰ubjä)�”}”(hhh]”hí)�”}”(hŒ6[DRV] ``void ()(struct tty_struct *tty, bool active)``”h]”(hŒ[DRV] ”…”�”}”(hj¨h²hh³Nh´NubjÎ)�”}”(hŒ0``void ()(struct tty_struct *tty, bool active)``”h]”hŒ,void ()(struct tty_struct *tty, bool active)”…”�”}”(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&]”uh1jãhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j¤h´K»hjˆ ubjÂ)�”}”(hŒh``receive_buf2`` [DRV] ``ssize_t ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)`` ”h]”(jÈ)�”}”(hŒ``receive_buf2``”h]”jÎ)�”}”(hjÖh]”hŒ receive_buf2”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÃhjÐubjä)�”}”(hhh]”hí)�”}”(hŒV[DRV] ``ssize_t ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”(hŒ[DRV] ”…”�”}”(hjïh²hh³Nh´NubjÎ)�”}”(hŒP``ssize_t ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”hŒLssize_t ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÂhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jëh´KÃhjˆ ubjÂ)�”}”(hŒf``lookahead_buf`` [DRV] ``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)`` ”h]”(jÈ)�”}”(hŒ``lookahead_buf``”h]”jÎ)�”}”(hjh]”hŒ lookahead_buf”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÐhjubjä)�”}”(hhh]”hí)�”}”(hŒS[DRV] ``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”(hŒ[DRV] ”…”�”}”(hj7h²hh³Nh´NubjÎ)�”}”(hŒM``void ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)``”h]”hŒIvoid ()(struct tty_struct *tty, const u8 *cp, const u8 *fp, size_t count)”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÏhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j3h´KÐhjˆ ubjÂ)�”}”(hŒ@``owner`` module containting this ldisc (for reference counting)”h]”(jÈ)�”}”(hŒ ``owner``”h]”jÎ)�”}”(hjfh]”hŒowner”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÜhj`ubjä)�”}”(hhh]”hí)�”}”(hŒ6module containting this ldisc (for reference counting)”h]”hŒ6module containting this ldisc (for reference counting)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÝhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj`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”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´Kàhjµ h²hubhŒ block_quote”“”)�”}”(hXbThis function is called when the line discipline is associated with the **tty**. No other call into the line discipline for this tty will occur until it completes successfully. It should initialize any state needed by the ldisc, and set **tty->receive_room** to the maximum amount of data the line discipline is willing to accept from the driver with a single call to **receive_buf\(\)**. Returning an error will prevent the ldisc from being attached. Optional. Can sleep. This function is called when the line discipline is being shutdown, either because the **tty** is being closed or because the **tty** is being changed to use a new line discipline. At the point of execution no further users will enter the ldisc code for this tty. Optional. Can sleep. This function instructs the line discipline to clear its buffers of any input characters it may have queued to be delivered to the user mode process. It may be called at any point between open and close. Optional. This function is called when the user requests to read from the **tty**. The line discipline will return whatever characters it has buffered up for the user. If this function is not defined, the user will receive an ``EIO`` error. Multiple read calls may occur in parallel and the ldisc must deal with serialization issues. Optional: ``EIO`` unless provided. Can sleep. This function is called when the user requests to write to the **tty**. The line discipline will deliver the characters to the low-level tty device for transmission, optionally performing some processing on the characters first. If this function is not defined, the user will receive an ``EIO`` error. Optional: ``EIO`` unless provided. Can sleep. This function is called when the user requests an ioctl which is not handled by the tty layer or the low-level tty driver. It is intended for ioctls which affect line discpline operation. Note that the search order for ioctls is (1) tty layer, (2) tty low-level driver, (3) line discpline. So a low-level driver can "grab" an ioctl request before the line discpline has a chance to see it. Optional. Process ioctl calls from 32-bit process on 64-bit system. Note that only ioctls that are neither "pointer to compatible structure" nor tty-generic. Something private that takes an integer or a pointer to wordsize-sensitive structure belongs here, but most of ldiscs will happily leave it ``NULL``. Optional. This function notifies the line discpline that a change has been made to the termios structure. Optional. This function is called when a user attempts to select/poll on a **tty** device. It is solely the responsibility of the line discipline to handle poll requests. Optional. Called on a hangup. Tells the discipline that it should cease I/O to the tty driver. The driver should seek to perform this action quickly but should wait until any pending driver I/O is completed. No further calls into the ldisc code will occur. Optional. Can sleep. This function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. **cp** is a pointer to the buffer of input character received by the device. **fp** is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. **fp** may be ``NULL`` to indicate all data received is ``TTY_NORMAL``. Optional. This function is called by the low-level tty driver to signal that line discpline should try to send more characters to the low-level driver for transmission. If the line discpline does not have any more data to send, it can just return. If the line discipline does have some data to send, please arise a tasklet or workqueue to do the real data transfer. Do not send data in this hook, it may lead to a deadlock. Optional. Tells the discipline that the DCD pin has changed its status. Used exclusively by the ``N_PPS`` (Pulse-Per-Second) line discipline. Optional. This function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. **cp** is a pointer to the buffer of input character received by the device. **fp** is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. **fp** may be ``NULL`` to indicate all data received is ``TTY_NORMAL``. If assigned, prefer this function for automatic flow control. Optional. This function is called by the low-level tty driver for characters not eaten by ->receive_buf() or ->receive_buf2(). It is useful for processing high-priority characters such as software flow-control characters that could otherwise get stuck into the intermediate buffer until tty has room to receive them. Ldisc must be able to handle later a ->receive_buf() or ->receive_buf2() call for the same characters (e.g. by skipping the actions for high-priority characters already handled by ->lookahead_buf()). Optional. ”h]”(hí)�”}”(hXÃThis function is called when the line discipline is associated with the **tty**. No other call into the line discipline for this tty will occur until it completes successfully. It should initialize any state needed by the ldisc, and set **tty->receive_room** to the maximum amount of data the line discipline is willing to accept from the driver with a single call to **receive_buf\(\)**. Returning an error will prevent the ldisc from being attached.”h]”(hŒHThis function is called when the line discipline is associated with the ”…”�”}”(hjÅh²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÅubhŒž. No other call into the line discipline for this tty will occur until it completes successfully. It should initialize any state needed by the ldisc, and set ”…”�”}”(hjÅh²hh³Nh´Nubj§)�”}”(hŒ**tty->receive_room**”h]”hŒtty->receive_room”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÅubhŒn to the maximum amount of data the line discipline is willing to accept from the driver with a single call to ”…”�”}”(hjÅh²hh³Nh´Nubj§)�”}”(hŒ**receive_buf\(\)**”h]”hŒreceive_buf()”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÅubhŒ@. Returning an error will prevent the ldisc from being attached.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K@hjÁubhí)�”}”(hŒOptional. Can sleep.”h]”hŒOptional. Can sleep.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KHhjÁubhí)�”}”(hXThis function is called when the line discipline is being shutdown, either because the **tty** is being closed or because the **tty** is being changed to use a new line discipline. At the point of execution no further users will enter the ldisc code for this tty.”h]”(hŒWThis function is called when the line discipline is being shutdown, either because the ”…”�”}”(hjh²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjubhŒ is being closed or because the ”…”�”}”(hjh²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjubhŒ‚ is being changed to use a new line discipline. At the point of execution no further users will enter the ldisc code for this tty.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KKhjÁubhí)�”}”(hŒOptional. Can sleep.”h]”hŒOptional. Can sleep.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KPhjÁubhí)�”}”(hŒËThis function instructs the line discipline to clear its buffers of any input characters it may have queued to be delivered to the user mode process. It may be called at any point between open and close.”h]”hŒËThis function instructs the line discipline to clear its buffers of any input characters it may have queued to be delivered to the user mode process. It may be called at any point between open and close.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KShjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KWhjÁubhí)�”}”(hXCThis function is called when the user requests to read from the **tty**. The line discipline will return whatever characters it has buffered up for the user. If this function is not defined, the user will receive an ``EIO`` error. Multiple read calls may occur in parallel and the ldisc must deal with serialization issues.”h]”(hŒ@This function is called when the user requests to read from the ”…”�”}”(hjyh²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjyubhŒ‘. The line discipline will return whatever characters it has buffered up for the user. If this function is not defined, the user will receive an ”…”�”}”(hjyh²hh³Nh´NubjÎ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjyubhŒd error. Multiple read calls may occur in parallel and the ldisc must deal with serialization issues.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KZhjÁubhí)�”}”(hŒ-Optional: ``EIO`` unless provided. Can sleep.”h]”(hŒ Optional: ”…”�”}”(hj¬h²hh³Nh´NubjÎ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¬ubhŒ unless provided. Can sleep.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K`hjÁubhí)�”}”(hX-This function is called when the user requests to write to the **tty**. The line discipline will deliver the characters to the low-level tty device for transmission, optionally performing some processing on the characters first. If this function is not defined, the user will receive an ``EIO`` error.”h]”(hŒ?This function is called when the user requests to write 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ŒÙ. The line discipline will deliver the characters to the low-level tty device for transmission, optionally performing some processing on the characters first. If this function is not defined, the user will receive an ”…”�”•}”(hjÍh²hh³Nh´NubjÎ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÍubhŒ error.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KchjÁubhí)�”}”(hŒ-Optional: ``EIO`` unless provided. Can sleep.”h]”(hŒ Optional: ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒ unless provided. Can sleep.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KihjÁubhí)�”}”(hX†This function is called when the user requests an ioctl which is not handled by the tty layer or the low-level tty driver. It is intended for ioctls which affect line discpline operation. Note that the search order for ioctls is (1) tty layer, (2) tty low-level driver, (3) line discpline. So a low-level driver can "grab" an ioctl request before the line discpline has a chance to see it.”h]”hXŠThis function is called when the user requests an ioctl which is not handled by the tty layer or the low-level tty driver. It is intended for ioctls which affect line discpline operation. Note that the search order for ioctls is (1) tty layer, (2) tty low-level driver, (3) line discpline. So a low-level driver can “grabâ€� an ioctl request before the line discpline has a chance to see it.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KlhjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KshjÁubhí)�”}”(hŒ9Process ioctl calls from 32-bit process on 64-bit system.”h]”hŒ9Process ioctl calls from 32-bit process on 64-bit system.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KvhjÁubhí)�”}”(hŒðNote that only ioctls that are neither "pointer to compatible structure" nor tty-generic. Something private that takes an integer or a pointer to wordsize-sensitive structure belongs here, but most of ldiscs will happily leave it ``NULL``.”h]”(hŒëNote that only ioctls that are neither “pointer to compatible structureâ€� nor tty-generic. Something private that takes an integer or a pointer to wordsize-sensitive structure belongs here, but most of ldiscs will happily leave it ”…”�”}”(hjNh²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjNubhŒ.”…”�”}”(hjNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KxhjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K}hjÁubhí)�”}”(hŒ_This function notifies the line discpline that a change has been made to the termios structure.”h]”hŒ_This function notifies the line discpline that a change has been made to the termios structure.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K€hjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KƒhjÁubhí)�”}”(hŒ This function is called when a user attempts to select/poll on a **tty** device. It is solely the responsibility of the line discipline to handle poll requests.”h]”(hŒAThis function is called when a user attempts to select/poll on a ”…”�”}”(hjœh²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjœubhŒX device. It is solely the responsibility of the line discipline to handle poll requests.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K†hjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KŠhjÁubhí)�”}”(hŒöCalled on a hangup. Tells the discipline that it should cease I/O to the tty driver. The driver should seek to perform this action quickly but should wait until any pending driver I/O is completed. No further calls into the ldisc code will occur.”h]”hŒöCalled on a hangup. Tells the discipline that it should cease I/O to the tty driver. The driver should seek to perform this action quickly but should wait until any pending driver I/O is completed. No further calls into the ldisc code will occur.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K�hjÁubhí)�”}”(hŒOptional. Can sleep.”h]”hŒOptional. Can sleep.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K’hjÁubhí)�”}”(hX’This function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. **cp** is a pointer to the buffer of input character received by the device. **fp** is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. **fp** may be ``NULL`` to indicate all data received is ``TTY_NORMAL``.”h]”(hŒ†This function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. ”…”�”}”(hjêh²hh³Nh´Nubj§)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjêubhŒG is a pointer to the buffer of input character received by the device. ”…”�”}”(hjêh²hh³Nh´Nubj§)�”}”(hŒ**fp**”h]”hŒfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjêubhŒr is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. ”…”�”}”(hjêh²hh³Nh´Nubj§)�”}”(hŒ**fp**”h]”hŒfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjêubhŒ may be ”…”�”}”(hjêh²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjêubhŒ" to indicate all data received is ”…”�”}”(hjêh²hh³Nh´NubjÎ)�”}”(hŒ``TTY_NORMAL``”h]”hŒ TTY_NORMAL”…”�”}”(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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K•hjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KœhjÁubhí)�”}”(hX�This function is called by the low-level tty driver to signal that line discpline should try to send more characters to the low-level driver for transmission. If the line discpline does not have any more data to send, it can just return. If the line discipline does have some data to send, please arise a tasklet or workqueue to do the real data transfer. Do not send data in this hook, it may lead to a deadlock.”h]”hX�This function is called by the low-level tty driver to signal that line discpline should try to send more characters to the low-level driver for transmission. If the line discpline does not have any more data to send, it can just return. If the line discipline does have some data to send, please arise a tasklet or workqueue to do the real data transfer. Do not send data in this hook, it may lead to a deadlock.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KŸhjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K¦hjÁubhí)�”}”(hŒƒTells the discipline that the DCD pin has changed its status. Used exclusively by the ``N_PPS`` (Pulse-Per-Second) line discipline.”h]”(hŒVTells the discipline that the DCD pin has changed its status. Used exclusively by the ”…”�”}”(hj€h²hh³Nh´NubjÎ)�”}”(hŒ ``N_PPS``”h]”hŒN_PPS”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj€ubhŒ$ (Pulse-Per-Second) line discipline.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K©hjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K¬hjÁubhí)�”}”(hXÑThis function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. **cp** is a pointer to the buffer of input character received by the device. **fp** is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. **fp** may be ``NULL`` to indicate all data received is ``TTY_NORMAL``. If assigned, prefer this function for automatic flow control.”h]”(hŒ†This function is called by the low-level tty driver to send characters received by the hardware to the line discpline for processing. ”…”�”}”(hj°h²hh³Nh´Nubj§)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj°ubhŒH is a pointer to the buffer of input character received by the device. ”…”�”}”(hj°h²hh³Nh´Nubj§)�”}”(hŒ**fp**”h]”hŒfp”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj°ubhŒr is a pointer to an array of flag bytes which indicate whether a character was received with a parity error, etc. ”…”�”}”(hj°h²hh³Nh´Nubj§)�”}”(hŒ**fp**”h]”hŒfp”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj°ubhŒ may be ”…”�”}”(hj°h²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj°ubhŒ" to indicate all data received is ”…”�”}”(hj°h²hh³Nh´NubjÎ)�”}”(hŒ``TTY_NORMAL``”h]”hŒ TTY_NORMAL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj°ubhŒ?. If assigned, prefer this function for automatic flow control.”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K¯hjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´K·hjÁubhí)�”}”(hXúThis function is called by the low-level tty driver for characters not eaten by ->receive_buf() or ->receive_buf2(). It is useful for processing high-priority characters such as software flow-control characters that could otherwise get stuck into the intermediate buffer until tty has room to receive them. Ldisc must be able to handle later a ->receive_buf() or ->receive_buf2() call for the same characters (e.g. by skipping the actions for high-priority characters already handled by ->lookahead_buf()).”h]”hXúThis function is called by the low-level tty driver for characters not eaten by ->receive_buf() or ->receive_buf2(). It is useful for processing high-priority characters such as software flow-control characters that could otherwise get stuck into the intermediate buffer until tty has room to receive them. Ldisc must be able to handle later a ->receive_buf() or ->receive_buf2() call for the same characters (e.g. by skipping the actions for high-priority characters already handled by ->lookahead_buf()).”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KºhjÁubhí)�”}”(hŒ Optional.”h]”hŒ Optional.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÃhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¿h³j h´K@hjµ h²hubhí)�”}”(hŒåThis structure defines the interface between the tty line discipline implementation and the tty routines. The above routines can be defined. Unless noted otherwise, they are optional, and can be filled in with a ``NULL`` pointer.”h]”(hŒÔThis structure defines the interface between the tty line discipline implementation and the tty routines. The above routines can be defined. Unless noted otherwise, they are optional, and can be filled in with a ”…”�”}”(hjLh²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjLubhŒ pointer.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KÆhjµ h²hubhí)�”}”(hŒZHooks marked [TTY] are invoked from the TTY core, the [DRV] ones from the tty_driver side.”h]”hŒZHooks marked [TTY] are invoked from the TTY core, the [DRV] ones from the tty_driver side.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:46: ./include/linux/tty_ldisc.h”h´KËhjµ h²hubeh}”(h]”jFah ]”h"]”Œ$line discipline operations reference”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K,ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Driver Access”h]”hŒ Driver Access”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j3jbuh1hÍhjƒh²hh³hÇh´K2ubhí)�”}”(hŒˆLine discipline methods can call the methods of the underlying hardware driver. These are documented as a part of struct tty_operations.”h]”hŒˆLine discipline methods can call the methods of the underlying hardware driver. These are documented as a part of struct tty_operations.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K4hjƒh²hubeh}”(h]”jhah ]”h"]”Œ driver access”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K2ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ TTY Flags”h]”hŒ TTY Flags”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j3j„uh1hÍhj©h²hh³hÇh´K8ubhí)�”}”(hŒaLine discipline methods have access to :c:member:`tty_struct.flags` field. See :doc:`tty_struct`.”h]”(hŒ'Line discipline methods have access to ”…”�”}”(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 ]”(jjŒc-member”eh"]”h$]”h&]”uh1jÍhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jj)�”}”j]”sbjŒtty_struct.flags”uh1hh³hÇh´K:hjºubhŒ field. See ”…”�”}”(hjºh²hh³Nh´Nubh)�”}”(hŒ:doc:`tty_struct`”h]”jø)�”}”(hjêh]”hŒ tty_struct”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-doc”eh"]”h$]”h&]”uh1j÷hjèubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jöŒreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆjŒ tty_struct”uh1hh³hÇh´K:hjºubhŒ.”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K:hj©h²hubeh}”(h]”jŠah ]”h"]”Œ tty flags”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K8ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒLocking”h]”hŒLocking”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j3j¦uh1hÍhjh²hh³hÇh´K>ubhí)�”}”(hŒ¬Callers to the line discipline functions from the tty layer are required to take line discipline locks. The same is true of calls from the driver side but not yet enforced.”h]”hŒ¬Callers to the line discipline functions from the tty layer are required to take line discipline locks. The same is true of calls from the driver side but not yet enforced.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K@hjh²hubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_ref_wait (C function)”Œc.tty_ldisc_ref_wait”hNt”auh1jPhjh²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ>struct tty_ldisc * tty_ldisc_ref_wait (struct tty_struct *tty)”h]”jm)�”}”(hŒubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInternal Functions”h]”hŒInternal Functions”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”j3jÈuh1hÍhj"h²hh³hÇh´KRubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_get (C function)”Œc.tty_ldisc_get”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒCstruct tty_ldisc * tty_ldisc_get (struct tty_struct *tty, int disc)”h]”jm)�”}”(hŒAstruct tty_ldisc *tty_ldisc_get(struct tty_struct *tty, int disc)”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjHh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Kzubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjHh²hh³jYh´Kzubh)�”}”(hhh]”jœ)�”}”(hŒ tty_ldisc”h]”hŒ tty_ldisc”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jmŒmodname”NŒ classname”Njj)�”}”j]”j")�”}”jŒ tty_ldisc_get”sbŒc.tty_ldisc_get”†”asbuh1hhjHh²hh³jYh´Kzubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjHh²hh³jYh´Kzubj6)�”}”(hj9h]”hŒ*”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjHh²hh³jYh´Kzubj–)�”}”(hŒ tty_ldisc_get”h]”jœ)�”}”(hj‰h]”hŒ tty_ldisc_get”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj§ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjHh²hh³jYh´Kzubjµ)�”}”(hŒ"(struct tty_struct *tty, int disc)”h]”(j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÂ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 ]”j¨ah"]”h$]”h&]”uh1j›hjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jæŒmodname”NŒ classname”Njj)�”}”j]”j‡Œc.tty_ldisc_get”†”asbuh1hhjÂubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÂubj6)�”}”(hj9h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjÂubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj¾ubj»)�”}”(hŒint disc”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj2ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj2ubjœ)�”}”(hŒdisc”h]”hŒdisc”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjHh²hh³jYh´Kzubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihjDh²hh³jYh´Kzubah}”(h]”j?ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³jYh´KzhjAh²hubjv)�”}”(hhh]”hí)�”}”(hŒtake a reference to an ldisc”h]”hŒtake a reference to an ldisc”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Kzhjyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjAh²hh³jYh´Kzubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—j”j˜j”j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hX}**Parameters** ``struct tty_struct *tty`` tty device ``int disc`` ldisc number **Description** Takes a reference to a line discipline. Deals with refcounts and module locking counts. If the discipline is not available, its module loaded, if possible. Locking: takes ``tty_ldiscs_lock`` to guard against ldisc races **Return** * -``EINVAL`` if the discipline index is not [``N_TTY`` .. ``NR_LDISCS``] or if the discipline is not registered * -``EAGAIN`` if request_module() failed to load or register the discipline * -``ENOMEM`` if allocation failure * Otherwise, returns a pointer to the discipline and bumps the ref count”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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K~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&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K{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´K{hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jÒh´K{hj´ubjÂ)�”}”(hŒ``int disc`` ldisc number ”h]”(jÈ)�”}”(hŒ ``int disc``”h]”jÎ)�”}”(hjöh]”hŒint disc”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K|hjðubjä)�”}”(hhh]”hí)�”}”(hŒ ldisc number”h]”hŒ ldisc number”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j h´K|hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j h´K|hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj˜ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj1h]”hŒ Description”…”�”}”(hj3h²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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K~hj˜ubhí)�”}”(hŒ›Takes a reference to a line discipline. Deals with refcounts and module locking counts. If the discipline is not available, its module loaded, if possible.”h]”hŒ›Takes a reference to a line discipline. Deals with refcounts and module locking counts. If the discipline is not available, its module loaded, if possible.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K}hj˜ubhí)�”}”(hŒ?Locking: takes ``tty_ldiscs_lock`` to guard against ldisc races”h]”(hŒLocking: takes ”…”�”}”(hjVh²hh³Nh´NubjÎ)�”}”(hŒ``tty_ldiscs_lock``”h]”hŒtty_ldiscs_lock”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjVubhŒ to guard against ldisc races”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K‚hj˜ubhí)�”}”(hŒ **Return**”h]”j§)�”}”(hjyh]”hŒReturn”…”�”}”(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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K„hj˜ubhã)�”}”(hhh]”(hè)�”}”(hŒn-``EINVAL`` if the discipline index is not [``N_TTY`` .. ``NR_LDISCS``] or if the discipline is not registered”h]”hí)�”}”(hŒn-``EINVAL`` if the discipline index is not [``N_TTY`` .. ``NR_LDISCS``] or if the discipline is not registered”h]”(hŒ-”…”�”}”(hj–h²hh³Nh´NubjÎ)�”}”(hŒ ``EINVAL``”h]”hŒEINVAL”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj–ubhŒ! if the discipline index is not [”…”�”}”(hj–h²hh³Nh´NubjÎ)�”}”(hŒ ``N_TTY``”h]”hŒN_TTY”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj–ubhŒ .. ”…”�”}”(hj–h²hh³Nh´NubjÎ)�”}”(hŒ ``NR_LDISCS``”h]”hŒ NR_LDISCS”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj–ubhŒ(] or if the discipline is not registered”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K‚hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhè)�”}”(hŒI-``EAGAIN`` if request_module() failed to load or register the discipline”h]”hí)�”}”(hjãh]”(hŒ-”…”�”}”(hjåh²hh³Nh´NubjÎ)�”}”(hŒ ``EAGAIN``”h]”hŒEAGAIN”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjåubhŒ> if request_module() failed to load or register the discipline”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K„hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhè)�”}”(hŒ!-``ENOMEM`` if allocation failure”h]”hí)�”}”(hj h]”(hŒ-”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ ``ENOMEM``”h]”hŒENOMEM”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒ if allocation failure”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K…hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubhè)�”}”(hŒFOtherwise, returns a pointer to the discipline and bumps the ref count”h]”hí)�”}”(hj7h]”hŒFOtherwise, returns a pointer to the discipline and bumps the ref count”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K†hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j9uh1hâh³jÚh´K‚hj˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_put (C function)”Œc.tty_ldisc_put”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ)void tty_ldisc_put (struct tty_ldisc *ld)”h]”jm)�”}”(hŒ(void tty_ldisc_put(struct tty_ldisc *ld)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjph²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K­ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjph²hh³j‚h´K­ubj–)�”}”(hŒ tty_ldisc_put”h]”jœ)�”}”(hŒ tty_ldisc_put”h]”hŒ tty_ldisc_put”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj‘ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjph²hh³j‚h´K­ubjµ)�”}”(hŒ(struct tty_ldisc *ld)”h]”j»)�”}”(hŒstruct tty_ldisc *ld”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj­ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj­ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_ldisc”h]”hŒ tty_ldisc”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jÑŒmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj—sbŒc.tty_ldisc_put”†”asbuh1hhj­ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj­ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hj­ubjœ)�”}”(hŒld”h]”hŒld”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj©ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjph²hh³j‚h´K­ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihjlh²hh³j‚h´K­ubah}”(h]”jgah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j‚h´K­hjih²hubjv)�”}”(hhh]”hí)�”}”(hŒrelease the ldisc”h]”hŒrelease the ldisc”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K­hj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjih²hh³j‚h´K­ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—jLj˜jLj™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hŒm**Parameters** ``struct tty_ldisc *ld`` lisdsc to release **Description** Complement of tty_ldisc_get().”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hjVh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K±hjPubj½)�”}”(hhh]”jÂ)�”}”(hŒ+``struct tty_ldisc *ld`` lisdsc to release ”h]”(jÈ)�”}”(hŒ``struct tty_ldisc *ld``”h]”jÎ)�”}”(hjuh]”hŒstruct tty_ldisc *ld”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K®hjoubjä)�”}”(hhh]”hí)�”}”(hŒlisdsc to release”h]”hŒlisdsc to release”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jŠh´K®hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jŠh´K®hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjPubhí)�”}”(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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K°hjPubhí)�”}”(hŒComplement of tty_ldisc_get().”h]”hŒComplement of tty_ldisc_get().”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´K¯hjPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œ"tty_set_termios_ldisc (C function)”Œc.tty_set_termios_ldisc”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ=void tty_set_termios_ldisc (struct tty_struct *tty, int disc)”h]”jm)�”}”(hŒldisc**”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hjr*h]”hŒ Parameters”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjp*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M\hjl*ubj½)�”}”(hhh]”jÂ)�”}”(hŒ.``struct tty_struct *tty`` tty being released ”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&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MYhj‹*ubjä)�”}”(hhh]”hí)�”}”(hŒtty being released”h]”hŒtty being released”…”�”}”(hjª*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¦*h´MYhj§*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj‹*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j¦*h´MYhjˆ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl*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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M[hjl*ubhí)�”}”(hŒ9Perform final close of the ldisc and reset **tty->ldisc**”h]”(hŒ+Perform final close of the ldisc and reset ”…”�”}”(hjâ*h²hh³Nh´Nubj§)�”}”(hŒ**tty->ldisc**”h]”hŒ tty->ldisc”…”�”}”(hjê*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjâ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MZhjl*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_reset_termios (C function)”Œc.tty_reset_termios”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ/void tty_reset_termios (struct tty_struct *tty)”h]”jm)�”}”(hŒ.void tty_reset_termios(struct tty_struct *tty)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj+h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mlubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.+h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj+h²hh³j-+h´Mlubj–)�”}”(hŒtty_reset_termios”h]”jœ)�”}”(hŒtty_reset_termios”h]”hŒtty_reset_termios”…”�”}”(hj@+h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj<+ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hj+h²hh³j-+h´Mlubjµ)�”}”(hŒ(struct tty_struct *tty)”h]”j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hj\+h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjX+ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjX+ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjz+h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjw+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”j|+Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jjB+sbŒc.tty_reset_termios”†”asbuh1hhjX+ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš+h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjX+ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hj¨+h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjX+ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjµ+h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjX+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjT+ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hj+h²hh³j-+h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihj+h²hh³j-+h´Mlubah}”(h]”j+ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j-+h´Mlhj+h²hubjv)�”}”(hhh]”hí)�”}”(hŒreset terminal state”h]”hŒreset terminal state”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MlhjÜ+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj+h²hh³j-+h´Mlubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—j÷+j˜j÷+j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hŒ{**Parameters** ``struct tty_struct *tty`` tty to reset **Description** Restore a terminal to the driver default state.”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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mphjû+ubj½)�”}”(hhh]”jÂ)�”}”(hŒ(``struct tty_struct *tty`` tty to reset ”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&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mmhj,ubjä)�”}”(hhh]”hí)�”}”(hŒ tty to reset”h]”hŒ tty to reset”…”�”}”(hj9,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j5,h´Mmhj6,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j5,h´Mmhj,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¦hjY,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mohjû+ubhí)�”}”(hŒ/Restore a terminal to the driver default state.”h]”hŒ/Restore a terminal to the driver default state.”…”�”}”(hjq,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mnhjû+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_reinit (C function)”Œc.tty_ldisc_reinit”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ7int tty_ldisc_reinit (struct tty_struct *tty, int disc)”h]”jm)�”}”(hŒ6int tty_ldisc_reinit(struct tty_struct *tty, int disc)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjœ,h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.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_ldisc_reinit”h]”jœ)�”}”(hŒtty_ldisc_reinit”h]”hŒtty_ldisc_reinit”…”�”}”(hjÁ,h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj½,ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjœ,h²hh³j®,h´M|ubjµ)�”}”(hŒ"(struct tty_struct *tty, int disc)”h]”(j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjÝ,h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÙ,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 ]”j¨ah"]”h$]”h&]”uh1j›hjø,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jý,Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jjÃ,sbŒc.tty_ldisc_reinit”†”asbuh1hhjÙ,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÙ,ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hj)-h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjÙ,ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj6-h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÙ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjÕ,ubj»)�”}”(hŒint disc”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjO-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjK-ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]-h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjK-ubjœ)�”}”(hŒdisc”h]”hŒdisc”…”�”}”(hjk-h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjK-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjÕ,ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjœ,h²hh³j®,h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihj˜,h²hh³j®,h´M|ubah}”(h]”j“,ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j®,h´M|hj•,h²hubjv)�”}”(hhh]”hí)�”}”(hŒreinitialise the tty ldisc”h]”hŒreinitialise the tty ldisc”…”�”}”(hj•-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M|hj’-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj•,h²hh³j®,h´M|ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—j­-j˜j­-j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hXß**Parameters** ``struct tty_struct *tty`` tty to reinit ``int disc`` line discipline to reinitialize **Description** Completely reinitialize the line discipline state, by closing the current instance, if there is one, and opening a new instance. If an error occurs opening the new non-``N_TTY`` instance, the instance is dropped and **tty->ldisc** reset to ``NULL``. The caller can then retry with ``N_TTY`` instead. **Return** 0 if successful, otherwise error code < 0”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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M€hj±-ubj½)�”}”(hhh]”(jÂ)�”}”(hŒ)``struct tty_struct *tty`` tty to reinit ”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&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M}hjÐ-ubjä)�”}”(hhh]”hí)�”}”(hŒ tty to reinit”h]”hŒ tty to reinit”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jë-h´M}hjì-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÐ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jë-h´M}hjÍ-ubjÂ)�”}”(hŒ-``int disc`` line discipline to reinitialize ”h]”(jÈ)�”}”(hŒ ``int disc``”h]”jÎ)�”}”(hj.h]”hŒint disc”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M~hj .ubjä)�”}”(hhh]”hí)�”}”(hŒline discipline to reinitialize”h]”hŒline discipline to reinitialize”…”�”}”(hj(.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j$.h´M~hj%.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj .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§)�”}”(hjJ.h]”hŒ Description”…”�”}”(hjL.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjH.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M€hj±-ubhí)�”}”(hX+Completely reinitialize the line discipline state, by closing the current instance, if there is one, and opening a new instance. If an error occurs opening the new non-``N_TTY`` instance, the instance is dropped and **tty->ldisc** reset to ``NULL``. The caller can then retry with ``N_TTY`` instead.”h]”(hŒ¨Completely reinitialize the line discipline state, by closing the current instance, if there is one, and opening a new instance. If an error occurs opening the new non-”…”�”}”(hj`.h²hh³Nh´NubjÎ)�”}”(hŒ ``N_TTY``”h]”hŒN_TTY”…”�”}”(hjh.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj`.ubhŒ' instance, the instance is dropped and ”…”�”}”(hj`.h²hh³Nh´Nubj§)�”}”(hŒ**tty->ldisc**”h]”hŒ tty->ldisc”…”�”}”(hjz.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj`.ubhŒ reset to ”…”�”}”(hj`.h²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj`.ubhŒ!. The caller can then retry with ”…”�”}”(hj`.h²hh³Nh´NubjÎ)�”}”(hŒ ``N_TTY``”h]”hŒN_TTY”…”�”}”(hjž.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj`.ubhŒ instead.”…”�”}”(hj`.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mhj±-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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M„hj±-ubhí)�”}”(hŒ)0 if successful, otherwise error code < 0”h]”hŒ)0 if successful, otherwise error code < 0”…”�”}”(hjÏ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M…hj±-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_hangup (C function)”Œc.tty_ldisc_hangup”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ;void tty_ldisc_hangup (struct tty_struct *tty, bool reinit)”h]”jm)�”}”(hŒ:void tty_ldisc_hangup(struct tty_struct *tty, bool reinit)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjú.h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.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_ldisc_hangup”h]”jœ)�”}”(hŒtty_ldisc_hangup”h]”hŒtty_ldisc_hangup”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj/ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjú.h²hh³j /h´M¤ubjµ)�”}”(hŒ%(struct tty_struct *tty, bool reinit)”h]”(j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hj;/h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj7/ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH/h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj7/ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjY/h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjV/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”j[/Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj!/sbŒc.tty_ldisc_hangup”†”asbuh1hhj7/ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy/h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj7/ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hj‡/h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hj7/ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj”/h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj7/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj3/ubj»)�”}”(hŒ bool reinit”h]”(js)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj­/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj©/ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»/h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj©/ubjœ)�”}”(hŒreinit”h]”hŒreinit”…”�”}”(hjÉ/h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj©/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj3/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjú.h²hh³j /h´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihjö.h²hh³j /h´M¤ubah}”(h]”jñ.ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j /h´M¤hjó.h²hubjv)�”}”(hhh]”hí)�”}”(hŒhangup ldisc reset”h]”hŒhangup ldisc reset”…”�”}”(hjó/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M¤hjð/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjó.h²hh³j /h´M¤ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—j 0j˜j 0j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hXý**Parameters** ``struct tty_struct *tty`` tty being hung up ``bool reinit`` whether to re-initialise the tty **Description** Some tty devices reset their termios when they receive a hangup event. In that situation we must also switch back to ``N_TTY`` properly before we reset the termios data. Locking: We can take the ldisc mutex as the rest of the code is careful to allow for this. In the pty pair case this occurs in the close() path of the tty itself so we must be careful about locking rules.”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M¨hj0ubj½)�”}”(hhh]”(jÂ)�”}”(hŒ-``struct tty_struct *tty`` tty being hung up ”h]”(jÈ)�”}”(hŒ``struct tty_struct *tty``”h]”jÎ)�”}”(hj40h]”hŒstruct tty_struct *tty”…”�”}”(hj60h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj20ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M¥hj.0ubjä)�”}”(hhh]”hí)�”}”(hŒtty being hung up”h]”hŒtty being hung up”…”�”}”(hjM0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jI0h´M¥hjJ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhj.0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jI0h´M¥hj+0ubjÂ)�”}”(hŒ1``bool reinit`` whether to re-initialise the tty ”h]”(jÈ)�”}”(hŒ``bool reinit``”h]”jÎ)�”}”(hjm0h]”hŒ bool reinit”…”�”}”(hjo0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjk0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M¦hjg0ubjä)�”}”(hhh]”hí)�”}”(hŒ whether to re-initialise the tty”h]”hŒ whether to re-initialise the tty”…”�”}”(hj†0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‚0h´M¦hjƒ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjg0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j‚0h´M¦hj+0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj0ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj¨0h]”hŒ Description”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj¦0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M¨hj0ubhí)�”}”(hŒ©Some tty devices reset their termios when they receive a hangup event. In that situation we must also switch back to ``N_TTY`` properly before we reset the termios data.”h]”(hŒuSome tty devices reset their termios when they receive a hangup event. In that situation we must also switch back to ”…”�”}”(hj¾0h²hh³Nh´NubjÎ)�”}”(hŒ ``N_TTY``”h]”hŒN_TTY”…”�”}”(hjÆ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¾0ubhŒ+ properly before we reset the termios data.”…”�”}”(hj¾0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M§hj0ubhí)�”}”(hŒZLocking: We can take the ldisc mutex as the rest of the code is careful to allow for this.”h]”hŒZLocking: We can take the ldisc mutex as the rest of the code is careful to allow for this.”…”�”}”(hjß0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M«hj0ubhí)�”}”(hŒqIn the pty pair case this occurs in the close() path of the tty itself so we must be careful about locking rules.”h]”hŒqIn the pty pair case this occurs in the close() path of the tty itself so we must be careful about locking rules.”…”�”}”(hjî0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M®hj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_setup (C function)”Œc.tty_ldisc_setup”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒFint tty_ldisc_setup (struct tty_struct *tty, struct tty_struct *o_tty)”h]”jm)�”}”(hŒEint tty_ldisc_setup(struct tty_struct *tty, struct tty_struct *o_tty)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj1h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mßubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj1h²hh³j+1h´Mßubj–)�”}”(hŒtty_ldisc_setup”h]”jœ)�”}”(hŒtty_ldisc_setup”h]”hŒtty_ldisc_setup”…”�”}”(hj>1h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj:1ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hj1h²hh³j+1h´Mßubjµ)�”}”(hŒ2(struct tty_struct *tty, struct tty_struct *o_tty)”h]”(j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjZ1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjV1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjV1ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjx1h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hju1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jz1Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj@1sbŒc.tty_ldisc_setup”†”asbuh1hhjV1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjV1ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hj¦1h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjV1ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj³1h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjV1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjR1ubj»)�”}”(hŒstruct tty_struct *o_tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjÌ1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÈ1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÈ1ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjê1h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjç1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jì1Œmodname”NŒ classname”Njj)�”}”j]”j”1Œc.tty_ldisc_setup”†”asbuh1hhjÈ1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÈ1ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hjÈ1ubjœ)�”}”(hŒo_tty”h]”hŒo_tty”…”�”}”(hj#2h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÈ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjR1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hj1h²hh³j+1h´Mßubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihj1h²hh³j+1h´Mßubah}”(h]”j1ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j+1h´Mßhj1h²hubjv)�”}”(hhh]”hí)�”}”(hŒopen line discipline”h]”hŒopen line discipline”…”�”}”(hjM2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MßhjJ2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj1h²hh³j+1h´Mßubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—je2j˜je2j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hX?**Parameters** ``struct tty_struct *tty`` tty being shut down ``struct tty_struct *o_tty`` pair tty for pty/tty pairs **Description** Called during the initial open of a tty/pty pair in order to set up the line disciplines and bind them to the **tty**. This has no locking issues as the device isn't yet active.”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hjo2h]”hŒ Parameters”…”�”}”(hjq2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjm2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mãhji2ubj½)�”}”(hhh]”(jÂ)�”}”(hŒ/``struct tty_struct *tty`` tty being shut down ”h]”(jÈ)�”}”(hŒ``struct tty_struct *tty``”h]”jÎ)�”}”(hjŽ2h]”hŒstruct tty_struct *tty”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŒ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Màhjˆ2ubjä)�”}”(hhh]”hí)�”}”(hŒtty being shut down”h]”hŒtty being shut down”…”�”}”(hj§2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j£2h´Màhj¤2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjˆ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j£2h´Màhj…2ubjÂ)�”}”(hŒ8``struct tty_struct *o_tty`` pair tty for pty/tty pairs ”h]”(jÈ)�”}”(hŒ``struct tty_struct *o_tty``”h]”jÎ)�”}”(hjÇ2h]”hŒstruct tty_struct *o_tty”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÅ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MáhjÁ2ubjä)�”}”(hhh]”hí)�”}”(hŒpair tty for pty/tty pairs”h]”hŒpair tty for pty/tty pairs”…”�”}”(hjà2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÜ2h´MáhjÝ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjÁ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jÜ2h´Máhj…2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¼hji2ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj3h]”hŒ Description”…”�”}”(hj3h²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_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mãhji2ubhí)�”}”(hŒ±Called during the initial open of a tty/pty pair in order to set up the line disciplines and bind them to the **tty**. This has no locking issues as the device isn't yet active.”h]”(hŒnCalled during the initial open of a tty/pty pair in order to set up the line disciplines and bind them to the ”…”�”}”(hj3h²hh³Nh´Nubj§)�”}”(hŒ**tty**”h]”hŒtty”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj3ubhŒ>. This has no locking issues as the device isn’t yet active.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mâhji2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_release (C function)”Œc.tty_ldisc_release”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ/void tty_ldisc_release (struct tty_struct *tty)”h]”jm)�”}”(hŒ.void tty_ldisc_release(struct tty_struct *tty)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjU3h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mýubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh3h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjU3h²hh³jg3h´Mýubj–)�”}”(hŒtty_ldisc_release”h]”jœ)�”}”(hŒtty_ldisc_release”h]”hŒtty_ldisc_release”…”�”}”(hjz3h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjv3ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjU3h²hh³jg3h´Mýubjµ)�”}”(hŒ(struct tty_struct *tty)”h]”j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hj–3h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj’3ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£3h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj’3ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hj´3h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj±3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”j¶3Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj|3sbŒc.tty_ldisc_release”†”asbuh1hhj’3ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ3h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj’3ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hj’3ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjï3h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj’3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhjŽ3ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjU3h²hh³jg3h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihjQ3h²hh³jg3h´Mýubah}”(h]”jL3ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³jg3h´MýhjN3h²hubjv)�”}”(hhh]”hí)�”}”(hŒrelease line discipline”h]”hŒrelease line discipline”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mýhj4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjN3h²hh³jg3h´Mýubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—j14j˜j14j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hŒ÷**Parameters** ``struct tty_struct *tty`` tty being shut down (or one end of pty pair) **Description** Called during the final close of a tty or a pty pair in order to shut down the line discpline layer. On exit, each tty's ldisc is ``NULL``.”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hj;4h]”hŒ Parameters”…”�”}”(hj=4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj94ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mhj54ubj½)�”}”(hhh]”jÂ)�”}”(hŒH``struct tty_struct *tty`` tty being shut down (or one end of pty pair) ”h]”(jÈ)�”}”(hŒ``struct tty_struct *tty``”h]”jÎ)�”}”(hjZ4h]”hŒstruct tty_struct *tty”…”�”}”(hj\4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjX4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MþhjT4ubjä)�”}”(hhh]”hí)�”}”(hŒ,tty being shut down (or one end of pty pair)”h]”hŒ,tty being shut down (or one end of pty pair)”…”�”}”(hjs4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jo4h´Mþhjp4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjT4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jo4h´MþhjQ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj54ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj•4h]”hŒ Description”…”�”}”(hj—4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj“4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mhj54ubhí)�”}”(hŒ‹Called during the final close of a tty or a pty pair in order to shut down the line discpline layer. On exit, each tty's ldisc is ``NULL``.”h]”(hŒ„Called during the final close of a tty or a pty pair in order to shut down the line discpline layer. On exit, each tty’s ldisc is ”…”�”}”(hj«4h²hh³Nh´NubjÎ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj³4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj«4ubhŒ.”…”�”}”(hj«4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mÿhj54ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_init (C function)”Œc.tty_ldisc_init”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ+int tty_ldisc_init (struct tty_struct *tty)”h]”jm)�”}”(hŒ*int tty_ldisc_init(struct tty_struct *tty)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjì4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjè4h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû4h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjè4h²hh³jú4h´Mubj–)�”}”(hŒtty_ldisc_init”h]”jœ)�”}”(hŒtty_ldisc_init”h]”hŒtty_ldisc_init”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj 5ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hjè4h²hh³jú4h´Mubjµ)�”}”(hŒ(struct tty_struct *tty)”h]”j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hj)5h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj%5ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj65h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj%5ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjG5h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjD5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jI5Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj5sbŒc.tty_ldisc_init”†”asbuh1hhj%5ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj%5ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hj%5ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj‚5h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj%5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj!5ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hjè4h²hh³jú4h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihjä4h²hh³jú4h´Mubah}”(h]”jß4ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³jú4h´Mhjá4h²hubjv)�”}”(hhh]”hí)�”}”(hŒldisc setup for new tty”h]”hŒldisc setup for new tty”…”�”}”(hj¬5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mhj©5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjá4h²hh³jú4h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—jÄ5j˜jÄ5j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hŒÝ**Parameters** ``struct tty_struct *tty`` tty being allocated **Description** Set up the line discipline objects for a newly allocated tty. Note that the tty structure is not completely set up when this call is made.”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hjÎ5h]”hŒ Parameters”…”�”}”(hjÐ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjÌ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MhjÈ5ubj½)�”}”(hhh]”jÂ)�”}”(hŒ/``struct tty_struct *tty`` tty being allocated ”h]”(jÈ)�”}”(hŒ``struct tty_struct *tty``”h]”jÎ)�”}”(hjí5h]”hŒstruct tty_struct *tty”…”�”}”(hjï5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjë5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´Mhjç5ubjä)�”}”(hhh]”hí)�”}”(hŒtty being allocated”h]”hŒtty being allocated”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j6h´Mhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjç5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³j6h´Mhjä5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÈ5ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj(6h]”hŒ Description”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj&6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MhjÈ5ubhí)�”}”(hŒŠSet up the line discipline objects for a newly allocated tty. Note that the tty structure is not completely set up when this call is made.”h]”hŒŠSet up the line discipline objects for a newly allocated tty. Note that the tty structure is not completely set up when this call is made.”…”�”}”(hj>6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´MhjÈ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´NubjQ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j]Œtty_ldisc_deinit (C function)”Œc.tty_ldisc_deinit”hNt”auh1jPhj"h²hh³Nh´Nubjb)�”}”(hhh]”(jg)�”}”(hŒ.void tty_ldisc_deinit (struct tty_struct *tty)”h]”jm)�”}”(hŒ-void tty_ldisc_deinit(struct tty_struct *tty)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjm6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhji6h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|6h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hji6h²hh³j{6h´M,ubj–)�”}”(hŒtty_ldisc_deinit”h]”jœ)�”}”(hŒtty_ldisc_deinit”h]”hŒtty_ldisc_deinit”…”�”}”(hjŽ6h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjŠ6ubah}”(h]”h ]”(j¯j°eh"]”h$]”h&]”hÅhÆuh1j•hji6h²hh³j{6h´M,ubjµ)�”}”(hŒ(struct tty_struct *tty)”h]”j»)�”}”(hŒstruct tty_struct *tty”h]”(jÁ)�”}”(hjáh]”hŒstruct”…”�”}”(hjª6h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¦6ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·6h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¦6ubh)�”}”(hhh]”jœ)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÅ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jŒ reftarget”jÊ6Œmodname”NŒ classname”Njj)�”}”j]”j")�”}”jj�6sbŒc.tty_ldisc_deinit”†”asbuh1hhj¦6ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè6h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¦6ubj6)�”}”(hj9h]”hŒ*”…”�”}”(hjö6h²hh³Nh´Nubah}”(h]”h ]”jBah"]”h$]”h&]”uh1j5hj¦6ubjœ)�”}”(hŒtty”h]”hŒtty”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj¦6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jºhj¢6ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j´hji6h²hh³j{6h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjgˆuh1jljhjihje6h²hh³j{6h´M,ubah}”(h]”j`6ah ]”(jmjneh"]”h$]”h&]”jrˆjs)jthuh1jfh³j{6h´M,hjb6h²hubjv)�”}”(hhh]”hí)�”}”(hŒldisc cleanup for new tty”h]”hŒldisc cleanup for new tty”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M,hj*7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjb6h²hh³j{6h´M,ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j–jj—jE7j˜jE7j™‰jš‰j›‰uh1jah²hhj"h³Nh´Nubj�)�”}”(hŒº**Parameters** ``struct tty_struct *tty`` tty that was allocated recently **Description** The tty structure must not be completely set up (tty_ldisc_setup()) when this call is made.”h]”(hí)�”}”(hŒ**Parameters**”h]”j§)�”}”(hjO7h]”hŒ Parameters”…”�”}”(hjQ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjM7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M0hjI7ubj½)�”}”(hhh]”jÂ)�”}”(hŒ;``struct tty_struct *tty`` tty that was allocated recently ”h]”(jÈ)�”}”(hŒ``struct tty_struct *tty``”h]”jÎ)�”}”(hjn7h]”hŒstruct tty_struct *tty”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjl7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M-hjh7ubjä)�”}”(hhh]”hí)�”}”(hŒtty that was allocated recently”h]”hŒtty that was allocated recently”…”�”}”(hj‡7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jƒ7h´M-hj„7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jãhjh7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³jƒ7h´M-hje7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjI7ubhí)�”}”(hŒ**Description**”h]”j§)�”}”(hj©7h]”hŒ Description”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj§7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M/hjI7ubhí)�”}”(hŒ[The tty structure must not be completely set up (tty_ldisc_setup()) when this call is made.”h]”hŒ[The tty structure must not be completely set up (tty_ldisc_setup()) when this call is made.”…”�”}”(hj¿7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/tty/tty_ldisc:84: ./drivers/tty/tty_ldisc.c”h´M.hjI7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jœhj"h²hh³Nh´Nubeh}”(h]”jÎah ]”h"]”Œinternal functions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KRubeh}”(h]”Œtty-line-discipline”ah ]”h"]”Œtty line discipline”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”j8Œ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”}”Œrefids”}”Œnameids”}”(já7jÞ7jèjãjjj² j$j€jFj¦jhjjŠjj¬jÙ7jÎuŒ nametypes”}”(já7‰jè‰j‰j² ‰j€‰j¦‰j‰j‰jÙ7‰uh}”(jÞ7hÊjãhßjj"j_jhjcjhj$jj8j=jËjÐjFjµ jÒ jØ jhjƒjŠj©j¬jjDjIjSjXj!j&jÎj"j?jDjgjljèjíjõ jú j.#j3#jX%j]%jG'jL'jƒ)jˆ)j+j+j“,j˜,jñ.jö.j1j1jL3jQ3jß4jä4j`6je6hühójjj@j7jbjYj„j{j¦j�jÈj¿uŒ 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”“”}”j8Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.