€•ŒŒ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/console”Œ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/console”Œ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/console”Œ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/console”Œ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/console”Œ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/console”Œ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/console”Œ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³ŒD/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒConsole”h]”hŒConsole”…”�”}”(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ŒStruct Console”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œstruct-console”uh1hñhhîubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhhéubhã)�”}”(hhh]”hè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Internals”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œ internals”uh1hñhjubah}”(h]”h ]”h"]”h$]”h&]”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äubhè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Struct Consw”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ struct-consw”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ŒConsole functions”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œconsole-functions”uh1hñhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj\ubhã)�”}”(hhh]”hè)�”}”(hhh]”hí)�”}”(hhh]”hò)�”}”(hhh]”hŒ Internals”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œid1”uh1hñhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hâhj\ubeh}”(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É)�”}”(hhh]”(hÎ)�”}”(hŒStruct Console”h]”hŒStruct Console”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”hüuh1hÍhj¹h²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œcons_flags (C enum)”Œ c.cons_flags”hNt”auh1jËhj¹h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ cons_flags”h]”hŒdesc_signature_line”“”)�”}”(hŒenum cons_flags”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jíhjéh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jÿhjéh²hh³jþh´KubhŒ desc_name”“”)�”}”(hŒ cons_flags”h]”hŒ desc_sig_name”“”)�”}”(hjåh]”hŒ cons_flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jhjéh²hh³jþh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jçŒsphinx_line_type”Œ declarator”hjãh²hh³jþh´Kubah}”(h]”jÚah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jáh³jþh´KhjÞh²hubhŒ desc_content”“”)�”}”(hhh]”hí)�”}”(hŒGeneral console flags”h]”hŒGeneral console flags”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K�hjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÞh²hh³jþh´Kubeh}”(h]”h ]”(Œc”Œenum”eh"]”h$]”h&]”Œdomain”j_Œobjtype”j`Œdesctype”j`Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jÜh²hhj¹h³Nh´NubhŒ container”“”)�”}”(hX)**Constants** ``CON_PRINTBUFFER`` Used by newly registered consoles to avoid duplicate output of messages that were already shown by boot consoles or read by userspace via syslog() syscall. ``CON_CONSDEV`` Indicates that the console driver is backing /dev/console. ``CON_ENABLED`` Indicates if a console is allowed to print records. If false, the console also will not advance to later records. ``CON_BOOT`` Marks the console driver as early console driver which is used during boot before the real driver becomes available. It will be automatically unregistered when the real console driver is registered unless "keep_bootcon" parameter is used. ``CON_ANYTIME`` A misnomed historical flag which tells the core code that the legacy **console**::write callback can be invoked on a CPU which is marked OFFLINE. That is misleading as it suggests that there is no contextual limit for invoking the callback. The original motivation was readiness of the per-CPU areas. ``CON_BRL`` Indicates a braille device which is exempt from receiving the printk spam for obvious reasons. ``CON_EXTENDED`` The console supports the extended output format of /dev/kmsg which requires a larger output buffer. ``CON_SUSPENDED`` Indicates if a console is suspended. If true, the printing callbacks must not be called. ``CON_NBCON`` Console can operate outside of the legacy style console_lock constraints. ``CON_NBCON_ATOMIC_UNSAFE`` The write_atomic() callback is not safe and is therefore only used by nbcon_atomic_flush_unsafe().”h]”(hí)�”}”(hŒ **Constants**”h]”hŒstrong”“”)�”}”(hjrh]”hŒ Constants”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K¡hjlubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ°``CON_PRINTBUFFER`` Used by newly registered consoles to avoid duplicate output of messages that were already shown by boot consoles or read by userspace via syslog() syscall. ”h]”(hŒterm”“”)�”}”(hŒ``CON_PRINTBUFFER``”h]”hŒliteral”“”)�”}”(hj™h]”hŒCON_PRINTBUFFER”…”�”}”(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/console:12: ./include/linux/console.h”h´K¦hj‘ubhŒ definition”“”)�”}”(hhh]”hí)�”}”(hŒ›Used by newly registered consoles to avoid duplicate output of messages that were already shown by boot consoles or read by userspace via syslog() syscall.”h]”hŒ›Used by newly registered consoles to avoid duplicate output of messages that were already shown by boot consoles or read by userspace via syslog() syscall.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.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ŒK``CON_CONSDEV`` Indicates that the console driver is backing /dev/console. ”h]”(j–)�”}”(hŒ``CON_CONSDEV``”h]”jœ)�”}”(hj×h]”hŒ CON_CONSDEV”…”�”}”(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/console:12: ./include/linux/console.h”h´KªhjÑubj²)�”}”(hhh]”hí)�”}”(hŒ:Indicates that the console driver is backing /dev/console.”h]”hŒ:Indicates that the console driver is backing /dev/console.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.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Œ‚``CON_ENABLED`` Indicates if a console is allowed to print records. If false, the console also will not advance to later records. ”h]”(j–)�”}”(hŒ``CON_ENABLED``”h]”jœ)�”}”(hjh]”hŒ CON_ENABLED”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K¯hj ubj²)�”}”(hhh]”hí)�”}”(hŒqIndicates if a console is allowed to print records. If false, the console also will not advance to later records.”h]”hŒqIndicates if a console is allowed to print records. If false, the console also will not advance to later records.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.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Œü``CON_BOOT`` Marks the console driver as early console driver which is used during boot before the real driver becomes available. It will be automatically unregistered when the real console driver is registered unless "keep_bootcon" parameter is used. ”h]”(j–)�”}”(hŒ ``CON_BOOT``”h]”jœ)�”}”(hjKh]”hŒCON_BOOT”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K¶hjEubj²)�”}”(hhh]”hí)�”}”(hŒîMarks the console driver as early console driver which is used during boot before the real driver becomes available. It will be automatically unregistered when the real console driver is registered unless "keep_bootcon" parameter is used.”h]”hŒòMarks the console driver as early console driver which is used during boot before the real driver becomes available. It will be automatically unregistered when the real console driver is registered unless “keep_bootconâ€� parameter is used.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K²hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j`h´K¶hjŒubj�)�”}”(hX=``CON_ANYTIME`` A misnomed historical flag which tells the core code that the legacy **console**::write callback can be invoked on a CPU which is marked OFFLINE. That is misleading as it suggests that there is no contextual limit for invoking the callback. The original motivation was readiness of the per-CPU areas. ”h]”(j–)�”}”(hŒ``CON_ANYTIME``”h]”jœ)�”}”(hj…h]”hŒ CON_ANYTIME”…”�”}”(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/console:12: ./include/linux/console.h”h´K¾hjubj²)�”}”(hhh]”hí)�”}”(hX,A misnomed historical flag which tells the core code that the legacy **console**::write callback can be invoked on a CPU which is marked OFFLINE. That is misleading as it suggests that there is no contextual limit for invoking the callback. The original motivation was readiness of the per-CPU areas.”h]”(hŒEA misnomed historical flag which tells the core code that the legacy ”…”�”}”(hjžh²hh³Nh´Nubju)�”}”(hŒ **console**”h]”hŒconsole”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjžubhŒÜ::write callback can be invoked on a CPU which is marked OFFLINE. That is misleading as it suggests that there is no contextual limit for invoking the callback. The original motivation was readiness of the per-CPU areas.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K¹hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jšh´K¾hjŒubj�)�”}”(hŒk``CON_BRL`` Indicates a braille device which is exempt from receiving the printk spam for obvious reasons. ”h]”(j–)�”}”(hŒ ``CON_BRL``”h]”jœ)�”}”(hjÑh]”hŒCON_BRL”…”�”}”(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/console:12: ./include/linux/console.h”h´KÂhjËubj²)�”}”(hhh]”hí)�”}”(hŒ^Indicates a braille device which is exempt from receiving the printk spam for obvious reasons.”h]”hŒ^Indicates a braille device which is exempt from receiving the printk spam for obvious reasons.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.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Œu``CON_EXTENDED`` The console supports the extended output format of /dev/kmsg which requires a larger output buffer. ”h]”(j–)�”}”(hŒ``CON_EXTENDED``”h]”jœ)�”}”(hj h]”hŒ CON_EXTENDED”…”�”}”(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/console:12: ./include/linux/console.h”h´KÆhjubj²)�”}”(hhh]”hí)�”}”(hŒcThe console supports the extended output format of /dev/kmsg which requires a larger output buffer.”h]”hŒcThe console supports the extended output format of /dev/kmsg which requires a larger output buffer.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´KÅhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´KÆhjŒubj�)�”}”(hŒk``CON_SUSPENDED`` Indicates if a console is suspended. If true, the printing callbacks must not be called. ”h]”(j–)�”}”(hŒ``CON_SUSPENDED``”h]”jœ)�”}”(hjEh]”hŒ CON_SUSPENDED”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´KÊhj?ubj²)�”}”(hhh]”hí)�”}”(hŒXIndicates if a console is suspended. If true, the printing callbacks must not be called.”h]”hŒXIndicates if a console is suspended. If true, the printing callbacks must not be called.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´KÉhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jZh´KÊhjŒubj�)�”}”(hŒX``CON_NBCON`` Console can operate outside of the legacy style console_lock constraints. ”h]”(j–)�”}”(hŒ ``CON_NBCON``”h]”jœ)�”}”(hjh]”hŒ CON_NBCON”…”�”}”(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/console:12: ./include/linux/console.h”h´KÎhjyubj²)�”}”(hhh]”hí)�”}”(hŒIConsole can operate outside of the legacy style console_lock constraints.”h]”hŒIConsole can operate outside of the legacy style console_lock constraints.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´KÍhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j”h´KÎhjŒubj�)�”}”(hŒ~``CON_NBCON_ATOMIC_UNSAFE`` The write_atomic() callback is not safe and is therefore only used by nbcon_atomic_flush_unsafe().”h]”(j–)�”}”(hŒ``CON_NBCON_ATOMIC_UNSAFE``”h]”jœ)�”}”(hj¹h]”hŒCON_NBCON_ATOMIC_UNSAFE”…”�”}”(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/console:12: ./include/linux/console.h”h´KÑhj³ubj²)�”}”(hhh]”hí)�”}”(hŒbThe write_atomic() callback is not safe and is therefore only used by nbcon_atomic_flush_unsafe().”h]”hŒbThe write_atomic() callback is not safe and is therefore only used by nbcon_atomic_flush_unsafe().”…”�”}”(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Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj¹h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒconsole (C struct)”Œ c.console”hNt”auh1jËhj¹h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒconsole”h]”jè)�”}”(hŒstruct console”h]”(jî)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´K×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjh²hh³j h´K×ubj)�”}”(hŒconsole”h]”j)�”}”(hj h]”hŒconsole”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjh²hh³j h´K×ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj h²hh³j h´K×ubah}”(h]”jah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j h´K×hjh²hubjC)�”}”(hhh]”hí)�”}”(hŒ The console descriptor structure”h]”hŒ The console descriptor structure”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M:hjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh²hh³j h´K×ubeh}”(h]”h ]”(j_Œstruct”eh"]”h$]”h&]”jdj_jejmjfjmjg‰jh‰ji‰uh1jÜh²hhj¹h³Nh´Nubjk)�”}”(hX**Definition**:: struct console { char name[16]; void (*write)(struct console *co, const char *s, unsigned int count); int (*read)(struct console *co, char *s, unsigned int count); struct tty_driver *(*device)(struct console *co, int *index); void (*unblank)(void); int (*setup)(struct console *co, char *options); int (*exit)(struct console *co); int (*match)(struct console *co, char *name, int idx, char *options); short flags; short index; int cflag; uint ispeed; uint ospeed; u64 seq; unsigned long dropped; void *data; struct hlist_node node; void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt); void (*write_thread)(struct console *con, struct nbcon_write_context *wctxt); void (*device_lock)(struct console *con, unsigned long *flags); void (*device_unlock)(struct console *con, unsigned long flags); atomic_t nbcon_state; atomic_long_t nbcon_seq; struct nbcon_context nbcon_device_ctxt; atomic_long_t nbcon_prev_seq; struct printk_buffers *pbufs; struct task_struct *kthread; struct rcuwait rcuwait; struct irq_work irq_work; }; **Members** ``name`` The name of the console driver ``write`` Legacy write callback to output messages (Optional) ``read`` Read callback for console input (Optional) ``device`` The underlying TTY device driver (Optional) ``unblank`` Callback to unblank the console (Optional) ``setup`` Callback for initializing the console (Optional) ``exit`` Callback for teardown of the console (Optional) ``match`` Callback for matching a console (Optional) ``flags`` Console flags. See enum cons_flags ``index`` Console index, e.g. port number ``cflag`` TTY control mode flags ``ispeed`` TTY input speed ``ospeed`` TTY output speed ``seq`` Sequence number of the next ringbuffer record to print ``dropped`` Number of unreported dropped ringbuffer records ``data`` Driver private data ``node`` hlist node for the console list ``write_atomic`` NBCON callback to write out text in any context. (Optional) This callback is called with the console already acquired. However, a higher priority context is allowed to take it over by default. The callback must call nbcon_enter_unsafe() and nbcon_exit_unsafe() around any code where the takeover is not safe, for example, when manipulating the serial port registers. nbcon_enter_unsafe() will fail if the context has lost the console ownership in the meantime. In this case, the callback is no longer allowed to go forward. It must back out immediately and carefully. The buffer content is also no longer trusted since it no longer belongs to the context. The callback should allow the takeover whenever it is safe. It increases the chance to see messages when the system is in trouble. If the driver must reacquire ownership in order to finalize or revert hardware changes, nbcon_reacquire_nobuf() can be used. However, on reacquire the buffer content is no longer available. A reacquire cannot be used to resume printing. The callback can be called from any context (including NMI). Therefore it must avoid usage of any locking and instead rely on the console ownership for synchronization. ``write_thread`` NBCON callback to write out text in task context. This callback must be called only in task context with both device_lock() and the nbcon console acquired with NBCON_PRIO_NORMAL. The same rules for console ownership verification and unsafe sections handling applies as with write_atomic(). The console ownership handling is necessary for synchronization against write_atomic() which is synchronized only via the context. The device_lock() provides the primary serialization for operations on the device. It might be as relaxed (mutex)[*] or as tight (disabled preemption and interrupts) as needed. It allows the kthread to operate in the least restrictive mode[**]. [*] Standalone nbcon_context_try_acquire() is not safe with the preemption enabled, see nbcon_owner_matches(). But it can be safe when always called in the preemptive context under the device_lock(). [**] The device_lock() makes sure that nbcon_context_try_acquire() would never need to spin which is important especially with PREEMPT_RT. ``device_lock`` NBCON callback to begin synchronization with driver code. Console drivers typically must deal with access to the hardware via user input/output (such as an interactive login shell) and output of kernel messages via printk() calls. This callback is called by the printk-subsystem whenever it needs to synchronize with hardware access by the driver. It should be implemented to use whatever synchronization mechanism the driver is using for itself (for example, the port lock for uart serial consoles). The callback is always called from task context. It may use any synchronization method required by the driver. IMPORTANT: The callback MUST disable migration. The console driver may be using a synchronization mechanism that already takes care of this (such as spinlocks). Otherwise this function must explicitly call migrate_disable(). The flags argument is provided as a convenience to the driver. It will be passed again to device_unlock(). It can be ignored if the driver does not need it. ``device_unlock`` NBCON callback to finish synchronization with driver code. It is the counterpart to device_lock(). This callback is always called from task context. It must appropriately re-enable migration (depending on how device_lock() disabled migration). The flags argument is the value of the same variable that was passed to device_lock(). ``nbcon_state`` State for nbcon consoles ``nbcon_seq`` Sequence number of the next record for nbcon to print ``nbcon_device_ctxt`` Context available for non-printing operations ``nbcon_prev_seq`` Seq num the previous nbcon owner was assigned to print ``pbufs`` Pointer to nbcon private buffer ``kthread`` Printer kthread for this console ``rcuwait`` RCU-safe wait object for **kthread** waking ``irq_work`` Defer **kthread** waking to IRQ work context”h]”(hí)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjuubhŒ:”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M>hjqubhŒ literal_block”“”)�”}”(hXºstruct console { char name[16]; void (*write)(struct console *co, const char *s, unsigned int count); int (*read)(struct console *co, char *s, unsigned int count); struct tty_driver *(*device)(struct console *co, int *index); void (*unblank)(void); int (*setup)(struct console *co, char *options); int (*exit)(struct console *co); int (*match)(struct console *co, char *name, int idx, char *options); short flags; short index; int cflag; uint ispeed; uint ospeed; u64 seq; unsigned long dropped; void *data; struct hlist_node node; void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt); void (*write_thread)(struct console *con, struct nbcon_write_context *wctxt); void (*device_lock)(struct console *con, unsigned long *flags); void (*device_unlock)(struct console *con, unsigned long flags); atomic_t nbcon_state; atomic_long_t nbcon_seq; struct nbcon_context nbcon_device_ctxt; atomic_long_t nbcon_prev_seq; struct printk_buffers *pbufs; struct task_struct *kthread; struct rcuwait rcuwait; struct irq_work irq_work; };”h]”hXºstruct console { char name[16]; void (*write)(struct console *co, const char *s, unsigned int count); int (*read)(struct console *co, char *s, unsigned int count); struct tty_driver *(*device)(struct console *co, int *index); void (*unblank)(void); int (*setup)(struct console *co, char *options); int (*exit)(struct console *co); int (*match)(struct console *co, char *name, int idx, char *options); short flags; short index; int cflag; uint ispeed; uint ospeed; u64 seq; unsigned long dropped; void *data; struct hlist_node node; void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt); void (*write_thread)(struct console *con, struct nbcon_write_context *wctxt); void (*device_lock)(struct console *con, unsigned long *flags); void (*device_unlock)(struct console *con, unsigned long flags); atomic_t nbcon_state; atomic_long_t nbcon_seq; struct nbcon_context nbcon_device_ctxt; atomic_long_t nbcon_prev_seq; struct printk_buffers *pbufs; struct task_struct *kthread; struct rcuwait rcuwait; struct irq_work irq_work; };”…”�”}”hj”sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M@hjqubhí)�”}”(hŒ **Members**”h]”ju)�”}”(hj¥h]”hŒMembers”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M`hjqubj‹)�”}”(hhh]”(j�)�”}”(hŒ(``name`` The name of the console driver ”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³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M<hj¾ubj²)�”}”(hhh]”hí)�”}”(hŒThe name of the console driver”h]”hŒThe name of the console driver”…”�”}”(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Œ>``write`` Legacy write callback to output messages (Optional) ”h]”(j–)�”}”(hŒ ``write``”h]”jœ)�”}”(hjýh]”hŒwrite”…”�”}”(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/console:12: ./include/linux/console.h”h´M=hj÷ubj²)�”}”(hhh]”hí)�”}”(hŒ3Legacy write callback to output messages (Optional)”h]”hŒ3Legacy write callback to output messages (Optional)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´M=hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´M=hj»ubj�)�”}”(hŒ4``read`` Read callback for console input (Optional) ”h]”(j–)�”}”(hŒ``read``”h]”jœ)�”}”(hj6h]”hŒread”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M>hj0ubj²)�”}”(hhh]”hí)�”}”(hŒ*Read callback for console input (Optional)”h]”hŒ*Read callback for console input (Optional)”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jKh´M>hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jKh´M>hj»ubj�)�”}”(hŒ7``device`` The underlying TTY device driver (Optional) ”h]”(j–)�”}”(hŒ ``device``”h]”jœ)�”}”(hjoh]”hŒdevice”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M?hjiubj²)�”}”(hhh]”hí)�”}”(hŒ+The underlying TTY device driver (Optional)”h]”hŒ+The underlying TTY device driver (Optional)”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j„h´M?hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j„h´M?hj»ubj�)�”}”(hŒ7``unblank`` Callback to unblank the console (Optional) ”h]”(j–)�”}”(hŒ ``unblank``”h]”jœ)�”}”(hj¨h]”hŒunblank”…”�”}”(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/console:12: ./include/linux/console.h”h´M@hj¢ubj²)�”}”(hhh]”hí)�”}”(hŒ*Callback to unblank the console (Optional)”h]”hŒ*Callback to unblank the console (Optional)”…”�”}”(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Œ;``setup`` Callback for initializing the console (Optional) ”h]”(j–)�”}”(hŒ ``setup``”h]”jœ)�”}”(hjáh]”hŒsetup”…”�”}”(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/console:12: ./include/linux/console.h”h´MAhjÛubj²)�”}”(hhh]”hí)�”}”(hŒ0Callback for initializing the console (Optional)”h]”hŒ0Callback for initializing the console (Optional)”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jöh´MAhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jöh´MAhj»ubj�)�”}”(hŒ9``exit`` Callback for teardown of the console (Optional) ”h]”(j–)�”}”(hŒ``exit``”h]”jœ)�”}”(hjh]”hŒexit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MBhjubj²)�”}”(hhh]”hí)�”}”(hŒ/Callback for teardown of the console (Optional)”h]”hŒ/Callback for teardown of the console (Optional)”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j/h´MBhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j/h´MBhj»ubj�)�”}”(hŒ5``match`` Callback for matching a console (Optional) ”h]”(j–)�”}”(hŒ ``match``”h]”jœ)�”}”(hjSh]”hŒmatch”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MChjMubj²)�”}”(hhh]”hí)�”}”(hŒ*Callback for matching a console (Optional)”h]”hŒ*Callback for matching a console (Optional)”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jhh´MChjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jhh´MChj»ubj�)�”}”(hŒ-``flags`` Console flags. See enum cons_flags ”h]”(j–)�”}”(hŒ ``flags``”h]”jœ)�”}”(hjŒh]”hŒflags”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MDhj†ubj²)�”}”(hhh]”hí)�”}”(hŒ"Console flags. See enum cons_flags”h]”hŒ"Console flags. See enum cons_flags”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¡h´MDhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¡h´MDhj»ubj�)�”}”(hŒ*``index`` Console index, e.g. port number ”h]”(j–)�”}”(hŒ ``index``”h]”jœ)�”}”(hjÅh]”hŒindex”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MEhj¿ubj²)�”}”(hhh]”hí)�”}”(hŒConsole index, e.g. port number”h]”hŒConsole index, e.g. port number”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÚh´MEhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÚh´MEhj»ubj�)�”}”(hŒ!``cflag`` TTY control mode flags ”h]”(j–)�”}”(hŒ ``cflag``”h]”jœ)�”}”(hjþh]”hŒcflag”…”�”}”(hjh²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/console:12: ./include/linux/console.h”h´MFhjøubj²)�”}”(hhh]”hí)�”}”(hŒTTY control mode flags”h]”hŒTTY control mode flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´MFhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´MFhj»ubj�)�”}”(hŒ``ispeed`` TTY input speed ”h]”(j–)�”}”(hŒ ``ispeed``”h]”jœ)�”}”(hj7h]”hŒispeed”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MGhj1ubj²)�”}”(hhh]”hí)�”}”(hŒTTY input speed”h]”hŒTTY input speed”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jLh´MGhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jLh´MGhj»ubj�)�”}”(hŒ``ospeed`` TTY output speed ”h]”(j–)�”}”(hŒ ``ospeed``”h]”jœ)�”}”(hjph]”hŒospeed”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MHhjjubj²)�”}”(hhh]”hí)�”}”(hŒTTY output speed”h]”hŒTTY output speed”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j…h´MHhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j…h´MHhj»ubj�)�”}”(hŒ?``seq`` Sequence number of the next ringbuffer record to print ”h]”(j–)�”}”(hŒ``seq``”h]”jœ)�”}”(hj©h]”hŒseq”…”�”}”(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/console:12: ./include/linux/console.h”h´MIhj£ubj²)�”}”(hhh]”hí)�”}”(hŒ6Sequence number of the next ringbuffer record to print”h]”hŒ6Sequence number of the next ringbuffer record to print”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¾h´MIhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¾h´MIhj»ubj�)�”}”(hŒ<``dropped`` Number of unreported dropped ringbuffer records ”h]”(j–)�”}”(hŒ ``dropped``”h]”jœ)�”}”(hjâh]”hŒdropped”…”�”}”(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/console:12: ./include/linux/console.h”h´MJhjÜubj²)�”}”(hhh]”hí)�”}”(hŒ/Number of unreported dropped ringbuffer records”h]”hŒ/Number of unreported dropped ringbuffer records”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j÷h´MJhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j÷h´MJhj»ubj�)�”}”(hŒ``data`` Driver private data ”h]”(j–)�”}”(hŒ``data``”h]”jœ)�”}”(hj h]”hŒdata”…”�”}”(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/console:12: ./include/linux/console.h”h´MKhj ubj²)�”}”(hhh]”hí)�”}”(hŒDriver private data”h]”hŒDriver private data”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j0 h´MKhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j0 h´MKhj»ubj�)�”}”(hŒ)``node`` hlist node for the console list ”h]”(j–)�”}”(hŒ``node``”h]”jœ)�”}”(hjT h]”hŒnode”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MLhjN ubj²)�”}”(hhh]”hí)�”}”(hŒhlist node for the console list”h]”hŒhlist node for the console list”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ji h´MLhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³ji h´MLhj»ubj�)�”}”(hX¿``write_atomic`` NBCON callback to write out text in any context. (Optional) This callback is called with the console already acquired. However, a higher priority context is allowed to take it over by default. The callback must call nbcon_enter_unsafe() and nbcon_exit_unsafe() around any code where the takeover is not safe, for example, when manipulating the serial port registers. nbcon_enter_unsafe() will fail if the context has lost the console ownership in the meantime. In this case, the callback is no longer allowed to go forward. It must back out immediately and carefully. The buffer content is also no longer trusted since it no longer belongs to the context. The callback should allow the takeover whenever it is safe. It increases the chance to see messages when the system is in trouble. If the driver must reacquire ownership in order to finalize or revert hardware changes, nbcon_reacquire_nobuf() can be used. However, on reacquire the buffer content is no longer available. A reacquire cannot be used to resume printing. The callback can be called from any context (including NMI). Therefore it must avoid usage of any locking and instead rely on the console ownership for synchronization. ”h]”(j–)�”}”(hŒ``write_atomic``”h]”jœ)�”}”(hj� h]”hŒ write_atomic”…”�”}”(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/console:12: ./include/linux/console.h”h´M…hj‡ ubj²)�”}”(hhh]”(hí)�”}”(hŒ;NBCON callback to write out text in any context. (Optional)”h]”hŒ;NBCON callback to write out text in any context. (Optional)”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mmhj£ ubhí)�”}”(hŒ„This callback is called with the console already acquired. However, a higher priority context is allowed to take it over by default.”h]”hŒ„This callback is called with the console already acquired. However, a higher priority context is allowed to take it over by default.”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mohj£ ubhí)�”}”(hŒ­The callback must call nbcon_enter_unsafe() and nbcon_exit_unsafe() around any code where the takeover is not safe, for example, when manipulating the serial port registers.”h]”hŒ­The callback must call nbcon_enter_unsafe() and nbcon_exit_unsafe() around any code where the takeover is not safe, for example, when manipulating the serial port registers.”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mrhj£ ubhí)�”}”(hX nbcon_enter_unsafe() will fail if the context has lost the console ownership in the meantime. In this case, the callback is no longer allowed to go forward. It must back out immediately and carefully. The buffer content is also no longer trusted since it no longer belongs to the context.”h]”hX nbcon_enter_unsafe() will fail if the context has lost the console ownership in the meantime. In this case, the callback is no longer allowed to go forward. It must back out immediately and carefully. The buffer content is also no longer trusted since it no longer belongs to the context.”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mvhj£ ubhí)�”}”(hXoThe callback should allow the takeover whenever it is safe. It increases the chance to see messages when the system is in trouble. If the driver must reacquire ownership in order to finalize or revert hardware changes, nbcon_reacquire_nobuf() can be used. However, on reacquire the buffer content is no longer available. A reacquire cannot be used to resume printing.”h]”hXoThe callback should allow the takeover whenever it is safe. It increases the chance to see messages when the system is in trouble. If the driver must reacquire ownership in order to finalize or revert hardware changes, nbcon_reacquire_nobuf() can be used. However, on reacquire the buffer content is no longer available. A reacquire cannot be used to resume printing.”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M|hj£ ubhí)�”}”(hŒ¨The callback can be called from any context (including NMI). Therefore it must avoid usage of any locking and instead rely on the console ownership for synchronization.”h]”hŒ¨The callback can be called from any context (including NMI). Therefore it must avoid usage of any locking and instead rely on the console ownership for synchronization.”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mƒhj£ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±hj‡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¢ h´M…hj»ubj�)�”}”(hX``write_thread`` NBCON callback to write out text in task context. This callback must be called only in task context with both device_lock() and the nbcon console acquired with NBCON_PRIO_NORMAL. The same rules for console ownership verification and unsafe sections handling applies as with write_atomic(). The console ownership handling is necessary for synchronization against write_atomic() which is synchronized only via the context. The device_lock() provides the primary serialization for operations on the device. It might be as relaxed (mutex)[*] or as tight (disabled preemption and interrupts) as needed. It allows the kthread to operate in the least restrictive mode[**]. [*] Standalone nbcon_context_try_acquire() is not safe with the preemption enabled, see nbcon_owner_matches(). But it can be safe when always called in the preemptive context under the device_lock(). [**] The device_lock() makes sure that nbcon_context_try_acquire() would never need to spin which is important especially with PREEMPT_RT. ”h]”(j–)�”}”(hŒ``write_thread``”h]”jœ)�”}”(hj h]”hŒ write_thread”…”�”}”(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/console:12: ./include/linux/console.h”h´M¤hj ubj²)�”}”(hhh]”(hí)�”}”(hŒ1NBCON callback to write out text in task context.”h]”hŒ1NBCON callback to write out text in task context.”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MŒhj( ubhí)�”}”(hŒ€This callback must be called only in task context with both device_lock() and the nbcon console acquired with NBCON_PRIO_NORMAL.”h]”hŒ€This callback must be called only in task context with both device_lock() and the nbcon console acquired with NBCON_PRIO_NORMAL.”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MŽhj( ubhí)�”}”(hŒnThe same rules for console ownership verification and unsafe sections handling applies as with write_atomic().”h]”hŒnThe same rules for console ownership verification and unsafe sections handling applies as with write_atomic().”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M’hj( ubhí)�”}”(hŒ‚The console ownership handling is necessary for synchronization against write_atomic() which is synchronized only via the context.”h]”hŒ‚The console ownership handling is necessary for synchronization against write_atomic() which is synchronized only via the context.”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M•hj( ubhí)�”}”(hŒôThe device_lock() provides the primary serialization for operations on the device. It might be as relaxed (mutex)[*] or as tight (disabled preemption and interrupts) as needed. It allows the kthread to operate in the least restrictive mode[**].”h]”hŒôThe device_lock() provides the primary serialization for operations on the device. It might be as relaxed (mutex)[*] or as tight (disabled preemption and interrupts) as needed. It allows the kthread to operate in the least restrictive mode[**].”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M˜hj( ubj‹)�”}”(hhh]”(j�)�”}”(hŒÈ[*] Standalone nbcon_context_try_acquire() is not safe with the preemption enabled, see nbcon_owner_matches(). But it can be safe when always called in the preemptive context under the device_lock(). ”h]”(j–)�”}”(hŒ;[*] Standalone nbcon_context_try_acquire() is not safe with”h]”hŒ;[*] Standalone nbcon_context_try_acquire() is not safe with”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M hjy ubj²)�”}”(hhh]”hí)�”}”(hŒ‹the preemption enabled, see nbcon_owner_matches(). But it can be safe when always called in the preemptive context under the device_lock().”h]”hŒ‹the preemption enabled, see nbcon_owner_matches(). But it can be safe when always called in the preemptive context under the device_lock().”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MžhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‹ h´M hjv ubj�)�”}”(hŒ‹[**] The device_lock() makes sure that nbcon_context_try_acquire() would never need to spin which is important especially with PREEMPT_RT. ”h]”(j–)�”}”(hŒB[**] The device_lock() makes sure that nbcon_context_try_acquire()”h]”hŒB[**] The device_lock() makes sure that nbcon_context_try_acquire()”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³j' h´M¤hjª ubj²)�”}”(hhh]”hí)�”}”(hŒGwould never need to spin which is important especially with PREEMPT_RT.”h]”hŒGwould never need to spin which is important especially with PREEMPT_RT.”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M£hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjª ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j' h´M¤hjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j' h´M¤hj»ubj�)�”}”(hX``device_lock`` NBCON callback to begin synchronization with driver code. Console drivers typically must deal with access to the hardware via user input/output (such as an interactive login shell) and output of kernel messages via printk() calls. This callback is called by the printk-subsystem whenever it needs to synchronize with hardware access by the driver. It should be implemented to use whatever synchronization mechanism the driver is using for itself (for example, the port lock for uart serial consoles). The callback is always called from task context. It may use any synchronization method required by the driver. IMPORTANT: The callback MUST disable migration. The console driver may be using a synchronization mechanism that already takes care of this (such as spinlocks). Otherwise this function must explicitly call migrate_disable(). The flags argument is provided as a convenience to the driver. It will be passed again to device_unlock(). It can be ignored if the driver does not need it. ”h]”(j–)�”}”(hŒ``device_lock``”h]”jœ)�”}”(hjò h]”hŒ device_lock”…”�”}”(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/console:12: ./include/linux/console.h”h´M¿hjì ubj²)�”}”(hhh]”(hí)�”}”(hŒ9NBCON callback to begin synchronization with driver code.”h]”hŒ9NBCON callback to begin synchronization with driver code.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M«hj ubhí)�”}”(hXºConsole drivers typically must deal with access to the hardware via user input/output (such as an interactive login shell) and output of kernel messages via printk() calls. This callback is called by the printk-subsystem whenever it needs to synchronize with hardware access by the driver. It should be implemented to use whatever synchronization mechanism the driver is using for itself (for example, the port lock for uart serial consoles).”h]”hXºConsole drivers typically must deal with access to the hardware via user input/output (such as an interactive login shell) and output of kernel messages via printk() calls. This callback is called by the printk-subsystem whenever it needs to synchronize with hardware access by the driver. It should be implemented to use whatever synchronization mechanism the driver is using for itself (for example, the port lock for uart serial consoles).”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M­hj ubhí)�”}”(hŒnThe callback is always called from task context. It may use any synchronization method required by the driver.”h]”hŒnThe callback is always called from task context. It may use any synchronization method required by the driver.”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´Mµhj ubj‹)�”}”(hhh]”j�)�”}”(hŒáIMPORTANT: The callback MUST disable migration. The console driver may be using a synchronization mechanism that already takes care of this (such as spinlocks). Otherwise this function must explicitly call migrate_disable(). ”h]”(j–)�”}”(hŒBIMPORTANT: The callback MUST disable migration. The console driver”h]”hŒBIMPORTANT: The callback MUST disable migration. The console driver”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M»hj; ubj²)�”}”(hhh]”hí)�”}”(hŒ�may be using a synchronization mechanism that already takes care of this (such as spinlocks). Otherwise this function must explicitly call migrate_disable().”h]”hŒ�may be using a synchronization mechanism that already takes care of this (such as spinlocks). Otherwise this function must explicitly call migrate_disable().”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M¹hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj; ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jM h´M»hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj ubhí)�”}”(hŒœThe flags argument is provided as a convenience to the driver. It will be passed again to device_unlock(). It can be ignored if the driver does not need it.”h]”hŒœThe flags argument is provided as a convenience to the driver. It will be passed again to device_unlock(). It can be ignored if the driver does not need it.”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´M½hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±hjì ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´M¿hj»ubj�)�”}”(hX```device_unlock`` NBCON callback to finish synchronization with driver code. It is the counterpart to device_lock(). This callback is always called from task context. It must appropriately re-enable migration (depending on how device_lock() disabled migration). The flags argument is the value of the same variable that was passed to device_lock(). ”h]”(j–)�”}”(hŒ``device_unlock``”h]”jœ)�”}”(hj“ h]”hŒ device_unlock”…”�”}”(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/console:12: ./include/linux/console.h”h´MÏhj� ubj²)�”}”(hhh]”(hí)�”}”(hŒ:NBCON callback to finish synchronization with driver code.”h]”hŒ:NBCON callback to finish synchronization with driver code.”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MÆhj© ubhí)�”}”(hŒ'It is the counterpart to device_lock().”h]”hŒ'It is the counterpart to device_lock().”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MÈhj© ubhí)�”}”(hŒ�This callback is always called from task context. It must appropriately re-enable migration (depending on how device_lock() disabled migration).”h]”hŒ�This callback is always called from task context. It must appropriately re-enable migration (depending on how device_lock() disabled migration).”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MÊhj© ubhí)�”}”(hŒVThe flags argument is the value of the same variable that was passed to device_lock().”h]”hŒVThe flags argument is the value of the same variable that was passed to device_lock().”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MÎhj© ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j±hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¨ h´MÏhj»ubj�)�”}”(hŒ)``nbcon_state`` State for nbcon consoles ”h]”(j–)�”}”(hŒ``nbcon_state``”h]”jœ)�”}”(hjú h]”hŒ nbcon_state”…”�”}”(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/console:12: ./include/linux/console.h”h´MNhjô ubj²)�”}”(hhh]”hí)�”}”(hŒState for nbcon consoles”h]”hŒState for nbcon consoles”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j h´MNhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´MNhj»ubj�)�”}”(hŒD``nbcon_seq`` Sequence number of the next record for nbcon to print ”h]”(j–)�”}”(hŒ ``nbcon_seq``”h]”jœ)�”}”(hj3 h]”hŒ nbcon_seq”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MOhj- ubj²)�”}”(hhh]”hí)�”}”(hŒ5Sequence number of the next record for nbcon to print”h]”hŒ5Sequence number of the next record for nbcon to print”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jH h´MOhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jH h´MOhj»ubj�)�”}”(hŒD``nbcon_device_ctxt`` Context available for non-printing operations ”h]”(j–)�”}”(hŒ``nbcon_device_ctxt``”h]”jœ)�”}”(hjl h]”hŒnbcon_device_ctxt”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MPhjf ubj²)�”}”(hhh]”hí)�”}”(hŒ-Context available for non-printing operations”h]”hŒ-Context available for non-printing operations”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j� h´MPhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjf ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j� h´MPhj»ubj�)�”}”(hŒJ``nbcon_prev_seq`` Seq num the previous nbcon owner was assigned to print ”h]”(j–)�”}”(hŒ``nbcon_prev_seq``”h]”jœ)�”}”(hj¥ h]”hŒnbcon_prev_seq”…”�”}”(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/console:12: ./include/linux/console.h”h´MQhjŸ ubj²)�”}”(hhh]”hí)�”}”(hŒ6Seq num the previous nbcon owner was assigned to print”h]”hŒ6Seq num the previous nbcon owner was assigned to print”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jº h´MQhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjŸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jº h´MQhj»ubj�)�”}”(hŒ*``pbufs`` Pointer to nbcon private buffer ”h]”(j–)�”}”(hŒ ``pbufs``”h]”jœ)�”}”(hjÞ h]”hŒpbufs”…”�”}”(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/console:12: ./include/linux/console.h”h´MRhjØ ubj²)�”}”(hhh]”hí)�”}”(hŒPointer to nbcon private buffer”h]”hŒPointer to nbcon private buffer”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jó h´MRhjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjØ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jó h´MRhj»ubj�)�”}”(hŒ-``kthread`` Printer kthread for this console ”h]”(j–)�”}”(hŒ ``kthread``”h]”jœ)�”}”(hj h]”hŒkthread”…”�”}”(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/console:12: ./include/linux/console.h”h´MShj ubj²)�”}”(hhh]”hí)�”}”(hŒ Printer kthread for this console”h]”hŒ Printer kthread for this console”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j, h´MShj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j, h´MShj»ubj�)�”}”(hŒ8``rcuwait`` RCU-safe wait object for **kthread** waking ”h]”(j–)�”}”(hŒ ``rcuwait``”h]”jœ)�”}”(hjP h]”hŒrcuwait”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MThjJ ubj²)�”}”(hhh]”hí)�”}”(hŒ+RCU-safe wait object for **kthread** waking”h]”(hŒRCU-safe wait object for ”…”�”}”(hji h²hh³Nh´Nubju)�”}”(hŒ **kthread**”h]”hŒkthread”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthji ubhŒ waking”…”�”}”(hji h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³je h´MThjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjJ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³je h´MThj»ubj�)�”}”(hŒ9``irq_work`` Defer **kthread** waking to IRQ work context”h]”(j–)�”}”(hŒ ``irq_work``”h]”jœ)�”}”(hj› h]”hŒirq_work”…”�”}”(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/console:12: ./include/linux/console.h”h´MThj• ubj²)�”}”(hhh]”hí)�”}”(hŒ,Defer **kthread** waking to IRQ work context”h]”(hŒDefer ”…”�”}”(hj´ h²hh³Nh´Nubju)�”}”(hŒ **kthread**”h]”hŒkthread”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj´ ubhŒ waking to IRQ work context”…”�”}”(hj´ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:12: ./include/linux/console.h”h´MUhj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j° h´MThj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj¹h²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Internals”h]”hŒ Internals”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjuh1hÍhjî h²hh³hÇh´KubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒnbcon_state (C struct)”Œ c.nbcon_state”hNt”auh1jËhjî h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ nbcon_state”h]”jè)�”}”(hŒstruct nbcon_state”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjh²hh³j%h´Kubj)�”}”(hŒ nbcon_state”h]”j)�”}”(hjh]”hŒ nbcon_state”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjh²hh³j%h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjh²hh³j%h´Kubah}”(h]”j ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j%h´Khj h²hubjC)�”}”(hhh]”hí)�”}”(hŒ console state for nbcon consoles”h]”hŒ console state for nbcon consoles”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÊhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj h²hh³j%h´Kubeh}”(h]”h ]”(j_Œstruct”eh"]”h$]”h&]”jdj_jejrjfjrjg‰jh‰ji‰uh1jÜh²hhjî h³Nh´Nubjk)�”}”(hX`**Definition**:: struct nbcon_state { union { unsigned int atom; struct { unsigned int prio : 2; unsigned int req_prio : 2; unsigned int unsafe : 1; unsigned int unsafe_takeover : 1; unsigned int cpu : 24; }; }; }; **Members** ``{unnamed_union}`` anonymous ``atom`` Compound of the state fields for atomic operations ``{unnamed_struct}`` anonymous ``prio`` The priority of the current owner ``req_prio`` The priority of a handover request ``unsafe`` Console is busy in a non takeover region ``unsafe_takeover`` A hostile takeover in an unsafe state happened in the past. The console cannot be safe until re-initialized. ``cpu`` The CPU on which the owner runs”•h]”(hí)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjzubhŒ:”…”�”}”(hjzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÎhjvubj“)�”}”(hX^struct nbcon_state { union { unsigned int atom; struct { unsigned int prio : 2; unsigned int req_prio : 2; unsigned int unsafe : 1; unsigned int unsafe_takeover : 1; unsigned int cpu : 24; }; }; };”h]”hX^struct nbcon_state { union { unsigned int atom; struct { unsigned int prio : 2; unsigned int req_prio : 2; unsigned int unsafe : 1; unsigned int unsafe_takeover : 1; unsigned int cpu : 24; }; }; };”…”�”}”hj—sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÐhjvubhí)�”}”(hŒ **Members**”h]”ju)�”}”(hj¨h]”hŒMembers”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÝhjvubj‹)�”}”(hhh]”(j�)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j–)�”}”(hŒ``{unnamed_union}``”h]”jœ)�”}”(hjÇh]”hŒ{unnamed_union}”…”�”}”(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/console:18: ./include/linux/console.h”h´KhjÁubj²)�”}”(hhh]”hí)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÜh´KhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÜh´Khj¾ubj�)�”}”(hŒ<``atom`` Compound of the state fields for atomic operations ”h]”(j–)�”}”(hŒ``atom``”h]”jœ)�”}”(hjh]”hŒatom”…”�”}”(hjh²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/console:18: ./include/linux/console.h”h´KÌhjúubj²)�”}”(hhh]”hí)�”}”(hŒ2Compound of the state fields for atomic operations”h]”hŒ2Compound of the state fields for atomic operations”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´KÌhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´KÌhj¾ubj�)�”}”(hŒ``{unnamed_struct}`` anonymous ”h]”(j–)�”}”(hŒ``{unnamed_struct}``”h]”jœ)�”}”(hj9h]”hŒ{unnamed_struct}”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Khj3ubj²)�”}”(hhh]”hí)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jNh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jNh´Khj¾ubj�)�”}”(hŒ+``prio`` The priority of the current owner ”h]”(j–)�”}”(hŒ``prio``”h]”jœ)�”}”(hjrh]”hŒprio”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÏhjlubj²)�”}”(hhh]”hí)�”}”(hŒ!The priority of the current owner”h]”hŒ!The priority of the current owner”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‡h´KÏhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‡h´KÏhj¾ubj�)�”}”(hŒ0``req_prio`` The priority of a handover request ”h]”(j–)�”}”(hŒ ``req_prio``”h]”jœ)�”}”(hj«h]”hŒreq_prio”…”�”}”(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/console:18: ./include/linux/console.h”h´KÎhj¥ubj²)�”}”(hhh]”hí)�”}”(hŒ"The priority of a handover request”h]”hŒ"The priority of a handover request”…”�”}”(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Œ4``unsafe`` Console is busy in a non takeover region ”h]”(j–)�”}”(hŒ ``unsafe``”h]”jœ)�”}”(hjäh]”hŒunsafe”…”�”}”(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/console:18: ./include/linux/console.h”h´KÐhjÞubj²)�”}”(hhh]”hí)�”}”(hŒ(Console is busy in a non takeover region”h]”hŒ(Console is busy in a non takeover region”…”�”}”(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Œ�``unsafe_takeover`` A hostile takeover in an unsafe state happened in the past. The console cannot be safe until re-initialized. ”h]”(j–)�”}”(hŒ``unsafe_takeover``”h]”jœ)�”}”(hjh]”hŒunsafe_takeover”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÒhjubj²)�”}”(hhh]”hí)�”}”(hŒlA hostile takeover in an unsafe state happened in the past. The console cannot be safe until re-initialized.”h]”hŒlA hostile takeover in an unsafe state happened in the past. The console cannot be safe until re-initialized.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÑhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j2h´KÒhj¾ubj�)�”}”(hŒ'``cpu`` The CPU on which the owner runs”h]”(j–)�”}”(hŒ``cpu``”h]”jœ)�”}”(hjWh]”hŒcpu”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÒhjQubj²)�”}”(hhh]”hí)�”}”(hŒThe CPU on which the owner runs”h]”hŒThe CPU on which the owner runs”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÓhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jlh´KÒhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjî h²hh³Nh´Nubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjšh]”hŒ Description”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÖhjî h²hubhí)�”}”(hŒnTo be used for reading and preparing of the value stored in the nbcon state variable **console**::nbcon_state.”h]”(hŒUTo be used for reading and preparing of the value stored in the nbcon state variable ”…”�”}”(hj°h²hh³Nh´Nubju)�”}”(hŒ **console**”h]”hŒconsole”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj°ubhŒ::nbcon_state.”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÓhjî h²hubhí)�”}”(hŒ²The **prio** and **req_prio** fields are particularly important to allow spin-waiting to timeout and give up without the risk of a waiter being assigned the lock after giving up.”h]”(hŒThe ”…”�”}”(hjÑh²hh³Nh´Nubju)�”}”(hŒ**prio**”h]”hŒprio”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÑubhŒ and ”…”�”}”(hjÑh²hh³Nh´Nubju)�”}”(hŒ **req_prio**”h]”hŒreq_prio”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÑubhŒ• fields are particularly important to allow spin-waiting to timeout and give up without the risk of a waiter being assigned the lock after giving up.”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÖhjî h²hubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒnbcon_prio (C enum)”Œ c.nbcon_prio”hNt”auh1jËhjî h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ nbcon_prio”h]”jè)�”}”(hŒenum nbcon_prio”h]”(jî)�”}”(hjñh]”hŒenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´KÝubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjh²hh³j*h´KÝubj)�”}”(hŒ nbcon_prio”h]”j)�”}”(hjh]”hŒ nbcon_prio”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj9ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjh²hh³j*h´KÝubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjh²hh³j*h´KÝubah}”(h]”jah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j*h´KÝhjh²hubjC)�”}”(hhh]”hí)�”}”(hŒ)console owner priority for nbcon consoles”h]”hŒ)console owner priority for nbcon consoles”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Kñhj\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjh²hh³j*h´KÝubeh}”(h]”h ]”(j_Œenum”eh"]”h$]”h&]”jdj_jejwjfjwjg‰jh‰ji‰uh1jÜh²hhjî h³Nh´Nubjk)�”}”(hŒö**Constants** ``NBCON_PRIO_NONE`` Unused ``NBCON_PRIO_NORMAL`` Normal (non-emergency) usage ``NBCON_PRIO_EMERGENCY`` Emergency output (WARN/OOPS...) ``NBCON_PRIO_PANIC`` Panic output ``NBCON_PRIO_MAX`` The number of priority levels”h]”(hí)�”}”(hŒ **Constants**”h]”ju)�”}”(hj�h]”hŒ Constants”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Kõhj{ubj‹)�”}”(hhh]”(j�)�”}”(hŒ``NBCON_PRIO_NONE`` Unused ”h]”(j–)�”}”(hŒ``NBCON_PRIO_NONE``”h]”jœ)�”}”(hj h]”hŒNBCON_PRIO_NONE”…”�”}”(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/console:18: ./include/linux/console.h”h´Køhjšubj²)�”}”(hhh]”hí)�”}”(hŒUnused”h]”hŒUnused”…”�”}”(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Œ3``NBCON_PRIO_NORMAL`` Normal (non-emergency) usage ”h]”(j–)�”}”(hŒ``NBCON_PRIO_NORMAL``”h]”jœ)�”}”(hjÙh]”hŒNBCON_PRIO_NORMAL”…”�”}”(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/console:18: ./include/linux/console.h”h´KûhjÓubj²)�”}”(hhh]”hí)�”}”(hŒNormal (non-emergency) usage”h]”hŒNormal (non-emergency) usage”…”�”}”(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Œ9``NBCON_PRIO_EMERGENCY`` Emergency output (WARN/OOPS...) ”h]”(j–)�”}”(hŒ``NBCON_PRIO_EMERGENCY``”h]”jœ)�”}”(hjh]”hŒNBCON_PRIO_EMERGENCY”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Kþhj ubj²)�”}”(hhh]”hí)�”}”(hŒEmergency output (WARN/OOPS...)”h]”hŒEmergency output (WARN/OOPS...)”…”�”}”(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Œ"``NBCON_PRIO_PANIC`` Panic output ”h]”(j–)�”}”(hŒ``NBCON_PRIO_PANIC``”h]”jœ)�”}”(hjKh]”hŒNBCON_PRIO_PANIC”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´MhjEubj²)�”}”(hhh]”hí)�”}”(hŒ Panic output”h]”hŒ Panic output”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j`h´Mhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j`h´Mhj—ubj�)�”}”(hŒ0``NBCON_PRIO_MAX`` The number of priority levels”h]”(j–)�”}”(hŒ``NBCON_PRIO_MAX``”h]”jœ)�”}”(hj„h]”hŒNBCON_PRIO_MAX”…”�”}”(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/console:18: ./include/linux/console.h”h´Mhj~ubj²)�”}”(hhh]”hí)�”}”(hŒThe number of priority levels”h]”hŒThe number of priority levels”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j™h´Mhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjî h²hh³Nh´Nubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjÇh]”hŒ Description”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhjî h²hubhí)�”}”(hŒÀA higher priority context can takeover the console when it is in the safe state. The final attempt to flush consoles in panic() can be allowed to do so even in an unsafe state (Hope and pray).”h]”hŒÀA higher priority context can takeover the console when it is in the safe state. The final attempt to flush consoles in panic() can be allowed to do so even in an unsafe state (Hope and pray).”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´K÷hjî h²hubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒnbcon_context (C struct)”Œc.nbcon_context”hNt”auh1jËhjî h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ nbcon_context”h]”jè)�”}”(hŒstruct nbcon_context”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Kþubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjh²hh³jh´Kþubj)�”}”(hŒ nbcon_context”h]”j)�”}”(hjÿh]”hŒ nbcon_context”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj!ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjh²hh³jh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjýh²hh³jh´Kþubah}”(h]”jøah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jh´Kþhjúh²hubjC)�”}”(hhh]”hí)�”}”(hŒ#Context for console acquire/release”h]”hŒ#Context for console acquire/release”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´MhjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjúh²hh³jh´Kþubeh}”(h]”h ]”(j_Œstruct”eh"]”h$]”h&]”jdj_jej_jfj_jg‰jh‰ji‰uh1jÜh²hhjî h³Nh´Nubjk)�”}”(hX<**Definition**:: struct nbcon_context { struct console *console; unsigned int spinwait_max_us; enum nbcon_prio prio; unsigned int allow_unsafe_takeover : 1; unsigned int backlog : 1; struct printk_buffers *pbufs; u64 seq; }; **Members** ``console`` The associated console ``spinwait_max_us`` Limit for spin-wait acquire ``prio`` Priority of the context ``allow_unsafe_takeover`` Allow performing takeover even if unsafe. Can be used only with NBCON_PRIO_PANIC **prio**. It might cause a system freeze when the console is used later. ``backlog`` Ringbuffer has pending records ``pbufs`` Pointer to the text buffer for this context ``seq`` The sequence number to print for this context”h]”(hí)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjgubhŒ:”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M hjcubj“)�”}”(hX1struct nbcon_context { struct console *console; unsigned int spinwait_max_us; enum nbcon_prio prio; unsigned int allow_unsafe_takeover : 1; unsigned int backlog : 1; struct printk_buffers *pbufs; u64 seq; };”h]”hX1struct nbcon_context { struct console *console; unsigned int spinwait_max_us; enum nbcon_prio prio; unsigned int allow_unsafe_takeover : 1; unsigned int backlog : 1; struct printk_buffers *pbufs; u64 seq; };”…”�”}”hj„sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhjcubhí)�”}”(hŒ **Members**”h]”ju)�”}”(hj•h]”hŒMembers”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhjcubj‹)�”}”(hhh]”(j�)�”}”(hŒ#``console`` The associated console ”h]”(j–)�”}”(hŒ ``console``”h]”jœ)�”}”(hj´h]”hŒconsole”…”�”}”(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/console:18: ./include/linux/console.h”h´M hj®ubj²)�”}”(hhh]”hí)�”}”(hŒThe associated console”h]”hŒThe associated console”…”�”}”(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Œ0``spinwait_max_us`` Limit for spin-wait acquire ”h]”(j–)�”}”(hŒ``spinwait_max_us``”h]”jœ)�”}”(hjíh]”hŒspinwait_max_us”…”�”}”(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/console:18: ./include/linux/console.h”h´M hjçubj²)�”}”(hhh]”hí)�”}”(hŒLimit for spin-wait acquire”h]”hŒLimit for spin-wait acquire”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´M hj«ubj�)�”}”(hŒ!``prio`` Priority of the context ”h]”(j–)�”}”(hŒ``prio``”h]”jœ)�”}”(hj&h]”hŒprio”…”�”}”(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/console:18: ./include/linux/console.h”h´M hj ubj²)�”}”(hhh]”hí)�”}”(hŒPriority of the context”h]”hŒPriority of the context”…”�”}”(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Œ´``allow_unsafe_takeover`` Allow performing takeover even if unsafe. Can be used only with NBCON_PRIO_PANIC **prio**. It might cause a system freeze when the console is used later. ”h]”(j–)�”}”(hŒ``allow_unsafe_takeover``”h]”jœ)�”}”(hj_h]”hŒallow_unsafe_takeover”…”�”}”(hjah²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/console:18: ./include/linux/console.h”h´MhjYubj²)�”}”(hhh]”hí)�”}”(hŒ™Allow performing takeover even if unsafe. Can be used only with NBCON_PRIO_PANIC **prio**. It might cause a system freeze when the console is used later.”h]”(hŒQAllow performing takeover even if unsafe. Can be used only with NBCON_PRIO_PANIC ”…”�”}”(hjxh²hh³Nh´Nubju)�”}”(hŒ**prio**”h]”hŒprio”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjxubhŒ@. It might cause a system freeze when the console is used later.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jth´Mhj«ubj�)�”}”(hŒ+``backlog`` Ringbuffer has pending records ”h]”(j–)�”}”(hŒ ``backlog``”h]”jœ)�”}”(hj«h]”hŒbacklog”…”�”}”(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/console:18: ./include/linux/console.h”h´Mhj¥ubj²)�”}”(hhh]”hí)�”}”(hŒRingbuffer has pending records”h]”hŒRingbuffer has pending records”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÀh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÀh´Mhj«ubj�)�”}”(hŒ6``pbufs`` Pointer to the text buffer for this context ”h]”(j–)�”}”(hŒ ``pbufs``”h]”jœ)�”}”(hjäh]”hŒpbufs”…”�”}”(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/console:18: ./include/linux/console.h”h´MhjÞubj²)�”}”(hhh]”hí)�”}”(hŒ+Pointer to the text buffer for this context”h]”hŒ+Pointer to the text buffer for this context”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jùh´Mhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jùh´Mhj«ubj�)�”}”(hŒ5``seq`` The sequence number to print for this context”h]”(j–)�”}”(hŒ``seq``”h]”jœ)�”}”(hjh]”hŒseq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhjubj²)�”}”(hhh]”hí)�”}”(hŒ-The sequence number to print for this context”h]”hŒ-The sequence number to print for this context”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j2h´Mhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjî h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒnbcon_write_context (C struct)”Œc.nbcon_write_context”hNt”auh1jËhjî h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒnbcon_write_context”h]”jè)�”}”(hŒstruct nbcon_write_context”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjsh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjsh²hh³j„h´Mubj)�”}”(hŒnbcon_write_context”h]”j)�”}”(hjqh]”hŒnbcon_write_context”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj“ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjsh²hh³j„h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjoh²hh³j„h´Mubah}”(h]”jjah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j„h´Mhjlh²hubjC)�”}”(hhh]”hí)�”}”(hŒ+Context handed to the nbcon write callbacks”h]”hŒ+Context handed to the nbcon write callbacks”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M$hj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjlh²hh³j„h´Mubeh}”(h]”h ]”(j_Œstruct”eh"]”h$]”h&]”jdj_jejÑjfjÑjg‰jh‰ji‰uh1jÜh²hhjî h³Nh´Nubjk)�”}”(hXŠ**Definition**:: struct nbcon_write_context { struct nbcon_context ctxt; char *outbuf; unsigned int len; bool unsafe_takeover; #ifdef CONFIG_PRINTK_EXECUTION_CTX; int cpu; pid_t pid; char comm[TASK_COMM_LEN]; #endif; }; **Members** ``ctxt`` The core console context ``outbuf`` Pointer to the text buffer for output ``len`` Length to write ``unsafe_takeover`` If a hostile takeover in an unsafe state has occurred ``cpu`` CPU on which the message was generated ``pid`` PID of the task that generated the message ``comm`` Name of the task that generated the message”h]”(hí)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÙubhŒ:”…”�”}”(hjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M(hjÕubj“)�”}”(hŒôstruct nbcon_write_context { struct nbcon_context ctxt; char *outbuf; unsigned int len; bool unsafe_takeover; #ifdef CONFIG_PRINTK_EXECUTION_CTX; int cpu; pid_t pid; char comm[TASK_COMM_LEN]; #endif; };”h]”hŒôstruct nbcon_write_context { struct nbcon_context ctxt; char *outbuf; unsigned int len; bool unsafe_takeover; #ifdef CONFIG_PRINTK_EXECUTION_CTX; int cpu; pid_t pid; char comm[TASK_COMM_LEN]; #endif; };”…”�”}”hjösbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M*hjÕubhí)�”}”(hŒ **Members**”h]”ju)�”}”(hjh]”hŒMembers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M6hjÕubj‹)�”}”(hhh]”(j�)�”}”(hŒ"``ctxt`` The core console context ”h]”(j–)�”}”(hŒ``ctxt``”h]”jœ)�”}”(hj&h]”hŒctxt”…”�”}”(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/console:18: ./include/linux/console.h”h´M&hj ubj²)�”}”(hhh]”hí)�”}”(hŒThe core console context”h]”hŒThe core console context”…”�”}”(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&hjubj�)�”}”(hŒ1``outbuf`` Pointer to the text buffer for output ”h]”(j–)�”}”(hŒ ``outbuf``”h]”jœ)�”}”(hj_h]”hŒoutbuf”…”�”}”(hjah²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/console:18: ./include/linux/console.h”h´M'hjYubj²)�”}”(hhh]”hí)�”}”(hŒ%Pointer to the text buffer for output”h]”hŒ%Pointer to the text buffer for output”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jth´M'hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jth´M'hjubj�)�”}”(hŒ``len`` Length to write ”h]”(j–)�”}”(hŒ``len``”h]”jœ)�”}”(hj˜h]”hŒlen”…”�”}”(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/console:18: ./include/linux/console.h”h´M(hj’ubj²)�”}”(hhh]”hí)�”}”(hŒLength to write”h]”hŒLength to write”…”�”}”(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(hjubj�)�”}”(hŒJ``unsafe_takeover`` If a hostile takeover in an unsafe state has occurred ”h]”(j–)�”}”(hŒ``unsafe_takeover``”h]”jœ)�”}”(hjÑh]”hŒunsafe_takeover”…”�”}”(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/console:18: ./include/linux/console.h”h´M)hjËubj²)�”}”(hhh]”hí)�”}”(hŒ5If a hostile takeover in an unsafe state has occurred”h]”hŒ5If a hostile takeover in an unsafe state has occurred”…”�”}”(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)hjubj�)�”}”(hŒ/``cpu`` CPU on which the message was generated ”h]”(j–)�”}”(hŒ``cpu``”h]”jœ)�”}”(hj h]”hŒcpu”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M*hjubj²)�”}”(hhh]”hí)�”}”(hŒ&CPU on which the message was generated”h]”hŒ&CPU on which the message was generated”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´M*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´M*hjubj�)�”}”(hŒ3``pid`` PID of the task that generated the message ”h]”(j–)�”}”(hŒ``pid``”h]”jœ)�”}”(hjCh]”hŒpid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M+hj=ubj²)�”}”(hhh]”hí)�”}”(hŒ*PID of the task that generated the message”h]”hŒ*PID of the task that generated the message”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jXh´M+hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jXh´M+hjubj�)�”}”(hŒ4``comm`` Name of the task that generated the message”h]”(j–)�”}”(hŒ``comm``”h]”jœ)�”}”(hj|h]”hŒcomm”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M+hjvubj²)�”}”(hhh]”hí)�”}”(hŒ+Name of the task that generated the message”h]”hŒ+Name of the task that generated the message”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:18: ./include/linux/console.h”h´M,hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‘h´M+hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjî h²hh³Nh´Nubeh}”(h]”j!ah ]”h"]”h$]”Œ internals”ah&]”uh1hÈhj¹h²hh³hÇh´KŒ referenced”Kubeh}”(h]”jah ]”h"]”Œstruct console”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Struct Consw”h]”hŒ Struct Consw”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjIuh1hÍhjÌh²hh³hÇh´KubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒconsw (C struct)”Œc.consw”hNt”auh1jËhjÌh²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒconsw”h]”jè)�”}”(hŒ struct consw”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjòh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjòh²hh³jh´Kubj)�”}”(hŒconsw”h]”j)�”}”(hjðh]”hŒconsw”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjòh²hh³jh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjîh²hh³jh´Kubah}”(h]”jéah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jh´Khjëh²hubjC)�”}”(hhh]”hí)�”}”(hŒcallbacks for consoles”h]”hŒcallbacks for consoles”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K)hj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjëh²hh³jh´Kubeh}”(h]”h ]”(j_Œstruct”eh"]”h$]”h&]”jdj_jejPjfjPjg‰jh‰ji‰uh1jÜh²hhjÌh³Nh´Nubjk)�”}”(hX[**Definition**:: struct consw { struct module *owner; const char *(*con_startup)(void); void (*con_init)(struct vc_data *vc, bool init); void (*con_deinit)(struct vc_data *vc); void (*con_clear)(struct vc_data *vc, unsigned int y, unsigned int x, unsigned int count); void (*con_putc)(struct vc_data *vc, u16 ca, unsigned int y, unsigned int x); void (*con_putcs)(struct vc_data *vc, const u16 *s, unsigned int count, unsigned int ypos, unsigned int xpos); void (*con_cursor)(struct vc_data *vc, bool enable); bool (*con_scroll)(struct vc_data *vc, unsigned int top, unsigned int bottom, enum con_scroll dir, unsigned int lines); bool (*con_switch)(struct vc_data *vc); bool (*con_blank)(struct vc_data *vc, enum vesa_blank_mode blank, bool mode_switch); bool (*con_unblank)(struct vc_data *vc, bool mode_switch); int (*con_font_set)(struct vc_data *vc, const struct console_font *font, unsigned int vpitch, unsigned int flags); int (*con_font_get)(struct vc_data *vc, struct console_font *font, unsigned int vpitch); int (*con_font_default)(struct vc_data *vc, struct console_font *font, const char *name); int (*con_resize)(struct vc_data *vc, unsigned int width, unsigned int height, bool from_user); void (*con_set_palette)(struct vc_data *vc, const unsigned char *table); void (*con_scrolldelta)(struct vc_data *vc, int lines); bool (*con_set_origin)(struct vc_data *vc); void (*con_save_screen)(struct vc_data *vc); u8 (*con_build_attr)(struct vc_data *vc, u8 color, enum vc_intensity intensity, bool blink, bool underline, bool reverse, bool italic); void (*con_invert_region)(struct vc_data *vc, u16 *p, int count); }; **Members** ``owner`` the module to get references of when this console is used ``con_startup`` set up the console and return its name (like VGA, EGA, ...) ``con_init`` initialize the console on **vc**. **init** is true for the very first call on this **vc**. ``con_deinit`` deinitialize the console from **vc**. ``con_clear`` erase **count** characters at [**x**, **y**] on **vc**. **count** >= 1. ``con_putc`` emit one character with attributes **ca** to [**x**, **y**] on **vc**. (optional -- **con_putcs** would be called instead) ``con_putcs`` emit **count** characters with attributes **s** to [**x**, **y**] on **vc**. ``con_cursor`` enable/disable cursor depending on **enable** ``con_scroll`` move lines from **top** to **bottom** in direction **dir** by **lines**. Return true if no generic handling should be done. Invoked by csi_M and printing to the console. ``con_switch`` notifier about the console switch; it is supposed to return true if a redraw is needed. ``con_blank`` blank the console. The preferred VESA blank mode is passed in **blank**. **mode_switch** is set if changing from/to text/graphics. The hook is supposed to return true if a redraw is needed. ``con_unblank`` unblank the console. The hook is supposed to return true if a redraw is needed. **mode_switch** is set if changing from/to text/graphics. ``con_font_set`` set console **vc** font to **font** with height **vpitch**. **flags** can be ``KD_FONT_FLAG_DONT_RECALC``. (optional) ``con_font_get`` fetch the current font on **vc** of height **vpitch** into **font**. (optional) ``con_font_default`` set default font on **vc**. **name** can be ``NULL`` or font name to search for. **font** can be filled back. (optional) ``con_resize`` resize the **vc** console to **width** x **height**. **from_user** is true when this change comes from the user space. ``con_set_palette`` sets the palette of the console **vc** to **table** (optional) ``con_scrolldelta`` the contents of the console should be scrolled by **lines**. Invoked by user. (optional) ``con_set_origin`` set origin (see :c:type:`vc_data`::vc_origin) of the **vc**. If not provided or returns false, the origin is set to **vc->vc_screenbuf**. (optional) ``con_save_screen`` save screen content into **vc->vc_screenbuf**. Called e.g. upon entering graphics. (optional) ``con_build_attr`` build attributes based on **color**, **intensity** and other parameters. The result is used for both normal and erase characters. (optional) ``con_invert_region`` invert a region of length **count** on **vc** starting at **p**. (optional)”h]”(hí)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjXubhŒ:”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K-hjTubj“)�”}”(hX¡struct consw { struct module *owner; const char *(*con_startup)(void); void (*con_init)(struct vc_data *vc, bool init); void (*con_deinit)(struct vc_data *vc); void (*con_clear)(struct vc_data *vc, unsigned int y, unsigned int x, unsigned int count); void (*con_putc)(struct vc_data *vc, u16 ca, unsigned int y, unsigned int x); void (*con_putcs)(struct vc_data *vc, const u16 *s, unsigned int count, unsigned int ypos, unsigned int xpos); void (*con_cursor)(struct vc_data *vc, bool enable); bool (*con_scroll)(struct vc_data *vc, unsigned int top, unsigned int bottom, enum con_scroll dir, unsigned int lines); bool (*con_switch)(struct vc_data *vc); bool (*con_blank)(struct vc_data *vc, enum vesa_blank_mode blank, bool mode_switch); bool (*con_unblank)(struct vc_data *vc, bool mode_switch); int (*con_font_set)(struct vc_data *vc, const struct console_font *font, unsigned int vpitch, unsigned int flags); int (*con_font_get)(struct vc_data *vc, struct console_font *font, unsigned int vpitch); int (*con_font_default)(struct vc_data *vc, struct console_font *font, const char *name); int (*con_resize)(struct vc_data *vc, unsigned int width, unsigned int height, bool from_user); void (*con_set_palette)(struct vc_data *vc, const unsigned char *table); void (*con_scrolldelta)(struct vc_data *vc, int lines); bool (*con_set_origin)(struct vc_data *vc); void (*con_save_screen)(struct vc_data *vc); u8 (*con_build_attr)(struct vc_data *vc, u8 color, enum vc_intensity intensity, bool blink, bool underline, bool reverse, bool italic); void (*con_invert_region)(struct vc_data *vc, u16 *p, int count); };”h]”hX¡struct consw { struct module *owner; const char *(*con_startup)(void); void (*con_init)(struct vc_data *vc, bool init); void (*con_deinit)(struct vc_data *vc); void (*con_clear)(struct vc_data *vc, unsigned int y, unsigned int x, unsigned int count); void (*con_putc)(struct vc_data *vc, u16 ca, unsigned int y, unsigned int x); void (*con_putcs)(struct vc_data *vc, const u16 *s, unsigned int count, unsigned int ypos, unsigned int xpos); void (*con_cursor)(struct vc_data *vc, bool enable); bool (*con_scroll)(struct vc_data *vc, unsigned int top, unsigned int bottom, enum con_scroll dir, unsigned int lines); bool (*con_switch)(struct vc_data *vc); bool (*con_blank)(struct vc_data *vc, enum vesa_blank_mode blank, bool mode_switch); bool (*con_unblank)(struct vc_data *vc, bool mode_switch); int (*con_font_set)(struct vc_data *vc, const struct console_font *font, unsigned int vpitch, unsigned int flags); int (*con_font_get)(struct vc_data *vc, struct console_font *font, unsigned int vpitch); int (*con_font_default)(struct vc_data *vc, struct console_font *font, const char *name); int (*con_resize)(struct vc_data *vc, unsigned int width, unsigned int height, bool from_user); void (*con_set_palette)(struct vc_data *vc, const unsigned char *table); void (*con_scrolldelta)(struct vc_data *vc, int lines); bool (*con_set_origin)(struct vc_data *vc); void (*con_save_screen)(struct vc_data *vc); u8 (*con_build_attr)(struct vc_data *vc, u8 color, enum vc_intensity intensity, bool blink, bool underline, bool reverse, bool italic); void (*con_invert_region)(struct vc_data *vc, u16 *p, int count); };”…”�”}”hjusbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K/hjTubhí)�”}”(hŒ **Members**”h]”ju)�”}”(hj†h]”hŒMembers”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KHhjTubj‹)�”}”(hhh]”(j�)�”}”(hŒD``owner`` the module to get references of when this console is used ”h]”(j–)�”}”(hŒ ``owner``”h]”jœ)�”}”(hj¥h]”hŒowner”…”�”}”(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/console:24: ./include/linux/console.h”h´K,hjŸubj²)�”}”(hhh]”hí)�”}”(hŒ9the module to get references of when this console is used”h]”hŒ9the module to get references of when this console is used”…”�”}”(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ŒL``con_startup`` set up the console and return its name (like VGA, EGA, ...) ”h]”(j–)�”}”(hŒ``con_startup``”h]”jœ)�”}”(hjÞh]”hŒ con_startup”…”�”}”(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/console:24: ./include/linux/console.h”h´K-hjØubj²)�”}”(hhh]”hí)�”}”(hŒ;set up the console and return its name (like VGA, EGA, ...)”h]”hŒ;set up the console and return its name (like VGA, EGA, ...)”…”�”}”(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Œh``con_init`` initialize the console on **vc**. **init** is true for the very first call on this **vc**. ”h]”(j–)�”}”(hŒ ``con_init``”h]”jœ)�”}”(hjh]”hŒcon_init”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K/hjubj²)�”}”(hhh]”hí)�”}”(hŒZinitialize the console on **vc**. **init** is true for the very first call on this **vc**.”h]”(hŒinitialize the console on ”…”�”}”(hj0h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj0ubhŒ. ”…”�”}”(hj0h²hh³Nh´Nubju)�”}”(hŒ**init**”h]”hŒinit”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj0ubhŒ) is true for the very first call on this ”…”�”}”(hj0h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj0ubhŒ.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K.hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j,h´K/hjœubj�)�”}”(hŒ5``con_deinit`` deinitialize the console from **vc**. ”h]”(j–)�”}”(hŒ``con_deinit``”h]”jœ)�”}”(hj‡h]”hŒ con_deinit”…”�”}”(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/console:24: ./include/linux/console.h”h´K0hj�ubj²)�”}”(hhh]”hí)�”}”(hŒ%deinitialize the console from **vc**.”h]”(hŒdeinitialize the console from ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jœh´K0hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jœh´K0hjœubj�)�”}”(hŒV``con_clear`` erase **count** characters at [**x**, **y**] on **vc**. **count** >= 1. ”h]”(j–)�”}”(hŒ ``con_clear``”h]”jœ)�”}”(hjÒh]”hŒ con_clear”…”�”}”(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/console:24: ./include/linux/console.h”h´K1hjÌubj²)�”}”(hhh]”hí)�”}”(hŒGerase **count** characters at [**x**, **y**] on **vc**. **count** >= 1.”h]”(hŒerase ”…”�”}”(hjëh²hh³Nh´Nubju)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjëubhŒ characters at [”…”�”}”(hjëh²hh³Nh´Nubju)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjëubhŒ, ”…”�”}”(hjëh²hh³Nh´Nubju)�”}”(hŒ**y**”h]”hŒy”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjëubhŒ] on ”…”�”}”(hjëh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjëubhŒ. ”…”�”}”(hjëh²hh³Nh´Nubju)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjëubhŒ >= 1.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jçh´K1hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jçh´K1hjœubj�)�”}”(hŒˆ``con_putc`` emit one character with attributes **ca** to [**x**, **y**] on **vc**. (optional -- **con_putcs** would be called instead) ”h]”(j–)�”}”(hŒ ``con_putc``”h]”jœ)�”}”(hjeh]”hŒcon_putc”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K3hj_ubj²)�”}”(hhh]”hí)�”}”(hŒzemit one character with attributes **ca** to [**x**, **y**] on **vc**. (optional -- **con_putcs** would be called instead)”h]”(hŒ#emit one character with attributes ”…”�”}”(hj~h²hh³Nh´Nubju)�”}”(hŒ**ca**”h]”hŒca”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj~ubhŒ to [”…”�”}”(hj~h²hh³Nh´Nubju)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj~ubhŒ, ”…”�”}”(hj~h²hh³Nh´Nubju)�”}”(hŒ**y**”h]”hŒy”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj~ubhŒ] on ”…”�”}”(hj~h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj~ubhŒ. (optional -- ”…”�”}”(hj~h²hh³Nh´Nubju)�”}”(hŒ **con_putcs**”h]”hŒ con_putcs”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj~ubhŒ would be called instead)”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K2hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jzh´K3hjœubj�)�”}”(hŒ[``con_putcs`` emit **count** characters with attributes **s** to [**x**, **y**] on **vc**. ”h]”(j–)�”}”(hŒ ``con_putcs``”h]”jœ)�”}”(hjùh]”hŒ con_putcs”…”�”}”(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/console:24: ./include/linux/console.h”h´K4hjóubj²)�”}”(hhh]”hí)�”}”(hŒLemit **count** characters with attributes **s** to [**x**, **y**] on **vc**.”h]”(hŒemit ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ characters with attributes ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**s**”h]”hŒs”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ to [”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ, ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**y**”h]”hŒy”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ] on ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jh´K4hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´K4hjœubj�)�”}”(hŒ=``con_cursor`` enable/disable cursor depending on **enable** ”h]”(j–)�”}”(hŒ``con_cursor``”h]”jœ)�”}”(hjŒh]”hŒ con_cursor”…”�”}”(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/console:24: ./include/linux/console.h”h´K5hj†ubj²)�”}”(hhh]”hí)�”}”(hŒ-enable/disable cursor depending on **enable**”h]”(hŒ#enable/disable cursor depending on ”…”�”}”(hj¥h²hh³Nh´Nubju)�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¡h´K5hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¡h´K5hjœubj�)�”}”(hŒ¹``con_scroll`` move lines from **top** to **bottom** in direction **dir** by **lines**. Return true if no generic handling should be done. Invoked by csi_M and printing to the console. ”h]”(j–)�”}”(hŒ``con_scroll``”h]”jœ)�”}”(hjÓh]”hŒ con_scroll”…”�”}”(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/console:24: ./include/linux/console.h”h´K8hjÍubj²)�”}”(hhh]”hí)�”}”(hŒ©move lines from **top** to **bottom** in direction **dir** by **lines**. Return true if no generic handling should be done. Invoked by csi_M and printing to the console.”h]”(hŒmove lines from ”…”�”}”(hjìh²hh³Nh´Nubju)�”}”(hŒ**top**”h]”hŒtop”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjìubhŒ to ”…”�”}”(hjìh²hh³Nh´Nubju)�”}”(hŒ **bottom**”h]”hŒbottom”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjìubhŒ in direction ”…”�”}”(hjìh²hh³Nh´Nubju)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjìubhŒ by ”…”�”}”(hjìh²hh³Nh´Nubju)�”}”(hŒ **lines**”h]”hŒlines”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjìubhŒb. Return true if no generic handling should be done. Invoked by csi_M and printing to the console.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K6hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jèh´K8hjœubj�)�”}”(hŒg``con_switch`` notifier about the console switch; it is supposed to return true if a redraw is needed. ”h]”(j–)�”}”(hŒ``con_switch``”h]”jœ)�”}”(hjUh]”hŒ con_switch”…”�”}”(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/console:24: ./include/linux/console.h”h´K:hjOubj²)�”}”(hhh]”hí)�”}”(hŒWnotifier about the console switch; it is supposed to return true if a redraw is needed.”h]”hŒWnotifier about the console switch; it is supposed to return true if a redraw is needed.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K9hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jjh´K:hjœubj�)�”}”(hŒÌ``con_blank`` blank the console. The preferred VESA blank mode is passed in **blank**. **mode_switch** is set if changing from/to text/graphics. The hook is supposed to return true if a redraw is needed. ”h]”(j–)�”}”(hŒ ``con_blank``”h]”jœ)�”}”(hj�h]”hŒ con_blank”…”�”}”(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/console:24: ./include/linux/console.h”h´K=hj‰ubj²)�”}”(hhh]”hí)�”}”(hŒ½blank the console. The preferred VESA blank mode is passed in **blank**. **mode_switch** is set if changing from/to text/graphics. The hook is supposed to return true if a redraw is needed.”h]”(hŒ>blank the console. The preferred VESA blank mode is passed in ”…”�”}”(hj¨h²hh³Nh´Nubju)�”}”(hŒ **blank**”h]”hŒblank”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¨ubhŒ. ”…”�”}”(hj¨h²hh³Nh´Nubju)�”}”(hŒ**mode_switch**”h]”hŒ mode_switch”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¨ubhŒe is set if changing from/to text/graphics. The hook is supposed to return true if a redraw is needed.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.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Œš``con_unblank`` unblank the console. The hook is supposed to return true if a redraw is needed. **mode_switch** is set if changing from/to text/graphics. ”h]”(j–)�”}”(hŒ``con_unblank``”h]”jœ)�”}”(hjíh]”hŒ con_unblank”…”�”}”(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/console:24: ./include/linux/console.h”h´K@hjçubj²)�”}”(hhh]”hí)�”}”(hŒ‰unblank the console. The hook is supposed to return true if a redraw is needed. **mode_switch** is set if changing from/to text/graphics.”h]”(hŒPunblank the console. The hook is supposed to return true if a redraw is needed. ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**mode_switch**”h]”hŒ mode_switch”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ* is set if changing from/to text/graphics.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´K>hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´K@hjœubj�)�”}”(hŒ‡``con_font_set`` set console **vc** font to **font** with height **vpitch**. **flags** can be ``KD_FONT_FLAG_DONT_RECALC``. (optional) ”h]”(j–)�”}”(hŒ``con_font_set``”h]”jœ)�”}”(hj9h]”hŒ con_font_set”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KBhj3ubj²)�”}”(hhh]”hí)�”}”(hŒuset console **vc** font to **font** with height **vpitch**. **flags** can be ``KD_FONT_FLAG_DONT_RECALC``. (optional)”h]”(hŒ set console ”…”�”}”(hjRh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjRubhŒ font to ”…”�”}”(hjRh²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjRubhŒ with height ”…”�”}”(hjRh²hh³Nh´Nubju)�”}”(hŒ **vpitch**”h]”hŒvpitch”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjRubhŒ. ”…”�”}”(hjRh²hh³Nh´Nubju)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjRubhŒ can be ”…”�”}”(hjRh²hh³Nh´Nubjœ)�”}”(hŒ``KD_FONT_FLAG_DONT_RECALC``”h]”hŒKD_FONT_FLAG_DONT_RECALC”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjRubhŒ . (optional)”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KAhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jNh´KBhjœubj�)�”}”(hŒa``con_font_get`` fetch the current font on **vc** of height **vpitch** into **font**. (optional) ”h]”(j–)�”}”(hŒ``con_font_get``”h]”jœ)�”}”(hjÍh]”hŒ con_font_get”…”�”}”(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/console:24: ./include/linux/console.h”h´KDhjÇubj²)�”}”(hhh]”hí)�”}”(hŒOfetch the current font on **vc** of height **vpitch** into **font**. (optional)”h]”(hŒfetch the current font on ”…”�”}”(hjæh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjæubhŒ of height ”…”�”}”(hjæh²hh³Nh´Nubju)�”}”(hŒ **vpitch**”h]”hŒvpitch”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjæubhŒ into ”…”�”}”(hjæh²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjæubhŒ . (optional)”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KChjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jâh´KDhjœubj�)�”}”(hŒŽ``con_font_default`` set default font on **vc**. **name** can be ``NULL`` or font name to search for. **font** can be filled back. (optional) ”h]”(j–)�”}”(hŒ``con_font_default``”h]”jœ)�”}”(hj=h]”hŒcon_font_default”…”�”}”(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/console:24: ./include/linux/console.h”h´KFhj7ubj²)�”}”(hhh]”hí)�”}”(hŒxset default font on **vc**. **name** can be ``NULL`` or font name to search for. **font** can be filled back. (optional)”h]”(hŒset default font on ”…”�”}”(hjVh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjVubhŒ. ”…”�”}”(hjVh²hh³Nh´Nubju)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjVubhŒ can be ”…”�”}”(hjVh²hh³Nh´Nubjœ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjVubhŒ or font name to search for. ”…”�”}”(hjVh²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjVubhŒ can be filled back. (optional)”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KEhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jRh´KFhjœubj�)�”}”(hŒ†``con_resize`` resize the **vc** console to **width** x **height**. **from_user** is true when this change comes from the user space. ”h]”(j–)�”}”(hŒ``con_resize``”h]”jœ)�”}”(hj¿h]”hŒ con_resize”…”�”}”(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/console:24: ./include/linux/console.h”h´KHhj¹ubj²)�”}”(hhh]”hí)�”}”(hŒvresize the **vc** console to **width** x **height**. **from_user** is true when this change comes from the user space.”h]”(hŒ resize the ”…”�”}”(hjØh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjØubhŒ console to ”…”�”}”(hjØh²hh³Nh´Nubju)�”}”(hŒ **width**”h]”hŒwidth”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjØubhŒ x ”…”�”}”(hjØh²hh³Nh´Nubju)�”}”(hŒ **height**”h]”hŒheight”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjØubhŒ. ”…”�”}”(hjØh²hh³Nh´Nubju)�”}”(hŒ **from_user**”h]”hŒ from_user”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjØubhŒ4 is true when this change comes from the user space.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KGhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÔh´KHhjœubj�)�”}”(hŒS``con_set_palette`` sets the palette of the console **vc** to **table** (optional) ”h]”(j–)�”}”(hŒ``con_set_palette``”h]”jœ)�”}”(hjAh]”hŒcon_set_palette”…”�”}”(hjCh²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/console:24: ./include/linux/console.h”h´KIhj;ubj²)�”}”(hhh]”hí)�”}”(hŒ>sets the palette of the console **vc** to **table** (optional)”h]”(hŒ sets the palette of the console ”…”�”}”(hjZh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjZubhŒ to ”…”�”}”(hjZh²hh³Nh´Nubju)�”}”(hŒ **table**”h]”hŒtable”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjZubhŒ (optional)”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jVh´KIhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jVh´KIhjœubj�)�”}”(hŒm``con_scrolldelta`` the contents of the console should be scrolled by **lines**. Invoked by user. (optional) ”h]”(j–)�”}”(hŒ``con_scrolldelta``”h]”jœ)�”}”(hjžh]”hŒcon_scrolldelta”…”�”}”(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/console:24: ./include/linux/console.h”h´KKhj˜ubj²)�”}”(hhh]”hí)�”}”(hŒXthe contents of the console should be scrolled by **lines**. Invoked by user. (optional)”h]”(hŒ2the contents of the console should be scrolled by ”…”�”}”(hj·h²hh³Nh´Nubju)�”}”(hŒ **lines**”h]”hŒlines”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj·ubhŒ. Invoked by user. (optional)”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KJhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j³h´KKhjœubj�)�”}”(hŒ¨``con_set_origin`` set origin (see :c:type:`vc_data`::vc_origin) of the **vc**. If not provided or returns false, the origin is set to **vc->vc_screenbuf**. (optional) ”h]”(j–)�”}”(hŒ``con_set_origin``”h]”jœ)�”}”(hjêh]”hŒcon_set_origin”…”�”}”(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/console:24: ./include/linux/console.h”h´KNhjäubj²)�”}”(hhh]”hí)�”}”(hŒ”set origin (see :c:type:`vc_data`::vc_origin) of the **vc**. If not provided or returns false, the origin is set to **vc->vc_screenbuf**. (optional)”h]”(hŒset origin (see ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:type:`vc_data`”h]”jœ)�”}”(hj h]”hŒvc_data”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j_Œc-type”eh"]”h$]”h&]”uh1j›hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/tty/console”Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œvc_data”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KLhj ubhŒ::vc_origin) of the ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ9. If not provided or returns false, the origin is set to ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**vc->vc_screenbuf**”h]”hŒvc->vc_screenbuf”…”�”}”(hjL •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ . (optional)”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j5 h´KLhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÿh´KNhjœubj�)�”}”(hŒr``con_save_screen`` save screen content into **vc->vc_screenbuf**. Called e.g. upon entering graphics. (optional) ”h]”(j–)�”}”(hŒ``con_save_screen``”h]”jœ)�”}”(hjv h]”hŒcon_save_screen”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KPhjp ubj²)�”}”(hhh]”hí)�”}”(hŒ]save screen content into **vc->vc_screenbuf**. Called e.g. upon entering graphics. (optional)”h]”(hŒsave screen content into ”…”�”}”(hj� h²hh³Nh´Nubju)�”}”(hŒ**vc->vc_screenbuf**”h]”hŒvc->vc_screenbuf”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj� ubhŒ0. Called e.g. upon entering graphics. (optional)”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KOhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‹ h´KPhjœubj�)�”}”(hŒ ``con_build_attr`` build attributes based on **color**, **intensity** and other parameters. The result is used for both normal and erase characters. (optional) ”h]”(j–)�”}”(hŒ``con_build_attr``”h]”jœ)�”}”(hj h]”hŒcon_build_attr”…”�”}”(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/console:24: ./include/linux/console.h”h´KShj¼ ubj²)�”}”(hhh]”hí)�”}”(hŒŒbuild attributes based on **color**, **intensity** and other parameters. The result is used for both normal and erase characters. (optional)”h]”(hŒbuild attributes based on ”…”�”}”(hjÛ h²hh³Nh´Nubju)�”}”(hŒ **color**”h]”hŒcolor”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÛ ubhŒ, ”…”�”}”(hjÛ h²hh³Nh´Nubju)�”}”(hŒ **intensity**”h]”hŒ intensity”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÛ ubhŒZ and other parameters. The result is used for both normal and erase characters. (optional)”…”�”}”(hjÛ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KQhjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¼ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j× h´KShjœubj�)�”}”(hŒa``con_invert_region`` invert a region of length **count** on **vc** starting at **p**. (optional)”h]”(j–)�”}”(hŒ``con_invert_region``”h]”jœ)�”}”(hj !h]”hŒcon_invert_region”…”�”}”(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/console:24: ./include/linux/console.h”h´KThj!ubj²)�”}”(hhh]”hí)�”}”(hŒKinvert a region of length **count** on **vc** starting at **p**. (optional)”h]”(hŒinvert a region of length ”…”�”}”(hj9!h²hh³Nh´Nubju)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjA!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj9!ubhŒ on ”…”�”}”(hj9!h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjS!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj9!ubhŒ starting at ”…”�”}”(hj9!h²hh³Nh´Nubju)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hje!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj9!ubhŒ . (optional)”…”�”}”(hj9!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j5!h´KThj6!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j5!h´KThjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjÌh²hh³Nh´Nubeh}”(h]”jOah ]”h"]”Œ struct consw”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒConsole functions”h]”hŒConsole functions”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjkuh1hÍhj�!h²hh³hÇh´KubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ$console_srcu_read_flags (C function)”Œc.console_srcu_read_flags”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ9short console_srcu_read_flags (const struct console *con)”h]”jè)�”}”(hŒ8short console_srcu_read_flags(const struct console *con)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjÉ!h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jÇ!hjÃ!h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mùubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÃ!h²hh³jØ!h´Mùubj)�”}”(hŒconsole_srcu_read_flags”h]”j)�”}”(hŒconsole_srcu_read_flags”h]”hŒconsole_srcu_read_flags”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjç!ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjÃ!h²hh³jØ!h´MùubhŒdesc_parameterlist”“”)�”}”(hŒ(const struct console *con)”h]”hŒdesc_parameter”“”)�”}”(hŒconst struct console *con”h]”(jî)�”}”(hŒconst”h]”hŒconst”…”�”}”(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"ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hj'"h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj"ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj"ubh)�”}”(hhh]”j)�”}”(hŒconsole”h]”hŒconsole”…”�”}”(hjE"h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjB"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”Œ identifier”Œ reftarget”jG"Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”j, Œ ASTIdentifier”“”)�”}”j["jí!sbŒc.console_srcu_read_flags”†”asbuh1hhj"ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj"ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjx"h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jv"hj"ubj)�”}”(hŒcon”h]”hŒcon”…”�”}”(hj‡"h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj"ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjÃ!h²hh³jØ!h´Mùubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj¿!h²hh³jØ!h´Mùubah}”(h]”jº!ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jØ!h´Mùhj¼!h²hubjC)�”}”(hhh]”hí)�”}”(hŒ6Locklessly read flags of a possibly registered console”h]”hŒ6Locklessly read flags of a possibly registered console”…”�”}”(hj±"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mùhj®"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¼!h²hh³jØ!h´Mùubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÉ"jfjÉ"jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hX{**Parameters** ``const struct console *con`` struct console pointer of console to read flags from **Description** Locklessly reading **con->flags** provides a consistent read value because there is at most one CPU modifying **con->flags** and that CPU is using only read-modify-write operations to do so. Requires console_srcu_read_lock to be held, which implies that **con** might be a registered console. The purpose of holding console_srcu_read_lock is to guarantee that the console state is valid (CON_SUSPENDED/CON_ENABLED) and that no exit/cleanup routines will run if the console is currently undergoing unregistration. If the caller is holding the console_list_lock or it is _certain_ that **con** is not and will not become registered, the caller may read **con->flags** directly instead. **Context** Any context. **Return** The current value of the **con->flags** field.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÓ"h]”hŒ Parameters”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÑ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MýhjÍ"ubj‹)�”}”(hhh]”j�)�”}”(hŒS``const struct console *con`` struct console pointer of console to read flags from ”h]”(j–)�”}”(hŒ``const struct console *con``”h]”jœ)�”}”(hjò"h]”hŒconst struct console *con”…”�”}”(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/console:30: ./include/linux/console.h”h´Mûhjì"ubj²)�”}”(hhh]”hí)�”}”(hŒ4struct console pointer of console to read flags from”h]”hŒ4struct console pointer of console to read flags from”…”�”}”(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é"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÍ"ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj-#h]”hŒ Description”…”�”}”(hj/#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj+#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MýhjÍ"ubhí)�”}”(hŒ¾Locklessly reading **con->flags** provides a consistent read value because there is at most one CPU modifying **con->flags** and that CPU is using only read-modify-write operations to do so.”h]”(hŒLocklessly reading ”…”�”}”(hjC#h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hjK#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjC#ubhŒM provides a consistent read value because there is at most one CPU modifying ”…”�”}”(hjC#h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hj]#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjC#ubhŒB and that CPU is using only read-modify-write operations to do so.”…”�”}”(hjC#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MühjÍ"ubhí)�”}”(hXARequires console_srcu_read_lock to be held, which implies that **con** might be a registered console. The purpose of holding console_srcu_read_lock is to guarantee that the console state is valid (CON_SUSPENDED/CON_ENABLED) and that no exit/cleanup routines will run if the console is currently undergoing unregistration.”h]”(hŒ?Requires console_srcu_read_lock to be held, which implies that ”…”�”}”(hjv#h²hh³Nh´Nubju)�”}”(hŒ**con**”h]”hŒcon”…”�”}”(hj~#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjv#ubhŒû might be a registered console. The purpose of holding console_srcu_read_lock is to guarantee that the console state is valid (CON_SUSPENDED/CON_ENABLED) and that no exit/cleanup routines will run if the console is currently undergoing unregistration.”…”�”}”(hjv#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MhjÍ"ubhí)�”}”(hŒªIf the caller is holding the console_list_lock or it is _certain_ that **con** is not and will not become registered, the caller may read **con->flags** directly instead.”h]”(hŒGIf the caller is holding the console_list_lock or it is _certain_ that ”…”�”}”(hj—#h²hh³Nh´Nubju)�”}”(hŒ**con**”h]”hŒcon”…”�”}”(hjŸ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj—#ubhŒ< is not and will not become registered, the caller may read ”…”�”}”(hj—#h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hj±#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj—#ubhŒ directly instead.”…”�”}”(hj—#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MhjÍ"ubhí)�”}”(hŒ **Context**”h]”ju)�”}”(hjÌ#h]”hŒContext”…”�”}”(hjÎ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÊ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M hjÍ"ubhí)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjâ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M hjÍ"ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hjó#h]”hŒReturn”…”�”}”(hjõ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjñ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M hjÍ"ubhí)�”}”(hŒ.The current value of the **con->flags** field.”h]”(hŒThe current value of the ”…”�”}”(hj $h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj $ubhŒ field.”…”�”}”(hj $h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M hjÍ"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ%console_srcu_write_flags (C function)”Œc.console_srcu_write_flags”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ@void console_srcu_write_flags (struct console *con, short flags)”h]”jè)�”}”(hŒ?void console_srcu_write_flags(struct console *con, short flags)”h]”(jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJ$h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjF$h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjF$h²hh³jX$h´Mubj)�”}”(hŒconsole_srcu_write_flags”h]”j)�”}”(hŒconsole_srcu_write_flags”h]”hŒconsole_srcu_write_flags”…”�”}”(hjk$h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjg$ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjF$h²hh³jX$h´Mubj")�”}”(hŒ"(struct console *con, short flags)”h]”(j")�”}”(hŒstruct console *con”h]”(jî)�”}”(hjh]”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Œconsole”h]”hŒconsole”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj¢$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j§$Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["jm$sbŒc.console_srcu_write_flags”†”asbuh1hhjƒ$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjƒ$ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjÓ$h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjƒ$ubj)�”}”(hŒcon”h]”hŒcon”…”�”}”(hjà$h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjƒ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj$ubj")�”}”(hŒ short flags”h]”(jÈ!)�”}”(hŒshort”h]”hŒshort”…”�”}”(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õ$ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjõ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjF$h²hh³jX$h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjB$h²hh³jX$h´Mubah}”(h]”j=$ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jX$h´Mhj?$h²hubjC)�”}”(hhh]”hí)�”}”(hŒ$Write flags for a registered console”h]”hŒ$Write flags for a registered console”…”�”}”(hj?%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mhj<%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj?$h²hh³jX$h´Mubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejW%jfjW%jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hX **Parameters** ``struct console *con`` struct console pointer of console to write flags to ``short flags`` new flags value to write **Description** Only use this function to write flags for registered consoles. It requires holding the console_list_lock. **Context** Any context.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hja%h]”hŒ Parameters”…”�”}”(hjc%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj_%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mhj[%ubj‹)�”}”(hhh]”(j�)�”}”(hŒL``struct console *con`` struct console pointer of console to write flags to ”h]”(j–)�”}”(hŒ``struct console *con``”h]”jœ)�”}”(hj€%h]”hŒstruct console *con”…”�”}”(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/console:30: ./include/linux/console.h”h´Mhjz%ubj²)�”}”(hhh]”hí)�”}”(hŒ3struct console pointer of console to write flags to”h]”hŒ3struct console pointer of console to write flags to”…”�”}”(hj™%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j•%h´Mhj–%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjz%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j•%h´Mhjw%ubj�)�”}”(hŒ)``short flags`` new flags value to write ”h]”(j–)�”}”(hŒ``short flags``”h]”jœ)�”}”(hj¹%h]”hŒ short flags”…”�”}”(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/console:30: ./include/linux/console.h”h´Mhj³%ubj²)�”}”(hhh]”hí)�”}”(hŒnew flags value to write”h]”hŒnew flags value to write”…”�”}”(hjÒ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÎ%h´MhjÏ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj³%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÎ%h´Mhjw%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj[%ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjô%h]”hŒ Description”…”�”}”(hjö%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjò%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mhj[%ubhí)�”}”(hŒiOnly use this function to write flags for registered consoles. It requires holding the console_list_lock.”h]”hŒiOnly use this function to write flags for registered consoles. It requires holding the console_list_lock.”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mhj[%ubhí)�”}”(hŒ **Context**”h]”ju)�”}”(hj&h]”hŒContext”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M hj[%ubhí)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj1&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´M!hj[%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒfor_each_console_srcu (C macro)”Œc.for_each_console_srcu”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒfor_each_console_srcu”h]”jè)�”}”(hŒfor_each_console_srcu”h]”j)�”}”(hŒfor_each_console_srcu”h]”j)�”}”(hjZ&h]”hŒfor_each_console_srcu”…”�”}”(hjd&h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj`&ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj\&h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjX&h²hh³jw&h´MHubah}”(h]”jS&ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jw&h´MHhjU&h²hubjC)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jBhjU&h²hh³jw&h´MHubeh}”(h]”h ]”(j_Œmacro”eh"]”h$]”h&]”jdj_jej�&jfj�&jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubhí)�”}”(hŒ``for_each_console_srcu (con)``”h]”jœ)�”}”(hj–&h]”hŒfor_each_console_srcu (con)”…”�”}”(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/console:30: ./include/linux/console.h”h´MJhj�!h²hubhŒ block_quote”“”)�”}”(hŒ"Iterator over registered consoles ”h]”hí)�”}”(hŒ!Iterator over registered consoles”h]”hŒ!Iterator over registered consoles”…”�”}”(hj²&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MHhj®&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬&h³jÀ&h´MHhj�!h²hubjk)�”}”(hX***Parameters** ``con`` struct console pointer used as loop cursor **Description** Although SRCU guarantees the console list will be consistent, the struct console fields may be updated by other CPUs while iterating. Requires console_srcu_read_lock to be held. Can be invoked from any context.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÍ&h]”hŒ Parameters”…”�”}”(hjÏ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjË&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MLhjÇ&ubj‹)�”}”(hhh]”j�)�”}”(hŒ3``con`` struct console pointer used as loop cursor ”h]”(j–)�”}”(hŒ``con``”h]”jœ)�”}”(hjì&h]”hŒcon”…”�”}”(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/console:30: ./include/linux/console.h”h´MIhjæ&ubj²)�”}”(hhh]”hí)�”}”(hŒ*struct console pointer used as loop cursor”h]”hŒ*struct console pointer used as loop cursor”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j'h´MIhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjæ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j'h´MIhjã&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÇ&ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj''h]”hŒ Description”…”�”}”(hj)'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj%'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MKhjÇ&ubhí)�”}”(hŒ…Although SRCU guarantees the console list will be consistent, the struct console fields may be updated by other CPUs while iterating.”h]”hŒ…Although SRCU guarantees the console list will be consistent, the struct console fields may be updated by other CPUs while iterating.”…”�”}”(hj='h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MJhjÇ&ubhí)�”}”(hŒLRequires console_srcu_read_lock to be held. Can be invoked from any context.”h]”hŒLRequires console_srcu_read_lock to be held. Can be invoked from any context.”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MMhjÇ&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒfor_each_console (C macro)”Œc.for_each_console”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒfor_each_console”h]”jè)�”}”(hŒfor_each_console”h]”j)�”}”(hŒfor_each_console”h]”j)�”}”(hju'h]”hŒfor_each_console”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj{'ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjw'h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MVubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjs'h²hh³j’'h´MVubah}”(h]”jn'ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j’'h´MVhjp'h²hubjC)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jBhjp'h²hh³j’'h´MVubeh}”(h]”h ]”(j_Œmacro”eh"]”h$]”h&]”jdj_jej«'jfj«'jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubhí)�”}”(hŒ``for_each_console (con)``”h]”jœ)�”}”(hj±'h]”hŒfor_each_console (con)”…”�”}”(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/console:30: ./include/linux/console.h”h´MXhj�!h²hubj­&)�”}”(hŒ"Iterator over registered consoles ”h]”hí)�”}”(hŒ!Iterator over registered consoles”h]”hŒ!Iterator over registered consoles”…”�”}”(hjË'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MVhjÇ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬&h³jÙ'h´MVhj�!h²hubjk)�”}”(hŒØ**Parameters** ``con`` struct console pointer used as loop cursor **Description** The console list and the :c:type:`console.flags ` are immutable while iterating. Requires console_list_lock to be held.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjæ'h]”hŒ Parameters”…”�”}”(hjè'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjä'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MZhjà'ubj‹)�”}”(hhh]”j�)�”}”(hŒ3``con`` struct console pointer used as loop cursor ”h]”(j–)�”}”(hŒ``con``”h]”jœ)�”}”(hj(h]”hŒcon”…”�”}”(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/console:30: ./include/linux/console.h”h´MWhjÿ'ubj²)�”}”(hhh]”hí)�”}”(hŒ*struct console pointer used as loop cursor”h]”hŒ*struct console pointer used as loop cursor”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j(h´MWhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÿ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j(h´MWhjü'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjà'ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj@(h]”hŒ Description”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj>(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MYhjà'ubhí)�”}”(hŒYThe console list and the :c:type:`console.flags ` are immutable while iterating.”h]”(hŒThe console list and the ”…”�”}”(hjV(h²hh³Nh´Nubh)�”}”(hŒ!:c:type:`console.flags `”h]”jœ)�”}”(hj`(h]”hŒ console.flags”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hj^(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j/ j3 Œconsole”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MXhjV(ubhŒ are immutable while iterating.”…”�”}”(hjV(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j}(h´MXhjà'ubhí)�”}”(hŒ&Requires console_list_lock to be held.”h]”hŒ&Requires console_list_lock to be held.”…”�”}”(hjˆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MZhjà'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒclear_selection (C function)”Œc.clear_selection”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒvoid clear_selection (void)”h]”jè)�”}”(hŒvoid clear_selection(void)”h]”(jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·(h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj³(h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KLubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj³(h²hh³jÅ(h´KLubj)�”}”(hŒclear_selection”h]”j)�”}”(hŒclear_selection”h]”hŒclear_selection”…”�”}”(hjØ(h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjÔ(ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj³(h²hh³jÅ(h´KLubj")�”}”(hŒ(void)”h]”j")�”}”(hŒvoid”h]”jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjô(h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjð(ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjì(ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj³(h²hh³jÅ(h´KLubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj¯(h²hh³jÅ(h´KLubah}”(h]”jª(ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jÅ(h´KLhj¬(h²hubjC)�”}”(hhh]”hí)�”}”(hŒremove current selection”h]”hŒremove current selection”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KLhj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj¬(h²hh³jÅ(h´KLubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej6)jfj6)jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hŒÁ**Parameters** ``void`` no arguments **Description** Remove the current selection highlight, if any from the console holding the selection. Locking: The caller must hold the console lock.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj@)h]”hŒ Parameters”…”�”}”(hjB)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj>)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KPhj:)ubj‹)�”}”(hhh]”j�)�”}”(hŒ``void`` no arguments ”h]”(j–)�”}”(hŒ``void``”h]”jœ)�”}”(hj_)h]”hŒvoid”…”�”}”(hja)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj])ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KhjY)ubj²)�”}”(hhh]”hí)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjx)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jt)h´Khju)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjY)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jt)h´KhjV)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj:)ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjš)h]”hŒ Description”…”�”}”(hjœ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj˜)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´Khj:)ubhí)�”}”(hŒVRemove the current selection highlight, if any from the console holding the selection.”h]”hŒVRemove the current selection highlight, if any from the console holding the selection.”…”�”}”(hj°)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KMhj:)ubhí)�”}”(hŒ/Locking: The caller must hold the console lock.”h]”hŒ/Locking: The caller must hold the console lock.”…”�”}”(hj¿)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KPhj:)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_font_pitch (C function)”Œc.vc_font_pitch”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ7unsigned int vc_font_pitch (const struct vc_font *font)”h]”jè)�”}”(hŒ6unsigned int vc_font_pitch(const struct vc_font *font)”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjî)h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjê)h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjê)h²hh³jü)h´KïubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjê)h²hh³jü)h´Kïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjê)h²hh³jü)h´Kïubj)�”}”(hŒ vc_font_pitch”h]”j)�”}”(hŒ vc_font_pitch”h]”hŒ vc_font_pitch”…”�”}”(hj+*h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj'*ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjê)h²hh³jü)h´Kïubj")�”}”(hŒ(const struct vc_font *font)”h]”j")�”}”(hŒconst struct vc_font *font”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(hjG*h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjC*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjC*ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hjb*h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjC*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjC*ubh)�”}”(hhh]”j)�”}”(hŒvc_font”h]”hŒvc_font”…”�”}”(hj€*h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj}*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j‚*Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["j-*sbŒc.vc_font_pitch”†”asbuh1hhjC*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjC*ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hj®*h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjC*ubj)�”}”(hŒfont”h]”hŒfont”…”�”}”(hj»*h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjC*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj?*ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjê)h²hh³jü)h´Kïubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjæ)h²hh³jü)h´Kïubah}”(h]”já)ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jü)h´Kïhjã)h²hubjC)�”}”(hhh]”hí)�”}”(hŒ=Calculates the number of bytes between two adjacent scanlines”h]”hŒ=Calculates the number of bytes between two adjacent scanlines”…”�”}”(hjå*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kïhjâ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjã)h²hh³jü)h´Kïubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejý*jfjý*jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hŒ�**Parameters** ``const struct vc_font *font`` The VC font **Return** The number of bytes between two adjacent scanlines in the font data”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj+h]”hŒ Parameters”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kóhj+ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct vc_font *font`` The VC font ”h]”(j–)�”}”(hŒ``const struct vc_font *font``”h]”jœ)�”}”(hj&+h]”hŒconst struct vc_font *font”…”�”}”(hj(+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj$+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kðhj +ubj²)�”}”(hhh]”hí)�”}”(hŒ The VC font”h]”hŒ The VC font”…”�”}”(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+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj+ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hja+h]”hŒReturn”…”�”}”(hjc+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj_+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kòhj+ubhí)�”}”(hŒCThe number of bytes between two adjacent scanlines in the font data”h]”hŒCThe number of bytes between two adjacent scanlines in the font data”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kòhj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_font_size (C function)”Œc.vc_font_size”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ6unsigned int vc_font_size (const struct vc_font *font)”h]”jè)�”}”(hŒ5unsigned int vc_font_size(const struct vc_font *font)”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦+h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj¢+h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Küubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¢+h²hh³j´+h´KüubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃ+h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj¢+h²hh³j´+h´Küubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¢+h²hh³j´+h´Küubj)�”}”(hŒ vc_font_size”h]”j)�”}”(hŒ vc_font_size”h]”hŒ vc_font_size”…”�”}”(hjã+h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjß+ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj¢+h²hh³j´+h´Küubj")�”}”(hŒ(const struct vc_font *font)”h]”j")�”}”(hŒconst struct vc_font *font”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(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û+ubjî)�”}”(hjh]”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Œvc_font”h]”hŒvc_font”…”�”}”(hj8,h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj5,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j:,Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["jå+sbŒc.vc_font_size”†”asbuh1hhjû+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjû+ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjf,h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjû+ubj)�”}”(hŒfont”h]”hŒfont”…”�”}”(hjs,h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjû+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj÷+ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj¢+h²hh³j´+h´Küubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjž+h²hh³j´+h´Küubah}”(h]”j™+ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j´+h´Kühj›+h²hubjC)�”}”(hhh]”hí)�”}”(hŒ-Calculates the size of the font data in bytes”h]”hŒ-Calculates the size of the font data in bytes”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kühjš,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj›+h²hh³j´+h´Küubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejµ,jfjµ,jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hX**Parameters** ``const struct vc_font *font`` The VC font **Description** vc_font_size() calculates the number of bytes of font data in the font specified by **font**. The function calculates the size from the font parameters. **Return** The size of the font data in bytes.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj¿,h]”hŒ Parameters”…”�”}”(hjÁ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj½,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj¹,ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct vc_font *font`` The VC font ”h]”(j–)�”}”(hŒ``const struct vc_font *font``”h]”jœ)�”}”(hjÞ,h]”hŒconst struct vc_font *font”…”�”}”(hjà,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÜ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´KýhjØ,ubj²)�”}”(hhh]”hí)�”}”(hŒ The VC font”h]”hŒ The VC font”…”�”}”(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Õ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj¹,ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj-h]”hŒ Description”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kÿhj¹,ubhí)�”}”(hŒ˜vc_font_size() calculates the number of bytes of font data in the font specified by **font**. The function calculates the size from the font parameters.”h]”(hŒTvc_font_size() calculates the number of bytes of font data in the font specified by ”…”�”}”(hj/-h²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hj7-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj/-ubhŒ<. The function calculates the size from the font parameters.”…”�”}”(hj/-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Kþhj¹,ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hjR-h]”hŒReturn”…”�”}”(hjT-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjP-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj¹,ubhí)�”}”(hŒ#The size of the font data in bytes.”h]”hŒ#The size of the font data in bytes.”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj¹,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ!vc_cursor_valid_size (C function)”Œc.vc_cursor_valid_size”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒCalculates the cursor's first scanline within a character cell”h]”hŒ@Calculates the cursor’s first scanline within a character cell”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M:hj~0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjj/h²hh³jƒ/h´M:ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej™0jfj™0jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hXè**Parameters** ``unsigned int cell_height`` The overall height of the character cell ``unsigned int cursor_size`` The size constant of cursor pattern **Description** The parameter **cell_height** is the height of the character cell as displayed by the console. The argument given in **cursor_size** is one of the CUR_ constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant. **Return** The index of the cursor's first scanline within the character cell”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj£0h]”hŒ Parameters”…”�”}”(hj¥0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M>hj�0ubj‹)�”}”(hhh]”(j�)�”}”(hŒF``unsigned int cell_height`` The overall height of the character cell ”h]”(j–)�”}”(hŒ``unsigned int cell_height``”h]”jœ)�”}”(hjÂ0h]”hŒunsigned int cell_height”…”�”}”(hjÄ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M;hj¼0ubj²)�”}”(hhh]”hí)�”}”(hŒ(The overall height of the character cell”h]”hŒ(The overall height of the character cell”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j×0h´M;hjØ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¼0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j×0h´M;hj¹0ubj�)�”}”(hŒA``unsigned int cursor_size`` The size constant of cursor pattern ”h]”(j–)�”}”(hŒ``unsigned int cursor_size``”h]”jœ)�”}”(hjû0h]”hŒunsigned int cursor_size”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjù0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M<hjõ0ubj²)�”}”(hhh]”hí)�”}”(hŒ#The size constant of cursor pattern”h]”hŒ#The size constant of cursor pattern”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j1h´M<hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjõ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j1h´M<hj¹0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj�0ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj61h]”hŒ Description”…”�”}”(hj81h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj41ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M>hj�0ubhí)�”}”(hŒêThe parameter **cell_height** is the height of the character cell as displayed by the console. The argument given in **cursor_size** is one of the CUR_ constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant.”h]”(hŒThe parameter ”…”�”}”(hjL1h²hh³Nh´Nubju)�”}”(hŒ**cell_height**”h]”hŒ cell_height”…”�”}”(hjT1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjL1ubhŒX is the height of the character cell as displayed by the console. The argument given in ”…”�”}”(hjL1h²hh³Nh´Nubju)�”}”(hŒ**cursor_size**”h]”hŒ cursor_size”…”�”}”(hjf1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjL1ubhŒ is one of the ”…”�”}”(hjL1h²hh³Nh´Nubjÿ.)�”}”(hŒCUR_”h]”hŒCUR_”…”�”}”hjx1sbah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œid9”uh1jþ.hjL1h²hh³Nh´NubhŒS constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant.”…”�”}”(hjL1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M=hj�0ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hj–1h]”hŒReturn”…”�”}”(hj˜1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj”1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MBhj�0ubhí)�”}”(hŒBThe index of the cursor's first scanline within the character cell”h]”hŒDThe index of the cursor’s first scanline within the character cell”…”�”}”(hj¬1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MChj�0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_cursor_end (C function)”Œc.vc_cursor_end”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒOunsigned int vc_cursor_end (unsigned int cell_height, unsigned int cursor_size)”h]”jè)�”}”(hŒNunsigned int vc_cursor_end(unsigned int cell_height, unsigned int cursor_size)”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj×1h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj×1h²hh³jé1h´M^ubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjø1h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj×1h²hh³jé1h´M^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj×1h²hh³jé1h´M^ubj)�”}”(hŒ vc_cursor_end”h]”j)�”}”(hŒ vc_cursor_end”h]”hŒ vc_cursor_end”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj×1h²hh³jé1h´M^ubj")�”}”(hŒ4(unsigned int cell_height, unsigned int cursor_size)”h]”(j")�”}”(hŒunsigned int cell_height”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj42h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj02ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj02ubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjP2h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj02ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj02ubj)�”}”(hŒ cell_height”h]”hŒ cell_height”…”�”}”(hjl2h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj02ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj,2ubj")�”}”(hŒunsigned int cursor_size”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj…2h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj�2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj�2ubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡2h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj�2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj�2ubj)�”}”(hŒ cursor_size”h]”hŒ cursor_size”…”�”}”(hj½2h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj�2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj,2ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj×1h²hh³jé1h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjÓ1h²hh³jé1h´M^ubah}”(h]”jÎ1ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jé1h´M^hjÐ1h²hubjC)�”}”(hhh]”hí)�”}”(hŒFCalculates the first scanline after the cursor within a character cell”h]”hŒFCalculates the first scanline after the cursor within a character cell”…”�”}”(hjç2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M^hjä2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÐ1h²hh³jé1h´M^ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÿ2jfjÿ2jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hXð**Parameters** ``unsigned int cell_height`` The overall height of the character cell ``unsigned int cursor_size`` The size constant of cursor pattern **Description** The parameter **cell_height** is the height of the character cell as displayed by the console. The argument given in **cursor_size** is one of the CUR_ constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant. **Return** The index of the first scanline after the cursor within the character cell”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj 3h]”hŒ Parameters”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mbhj3ubj‹)�”}”(hhh]”(j�)�”}”(hŒF``unsigned int cell_height`` The overall height of the character cell ”h]”(j–)�”}”(hŒ``unsigned int cell_height``”h]”jœ)�”}”(hj(3h]”hŒunsigned int cell_height”…”�”}”(hj*3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj&3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M_hj"3ubj²)�”}”(hhh]”hí)�”}”(hŒ(The overall height of the character cell”h]”hŒ(The overall height of the character cell”…”�”}”(hjA3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j=3h´M_hj>3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj"3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j=3h´M_hj3ubj�)�”}”(hŒA``unsigned int cursor_size`` The size constant of cursor pattern ”h]”(j–)�”}”(hŒ``unsigned int cursor_size``”h]”jœ)�”}”(hja3h]”hŒunsigned int cursor_size”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj_3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M`hj[3ubj²)�”}”(hhh]”hí)�”}”(hŒ#The size constant of cursor pattern”h]”hŒ#The size constant of cursor pattern”…”�”}”(hjz3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jv3h´M`hjw3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj[3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jv3h´M`hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj3ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjœ3h]”hŒ Description”…”�”}”(hjž3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjš3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mbhj3ubhí)�”}”(hŒêThe parameter **cell_height** is the height of the character cell as displayed by the console. The argument given in **cursor_size** is one of the CUR_ constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant.”h]”(hŒThe parameter ”…”�”}”(hj²3h²hh³Nh´Nubju)�”}”(hŒ**cell_height**”h]”hŒ cell_height”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj²3ubhŒX is the height of the character cell as displayed by the console. The argument given in ”…”�”}”(hj²3h²hh³Nh´Nubju)�”}”(hŒ**cursor_size**”h]”hŒ cursor_size”…”�”}”(hjÌ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj²3ubhŒ is one of the ”…”�”}”(hj²3h²hh³Nh´Nubjÿ.)�”}”(hŒCUR_”h]”hŒCUR_”…”�”}”hjÞ3sbah}”(h]”Œid12”ah ]”h"]”h$]”h&]”Œrefid”Œid11”uh1jþ.hj²3h²hh³Nh´NubhŒS constants. See vc_cursor_valid_size() for how to get a valid cursor-size constant.”…”�”}”(hj²3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mahj3ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hjü3h]”hŒReturn”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjú3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mfhj3ubhí)�”}”(hŒJThe index of the first scanline after the cursor within the character cell”h]”hŒJThe index of the first scanline after the cursor within the character cell”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mghj3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ__vc_resize (C function)”Œ c.__vc_resize”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒZint __vc_resize (struct vc_data *vc, unsigned int cols, unsigned int rows, bool from_user)”h]”jè)�”}”(hŒYint __vc_resize(struct vc_data *vc, unsigned int cols, unsigned int rows, bool from_user)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjA4h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj=4h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M˜ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj=4h²hh³jO4h´M˜ubj)�”}”(hŒ __vc_resize”h]”j)�”}”(hŒ __vc_resize”h]”hŒ __vc_resize”…”�”}”(hjb4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj^4ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj=4h²hh³jO4h´M˜ubj")�”}”(hŒJ(struct vc_data *vc, unsigned int cols, unsigned int rows, bool from_user)”h]”(j")�”}”(hŒstruct vc_data *vc”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj~4h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjz4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjz4ubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj™4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”jž4Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["jd4sbŒ c.__vc_resize”†”asbuh1hhjz4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjz4ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjÊ4h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjz4ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hj×4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjz4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjv4ubj")�”}”(hŒunsigned int cols”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjð4h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjì4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ4h²hh³Nh´Nubah}”(h]”h ]”j ah"•]”h$]”h&]”uh1jÿhjì4ubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjì4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjì4ubj)�”}”(hŒcols”h]”hŒcols”…”�”}”(hj(5h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjì4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjv4ubj")�”}”(hŒunsigned int rows”h]”(jÈ!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjA5h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj=5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj=5ubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj]5h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj=5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj=5ubj)�”}”(hŒrows”h]”hŒrows”…”�”}”(hjy5h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj=5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjv4ubj")�”}”(hŒbool from_user”h]”(jÈ!)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj’5h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjŽ5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjŽ5ubj)�”}”(hŒ from_user”h]”hŒ from_user”…”�”}”(hj®5h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjŽ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjv4ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj=4h²hh³jO4h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj94h²hh³jO4h´M˜ubah}”(h]”j44ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jO4h´M˜hj64h²hubjC)�”}”(hhh]”hí)�”}”(hŒ resize a VT”h]”hŒ resize a VT”…”�”}”(hjØ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M˜hjÕ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj64h²hh³jO4h´M˜ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejð5jfjð5jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hX—**Parameters** ``struct vc_data *vc`` virtual console ``unsigned int cols`` columns ``unsigned int rows`` rows ``bool from_user`` invoked by a user? **Description** Resize a virtual console as seen from the console end of things. We use the common vc_do_resize() method to update the structures. Locking: The caller must hold the console sem to protect console internals and **vc->port.tty**.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjú5h]”hŒ Parameters”…”�”}”(hjü5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjø5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mœhjô5ubj‹)�”}”(hhh]”(j�)�”}”(hŒ'``struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``struct vc_data *vc``”h]”jœ)�”}”(hj6h]”hŒstruct vc_data *vc”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M™hj6ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hj26h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j.6h´M™hj/6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j.6h´M™hj6ubj�)�”}”(hŒ``unsigned int cols`` columns ”h]”(j–)�”}”(hŒ``unsigned int cols``”h]”jœ)�”}”(hjR6h]”hŒunsigned int cols”…”�”}”(hjT6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjP6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MšhjL6ubj²)�”}”(hhh]”hí)�”}”(hŒcolumns”h]”hŒcolumns”…”�”}”(hjk6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jg6h´Mšhjh6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjL6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jg6h´Mšhj6ubj�)�”}”(hŒ``unsigned int rows`` rows ”h]”(j–)�”}”(hŒ``unsigned int rows``”h]”jœ)�”}”(hj‹6h]”hŒunsigned int rows”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M›hj…6ubj²)�”}”(hhh]”hí)�”}”(hŒrows”h]”hŒrows”…”�”}”(hj¤6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j 6h´M›hj¡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj…6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j 6h´M›hj6ubj�)�”}”(hŒ&``bool from_user`` invoked by a user? ”h]”(j–)�”}”(hŒ``bool from_user``”h]”jœ)�”}”(hjÄ6h]”hŒbool from_user”…”�”}”(hjÆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÂ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mœhj¾6ubj²)�”}”(hhh]”hí)�”}”(hŒinvoked by a user?”h]”hŒinvoked by a user?”…”�”}”(hjÝ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÙ6h´MœhjÚ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¾6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÙ6h´Mœhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjô5ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjÿ6h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjý6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mžhjô5ubhí)�”}”(hŒ‚Resize a virtual console as seen from the console end of things. We use the common vc_do_resize() method to update the structures.”h]”hŒ‚Resize a virtual console as seen from the console end of things. We use the common vc_do_resize() method to update the structures.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hjô5ubhí)�”}”(hŒ`Locking: The caller must hold the console sem to protect console internals and **vc->port.tty**.”h]”(hŒOLocking: The caller must hold the console sem to protect console internals and ”…”�”}”(hj$7h²hh³Nh´Nubju)�”}”(hŒ**vc->port.tty**”h]”hŒ vc->port.tty”…”�”}”(hj,7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj$7ubhŒ.”…”�”}”(hj$7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M hjô5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_is_bound (C function)”Œc.con_is_bound”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ*int con_is_bound (const struct consw *csw)”h]”jè)�”}”(hŒ)int con_is_bound(const struct consw *csw)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hje7h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hja7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mdubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhja7h²hh³js7h´Mdubj)�”}”(hŒ con_is_bound”h]”j)�”}”(hŒ con_is_bound”h]”hŒ con_is_bound”…”�”}”(hj†7h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj‚7ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhja7h²hh³js7h´Mdubj")�”}”(hŒ(const struct consw *csw)”h]”j")�”}”(hŒconst struct consw *csw”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(hj¢7h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjž7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjž7ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hj½7h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjž7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjž7ubh)�”}”(hhh]”j)�”}”(hŒconsw”h]”hŒconsw”…”�”}”(hjÛ7h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjØ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”jÝ7Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["jˆ7sbŒc.con_is_bound”†”asbuh1hhjž7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjž7ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjž7ubj)�”}”(hŒcsw”h]”hŒcsw”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjž7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjš7ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hja7h²hh³js7h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj]7h²hh³js7h´Mdubah}”(h]”jX7ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³js7h´MdhjZ7h²hubjC)�”}”(hhh]”hí)�”}”(hŒ(checks if driver is bound to the console”h]”hŒ(checks if driver is bound to the console”…”�”}”(hj@8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mdhj=8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjZ7h²hh³js7h´Mdubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejX8jfjX8jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hŒ÷**Parameters** ``const struct consw *csw`` console driver **Return** zero if unbound, nonzero if bound **Description** Drivers can call this and if zero, they should release all resources allocated on :c:type:`consw.con_startup\(\) `”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjb8h]”hŒ Parameters”…”�”}”(hjd8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj`8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhhj\8ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct consw *csw`` console driver ”h]”(j–)�”}”(hŒ``const struct consw *csw``”h]”jœ)�”}”(hj�8h]”hŒconst struct consw *csw”…”�”}”(hjƒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mehj{8ubj²)�”}”(hhh]”hí)�”}”(hŒconsole driver”h]”hŒconsole driver”…”�”}”(hjš8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j–8h´Mehj—8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj{8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j–8h´Mehjx8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj\8ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hj¼8h]”hŒReturn”…”�”}”(hj¾8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjº8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mghj\8ubhí)�”}”(hŒ!zero if unbound, nonzero if bound”h]”hŒ!zero if unbound, nonzero if bound”…”�”}”(hjÒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mghj\8ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjã8h]”hŒ Description”…”�”}”(hjå8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjá8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mihj\8ubhí)�”}”(hŒyDrivers can call this and if zero, they should release all resources allocated on :c:type:`consw.con_startup\(\) `”h]”(hŒRDrivers can call this and if zero, they should release all resources allocated on ”…”�”}”(hjù8h²hh³Nh´Nubh)�”}”(hŒ':c:type:`consw.con_startup\(\) `”h]”jœ)�”}”(hj9h]”hŒconsw.con_startup()”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j/ j3 Œconsw”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhhjù8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j 9h´Mhhj\8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_is_visible (C function)”Œc.con_is_visible”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ.bool con_is_visible (const struct vc_data *vc)”h]”jè)�”}”(hŒ-bool con_is_visible(const struct vc_data *vc)”h]”(jÈ!)�”}”(hj”5h]”hŒbool”…”�”}”(hjG9h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjC9h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M~ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjC9h²hh³jT9h´M~ubj)�”}”(hŒcon_is_visible”h]”j)�”}”(hŒcon_is_visible”h]”hŒcon_is_visible”…”�”}”(hjg9h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjc9ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjC9h²hh³jT9h´M~ubj")�”}”(hŒ(const struct vc_data *vc)”h]”j")�”}”(hŒconst struct vc_data *vc”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(hjƒ9h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj9ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hjž9h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj9ubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hj¼9h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj¹9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j¾9Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["ji9sbŒc.con_is_visible”†”asbuh1hhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj9ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjê9h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hj9ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hj÷9h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj{9ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjC9h²hh³jT9h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj?9h²hh³jT9h´M~ubah}”(h]”j:9ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jT9h´M~hj<9h²hubjC)�”}”(hhh]”hí)�”}”(hŒ-checks whether the current console is visible”h]”hŒ-checks whether the current console is visible”…”�”}”(hj!:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M~hj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj<9h²hh³jT9h´M~ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej9:jfj9:jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hŒs**Parameters** ``const struct vc_data *vc`` virtual console **Return** zero if not visible, nonzero if visible”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjC:h]”hŒ Parameters”…”�”}”(hjE:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjA:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M‚hj=:ubj‹)�”}”(hhh]”j�)�”}”(hŒ-``const struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``const struct vc_data *vc``”h]”jœ)�”}”(hjb:h]”hŒconst struct vc_data *vc”…”�”}”(hjd:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj`:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj\:ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hj{:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jw:h´Mhjx:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj\:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jw:h´MhjY:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj=:ubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hj�:h]”hŒReturn”…”�”}”(hjŸ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj›:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hj=:ubhí)�”}”(hŒ'zero if not visible, nonzero if visible”h]”hŒ'zero if not visible, nonzero if visible”…”�”}”(hj³:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hj=:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_debug_enter (C function)”Œc.con_debug_enter”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ)void con_debug_enter (struct vc_data *vc)”h]”jè)�”}”(hŒ(void con_debug_enter(struct vc_data *vc)”h]”(jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâ:h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjÞ:h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.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Œcon_debug_enter”h]”j)�”}”(hŒcon_debug_enter”h]”hŒcon_debug_enter”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjÿ:ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjÞ:h²hh³jð:h´MŒubj")�”}”(hŒ(struct vc_data *vc)”h]”j")�”}”(hŒstruct vc_data *vc”h]”(jî)�”}”(hjh]”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Œvc_data”h]”hŒvc_data”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj:;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j?;Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["j;sbŒc.con_debug_enter”†”asbuh1hhj;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj];h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj;ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjk;h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hj;ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hjx;h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj;ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjÞ:h²hh³jð:h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjÚ:h²hh³jð:h´MŒubah}”(h]”jÕ:ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jð:h´MŒhj×:h²hubjC)�”}”(hhh]”hí)�”}”(hŒ+prepare the console for the kernel debugger”h]”hŒ+prepare the console for the kernel debugger”…”�”}”(hj¢;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MŒhjŸ;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj×:h²hh³jð:h´MŒubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejº;jfjº;jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hX**Parameters** ``struct vc_data *vc`` virtual console **Description** Called when the console is taken over by the kernel debugger, this function needs to save the current console state, then put the console into a state suitable for the kernel debugger.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÄ;h]”hŒ Parameters”…”�”}”(hjÆ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÂ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hj¾;ubj‹)�”}”(hhh]”j�)�”}”(hŒ'``struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``struct vc_data *vc``”h]”jœ)�”}”(hjã;h]”hŒstruct vc_data *vc”…”�”}”(hjå;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjá;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hjÝ;ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(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Ú;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj¾;ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj<h]”hŒ Description”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M�hj¾;ubhí)�”}”(hŒ¸Called when the console is taken over by the kernel debugger, this function needs to save the current console state, then put the console into a state suitable for the kernel debugger.”h]”hŒ¸Called when the console is taken over by the kernel debugger, this function needs to save the current console state, then put the console into a state suitable for the kernel debugger.”…”�”}”(hj4<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MŽhj¾;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_debug_leave (C function)”Œc.con_debug_leave”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒvoid con_debug_leave (void)”h]”jè)�”}”(hŒvoid con_debug_leave(void)”h]”(jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjc<h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj_<h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj_<h²hh³jq<h´M¶ubj)�”}”(hŒcon_debug_leave”h]”j)�”}”(hŒcon_debug_leave”h]”hŒcon_debug_leave”…”�”}”(hj„<h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj€<ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj_<h²hh³jq<h´M¶ubj")�”}”(hŒ(void)”h]”j")�”}”(hŒvoid”h]”jÈ!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjœ<ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj˜<ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj_<h²hh³jq<h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj[<h²hh³jq<h´M¶ubah}”(h]”jV<ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jq<h´M¶hjX<h²hubjC)�”}”(hhh]”hí)�”}”(hŒrestore console state”h]”hŒrestore console state”…”�”}”(hjÊ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M¶hjÇ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjX<h²hh³jq<h´M¶ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejâ<jfjâ<jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hŒŠ**Parameters** ``void`` no arguments **Description** Restore the console state to what it was before the kernel debugger was invoked.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjì<h]”hŒ Parameters”…”�”}”(hjî<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjê<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mºhjæ<ubj‹)�”}”(hhh]”j�)�”}”(hŒ``void`` no arguments ”h]”(j–)�”}”(hŒ``void``”h]”jœ)�”}”(hj =h]”hŒvoid”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj =ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Khj=ubj²)�”}”(hhh]”hí)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj$=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j =h´Khj!=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j =h´Khj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjæ<ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjF=h]”hŒ Description”…”�”}”(hjH=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjD=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Khjæ<ubhí)�”}”(hŒPRestore the console state to what it was before the kernel debugger was invoked.”h]”hŒPRestore the console state to what it was before the kernel debugger was invoked.”…”�”}”(hj\=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M·hjæ<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ%do_unregister_con_driver (C function)”Œc.do_unregister_con_driver”hNt”auh1jËhj�!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ6int do_unregister_con_driver (const struct consw *csw)”h]”jè)�”}”(hŒ5int do_unregister_con_driver(const struct consw *csw)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj‡=h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj‡=h²hh³j™=h´Mubj)�”}”(hŒdo_unregister_con_driver”h]”j)�”}”(hŒdo_unregister_con_driver”h]”hŒdo_unregister_con_driver”…”�”}”(hj¬=h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj¨=ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj‡=h²hh³j™=h´Mubj")�”}”(hŒ(const struct consw *csw)”h]”j")�”}”(hŒconst struct consw *csw”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(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Ä=ubjî)�”}”(hjh]”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Œconsw”h]”hŒconsw”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjþ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j>Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["j®=sbŒc.do_unregister_con_driver”†”asbuh1hhjÄ=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÄ=ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hj/>h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hjÄ=ubj)�”}”(hŒcsw”h]”hŒcsw”…”�”}”(hj<>h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjÄ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjÀ=ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hj‡=h²hh³j™=h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjƒ=h²hh³j™=h´Mubah}”(h]”j~=ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j™=h´Mhj€=h²hubjC)�”}”(hhh]”hí)�”}”(hŒ,unregister console driver from console layer”h]”hŒ,unregister console driver from console layer”…”�”}”(hjf>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhjc>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj€=h²hh³j™=h´Mubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej~>jfj~>jg‰jh‰ji‰uh1jÜh²hhj�!h³Nh´Nubjk)�”}”(hXv**Parameters** ``const struct consw *csw`` console driver **Description** All drivers that registers to the console layer must call this function upon exit, or if the console driver is in a state where it won't be able to handle console services, such as the framebuffer console without loaded framebuffer drivers. The driver must unbind first prior to unregistration.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjˆ>h]”hŒ Parameters”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj†>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M hj‚>ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct consw *csw`` console driver ”h]”(j–)�”}”(hŒ``const struct consw *csw``”h]”jœ)�”}”(hj§>h]”hŒconst struct consw *csw”…”�”}”(hj©>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¥>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj¡>ubj²)�”}”(hhh]”hí)�”}”(hŒconsole driver”h]”hŒconsole driver”…”�”}”(hjÀ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¼>h´Mhj½>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¡>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¼>h´Mhjž>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj‚>ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjâ>h]”hŒ Description”…”�”}”(hjä>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjà>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj‚>ubhí)�”}”(hŒðAll drivers that registers to the console layer must call this function upon exit, or if the console driver is in a state where it won't be able to handle console services, such as the framebuffer console without loaded framebuffer drivers.”h]”hŒòAll drivers that registers to the console layer must call this function upon exit, or if the console driver is in a state where it won’t be able to handle console services, such as the framebuffer console without loaded framebuffer drivers.”…”�”}”(hjø>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mhj‚>ubhí)�”}”(hŒ5The driver must unbind first prior to unregistration.”h]”hŒ5The driver must unbind first prior to unregistration.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´M hj‚>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj�!h²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Internals”h]”hŒ Internals”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjŠuh1hÍhj?h²hh³hÇh´K(ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒsel_loadlut (C function)”Œ c.sel_loadlut”hNt”auh1jËhj?h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ!int sel_loadlut (u32 __user *lut)”h]”jè)�”}”(hŒ int sel_loadlut(u32 __user *lut)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjG?h²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjC?h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Ksubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjC?h²hh³jU?h´Ksubj)�”}”(hŒ sel_loadlut”h]”j)�”}”(hŒ sel_loadlut”h]”hŒ sel_loadlut”…”�”}”(hjh?h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjd?ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjC?h²hh³jU?h´Ksubj")�”}”(hŒ(u32 __user *lut)”h]”j")�”}”(hŒu32 __user *lut”h]”(h)�”}”(hhh]”j)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‡?h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj„?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j‰?Œmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["jj?sbŒ c.sel_loadlut”†”asbuh1hhj€?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj€?ubhŒ__user”…”�”}”(hj€?h²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj€?ubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjÇ?h²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hj€?ubj)�”}”(hŒlut”h]”hŒlut”…”�”}”(hjÔ?h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj€?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj|?ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjC?h²hh³jU?h´Ksubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj??h²hh³jU?h´Ksubah}”(h]”j:?ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jU?h´KshjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M°hj:Hubj‹)�”}”(hhh]”(j�)�”}”(hŒ)``struct tty_struct *tty`` tty to resize ”h]”(j–)�”}”(hŒ``struct tty_struct *tty``”h]”jœ)�”}”(hj_Hh]”hŒstruct tty_struct *tty”…”�”}”(hjaHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj]Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M­hjYHubj²)�”}”(hhh]”hí)�”}”(hŒ tty to resize”h]”hŒ tty to resize”…”�”}”(hjxHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jtHh´M­hjuHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjYHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jtHh´M­hjVHubj�)�”}”(hŒ*``struct winsize *ws`` winsize attributes ”h]”(j–)�”}”(hŒ``struct winsize *ws``”h]”jœ)�”}”(hj˜Hh]”hŒstruct winsize *ws”…”�”}”(hjšHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj–Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M®hj’Hubj²)�”}”(hhh]”hí)�”}”(hŒwinsize attributes”h]”hŒwinsize attributes”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j­Hh´M®hj®Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj’Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j­Hh´M®hjVHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj:Hubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjÓHh]”hŒ Description”…”�”}”(hjÕHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÑHubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M°hj:Hubhí)�”}”(hŒ“Resize a virtual terminal. This is called by the tty layer as we register our own handler for resizing. The mutual helper does all the actual work.”h]”hŒ“Resize a virtual terminal. This is called by the tty layer as we register our own handler for resizing. The mutual helper does all the actual work.”…”�”}”(hjéHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M¯hj:Hubhí)�”}”(hŒzLocking: Takes the console sem and the called methods then take the tty termios_rwsem and the tty ctrl.lock in that order.”h]”hŒzLocking: Takes the console sem and the called methods then take the tty termios_rwsem and the tty ctrl.lock in that order.”…”�”}”(hjøHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M²hj:Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj?h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_ctl_state (C enum)”Œc.vc_ctl_state”hNt”auh1jËhj?h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ vc_ctl_state”h]”jè)�”}”(hŒenum vc_ctl_state”h]”(jî)�”}”(hjñh]”hŒenum”…”�”}”(hj'Ih²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj#Ih²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj#Ih²hh³j4Ih´M¸ubj)�”}”(hŒ vc_ctl_state”h]”j)�”}”(hj!Ih]”hŒ vc_ctl_state”…”�”}”(hjGIh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjCIubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj#Ih²hh³j4Ih´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjIh²hh³j4Ih´M¸ubah}”(h]”jIah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j4Ih´M¸hjIh²hubjC)�”}”(hhh]”hí)�”}”(hŒ control characters state of a vt”h]”hŒ control characters state of a vt”…”�”}”(hjiIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M hjfIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjIh²hh³j4Ih´M¸ubeh}”(h]”h ]”(j_Œenum”eh"]”h$]”h&]”jdj_jej�Ijfj�Ijg‰jh‰ji‰uh1jÜh²hhj?h³Nh´Nubjk)�”}”(hX**Constants** ``ESnormal`` initial state, no control characters parsed ``ESesc`` ESC parsed ``ESsquare`` CSI parsed -- modifiers/parameters/ctrl chars expected ``ESgetpars`` CSI parsed -- parameters/ctrl chars expected ``ESgetsubpars`` CSI m parsed -- subparameters expected ``ESfunckey`` CSI [ parsed ``EShash`` ESC # parsed ``ESsetG0`` ESC ( parsed ``ESsetG1`` ESC ) parsed ``ESpercent`` ESC % parsed ``EScsiignore`` CSI [0x20-0x3f] parsed ``ESnonstd`` OSC parsed ``ESpalette`` OSC P parsed ``ESosc`` OSC [0-9] parsed ``ESANSI_first`` first state for ignoring ansi control sequences ``ESapc`` ESC _ parsed ``ESpm`` ESC ^ parsed ``ESdcs`` ESC P parsed ``ESANSI_last`` last state for ignoring ansi control sequences”h]”(hí)�”}”(hŒ **Constants**”h]”ju)�”}”(hj‹Ih]”hŒ Constants”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‰Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M hj…Iubj‹)�”}”(hhh]”(j�)�”}”(hŒ9``ESnormal`` initial state, no control characters parsed ”h]”(j–)�”}”(hŒ ``ESnormal``”h]”jœ)�”}”(hjªIh]”hŒESnormal”…”�”}”(hj¬Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¨Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M! hj¤Iubj²)�”}”(hhh]”hí)�”}”(hŒ+initial state, no control characters parsed”h]”hŒ+initial state, no control characters parsed”…”�”}”(hjÃIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¿Ih´M! hjÀIubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¤Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¿Ih´M! hj¡Iubj�)�”}”(hŒ``ESesc`` ESC parsed ”h]”(j–)�”}”(hŒ ``ESesc``”h]”jœ)�”}”(hjãIh]”hŒESesc”…”�”}”(hjåIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjáIubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M$ hjÝIubj²)�”}”(hhh]”hí)�”}”(hŒ ESC parsed”h]”hŒ ESC parsed”…”�”}”(hjüIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jøIh´M$ hjùIubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÝIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jøIh´M$ hj¡Iubj�)�”}”(hŒD``ESsquare`` CSI parsed -- modifiers/parameters/ctrl chars expected ”h]”(j–)�”}”(hŒ ``ESsquare``”h]”jœ)�”}”(hjJh]”hŒESsquare”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M' hjJubj²)�”}”(hhh]”hí)�”}”(hŒ6CSI parsed -- modifiers/parameters/ctrl chars expected”h]”hŒ6CSI parsed -- modifiers/parameters/ctrl chars expected”…”�”}”(hj5Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j1Jh´M' hj2Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j1Jh´M' hj¡Iubj�)�”}”(hŒ;``ESgetpars`` CSI parsed -- parameters/ctrl chars expected ”h]”(j–)�”}”(hŒ ``ESgetpars``”h]”jœ)�”}”(hjUJh]”hŒ ESgetpars”…”�”}”(hjWJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjSJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M* hjOJubj²)�”}”(hhh]”hí)�”}”(hŒ,CSI parsed -- parameters/ctrl chars expected”h]”hŒ,CSI parsed -- parameters/ctrl chars expected”…”�”}”(hjnJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jjJh´M* hjkJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjOJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jjJh´M* hj¡Iubj�)�”}”(hŒ8``ESgetsubpars`` CSI m parsed -- subparameters expected ”h]”(j–)�”}”(hŒ``ESgetsubpars``”h]”jœ)�”}”(hjŽJh]”hŒ ESgetsubpars”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŒJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M- hjˆJubj²)�”}”(hhh]”hí)�”}”(hŒ&CSI m parsed -- subparameters expected”h]”hŒ&CSI m parsed -- subparameters expected”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j£Jh´M- hj¤Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjˆJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j£Jh´M- hj¡Iubj�)�”}”(hŒ``ESfunckey`` CSI [ parsed ”h]”(j–)�”}”(hŒ ``ESfunckey``”h]”jœ)�”}”(hjÇJh]”hŒ ESfunckey”…”�”}”(hjÉJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÅJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M0 hjÁJubj²)�”}”(hhh]”hí)�”}”(hŒ CSI [ parsed”h]”hŒ CSI [ parsed”…”�”}”(hjàJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÜJh´M0 hjÝJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÁJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÜJh´M0 hj¡Iubj�•r�)�”}”(hŒ``EShash`` ESC # parsed ”h]”(j–)�”}”(hŒ ``EShash``”h]”jœ)�”}”(hjKh]”hŒEShash”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjþJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M3 hjúJubj²)�”}”(hhh]”hí)�”}”(hŒ ESC # parsed”h]”hŒ ESC # parsed”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jKh´M3 hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjúJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jKh´M3 hj¡Iubj�)�”}”(hŒ``ESsetG0`` ESC ( parsed ”h]”(j–)�”}”(hŒ ``ESsetG0``”h]”jœ)�”}”(hj9Kh]”hŒESsetG0”…”�”}”(hj;Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj7Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M6 hj3Kubj²)�”}”(hhh]”hí)�”}”(hŒ ESC ( parsed”h]”hŒ ESC ( parsed”…”�”}”(hjRKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jNKh´M6 hjOKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj3Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jNKh´M6 hj¡Iubj�)�”}”(hŒ``ESsetG1`` ESC ) parsed ”h]”(j–)�”}”(hŒ ``ESsetG1``”h]”jœ)�”}”(hjrKh]”hŒESsetG1”…”�”}”(hjtKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjpKubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M9 hjlKubj²)�”}”(hhh]”hí)�”}”(hŒ ESC ) parsed”h]”hŒ ESC ) parsed”…”�”}”(hj‹Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‡Kh´M9 hjˆKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjlKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‡Kh´M9 hj¡Iubj�)�”}”(hŒ``ESpercent`` ESC % parsed ”h]”(j–)�”}”(hŒ ``ESpercent``”h]”jœ)�”}”(hj«Kh]”hŒ ESpercent”…”�”}”(hj­Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj©Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M< hj¥Kubj²)�”}”(hhh]”hí)�”}”(hŒ ESC % parsed”h]”hŒ ESC % parsed”…”�”}”(hjÄKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÀKh´M< hjÁKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¥Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÀKh´M< hj¡Iubj�)�”}”(hŒ'``EScsiignore`` CSI [0x20-0x3f] parsed ”h]”(j–)�”}”(hŒ``EScsiignore``”h]”jœ)�”}”(hjäKh]”hŒ EScsiignore”…”�”}”(hjæKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjâKubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M? hjÞKubj²)�”}”(hhh]”hí)�”}”(hŒCSI [0x20-0x3f] parsed”h]”hŒCSI [0x20-0x3f] parsed”…”�”}”(hjýKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jùKh´M? hjúKubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÞKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jùKh´M? hj¡Iubj�)�”}”(hŒ``ESnonstd`` OSC parsed ”h]”(j–)�”}”(hŒ ``ESnonstd``”h]”jœ)�”}”(hjLh]”hŒESnonstd”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MB hjLubj²)�”}”(hhh]”hí)�”}”(hŒ OSC parsed”h]”hŒ OSC parsed”…”�”}”(hj6Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j2Lh´MB hj3Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j2Lh´MB hj¡Iubj�)�”}”(hŒ``ESpalette`` OSC P parsed ”h]”(j–)�”}”(hŒ ``ESpalette``”h]”jœ)�”}”(hjVLh]”hŒ ESpalette”…”�”}”(hjXLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjTLubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´ME hjPLubj²)�”}”(hhh]”hí)�”}”(hŒ OSC P parsed”h]”hŒ OSC P parsed”…”�”}”(hjoLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jkLh´ME hjlLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjPLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jkLh´ME hj¡Iubj�)�”}”(hŒ``ESosc`` OSC [0-9] parsed ”h]”(j–)�”}”(hŒ ``ESosc``”h]”jœ)�”}”(hj�Lh]”hŒESosc”…”�”}”(hj‘Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MH hj‰Lubj²)�”}”(hhh]”hí)�”}”(hŒOSC [0-9] parsed”h]”hŒOSC [0-9] parsed”…”�”}”(hj¨Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j¤Lh´MH hj¥Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj‰Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¤Lh´MH hj¡Iubj�)�”}”(hŒA``ESANSI_first`` first state for ignoring ansi control sequences ”h]”(j–)�”}”(hŒ``ESANSI_first``”h]”jœ)�”}”(hjÈLh]”hŒ ESANSI_first”…”�”}”(hjÊLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÆLubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MK hjÂLubj²)�”}”(hhh]”hí)�”}”(hŒ/first state for ignoring ansi control sequences”h]”hŒ/first state for ignoring ansi control sequences”…”�”}”(hjáLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÝLh´MK hjÞLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÂLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÝLh´MK hj¡Iubj�)�”}”(hŒ``ESapc`` ESC _ parsed ”h]”(j–)�”}”(hŒ ``ESapc``”h]”jœ)�”}”(hjMh]”hŒESapc”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÿLubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MN hjûLubj²)�”}”(hhh]”hí)�”}”(hŒ ESC _ parsed”h]”hŒ ESC _ parsed”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jMh´MN hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjûLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jMh´MN hj¡Iubj�)�”}”(hŒ``ESpm`` ESC ^ parsed ”h]”(j–)�”}”(hŒ``ESpm``”h]”jœ)�”}”(hj:Mh]”hŒESpm”…”�”}”(hj``ESANSI_last`` last state for ignoring ansi control sequences”h]”(j–)�”}”(hŒ``ESANSI_last``”h]”jœ)�”}”(hj¬Mh]”hŒ ESANSI_last”…”�”}”(hj®Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjªMubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MV hj¦Mubj²)�”}”(hhh]”hí)�”}”(hŒ.last state for ignoring ansi control sequences”h]”hŒ.last state for ignoring ansi control sequences”…”�”}”(hjÅMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MW hjÂMubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¦Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÁMh´MV hj¡Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj…Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj?h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ vc_sanitize_unicode (C function)”Œc.vc_sanitize_unicode”hNt”auh1jËhj?h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ%int vc_sanitize_unicode (const int c)”h]”jè)�”}”(hŒ$int vc_sanitize_unicode(const int c)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjNh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÚ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjNh²hh³jNh´MÚ ubj)�”}”(hŒvc_sanitize_unicode”h]”j)�”}”(hŒvc_sanitize_unicode”h]”hŒvc_sanitize_unicode”…”�”}”(hj'Nh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj#Nubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjNh²hh³jNh´MÚ ubj")�”}”(hŒ (const int c)”h]”j")�”}”(hŒ const int c”h]”(jî)�”}”(hj "h]”hŒconst”…”�”}”(hjCNh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj?Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj?NubjÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj^Nh²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj?Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj?Nubj)�”}”(hj_h]”hŒc”…”�”}”(hjzNh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj?Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj;Nubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjNh²hh³jNh´MÚ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjþMh²hh³jNh´MÚ ubah}”(h]”jùMah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jNh´MÚ hjûMh²hubjC)�”}”(hhh]”hí)�”}”(hŒ3Replace invalid Unicode code points with ``U+FFFD``”h]”(hŒ)Replace invalid Unicode code points with ”…”�”}”(hj£Nh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hj«Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj£Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÚ hj Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjûMh²hh³jNh´MÚ ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÉNjfjÉNjg‰jh‰ji‰uh1jÜh²hhj?h³Nh´Nubjk)�”}”(hŒ9**Parameters** ``const int c`` the received code point”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÓNh]”hŒ Parameters”…”�”}”(hjÕNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÑNubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÞ hjÍNubj‹)�”}”(hhh]”j�)�”}”(hŒ'``const int c`` the received code point”h]”(j–)�”}”(hŒ``const int c``”h]”jœ)�”}”(hjòNh]”hŒ const int c”…”�”}”(hjôNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjðNubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mà hjìNubj²)�”}”(hhh]”hí)�”}”(hŒthe received code point”h]”hŒthe received code point”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÛ hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjìNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jOh´Mà hjéNubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÍNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj?h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ!vc_translate_unicode (C function)”Œc.vc_translate_unicode”hNt”auh1jËhj?h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒBint vc_translate_unicode (struct vc_data *vc, int c, bool *rescan)”h]”jè)�”}”(hŒAint vc_translate_unicode(struct vc_data *vc, int c, bool *rescan)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjLOh²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjHOh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mæ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjHOh²hh³jZOh´Mæ ubj)�”}”(hŒvc_translate_unicode”h]”j)�”}”(hŒvc_translate_unicode”h]”hŒvc_translate_unicode”…”�”}”(hjmOh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjiOubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjHOh²hh³jZOh´Mæ ubj")�”}”(hŒ)(struct vc_data *vc, int c, bool *rescan)”h]”(j")�”}”(hŒstruct vc_data *vc”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj‰Oh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj…Oubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj…Oubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hj§Oh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj¤Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j["Œ reftarget”j©OŒmodname”NŒ classname”Nj+ j. )�”}”j1 ]”jc")�”}”j["joOsbŒc.vc_translate_unicode”†”asbuh1hhj…Oubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj…Oubjw")�”}”(hjz"h]”hŒ*”…”�”}”(hjÕOh²hh³Nh´Nubah}”(h]”h ]”jƒ"ah"]”h$]”h&]”uh1jv"hj…Oubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hjâOh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj…Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj�Oubj")�”}”(hŒint c”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjûOh²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj÷Oubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj÷Oubj)�”}”(hj_h]”hŒc”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj÷Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hj�Oubj")�”}”(hŒ bool *rescan”h]”(jÈ!)�”}”(hj”5h]”hŒbool”…”�”}”(hj/Ph²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hj+Pubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`”h]”(hŒCombine UTF-8 into Unicode in ”…”�”}”(hj�Ph²hh³Nh´Nubh)�”}”(hŒ':c:type:`vc_data.vc_utf_char `”h]”jœ)�”}”(hj‹Ph]”hŒvc_data.vc_utf_char”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hj‰Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j. )�”}”j1 ]”jÃOŒc.vc_translate_unicode”†”asbj3 Œvc_data”uh1hh³jBCh´M÷hj�Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mæ hj~Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjAOh²hh³jZOh´Mæ ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej½Pjfj½Pjg‰jh‰ji‰uh1jÜh²hhj?h³Nh´Nubjk)�”}”(hX‰**Parameters** ``struct vc_data *vc`` virtual console ``int c`` UTF-8 byte to translate ``bool *rescan`` set to true iff **c** wasn't consumed here and needs to be re-processed **Description** * :c:type:`vc_data.vc_utf_char ` is the being-constructed Unicode code point. * :c:type:`vc_data.vc_utf_count ` is the number of continuation bytes still expected to arrive. * :c:type:`vc_data.vc_npar ` is the number of continuation bytes arrived so far. **Return** * ``-1`` - Input OK so far, **c** consumed, further bytes expected. * ``0xFFFD`` - Possibility 1: input invalid, **c** may have been consumed (see desc. of **rescan**). Possibility 2: input OK, **c** consumed, ``U+FFFD`` is the resulting code point. ``U+FFFD`` is valid, ``REPLACEMENT CHARACTER``. * otherwise - Input OK, **c** consumed, resulting code point returned.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÇPh]”hŒ Parameters”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÅPubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mê hjÁPubj‹)�”}”(hhh]”(j�)�”}”(hŒ'``struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``struct vc_data *vc``”h]”jœ)�”}”(hjæPh]”hŒstruct vc_data *vc”…”�”}”(hjèPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjäPubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mç hjàPubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hjÿPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jûPh´Mç hjüPubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjàPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jûPh´Mç hjÝPubj�)�”}”(hŒ"``int c`` UTF-8 byte to translate ”h]”(j–)�”}”(hŒ ``int c``”h]”jœ)�”}”(hjQh]”hŒint c”…”�”}”(hj!Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mè hjQubj²)�”}”(hhh]”hí)�”}”(hŒUTF-8 byte to translate”h]”hŒUTF-8 byte to translate”…”�”}”(hj8Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j4Qh´Mè hj5Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j4Qh´Mè hjÝPubj�)�”}”(hŒY``bool *rescan`` set to true iff **c** wasn't consumed here and needs to be re-processed ”h]”(j–)�”}”(hŒ``bool *rescan``”h]”jœ)�”}”(hjXQh]”hŒ bool *rescan”…”�”}”(hjZQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjVQubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mé hjRQubj²)�”}”(hhh]”hí)�”}”(hŒGset to true iff **c** wasn't consumed here and needs to be re-processed”h]”(hŒset to true iff ”…”�”}”(hjqQh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjyQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjqQubhŒ4 wasn’t consumed here and needs to be re-processed”…”�”}”(hjqQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jmQh´Mé hjnQubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjRQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jmQh´Mé hjÝPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÁPubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj¥Qh]”hŒ Description”…”�”}”(hj§Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj£Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Më hjÁPubhã)�”}”(hhh]”(hè)�”}”(hŒT:c:type:`vc_data.vc_utf_char ` is the being-constructed Unicode code point.”h]”hí)�”}”(hjÀQh]”(h)�”}”(hŒ':c:type:`vc_data.vc_utf_char `”h]”jœ)�”}”(hjÇQh]”hŒvc_data.vc_utf_char”…”�”}”(hjÉQh²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hjÅQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j/ j3 Œvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mê hjÂQubhŒ- is the being-constructed Unicode code point.”…”�”}”(hjÂQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jäQh´Mê hj¾Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj»Qubhè)�”}”(hŒf:c:type:`vc_data.vc_utf_count ` is the number of continuation bytes still expected to arrive.”h]”hí)�”}”(hŒf:c:type:`vc_data.vc_utf_count ` is the number of continuation bytes still expected to arrive.”h]”(h)�”}”(hŒ(:c:type:`vc_data.vc_utf_count `”h]”jœ)�”}”(hjÿQh]”hŒvc_data.vc_utf_count”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hjýQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j/ j3 Œvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Më hjùQubhŒ> is the number of continuation bytes still expected to arrive.”…”�”}”(hjùQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jRh´Më hjõQubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj»Qubhè)�”}”(hŒX:c:type:`vc_data.vc_npar ` is the number of continuation bytes arrived so far. ”h]”hí)�”}”(hŒW:c:type:`vc_data.vc_npar ` is the number of continuation bytes arrived so far.”h]”(h)�”}”(hŒ#:c:type:`vc_data.vc_npar `”h]”jœ)�”}”(hj7Rh]”hŒvc_data.vc_npar”…”�”}”(hj9Rh²hh³Nh´Nubah}”(h]”h ]”(j j_Œc-type”eh"]”h$]”h&]”uh1j›hj5Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j% Œ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j+ j/ j3 Œvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mí hj1RubhŒ4 is the number of continuation bytes arrived so far.”…”�”}”(hj1Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jTRh´Mí hj-Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj»Qubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”jz"uh1hâh³jäQh´Mê hjÁPubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hjnRh]”hŒReturn”…”�”}”(hjpRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjlRubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mï hjÁPubhã)�”}”(hhh]”(hè)�”}”(hŒA``-1`` - Input OK so far, **c** consumed, further bytes expected.”h]”hí)�”}”(hj‰Rh]”(jœ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjŽRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‹RubhŒ - Input OK so far, ”…”�”}”(hj‹Rh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‹RubhŒ" consumed, further bytes expected.”…”�”}”(hj‹Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mð hj‡Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj„Rubhè)�”}”(hX``0xFFFD`` - Possibility 1: input invalid, **c** may have been consumed (see desc. of **rescan**). Possibility 2: input OK, **c** consumed, ``U+FFFD`` is the resulting code point. ``U+FFFD`` is valid, ``REPLACEMENT CHARACTER``.”h]”j‹)�”}”(hhh]”j�)�”}”(hŒã``0xFFFD`` - Possibility 1: input invalid, **c** may have been consumed (see desc. of **rescan**). Possibility 2: input OK, **c** consumed, ``U+FFFD`` is the resulting code point. ``U+FFFD`` is valid, ``REPLACEMENT CHARACTER``.”h]”(j–)�”}”(hŒL``0xFFFD`` - Possibility 1: input invalid, **c** may have been consumed (see”h]”(jœ)�”}”(hŒ ``0xFFFD``”h]”hŒ0xFFFD”…”�”}”(hjÎRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÊRubhŒ! - Possibility 1: input invalid, ”…”�”}”(hjÊRh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjàRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÊRubhŒ may have been consumed (see”…”�”}”(hjÊRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mó hjÆRubj²)�”}”(hhh]”hí)�”}”(hŒ–desc. of **rescan**). Possibility 2: input OK, **c** consumed, ``U+FFFD`` is the resulting code point. ``U+FFFD`` is valid, ``REPLACEMENT CHARACTER``.”h]”(hŒ desc. of ”…”�”}”(hjüRh²hh³Nh´Nubju)�”}”(hŒ **rescan**”h]”hŒrescan”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjüRubhŒ). Possibility 2: input OK, ”…”�”}”(hjüRh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjüRubhŒ consumed, ”…”�”}”(hjüRh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hj(Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjüRubhŒ is the resulting code point. ”…”�”}”(hjüRh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hj:Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjüRubhŒ is valid, ”…”�”}”(hjüRh²hh³Nh´Nubjœ)�”}”(hŒ``REPLACEMENT CHARACTER``”h]”hŒREPLACEMENT CHARACTER”…”�”}”(hjLSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjüRubhŒ.”…”�”}”(hjüRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mò hjùRubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÆRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jøRh´Mó hjÃRubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj¿Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj„Rubhè)�”}”(hŒDotherwise - Input OK, **c** consumed, resulting code point returned.”h]”hí)�”}”(hjSh]”(hŒotherwise - Input OK, ”…”�”}”(hj�Sh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjˆSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj�SubhŒ) consumed, resulting code point returned.”…”�”}”(hj�Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mõ hj}Subah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj„Rubeh}”(h]”h ]”h"]”h$]”h&]”jkRjz"uh1hâh³j¸Rh´Mð hjÁPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj?h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvt_kmsg_redirect (C function)”Œc.vt_kmsg_redirect”hNt”auh1jËhj?h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒint vt_kmsg_redirect (int new)”h]”jè)�”}”(hŒint vt_kmsg_redirect(int new)”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍSh²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjÉSh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÉ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÉSh²hh³jÛSh´MÉ ubj)�”}”(hŒvt_kmsg_redirect”h]”j)�”}”(hŒvt_kmsg_redirect”h]”hŒvt_kmsg_redirect”…”�”}”(hjîSh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjêSubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjÉSh²hh³jÛSh´MÉ ubj")�”}”(hŒ (int new)”h]”j")�”}”(hŒint new”h]”(jÈ!)�”}”(hŒint”h]”hŒint”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jÔ!ah"]”h$]”h&]”uh1jÇ!hjTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjTubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj&Th²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j"hjTubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÿ!hjÉSh²hh³jÛSh´MÉ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjÅSh²hh³jÛSh´MÉ ubah}”(h]”jÀSah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jÛSh´MÉ hjÂSh²hubjC)�”}”(hhh]”hí)�”}”(hŒ$sets/gets the kernel message console”h]”hŒ$sets/gets the kernel message console”…”�”}”(hjPTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÉ hjMTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÂSh²hh³jÛSh´MÉ ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejhTjfjhTjg‰jh‰ji‰uh1jÜh²hhj?h³Nh´Nubjk)�”}”(hX`**Parameters** ``int new`` the new virtual terminal number or -1 if the console should stay unchanged **Description** By default, the kernel messages are always printed on the current virtual console. However, the user may modify that default with the ``TIOCL_SETKMSGREDIRECT`` ioctl call. This function sets the kernel message console to be **new**. It returns the old virtual console number. The virtual terminal number ``0`` (both as parameter and return value) means no redirection (i.e. always printed on the currently active console). The parameter -1 means that only the current console is returned, but the value is not modified. You may use the macro vt_get_kmsg_redirect() in that case to make the code more understandable. When the kernel is compiled without ``CONFIG_VT_CONSOLE``, this function ignores the parameter and always returns ``0``.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjrTh]”hŒ Parameters”…”�”}”(hjtTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjpTubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÍ hjlTubj‹)�”}”(hhh]”j�)�”}”(hŒW``int new`` the new virtual terminal number or -1 if the console should stay unchanged ”h]”(j–)�”}”(hŒ ``int new``”h]”jœ)�”}”(hj‘Th]”hŒint new”…”�”}”(hj“Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MË hj‹Tubj²)�”}”(hhh]”hí)�”}”(hŒJthe new virtual terminal number or -1 if the console should stay unchanged”h]”hŒJthe new virtual terminal number or -1 if the console should stay unchanged”…”�”}”(hjªTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÊ hj§Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj‹Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¦Th´MË hjˆTubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjlTubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjÍTh]”hŒ Description”…”�”}”(hjÏTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjËTubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÍ hjlTubhí)�”}”(hŒ«By default, the kernel messages are always printed on the current virtual console. However, the user may modify that default with the ``TIOCL_SETKMSGREDIRECT`` ioctl call.”h]”(hŒ†By default, the kernel messages are always printed on the current virtual console. However, the user may modify that default with the ”…”�”}”(hjãTh²hh³Nh´Nubjœ)�”}”(hŒ``TIOCL_SETKMSGREDIRECT``”h]”hŒTIOCL_SETKMSGREDIRECT”…”�”}”(hjëTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjãTubhŒ ioctl call.”…”�”}”(hjãTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÌ hjlTubhí)�”}”(hŒúThis function sets the kernel message console to be **new**. It returns the old virtual console number. The virtual terminal number ``0`` (both as parameter and return value) means no redirection (i.e. always printed on the currently active console).”h]”(hŒ4This function sets the kernel message console to be ”…”�”}”(hjUh²hh³Nh´Nubju)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjUubhŒI. It returns the old virtual console number. The virtual terminal number ”…”�”}”(hjUh²hh³Nh´Nubjœ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjUubhŒq (both as parameter and return value) means no redirection (i.e. always printed on the currently active console).”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÐ hjlTubhí)�”}”(hŒÀThe parameter -1 means that only the current console is returned, but the value is not modified. You may use the macro vt_get_kmsg_redirect() in that case to make the code more understandable.”h]”hŒÀThe parameter -1 means that only the current console is returned, but the value is not modified. You may use the macro vt_get_kmsg_redirect() in that case to make the code more understandable.”…”�”}”(hj7Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÕ hjlTubhí)�”}”(hŒxWhen the kernel is compiled without ``CONFIG_VT_CONSOLE``, this function ignores the parameter and always returns ``0``.”h]”(hŒ$When the kernel is compiled without ”…”�”}”(hjFUh²hh³Nh´Nubjœ)�”}”(hŒ``CONFIG_VT_CONSOLE``”h]”hŒCONFIG_VT_CONSOLE”…”�”}”(hjNUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjFUubhŒ9, this function ignores the parameter and always returns ”…”�”}”(hjFUh²hh³Nh´Nubjœ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjFUubhŒ.”…”�”}”(hjFUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MÙ hjlTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj?h²hh³Nh´Nubeh}”(h]”j�ah ]”h"]”h$]”jÂah&]”uh1hÈhj�!h²hh³hÇh´K(jÄKubeh}”(h]”jqah ]”h"]”Œconsole functions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œconsole”ah ]”h"]”Œconsole”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j¸UŒ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”}”Œcur”]”(hò)�”}”(hj/h]”hŒCUR”…”�”}”(hjúUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒCUR”Œrefname”jøUuh1hñhjä.ubhò)�”}”(hjz1h]”hŒCUR”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒCUR”j VŒcur”uh1hñhjL1ubhò)�”}”(hjà3h]”hŒCUR”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒCUR”j VŒcur”uh1hñhj²3ubesŒrefids”}”Œnameids”}”(j’Uj�Uj¶j±jÉjŒ internals”Njš!jOjŠUjquŒ nametypes”}”(j’U‰j¶‰jɉj.V‰jš!‰jŠU‰uh}”(j�UhÊj±hßjj¹jÚjãjj j!jî j jjjjøjýjjjojOjÌjéjîjqj�!jº!j¿!j=$jB$jS&jX&jn'js'jª(j¯(já)jæ)j™+jž+jŠ-j�-jh/jm/jÎ1jÓ1j44j94jX7j]7j:9j?9jÕ:jÚ:jV<j[<j~=jƒ=j�j?j:?j??jÁ@jÆ@j'Cj,CjáFjæFjIjIjùMjþMj?OjDOjÀSjÅShühójjjIj@jkjbjŠj�j/hŒsystem_message”“”)�”}”(hhh]”hí)�”}”(hhh]”hŒUnknown target name: "cur".”…”�”}”hj7Vsbah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj4Vubah}”(h]”j/ah ]”h"]”h$]”h&]”j /aŒlevel”KŒtype”ŒERROR”Œsource”j-/Œline”Muh1j2Vubj /j/jˆ1j3V)�”}”(hhh]”hí)�”}”(hhh]”hŒUnknown target name: "cur".”…”�”}”hjRVsbah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjOVubah}”(h]”jˆ1ah ]”h"]”h$]”h&]”j‚1aŒlevel”KŒtype”jLVŒsource”j“1Œline”M=uh1j2Vubj‚1jx1jî3j3V)�”}”(hhh]”hí)�”}”(hhh]”hŒUnknown target name: "cur".”…”�”}”hjlVsbah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjiVubah}”(h]”jî3ah ]”h"]”h$]”h&]”jè3aŒlevel”KŒtype”jLVŒsource”jù3Œline”Mauh1j2Vubjè3jÞ3uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jÆUK s…”R”Œparse_messages”]”j3V)�”}”(hhh]”hí)�”}”(hŒ,Duplicate implicit target name: "internals".”h]”hŒ0Duplicate implicit target name: “internalsâ€�.”…”�”}”(hj¡Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjžVubah}”(h]”h ]”h"]”h$]”h&]”j�aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”K(uh1j2Vhj?h²hh³hÇh´K(ubaŒtransform_messages”]”(j4VjOVjiVeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.