€•ŒŒ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´M6hjRh²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´M8hj¾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´M8hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÙh´M8hj»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´M9hj÷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´M9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´M9hj»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´M=hjÛ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´M=hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jöh´M=hj»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´M>hjubj²)�”}”(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´M>hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j/h´M>hj»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´M?hjMubj²)�”}”(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´M?hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jhh´M?hj»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´M@hj†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´M@hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¡h´M@hj»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´MAhj¿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´MAhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÚh´MAhj»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´MBhjø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´MBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´MBhj»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´MChj1ubj²)�”}”(hhh]”hí)�”}”(hŒTTY input speed”h]”hŒTTY input speed”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jLh´MChjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jLh´MChj»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´MDhjjubj²)�”}”(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´MDhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j…h´MDhj»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´MEhj£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´MEhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¾h´MEhj»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´MFhjÜ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´MFhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j÷h´MFhj»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´MGhj 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´MGhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j0 h´MGhj»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´MHhjN 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´MHhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³ji h´MHhj»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´Mihj£ 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´Mkhj£ 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´Mnhj£ 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´Mrhj£ 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´Mxhj£ 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´Mhj£ 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´MJhjô 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´MJhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´MJhj»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´MKhj- 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´MKhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jH h´MKhj»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´MLhjf 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´MLhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjf ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j� h´MLhj»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´MMhjŸ 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´MMhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjŸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jº h´MMhj»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´MNhjØ 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´MNhjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjØ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jó h´MNhj»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´MOhj 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´MOhj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j, h´MOhj»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´MPhjJ 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´MPhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjJ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³je h´MPhj»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´MPhj• 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´MQhj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j° h´MPhj»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´KýhjEubj²)�”}”(hhh]”hí)�”}”(hŒ Panic output”h]”hŒ Panic output”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j`h´Kýhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j`h´Kýhj—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´Kÿhj~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´Kÿhj—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´Mhjcubj“)�”}”(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´M hjcubhí)�”}”(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´Mhj®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´MhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÉh´Mhj«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´Mhjç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´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´Mhj«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´Mhj 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´Mhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j;h´Mhj«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´M hjYubj²)�”}”(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´M hj«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´M hj¥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´M hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÀh´M hj«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´M2hjÕ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)�”}”(hXs**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); 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/unblank the console. The target 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_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“)�”}”(hXbstruct 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); 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]”hXbstruct 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); 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´KGhjTubj‹)�”}”(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/unblank the console. The target 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/unblank the console. The target 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Œ8blank/unblank the console. The target 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_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œ)�”}”(hjíh]”hŒ con_font_set”…”�”}”(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Œuset console **vc** font to **font** with height **vpitch**. **flags** can be ``KD_FONT_FLAG_DONT_RECALC``. (optional)”h]”(hŒ set console ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ font to ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ with height ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ **vpitch**”h]”hŒvpitch”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ. ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ can be ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ``KD_FONT_FLAG_DONT_RECALC``”h]”hŒKD_FONT_FLAG_DONT_RECALC”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ . (optional)”…”�”}”(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Œ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›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:24: ./include/linux/console.h”h´KAhj{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”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjšubhŒ into ”…”�”}”(hjšh²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hjÆh²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´K@hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j–h´KAhjœ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´KChjëubj²)�”}”(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 ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ. ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ can be ”…”�”}”(hj h²hh³Nh´Nubjœ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubhŒ or font name to search for. ”…”�”}”(hj h²hh³Nh´Nubju)�”}”(hŒ**font**”h]”hŒfont”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubhŒ can be filled back. (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´KBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´KChjœ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œ)�”}”(hjsh]”hŒ con_resize”…”�”}”(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:24: ./include/linux/console.h”h´KEhjmubj²)�”}”(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”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjŒubhŒ. ”…”�”}”(hjŒh²hh³Nh´Nubju)�”}”(hŒ **from_user**”h]”hŒ from_user”…”�”}”(hjÊh²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´KDhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jˆh´KEhjœubj�)�”}”(hŒS``con_set_palette`` sets the palette of the console **vc** to **table** (optional) ”h]”(j–)�”}”(hŒ``con_set_palette``”h]”jœ)�”}”(hjõh]”hŒcon_set_palette”…”�”}”(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´KFhjïubj²)�”}”(hhh]”hí)�”}”(hŒ>sets the palette of the console **vc** to **table** (optional)”h]”(hŒ sets the palette of the console ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ**vc**”h]”hŒvc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ to ”…”�”}”(hjh²hh³Nh´Nubju)�”}”(hŒ **table**”h]”hŒtable”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubhŒ (optional)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j h´KFhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´KFhjœ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œ)�”}”(hjRh]”hŒcon_scrolldelta”…”�”}”(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:24: ./include/linux/console.h”h´KHhjLubj²)�”}”(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 ”…”�”}”(hjkh²hh³Nh´Nubju)�”}”(hŒ **lines**”h]”hŒlines”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjkubhŒ. Invoked by user. (optional)”…”�”}”(hjkh²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´KGhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jgh´KHhjœ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´KKhj˜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´KIhj·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”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj·ubhŒ . (optional)”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jéh´KIhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j³h´KKhjœ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œ)�”}”(hj* h]”hŒcon_save_screen”…”�”}”(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´KMhj$ ubj²)�”}”(hhh]”hí)�”}”(hŒ]save screen content into **vc->vc_screenbuf**. Called e.g. upon entering graphics. (optional)”h]”(hŒsave screen content into ”…”�”}”(hjC h²hh³Nh´Nubju)�”}”(hŒ**vc->vc_screenbuf**”h]”hŒvc->vc_screenbuf”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjC ubhŒ0. Called e.g. upon entering graphics. (optional)”…”�”}”(hjC 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´KLhj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j? h´KMhjœ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œ)�”}”(hjv h]”hŒcon_build_attr”…”�”•}”(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ŒŒ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´KNhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‹ h´KPhjœ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´KQhjÎ ubj²)�”}”(hhh]”hí)�”}”(hŒKinvert a region of length **count** on **vc** starting at **p**. (optional)”h]”(hŒinvert a region of length ”…”�”}”(hjí h²hh³Nh´Nubju)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(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Œ starting at ”…”�”}”(hjí h²hh³Nh´Nubju)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjí ubhŒ . (optional)”…”�”}”(hjí h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jé h´KQhjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jé h´KQhjœ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”…”�”}”(hjT!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjkuh1hÍhjQ!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ËhjQ!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{!hjw!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ÿhjw!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Æuh1jhjw!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Œ ”…”�”}”(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”Œ identifier”Œ reftarget”jû!Œmodname”NŒ classname”Njßjâ)�”}”jå]”jàŒ ASTIdentifier”“”)�”}”j"j¡!sbŒc.console_srcu_read_flags”†”asbuh1hhj»!ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj»!ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj,"h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j*"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³!hjw!h²hh³jŒ!h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjs!h²hh³jŒ!h´Mõubah}”(h]”jn!ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jŒ!h´Mõhjp!h²hubjC)�”}”(hhh]”hí)�”}”(hŒ6Locklessly read flags of a possibly registered console”h]”hŒ6Locklessly read flags of a possibly registered console”…”�”}”(hje"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õhjb"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjp!h²hh³jŒ!h´Mõubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej}"jfj}"jg‰jh‰ji‰uh1jÜh²hhjQ!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 ”…”�”}”(hj÷"h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hjÿ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj÷"ubhŒM provides a consistent read value because there is at most one CPU modifying ”…”�”}”(hj÷"h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj÷"ubhŒB and that CPU is using only read-modify-write operations to do so.”…”�”}”(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�"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 ”…”�”}”(hj*#h²hh³Nh´Nubju)�”}”(hŒ**con**”h]”hŒcon”…”�”}”(hj2#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj*#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.”…”�”}”(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�"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 ”…”�”}”(hjK#h²hh³Nh´Nubju)�”}”(hŒ**con**”h]”hŒcon”…”�”}”(hjS#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjK#ubhŒ< is not and will not become registered, the caller may read ”…”�”}”(hjK#h²hh³Nh´Nubju)�”}”(hŒ**con->flags**”h]”hŒ con->flags”…”�”}”(hje#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjK#ubhŒ directly instead.”…”�”}”(hjK#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´Mhj�"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´Mhj�"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´Mhj�"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!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ËhjQ!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”…”�”}”(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:30: ./include/linux/console.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjú#h²hh³j $h´Mubj)�”}”(hŒconsole_srcu_write_flags”h]”j)�”}”(hŒconsole_srcu_write_flags”h]”hŒconsole_srcu_write_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´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íhj7$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj7$ubh)�”}”(hhh]”j)�”}”(hŒconsole”h]”hŒconsole”…”�”}”(hjY$h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjV$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”j[$Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"j!$sbŒc.console_srcu_write_flags”†”asbuh1hhj7$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj7$ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj‡$h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj7$ubj)�”}”(hŒcon”h]”hŒcon”…”�”}”(hj”$h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj7$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj3$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¹!hj3$ubeh}”(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Œ$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³j $h´Mubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej %jfj %jg‰jh‰ji‰uh1jÜh²hhjQ!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)�”}”(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´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œ)�”}”(hj4%h]”hŒstruct console *con”…”�”}”(hj6%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj2%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Œ3struct console pointer of console to write flags to”h]”hŒ3struct console pointer of console to write flags to”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jI%h´MhjJ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj.%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jI%h´Mhj+%ubj�)�”}”(hŒ)``short flags`` new flags value to write ”h]”(j–)�”}”(hŒ``short flags``”h]”jœ)�”}”(hjm%h]”hŒ short flags”…”�”}”(hjo%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjk%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´Mhjg%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±hjg%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‚%h´Mhj+%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´Mhj%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´Mhj%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!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ËhjQ!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)�”}”(hj&h]”hŒfor_each_console_srcu”…”�”}”(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³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MDubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj &h²hh³j+&h´MDubah}”(h]”j&ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j+&h´MDhj &h²hubjC)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jBhj &h²hh³j+&h´MDubeh}”(h]”h ]”(j_Œmacro”eh"]”h$]”h&]”jdj_jejD&jfjD&jg‰jh‰ji‰uh1jÜh²hhjQ!h³Nh´Nubhí)�”}”(hŒ``for_each_console_srcu (con)``”h]”jœ)�”}”(hjJ&h]”hŒfor_each_console_srcu (con)”…”�”}”(hjL&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjH&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MFhjQ!h²hubhŒ block_quote”“”)�”}”(hŒ"Iterator over registered consoles ”h]”hí)�”}”(hŒ!Iterator over registered consoles”h]”hŒ!Iterator over registered consoles”…”�”}”(hjf&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´MDhjb&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`&h³jt&h´MDhjQ!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´MHhj{&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´MEhjš&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´MEhj¶&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjš&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jµ&h´MEhj—&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´MGhj{&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´MFhj{&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.”…”�”}”(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´MIhj{&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒfor_each_console (C macro)”Œc.for_each_console”hNt”auh1jËhjQ!h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒfor_each_console”h]”jè)�”}”(hŒfor_each_console”h]”j)�”}”(hŒfor_each_console”h]”j)�”}”(hj)'h]”hŒfor_each_console”…”�”}”(hj3'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´MRubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj''h²hh³jF'h´MRubah}”(h]”j"'ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jF'h´MRhj$'h²hubjC)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jBhj$'h²hh³jF'h´MRubeh}”(h]”h ]”(j_Œmacro”eh"]”h$]”h&]”jdj_jej_'jfj_'jg‰jh‰ji‰uh1jÜh²hhjQ!h³Nh´Nubhí)�”}”(hŒ``for_each_console (con)``”h]”jœ)�”}”(hje'h]”hŒfor_each_console (con)”…”�”}”(hjg'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjc'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MThjQ!h²hubja&)�”}”(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´MRhj{'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`&h³j�'h´MRhjQ!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´MVhj”'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´MShj³'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´MShjÏ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj³'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÎ'h´MShj°'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´MUhj”'ubhí)�”}”(hŒYThe console list and the :c:type:`console.flags ` are immutable while iterating.”h]”(hŒThe console list and the ”…”�”}”(hj (h²hh³Nh´Nubh)�”}”(hŒ!:c:type:`console.flags `”h]”jœ)�”}”(hj(h]”hŒ console.flags”…”�”}”(hj(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ãjçŒconsole”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:30: ./include/linux/console.h”h´MThj (ubhŒ are immutable while iterating.”…”�”}”(hj (h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j1(h´MThj”'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´MVhj”'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒclear_selection (C function)”Œc.clear_selection”hNt”auh1jËhjQ!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”…”�”}”(hjk(h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjg(h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.c”h´KLubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjg(h²hh³jy(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Æuh1jhjg(h²hh³jy(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³!hjg(h²hh³jy(h´KLubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjc(h²hh³jy(h´KLubah}”(h]”j^(ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jy(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³jy(h´KLubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejê(jfjê(jg‰jh‰ji‰uh1jÜh²hhjQ!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”…”�”}”(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´KPhjî(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³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:34: ./drivers/tty/vt/selection.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)�”}”(hjN)h]”hŒ Description”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjL)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.”…”�”}”(hjd)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.”…”�”}”(hjs)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&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_font_pitch (C function)”Œc.vc_font_pitch”hNt”auh1jËhjQ!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”…”�”}”(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”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj1*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”j6*Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"já)sbŒc.vc_font_pitch”†”asbuh1hhj÷)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj÷)ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjb*h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj÷)ubj)�”}”(hŒfont”h]”hŒfont”…”�”}”(hjo*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 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²hhjQ!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)�”}”(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´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”…”�”}”(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µ*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_font_size (C function)”Œc.vc_font_size”hNt”auh1jËhjQ!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”…”�”}”(hjZ+h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjV+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Œ ”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjV+h²hh³jh+h´Kûubj|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjV+h²hh³jh+h´Kûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjV+h²hh³jh+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Æuh1jhjV+h²hh³jh+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”…”�”}”(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â)�”}”jå]”j")�”}”j"j™+sbŒc.vc_font_size”†”asbuh1hhj¯+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¯+ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj¯+ubj)�”}”(hŒfont”h]”hŒfont”…”�”}”(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³!hjV+h²hh³jh+h´Kûubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjR+h²hh³jh+h´Kûubah}”(h]”jM+ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jh+h´KûhjO+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”…”�”}”(hjQ,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ûhjN,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjO+h²hh³jh+h´Kûubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jeji,jfji,jg‰jh‰ji‰uh1jÜh²hhjQ!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)�”}”(hjs,h]”hŒ Parameters”…”�”}”(hju,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjq,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ÿhjm,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Šhjm,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þhjm,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”…”�”}”(hjë,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ýhjm,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´Mhjm,ubhí)�”}”(hŒ#The size of the font data in bytes.”h]”hŒ#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´Mhjm,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ__vc_resize (C function)”Œ c.__vc_resize”hNt”auh1jËhjQ!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”…”�”}”(hjK-h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjG-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Œ ”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjG-h²hh³jY-h´M&ubj)�”}”(hŒ __vc_resize”h]”j)�”}”(hŒ __vc_resize”h]”hŒ __vc_resize”…”�”}”(hjl-h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjh-ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjG-h²hh³jY-h´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ˆ-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â)�”}”jå]”j")�”}”j"jn-sbŒ c.__vc_resize”†”asbuh1hhj„-ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj„-ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj„-ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(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Œunsigned int cols”h]”(j|!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œcols”h]”hŒcols”…”�”}”(hj2.h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjö-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj€-ubjº!)�”}”(hŒunsigned int rows”h]”(j|!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjK.h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjG.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjG.ubj|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjG.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjG.ubj)�”}”(hŒrows”h]”hŒrows”…”�”}”(hjƒ.h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjG.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj€-ubjº!)�”}”(hŒbool from_user”h]”(j|!)�”}”(hŒbool”h]”hŒbool”…”�”}”(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Œ from_user”h]”hŒ from_user”…”�”}”(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³!hjG-h²hh³jY-h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjC-h²hh³jY-h´M&ubah}”(h]”j>-ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jY-h´M&hj@-h²hubjC)�”}”(hhh]”hí)�”}”(hŒ resize a VT”h]”hŒ resize a VT”…”�”}”(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³jY-h´M&ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejú.jfjú.jg‰jh‰ji‰uh1jÜh²hhjQ!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/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”…”�”}”(hjport.tty**.”h]”(hŒOLocking: The caller must hold the console sem to protect console internals and ”…”�”}”(hj.0h²hh³Nh´Nubju)�”}”(hŒ**vc->port.tty**”h]”hŒ vc->port.tty”…”�”}”(hj60h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj.0ubhŒ.”…”�”}”(hj.0h²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þ.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_is_bound (C function)”Œc.con_is_bound”hNt”auh1jËhjQ!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”…”�”}”(hjo0h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjk0h²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~0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjk0h²hh³j}0h´Mòubj)�”}”(hŒ con_is_bound”h]”j)�”}”(hŒ con_is_bound”h]”hŒ con_is_bound”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjŒ0ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjk0h²hh³j}0h´Mòubj´!)�”}”(hŒ(const struct consw *csw)”h]”jº!)�”}”(hŒconst struct consw *csw”h]”(jî)�”}”(hjÁ!h]”hŒconst”…”�”}”(hj¬0h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj¨0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¨0ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hjÇ0h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj¨0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¨0ubh)�”}”(hhh]”j)�”}”(hŒconsw”h]”hŒconsw”…”�”}”(hjå0h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjâ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”jç0Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"j’0sbŒc.con_is_bound”†”asbuh1hhj¨0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj¨0ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj¨0ubj)�”}”(hŒcsw”h]”hŒcsw”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj¨0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj¤0ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjk0h²hh³j}0h´Mòubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjg0h²hh³j}0h´Mòubah}”(h]”jb0ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j}0h´Mòhjd0h²hubjC)�”}”(hhh]”hí)�”}”(hŒ(checks if driver is bound to the console”h]”hŒ(checks if driver is bound to the console”…”�”}”(hjJ1h²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òhjG1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjd0h²hh³j}0h´Mòubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejb1jfjb1jg‰jh‰ji‰uh1jÜh²hhjQ!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)�”}”(hjl1h]”hŒ Parameters”…”�”}”(hjn1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjj1ubah}”(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öhjf1ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct consw *csw`` console driver ”h]”(j–)�”}”(hŒ``const struct consw *csw``”h]”jœ)�”}”(hj‹1h]”hŒconst struct consw *csw”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰1ubah}”(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…1ubj²)�”}”(hhh]”hí)�”}”(hŒconsole driver”h]”hŒconsole driver”…”�”}”(hj¤1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j 1h´Móhj¡1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj…1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j 1h´Móhj‚1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjf1ubhí)�”}”(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´Mõhjf1ubhí)�”}”(hŒ!zero if unbound, nonzero if bound”h]”hŒ!zero if unbound, nonzero if bound”…”�”}”(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´Mõhjf1ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjí1h]”hŒ Description”…”�”}”(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´M÷hjf1ubhí)�”}”(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 ”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒ':c:type:`consw.con_startup\(\) `”h]”jœ)�”}”(hj 2h]”hŒconsw.con_startup()”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”(jÍj_Œc-type”eh"]”h$]”h&]”uh1j›hj 2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÙŒ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jßjãjçŒconsw”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Möhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j*2h´Möhjf1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_is_visible (C function)”Œc.con_is_visible”hNt”auh1jËhjQ!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ž.h]”hŒbool”…”�”}”(hjQ2h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjM2h²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_2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjM2h²hh³j^2h´M ubj)�”}”(hŒcon_is_visible”h]”j)�”}”(hŒcon_is_visible”h]”hŒcon_is_visible”…”�”}”(hjq2h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjm2ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjM2h²hh³j^2h´M ubj´!)�”}”(hŒ(const struct vc_data *vc)”h]”jº!)�”}”(hŒconst struct vc_data *vc”h]”(jî)�”}”(hjÁ!h]”hŒconst”…”�”}”(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î)�”}”(hjh]”hŒstruct”…”�”}”(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‰2ubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hjÆ2h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjÃ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”jÈ2Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"js2sbŒc.con_is_visible”†”asbuh1hhj‰2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj‰2ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjô2h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj‰2ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj‰2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj…2ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjM2h²hh³j^2h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjI2h²hh³j^2h´M ubah}”(h]”jD2ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j^2h´M hjF2h²hubjC)�”}”(hhh]”hí)�”}”(hŒ-checks whether the current console is visible”h]”hŒ-checks whether the current console is visible”…”�”}”(hj+3h²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(3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjF2h²hh³j^2h´M ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejC3jfjC3jg‰jh‰ji‰uh1jÜh²hhjQ!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)�”}”(hjM3h]”hŒ Parameters”…”�”}”(hjO3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjK3ubah}”(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´MhjG3ubj‹)�”}”(hhh]”j�)�”}”(hŒ-``const struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``const struct vc_data *vc``”h]”jœ)�”}”(hjl3h]”hŒconst struct vc_data *vc”…”�”}”(hjn3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj3ubah}”(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 hjf3ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hj…3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j�3h´M hj‚3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjf3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j�3h´M hjc3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjG3ubhí)�”}”(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´MhjG3ubhí)�”}”(hŒ'zero if not visible, nonzero if visible”h]”hŒ'zero if not visible, nonzero if visible”…”�”}”(hj½3h²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´MhjG3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_debug_enter (C function)”Œc.con_debug_enter”hNt”auh1jËhjQ!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ì3h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjè3h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjè3h²hh³jú3h´Mubj)�”}”(hŒcon_debug_enter”h]”j)�”}”(hŒcon_debug_enter”h]”hŒcon_debug_enter”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj 4ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjè3h²hh³jú3h´Mubj´!)�”}”(hŒ(struct vc_data *vc)”h]”jº!)�”}”(hŒstruct vc_data *vc”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj)4h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj%4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj64h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj%4ubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjD4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”jI4Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"j4sbŒc.con_debug_enter”†”asbuh1hhj%4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj%4ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hju4h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj%4ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hj‚4h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj%4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj!4ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjè3h²hh³jú3h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjä3h²hh³jú3h´Mubah}”(h]”jß3ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jú3h´Mhjá3h²hubjC)�”}”(hhh]”hí)�”}”(hŒ+prepare the console for the kernel debugger”h]”hŒ+prepare the console for the kernel debugger”…”�”}”(hj¬4h²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©4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjá3h²hh³jú3h´Mubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÄ4jfjÄ4jg‰jh‰ji‰uh1jÜh²hhjQ!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Î4h]”hŒ Parameters”…”�”}”(hjÐ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÌ4ubah}”(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È4ubj‹)�”}”(hhh]”j�)�”}”(hŒ'``struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``struct vc_data *vc``”h]”jœ)�”}”(hjí4h]”hŒstruct vc_data *vc”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjë4ubah}”(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ç4ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j5h´Mhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjç4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j5h´Mhjä4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÈ4ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj(5h]”hŒ Description”…”�”}”(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´MhjÈ4ubhí)�”}”(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.”…”�”}”(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´MhjÈ4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒcon_debug_leave (C function)”Œc.con_debug_leave”hNt”auh1jËhjQ!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”…”�”}”(hjm5h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hji5h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:36: ./drivers/tty/vt/vt.c”h´MDubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhji5h²hh³j{5h´MDubj)�”}”(hŒcon_debug_leave”h]”j)�”}”(hŒcon_debug_leave”h]”hŒcon_debug_leave”…”�”}”(hjŽ5h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjŠ5ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhji5h²hh³j{5h´MDubj´!)�”}”(hŒ(void)”h]”jº!)�”}”(hŒvoid”h]”j|!)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjª5h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hj¦5ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj¢5ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hji5h²hh³j{5h´MDubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hje5h²hh³j{5h´MDubah}”(h]”j`5ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j{5h´MDhjb5h²hubjC)�”}”(hhh]”hí)�”}”(hŒrestore console state”h]”hŒrestore console state”…”�”}”(hjÔ5h²hh³Nh´Nuba•�h}”(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Ñ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjb5h²hh³j{5h´MDubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejì5jfjì5jg‰jh‰ji‰uh1jÜh²hhjQ!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ö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´MHhjð5ubj‹)�”}”(hhh]”j�)�”}”(hŒ``void`` no arguments ”h]”(j–)�”}”(hŒ``void``”h]”jœ)�”}”(hj6h]”hŒvoid”…”�”}”(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´Khj6ubj²)�”}”(hhh]”hí)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj.6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j*6h´Khj+6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j*6h´Khj 6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjð5ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjP6h]”hŒ Description”…”�”}”(hjR6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjN6ubah}”(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ð5ubhí)�”}”(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.”…”�”}”(hjf6h²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´MEhjð5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!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ËhjQ!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•6h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hj‘6h²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¤6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj‘6h²hh³j£6h´M“ubj)�”}”(hŒdo_unregister_con_driver”h]”j)�”}”(hŒdo_unregister_con_driver”h]”hŒdo_unregister_con_driver”…”�”}”(hj¶6h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj²6ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj‘6h²hh³j£6h´M“ubj´!)�”}”(hŒ(const struct consw *csw)”h]”jº!)�”}”(hŒconst struct consw *csw”h]”(jî)�”}”(hjÁ!h]”hŒconst”…”�”}”(hjÒ6h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjÎ6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÎ6ubjî)�”}”(hjh]”hŒstruct”…”�”}”(hjí6h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjÎ6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÎ6ubh)�”}”(hhh]”j)�”}”(hŒconsw”h]”hŒconsw”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”j 7Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"j¸6sbŒc.do_unregister_con_driver”†”asbuh1hhjÎ6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÎ6ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj97h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hjÎ6ubj)�”}”(hŒcsw”h]”hŒcsw”…”�”}”(hjF7h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjÎ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjÊ6ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hj‘6h²hh³j£6h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj�6h²hh³j£6h´M“ubah}”(h]”jˆ6ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j£6h´M“hjŠ6h²hubjC)�”}”(hhh]”hí)�”}”(hŒ,unregister console driver from console layer”h]”hŒ,unregister console driver from console layer”…”�”}”(hjp7h²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“hjm7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjŠ6h²hh³j£6h´M“ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejˆ7jfjˆ7jg‰jh‰ji‰uh1jÜh²hhjQ!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’7h]”hŒ Parameters”…”�”}”(hj”7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj�7ubah}”(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Œ7ubj‹)�”}”(hhh]”j�)�”}”(hŒ+``const struct consw *csw`` console driver ”h]”(j–)�”}”(hŒ``const struct consw *csw``”h]”jœ)�”}”(hj±7h]”hŒconst struct consw *csw”…”�”}”(hj³7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¯7ubah}”(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«7ubj²)�”}”(hhh]”hí)�”}”(hŒconsole driver”h]”hŒconsole driver”…”�”}”(hjÊ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÆ7h´M”hjÇ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj«7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÆ7h´M”hj¨7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjŒ7ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjì7h]”hŒ Description”…”�”}”(hjî7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjê7ubah}”(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Œ7ubhí)�”}”(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.”…”�”}”(hj8h²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Œ7ubhí)�”}”(hŒ5The driver must unbind first prior to unregistration.”h]”hŒ5The driver must unbind first prior to unregistration.”…”�”}”(hj8h²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Œ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhjQ!h²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Internals”h]”hŒ Internals”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÊjŠuh1hÍhj'8h²hh³hÇh´K(ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒsel_loadlut (C function)”Œ c.sel_loadlut”hNt”auh1jËhj'8h²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”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjM8h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Ksubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjM8h²hh³j_8h´Ksubj)�”}”(hŒ sel_loadlut”h]”j)�”}”(hŒ sel_loadlut”h]”hŒ sel_loadlut”…”�”}”(hjr8h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjn8ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjM8h²hh³j_8h´Ksubj´!)�”}”(hŒ(u32 __user *lut)”h]”jº!)�”}”(hŒu32 __user *lut”h]”(h)�”}”(hhh]”j)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‘8h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjŽ8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”j“8Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"jt8sbŒ c.sel_loadlut”†”asbuh1hhjŠ8ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjŠ8ubhŒ__user”…”�”}”(hjŠ8h²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjŠ8ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjÑ8h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hjŠ8ubj)�”}”(hŒlut”h]”hŒlut”…”�”}”(hjÞ8h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjŠ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj†8ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjM8h²hh³j_8h´Ksubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjI8h²hh³j_8h´Ksubah}”(h]”jD8ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j_8h´KshjF8h²hubjC)�”}”(hhh]”hí)�”}”(hŒload the LUT table”h]”hŒload the LUT table”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Kshj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjF8h²hh³j_8h´Ksubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej 9jfj 9jg‰jh‰ji‰uh1jÜh²hhj'8h³Nh´Nubjk)�”}”(hŒÍ**Parameters** ``u32 __user *lut`` user table **Description** Load the LUT table from user space. Make a temporary copy so a partial update doesn't make a mess. Locking: The console lock is acquired.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hj*9h]”hŒ Parameters”…”�”}”(hj,9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj(9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Kwhj$9ubj‹)�”}”(hhh]”j�)�”}”(hŒ``u32 __user *lut`` user table ”h]”(j–)�”}”(hŒ``u32 __user *lut``”h]”jœ)�”}”(hjI9h]”hŒu32 __user *lut”…”�”}”(hjK9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjG9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´KthjC9ubj²)�”}”(hhh]”hí)�”}”(hŒ user table”h]”hŒ user table”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j^9h´Kthj_9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjC9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j^9h´Kthj@9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj$9ubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj„9h]”hŒ Description”…”�”}”(hj†9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‚9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Kvhj$9ubhí)�”}”(hŒbLoad the LUT table from user space. Make a temporary copy so a partial update doesn't make a mess.”h]”hŒdLoad the LUT table from user space. Make a temporary copy so a partial update doesn’t make a mess.”…”�”}”(hjš9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Kuhj$9ubhí)�”}”(hŒ&Locking: The console lock is acquired.”h]”hŒ&Locking: The console lock is acquired.”…”�”}”(hj©9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´Kxhj$9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒset_selection_user (C function)”Œc.set_selection_user”hNt”auh1jËhj'8h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒYint set_selection_user (const struct tiocl_selection __user *sel, struct tty_struct *tty)”h]”jè)�”}”(hŒXint set_selection_user(const struct tiocl_selection __user *sel, struct tty_struct *tty)”h]”(j|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjØ9h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjÔ9h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K±ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÔ9h²hh³jæ9h´K±ubj)�”}”(hŒset_selection_user”h]”j)�”}”(hŒset_selection_user”h]”hŒset_selection_user”…”�”}”(hjù9h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjõ9ubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjÔ9h²hh³jæ9h´K±ubj´!)�”}”(hŒB(const struct tiocl_selection __user *sel, struct tty_struct *tty)”h]”(jº!)�”}”(hŒ(const struct tiocl_selection __user *sel”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”…”�”}”(hj0: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Œtiocl_selection”h]”hŒtiocl_selection”…”�”}”(hjN:h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjK:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”jP:Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"jû9sbŒc.set_selection_user”†”asbuh1hhj:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn: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:ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjŽ:h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj:ubj)�”}”(hŒsel”h]”hŒsel”…”�”}”(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Œstruct tty_struct *tty”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Œ tty_struct”h]”hŒ tty_struct”…”�”}”(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â)�”}”jå]”jj:Œc.set_selection_user”†”asbuh1hhj°:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj°:ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjþ:h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj°:ubj)�”}”(hŒtty”h]”hŒtty”…”�”}”(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³!hjÔ9h²hh³jæ9h´K±ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjÐ9h²hh³jæ9h´K±ubah}”(h]”jË9ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jæ9h´K±hjÍ9h²hubjC)�”}”(hhh]”hí)�”}”(hŒset the current selection.”h]”hŒset the current selection.”…”�”}”(hj5;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K±hj2;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÍ9h²hh³jæ9h´K±ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejM;jfjM;jg‰jh‰ji‰uh1jÜh²hhj'8h³Nh´Nubjk)�”}”(hXG**Parameters** ``const struct tiocl_selection __user *sel`` user selection info ``struct tty_struct *tty`` the console tty **Description** Invoked by the ioctl handle for the vt layer. Locking: The entire selection process is managed under the console_lock. It's a lot under the lock but its hardly a performance path.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjW;h]”hŒ Parameters”…”�”}”(hjY;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjU;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´KµhjQ;ubj‹)�”}”(hhh]”(j�)�”}”(hŒA``const struct tiocl_selection __user *sel`` user selection info ”h]”(j–)�”}”(hŒ,``const struct tiocl_selection __user *sel``”h]”jœ)�”}”(hjv;h]”hŒ(const struct tiocl_selection __user *sel”…”�”}”(hjx;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjt;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K²hjp;ubj²)�”}”(hhh]”hí)�”}”(hŒuser selection info”h]”hŒuser selection info”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j‹;h´K²hjŒ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjp;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‹;h´K²hjm;ubj�)�”}”(hŒ+``struct tty_struct *tty`` the console tty ”h]”(j–)�”}”(hŒ``struct tty_struct *tty``”h]”jœ)�”}”(hj¯;h]”hŒstruct tty_struct *tty”…”�”}”(hj±;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj­;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K³hj©;ubj²)�”}”(hhh]”hí)�”}”(hŒthe console tty”h]”hŒthe console tty”…”�”}”(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³hjm;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjQ;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:42: ./drivers/tty/vt/selection.c”h´KµhjQ;ubhí)�”}”(hŒ-Invoked by the ioctl handle for the vt layer.”h]”hŒ-Invoked by the ioctl handle for the vt layer.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K´hjQ;ubhí)�”}”(hŒ…Locking: The entire selection process is managed under the console_lock. It's a lot under the lock but its hardly a performance path.”h]”hŒ‡Locking: The entire selection process is managed under the console_lock. It’s a lot under the lock but its hardly a performance path.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:42: ./drivers/tty/vt/selection.c”h´K¶hjQ;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_do_resize (C function)”Œc.vc_do_resize”hNt”auh1jËhj'8h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒtint vc_do_resize (struct tty_struct *tty, struct vc_data *vc, unsigned int cols, unsigned int lines, bool from_user)”h]”jè)�”}”(hŒsint vc_do_resize(struct tty_struct *tty, struct vc_data *vc, unsigned int cols, unsigned int lines, bool from_user)”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:44: ./drivers/tty/vt/vt.c”h´M…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj:<h²hh³jL<h´M…ubj)�”}”(hŒ vc_do_resize”h]”j)�”}”(hŒ vc_do_resize”h]”hŒ vc_do_resize”…”�”}”(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³jL<h´M…ubj´!)�”}”(hŒc(struct tty_struct *tty, struct vc_data *vc, unsigned int cols, unsigned int lines, bool from_user)”h]”(jº!)�”}”(hŒstruct tty_struct *tty”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj{<h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjw<ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjw<ubh)�”}”(hhh]”j)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(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â)�”}”jå]”j")�”}”j"ja<sbŒc.vc_do_resize”†”asbuh1hhjw<ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjw<ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjÇ<h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hjw<ubj)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjÔ<h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjw<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjs<ubjº!)�”}”(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â)�”}”jå]”jµ<Œc.vc_do_resize”†”asbuh1hhjé<ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjé<ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hjé<ubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hjD=h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjé<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjs<ubjº!)�”}”(hŒunsigned int cols”h]”(j|!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj]=h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjY=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjY=ubj|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjy=h²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjY=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjY=ubj)�”}”(hŒcols”h]”hŒcols”…”�”}”(hj•=h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjY=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjs<ubjº!)�”}”(hŒunsigned int lines”h]”(j|!)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œlines”h]”hŒlines”…”�”}”(hjæ=h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjª=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjs<ubjº!)�”}”(hŒbool from_user”h]”(j|!)�”}”(hjž.h]”hŒbool”…”�”}”(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Œ from_user”h]”hŒ from_user”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjû=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjs<ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hj:<h²hh³jL<h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj6<h²hh³jL<h´M…ubah}”(h]”j1<ah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jL<h´M…hj3<h²hubjC)�”}”(hhh]”hí)�”}”(hŒresizing method for the tty”h]”hŒresizing method for the tty”…”�”}”(hjD>h²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…hjA>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj3<h²hh³jL<h´M…ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej\>jfj\>jg‰jh‰ji‰uh1jÜh²hhj'8h³Nh´Nubjk)�”}”(hX-**Parameters** ``struct tty_struct *tty`` tty being resized ``struct vc_data *vc`` virtual console private data ``unsigned int cols`` columns ``unsigned int lines`` lines ``bool from_user`` invoked by a user? **Description** Resize a virtual console, clipping according to the actual constraints. If the caller passes a tty structure then update the termios winsize information and perform any necessary signal handling. Locking: Caller must hold the console semaphore. Takes the termios rwsem and ctrl.lock of the tty IFF a tty is passed.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjf>h]”hŒ Parameters”…”�”}”(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:44: ./drivers/tty/vt/vt.c”h´M‰hj`>ubj‹)�”}”(hhh]”(j�)�”}”(hŒ-``struct tty_struct *tty`` tty being resized ”h]”(j–)�”}”(hŒ``struct tty_struct *tty``”h]”jœ)�”}”(hj…>h]”hŒstruct tty_struct *tty”…”�”}”(hj‡>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjƒ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M†hj>ubj²)�”}”(hhh]”hí)�”}”(hŒtty being resized”h]”hŒtty being resized”…”�”}”(hjž>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jš>h´M†hj›>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jš>h´M†hj|>ubj�)�”}”(hŒ4``struct vc_data *vc`` virtual console private data ”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:44: ./drivers/tty/vt/vt.c”h´M‡hj¸>ubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console private data”h]”hŒvirtual console private data”…”�”}”(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Œ``unsigned int cols`` columns ”h]”(j–)�”}”(hŒ``unsigned int cols``”h]”jœ)�”}”(hj÷>h]”hŒunsigned int cols”…”�”}”(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:44: ./drivers/tty/vt/vt.c”h´Mˆhjñ>ubj²)�”}”(hhh]”hí)�”}”(hŒcolumns”h]”hŒcolumns”…”�”}”(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Œ``unsigned int lines`` lines ”h]”(j–)�”}”(hŒ``unsigned int lines``”h]”jœ)�”}”(hj0?h]”hŒunsigned int lines”…”�”}”(hj2?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:44: ./drivers/tty/vt/vt.c”h´M‰hj*?ubj²)�”}”(hhh]”hí)�”}”(hŒlines”h]”hŒlines”…”�”}”(hjI?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jE?h´M‰hjF?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj*?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jE?h´M‰hj|>ubj�)�”}”(hŒ&``bool from_user`` invoked by a user? ”h]”(j–)�”}”(hŒ``bool from_user``”h]”jœ)�”}”(hji?h]”hŒbool from_user”…”�”}”(hjk?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjg?ubah}”(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Šhjc?ubj²)�”}”(hhh]”hí)�”}”(hŒinvoked by a user?”h]”hŒinvoked by a user?”…”�”}”(hj‚?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j~?h´MŠhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjc?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j~?h´MŠhj|>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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MŒhj`>ubhí)�”}”(hŒÃResize a virtual console, clipping according to the actual constraints. If the caller passes a tty structure then update the termios winsize information and perform any necessary signal handling.”h]”hŒÃResize a virtual console, clipping according to the actual constraints. If the caller passes a tty structure then update the termios winsize information and perform any necessary signal handling.”…”�”}”(hjº?h²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`>ubhí)�”}”(hŒvLocking: Caller must hold the console semaphore. Takes the termios rwsem and ctrl.lock of the tty IFF a tty is passed.”h]”hŒvLocking: Caller must hold the console semaphore. Takes the termios rwsem and ctrl.lock of the tty IFF a tty is passed.”…”�”}”(hjÉ?h²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`>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvt_resize (C function)”Œ c.vt_resize”hNt”auh1jËhj'8h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ:int vt_resize (struct tty_struct *tty, struct winsize *ws)”h]”jè)�”}”(hŒ9int vt_resize(struct tty_struct *tty, struct winsize *ws)”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:44: ./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Œ vt_resize”h]”j)�”}”(hŒ vt_resize”h]”hŒ vt_resize”…”�”}”(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 tty_struct *tty, struct winsize *ws)”h]”(jº!)�”}”(hŒstruct tty_struct *tty”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj5@h²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj1@ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj1@ubh)�”}”(hhh]”j)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjP@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”jU@Œmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"j@sbŒ c.vt_resize”†”asbuh1hhj1@ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj1@ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj1@ubj)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjŽ@h²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj1@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj-@ubjº!)�”}”(hŒstruct winsize *ws”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Œwinsize”h]”hŒwinsize”…”�”}”(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â)�”}”jå]”jo@Œ c.vt_resize”†”asbuh1hhj£@ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj£@ubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjñ@h²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj£@ubj)�”}”(hŒws”h]”hŒws”…”�”}”(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³!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Œ resize a VT”h]”hŒ resize a VT”…”�”}”(hj(Ah²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%Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjí?h²hh³j@h´M:ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jej@Ajfj@Ajg‰jh‰ji‰uh1jÜh²hhj'8h³Nh´Nubjk)�”}”(hX‰**Parameters** ``struct tty_struct *tty`` tty to resize ``struct winsize *ws`` winsize attributes **Description** 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. Locking: Takes the console sem and the called methods then take the tty termios_rwsem and the tty ctrl.lock in that order.”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjJAh]”hŒ Parameters”…”�”}”(hjLAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjHAubah}”(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>hjDAubj‹)�”}”(hhh]”(j�)�”}”(hŒ)``struct tty_struct *tty`` tty to resize ”h]”(j–)�”}”(hŒ``struct tty_struct *tty``”h]”jœ)�”}”(hjiAh]”hŒstruct tty_struct *tty”…”�”}”(hjkAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjgAubah}”(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;hjcAubj²)�”}”(hhh]”hí)�”}”(hŒ tty to resize”h]”hŒ tty to resize”…”�”}”(hj‚Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j~Ah´M;hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjcAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j~Ah´M;hj`Aubj�)�”}”(hŒ*``struct winsize *ws`` winsize attributes ”h]”(j–)�”}”(hŒ``struct winsize *ws``”h]”jœ)�”}”(hj¢Ah]”hŒstruct winsize *ws”…”�”}”(hj¤Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj Aubah}”(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œAubj²)�”}”(hhh]”hí)�”}”(hŒwinsize attributes”h]”hŒwinsize attributes”…”�”}”(hj»Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j·Ah´M<hj¸Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjœAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j·Ah´M<hj`Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjDAubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hjÝAh]”hŒ Description”…”�”}”(hjßAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÛAubah}”(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>hjDAubhí)�”}”(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óAh²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=hjDAubhí)�”}”(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.”…”�”}”(hjBh²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@hjDAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvc_ctl_state (C enum)”Œc.vc_ctl_state”hNt”auh1jËhj'8h²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒ vc_ctl_state”h]”jè)�”}”(hŒenum vc_ctl_state”h]”(jî)�”}”(hjñh]”hŒenum”…”�”}”(hj1Bh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj-Bh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MFubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj-Bh²hh³j>Bh´MFubj)�”}”(hŒ vc_ctl_state”h]”j)�”}”(hj+Bh]”hŒ vc_ctl_state”…”�”}”(hjQBh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjMBubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj-Bh²hh³j>Bh´MFubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hj)Bh²hh³j>Bh´MFubah}”(h]”j$Bah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³j>Bh´MFhj&Bh²hubjC)�”}”(hhh]”hí)�”}”(hŒ control characters state of a vt”h]”hŒ control characters state of a vt”…”�”}”(hjsBh²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¨hjpBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhj&Bh²hh³j>Bh´MFubeh}”(h]”h ]”(j_Œenum”eh"]”h$]”h&]”jdj_jej‹Bjfj‹Bjg‰jh‰ji‰uh1jÜh²hhj'8h³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•Bh]”hŒ Constants”…”�”}”(hj—Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj“Bubah}”(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�Bubj‹)�”}”(hhh]”(j�)�”}”(hŒ9``ESnormal`` initial state, no control characters parsed ”h]”(j–)�”}”(hŒ ``ESnormal``”h]”jœ)�”}”(hj´Bh]”hŒESnormal”…”�”}”(hj¶Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj²Bubah}”(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®Bubj²)�”}”(hhh]”hí)�”}”(hŒ+initial state, no control characters parsed”h]”hŒ+initial state, no control characters parsed”…”�”}”(hjÍBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jÉBh´M¯hjÊBubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj®Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÉBh´M¯hj«Bubj�)�”}”(hŒ``ESesc`` ESC parsed ”h]”(j–)�”}”(hŒ ``ESesc``”h]”jœ)�”}”(hjíBh]”hŒESesc”…”�”}”(hjïBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjëBubah}”(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çBubj²)�”}”(hhh]”hí)�”}”(hŒ ESC parsed”h]”hŒ ESC parsed”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jCh´M²hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjçBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jCh´M²hj«Bubj�)�”}”(hŒD``ESsquare`` CSI parsed -- modifiers/parameters/ctrl chars expected ”h]”(j–)�”}”(hŒ ``ESsquare``”h]”jœ)�”}”(hj&Ch]”hŒESsquare”…”�”}”(hj(Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj$Cubah}”(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 Cubj²)�”}”(hhh]”hí)�”}”(hŒ6CSI parsed -- modifiers/parameters/ctrl chars expected”h]”hŒ6CSI parsed -- modifiers/parameters/ctrl chars expected”…”�”}”(hj?Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j;Ch´MµhjFubj²)�”}”(hhh]”hí)�”}”(hŒ ESC ^ parsed”h]”hŒ ESC ^ parsed”…”�”}”(hj]Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jYFh´MßhjZFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj>Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jYFh´Mßhj«Bubj�)�”}”(hŒ``ESdcs`` ESC P parsed ”h]”(j–)�”}”(hŒ ``ESdcs``”h]”jœ)�”}”(hj}Fh]”hŒESdcs”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj{Fubah}”(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âhjwFubj²)�”}”(hhh]”hí)�”}”(hŒ ESC P parsed”h]”hŒ ESC P parsed”…”�”}”(hj–Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j’Fh´Mâhj“Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjwFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j’Fh´Mâhj«Bubj�)�”}”(hŒ>``ESANSI_last`` last state for ignoring ansi control sequences”h]”(j–)�”}”(hŒ``ESANSI_last``”h]”jœ)�”}”(hj¶Fh]”hŒ ESANSI_last”…”�”}”(hj¸Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj´Fubah}”(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°Fubj²)�”}”(hhh]”hí)�”}”(hŒ.last state for ignoring ansi control sequences”h]”hŒ.last state for ignoring ansi control sequences”…”�”}”(hjÏFh²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ÌFubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj°Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jËFh´Mähj«Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj�Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ vc_sanitize_unicode (C function)”Œc.vc_sanitize_unicode”hNt”auh1jËhj'8h²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”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hj Gh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mh ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj Gh²hh³jGh´Mh ubj)�”}”(hŒvc_sanitize_unicode”h]”j)�”}”(hŒvc_sanitize_unicode”h]”hŒvc_sanitize_unicode”…”�”}”(hj1Gh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj-Gubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhj Gh²hh³jGh´Mh ubj´!)�”}”(hŒ (const int c)”h]”jº!)�”}”(hŒ const int c”h]”(jî)�”}”(hjÁ!h]”hŒconst”…”�”}”(hjMGh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhjIGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjIGubj|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjhGh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjIGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjIGubj)�”}”(hj_h]”hŒc”…”�”}”(hj„Gh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjIGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hjEGubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hj Gh²hh³jGh´Mh ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjGh²hh³jGh´Mh ubah}”(h]”jGah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jGh´Mh hjGh²hubjC)�”}”(hhh]”hí)�”}”(hŒ3Replace invalid Unicode code points with ``U+FFFD``”h]”(hŒ)Replace invalid Unicode code points with ”…”�”}”(hj­Gh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hjµGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj­Gubeh}”(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´Mh hjªGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjGh²hh³jGh´Mh ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÓGjfjÓGjg‰jh‰ji‰uh1jÜh²hhj'8h³Nh´Nubjk)�”}”(hŒ9**Parameters** ``const int c`` the received code point”h]”(hí)�”}”(hŒ**Parameters**”h]”ju)�”}”(hjÝGh]”hŒ Parameters”…”�”}”(hjßGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÛGubah}”(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´Ml hj×Gubj‹)�”}”(hhh]”j�)�”}”(hŒ'``const int c`` the received code point”h]”(j–)�”}”(hŒ``const int c``”h]”jœ)�”}”(hjüGh]”hŒ const int c”…”�”}”(hjþGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjúGubah}”(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öGubj²)�”}”(hhh]”hí)�”}”(hŒthe received code point”h]”hŒthe received code point”…”�”}”(hjHh²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´Mi hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjöGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jHh´Mn hjóGubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj×Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ!vc_translate_unicode (C function)”Œc.vc_translate_unicode”hNt”auh1jËhj'8h²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”…”�”}”(hjVHh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjRHh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mt ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjRHh²hh³jdHh´Mt ubj)�”}”(hŒvc_translate_unicode”h]”j)�”}”(hŒvc_translate_unicode”h]”hŒvc_translate_unicode”…”�”}”(hjwHh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjsHubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjRHh²hh³jdHh´Mt ubj´!)�”}”(hŒ)(struct vc_data *vc, int c, bool *rescan)”h]”(jº!)�”}”(hŒstruct vc_data *vc”h]”(jî)�”}”(hjh]”hŒstruct”…”�”}”(hj“Hh²hh³Nh´Nubah}”(h]”h ]”júah"]”h$]”h&]”uh1jíhj�Hubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj�Hubh)�”}”(hhh]”j)�”}”(hŒvc_data”h]”hŒvc_data”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj®Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j_Œreftype”j"Œ reftarget”j³HŒmodname”NŒ classname”Njßjâ)�”}”jå]”j")�”}”j"jyHsbŒc.vc_translate_unicode”†”asbuh1hhj�Hubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj�Hubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjßHh²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj�Hubj)�”}”(hŒvc”h]”hŒvc”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj�Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj‹Hubjº!)�”}”(hŒint c”h]”(j|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjIubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjIubj)�”}”(hj_h]”hŒc”…”�”}”(hj!Ih²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj‹Hubjº!)�”}”(hŒ bool *rescan”h]”(j|!)�”}”(hjž.h]”hŒbool”…”�”}”(hj9Ih²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hj5Iubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhj5Iubj+")�”}”(hj."h]”hŒ*”…”�”}”(hjTIh²hh³Nh´Nubah}”(h]”h ]”j7"ah"]”h$]”h&]”uh1j*"hj5Iubj)�”}”(hŒrescan”h]”hŒrescan”…”�”}”(hjaIh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhj5Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj‹Hubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjRHh²hh³jdHh´Mt ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjNHh²hh³jdHh´Mt ubah}”(h]”jIHah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jdHh´Mt hjKHh²hubjC)�”}”(hhh]”hí)�”}”(hŒECombine UTF-8 into Unicode in :c:type:`vc_data.vc_utf_char `”h]”(hŒCombine UTF-8 into Unicode in ”…”�”}”(hj‹Ih²hh³Nh´Nubh)�”}”(hŒ':c:type:`vc_data.vc_utf_char `”h]”jœ)�”}”(hj•Ih]”hŒvc_data.vc_utf_char”…”�”}”(hj—Ih²hh³Nh´Nubah}”(h]”h ]”(jÍj_Œc-type”eh"]”h$]”h&]”uh1j›hj“Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÙŒ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jßjâ)�”}”jå]”jÍHŒc.vc_translate_unicode”†”asbjçŒvc_data”uh1hh³jL<h´M…hj‹Iubeh}”(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´Mt hjˆIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjKHh²hh³jdHh´Mt ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejÇIjfjÇIjg‰jh‰ji‰uh1jÜh²hhj'8h³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ÑIh]”hŒ Parameters”…”�”}”(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´Mx hjËIubj‹)�”}”(hhh]”(j�)�”}”(hŒ'``struct vc_data *vc`` virtual console ”h]”(j–)�”}”(hŒ``struct vc_data *vc``”h]”jœ)�”}”(hjðIh]”hŒstruct vc_data *vc”…”�”}”(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´Mu hjêIubj²)�”}”(hhh]”hí)�”}”(hŒvirtual console”h]”hŒvirtual console”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jJh´Mu hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjêIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jJh´Mu hjçIubj�)�”}”(hŒ"``int c`` UTF-8 byte to translate ”h]”(j–)�”}”(hŒ ``int c``”h]”jœ)�”}”(hj)Jh]”hŒint c”…”�”}”(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´Mv hj#Jubj²)�”}”(hhh]”hí)�”}”(hŒUTF-8 byte to translate”h]”hŒUTF-8 byte to translate”…”�”}”(hjBJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j>Jh´Mv hj?Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj#Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j>Jh´Mv hjçIubj�)�”}”(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œ)�”}”(hjbJh]”hŒ bool *rescan”…”�”}”(hjdJh²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´Mw hj\Jubj²)�”}”(hhh]”hí)�”}”(hŒGset to true iff **c** wasn't consumed here and needs to be re-processed”h]”(hŒset to true iff ”…”�”}”(hj{Jh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj{JubhŒ4 wasn’t consumed here and needs to be re-processed”…”�”}”(hj{Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jwJh´Mw hjxJubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj\Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jwJh´Mw hjçIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjËIubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj¯Jh]”hŒ Description”…”�”}”(hj±Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj­Jubah}”(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´My hjËIubhã)�”}”(hhh]”(hè)�”}”(hŒT:c:type:`vc_data.vc_utf_char ` is the being-constructed Unicode code point.”h]”hí)�”}”(hjÊJh]”(h)�”}”(hŒ':c:type:`vc_data.vc_utf_char `”h]”jœ)�”}”(hjÑJh]”hŒvc_data.vc_utf_char”…”�”}”(hjÓJh²hh³Nh´Nubah}”(h]”h ]”(jÍj_Œc-type”eh"]”h$]”h&]”uh1j›hjÏJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÙŒ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jßjãjçŒvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´Mx hjÌJubhŒ- is the being-constructed Unicode code point.”…”�”}”(hjÌJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³jîJh´Mx hjÈJubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÅJubhè)�”}”(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 Kh]”hŒvc_data.vc_utf_count”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”(jÍj_Œc-type”eh"]”h$]”h&]”uh1j›hjKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÙŒ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jßjãjçŒvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´My hjKubhŒ> is the number of continuation bytes still expected to arrive.”…”�”}”(hjKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j&Kh´My hjÿJubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÅJubhè)�”}”(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œ)�”}”(hjAKh]”hŒvc_data.vc_npar”…”�”}”(hjCKh²hh³Nh´Nubah}”(h]”h ]”(jÍj_Œc-type”eh"]”h$]”h&]”uh1j›hj?Kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÙŒ refdomain”j_Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jßjãjçŒvc_data”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´M{ hj;KubhŒ4 is the number of continuation bytes arrived so far.”…”�”}”(hj;Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hìh³j^Kh´M{ hj7Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÅJubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j."uh1hâh³jîJh´Mx hjËIubhí)�”}”(hŒ **Return**”h]”ju)�”}”(hjxKh]”hŒReturn”…”�”}”(hjzKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjvKubah}”(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ËIubhã)�”}”(hhh]”(hè)�”}”(hŒA``-1`` - Input OK so far, **c** consumed, further bytes expected.”h]”hí)�”}”(hj“Kh]”(jœ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hj˜Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj•KubhŒ - Input OK so far, ”…”�”}”(hj•Kh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjªKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj•KubhŒ" consumed, further bytes expected.”…”�”}”(hj•Kh²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‘Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjŽKubhè)�”}”(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``.”•2h]”(j–)�”}”(hŒL``0xFFFD`` - Possibility 1: input invalid, **c** may have been consumed (see”h]”(jœ)�”}”(hŒ ``0xFFFD``”h]”hŒ0xFFFD”…”�”}”(hjØKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÔKubhŒ! - Possibility 1: input invalid, ”…”�”}”(hjÔKh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjêKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÔKubhŒ may have been consumed (see”…”�”}”(hjÔKh²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ÐKubj²)�”}”(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 ”…”�”}”(hjLh²hh³Nh´Nubju)�”}”(hŒ **rescan**”h]”hŒrescan”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjLubhŒ). Possibility 2: input OK, ”…”�”}”(hjLh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjLubhŒ consumed, ”…”�”}”(hjLh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hj2Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjLubhŒ is the resulting code point. ”…”�”}”(hjLh²hh³Nh´Nubjœ)�”}”(hŒ ``U+FFFD``”h]”hŒU+FFFD”…”�”}”(hjDLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjLubhŒ is valid, ”…”�”}”(hjLh²hh³Nh´Nubjœ)�”}”(hŒ``REPLACEMENT CHARACTER``”h]”hŒREPLACEMENT CHARACTER”…”�”}”(hjVLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjLubhŒ.”…”�”}”(hjLh²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€ hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÐKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jLh´M� hjÍKubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÉKubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjŽKubhè)�”}”(hŒDotherwise - Input OK, **c** consumed, resulting code point returned.”h]”hí)�”}”(hj‰Lh]”(hŒotherwise - Input OK, ”…”�”}”(hj‹Lh²hh³Nh´Nubju)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hj’Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‹LubhŒ) consumed, resulting code point returned.”…”�”}”(hj‹Lh²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‡Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjŽKubeh}”(h]”h ]”h"]”h$]”h&]”juKj."uh1hâh³jÂKh´M~ hjËIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´NubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒvt_kmsg_redirect (C function)”Œc.vt_kmsg_redirect”hNt”auh1jËhj'8h²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×Lh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjÓLh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/tty/console:44: ./drivers/tty/vt/vt.c”h´MW ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjÓLh²hh³jåLh´MW ubj)�”}”(hŒvt_kmsg_redirect”h]”j)�”}”(hŒvt_kmsg_redirect”h]”hŒvt_kmsg_redirect”…”�”}”(hjøLh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjôLubah}”(h]”h ]”(j)j*eh"]”h$]”h&]”hÅhÆuh1jhjÓLh²hh³jåLh´MW ubj´!)�”}”(hŒ (int new)”h]”jº!)�”}”(hŒint new”h]”(j|!)�”}”(hŒint”h]”hŒint”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jˆ!ah"]”h$]”h&]”uh1j{!hjMubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jÿhjMubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj0Mh²hh³Nh´Nubah}”(h]”h ]”j"ah"]”h$]”h&]”uh1jhjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹!hj Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³!hjÓLh²hh³jåLh´MW ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj4ˆuh1jçj5j6hjÏLh²hh³jåLh´MW ubah}”(h]”jÊLah ]”(j:j;eh"]”h$]”h&]”j?ˆj@)jAhuh1jáh³jåLh´MW hjÌLh²hubjC)�”}”(hhh]”hí)�”}”(hŒ$sets/gets the kernel message console”h]”hŒ$sets/gets the kernel message console”…”�”}”(hjZMh²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 hjWMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jBhjÌLh²hh³jåLh´MW ubeh}”(h]”h ]”(j_Œfunction”eh"]”h$]”h&]”jdj_jejrMjfjrMjg‰jh‰ji‰uh1jÜh²hhj'8h³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)�”}”(hj|Mh]”hŒ Parameters”…”�”}”(hj~Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjzMubah}”(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[ hjvMubj‹)�”}”(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›Mh]”hŒint new”…”�”}”(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´MY hj•Mubj²)�”}”(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´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´MX hj±Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj•Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j°Mh´MY hj’Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjvMubhí)�”}”(hŒ**Description**”h]”ju)�”}”(hj×Mh]”hŒ Description”…”�”}”(hjÙMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÕMubah}”(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[ hjvMubhí)�”}”(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íMh²hh³Nh´Nubjœ)�”}”(hŒ``TIOCL_SETKMSGREDIRECT``”h]”hŒTIOCL_SETKMSGREDIRECT”…”�”}”(hjõMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjíMubhŒ ioctl call.”…”�”}”(hjíMh²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´MZ hjvMubhí)�”}”(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 ”…”�”}”(hjNh²hh³Nh´Nubju)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjNubhŒI. It returns the old virtual console number. The virtual terminal number ”…”�”}”(hjNh²hh³Nh´Nubjœ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj(Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjNubhŒq (both as parameter and return value) means no redirection (i.e. always printed on the currently active console).”…”�”}”(hjNh²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^ hjvMubhí)�”}”(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.”…”�”}”(hjANh²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´Mc hjvMubhí)�”}”(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 ”…”�”}”(hjPNh²hh³Nh´Nubjœ)�”}”(hŒ``CONFIG_VT_CONSOLE``”h]”hŒCONFIG_VT_CONSOLE”…”�”}”(hjXNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjPNubhŒ9, this function ignores the parameter and always returns ”…”�”}”(hjPNh²hh³Nh´Nubjœ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjPNubhŒ.”…”�”}”(hjPNh²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´Mg hjvMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jjhj'8h²hh³Nh´Nubeh}”(h]”j�ah ]”h"]”h$]”jÂah&]”uh1hÈhjQ!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ÂNŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jœNj™Nj¶j±jÉjŒ internals”NjN!jOj”NjquŒ nametypes”}”(jœN‰j¶‰jɉjO‰jN!‰j”N‰uh}”(j™NhÊj±hßjj¹jÚjãjj j!jî j jjjjøjýjjjojOjÌjéjîjqjQ!jn!js!jñ#jö#j&j &j"'j''j^(jc(j•)jš)jM+jR+j>-jC-jb0jg0jD2jI2jß3jä3j`5je5jˆ6j�6j�j'8jD8jI8jË9jÐ9j1<j6<jë?jð?j$Bj)BjGjGjIHjNHjÊLjÏLhühójjjIj@jkjbjŠj�uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jÐNKs…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hí)�”}”(hŒ,Duplicate implicit target name: "internals".”h]”hŒ0Duplicate implicit target name: “internalsâ€�.”…”�”}”(hj*Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj'Oubah}”(h]”h ]”h"]”h$]”h&]”j�aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”K(uh1j%Ohj'8h²hh³hÇh´K(ubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.