sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}(hhparenthuba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget*/translations/zh_CN/admin-guide/bootconfigmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}(hhhh2ubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/zh_TW/admin-guide/bootconfigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}(hhhhFubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/it_IT/admin-guide/bootconfigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}(hhhhZubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ja_JP/admin-guide/bootconfigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}(hhhhnubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ko_KR/admin-guide/bootconfigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}(hhhhubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/sp_SP/admin-guide/bootconfigmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}(hhhhubah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhD/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig.rsthKubhtarget)}(h.. _bootconfig:h]h}(h]h ]h"]h$]h&]refid bootconfiguh1hhKhhhhhhubhsection)}(hhh](htitle)}(hBoot Configurationh]hBoot Configuration}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h'Masami Hiramatsu h]h paragraph)}(h&Masami Hiramatsu h](hMasami Hiramatsu <}(hMasami Hiramatsu }(h>hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hOverviewh]hOverview}(hj6hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hhhhhK ubh)}(hThe boot configuration expands the current kernel command line to support additional key-value data when booting the kernel in an efficient way. This allows administrators to pass a structured-Key config file.h]hThe boot configuration expands the current kernel command line to support additional key-value data when booting the kernel in an efficient way. This allows administrators to pass a structured-Key config file.}(hjDhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hConfig File Syntaxh]hConfig File Syntax}(hj]hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhhhhhKubh)}(hXThe boot config syntax is a simple structured key-value. Each key consists of dot-connected-words, and key and value are connected by ``=``. The value has to be terminated by semi-colon (``;``) or newline (``\n``). For array value, array entries are separated by comma (``,``). ::h](hThe boot config syntax is a simple structured key-value. Each key consists of dot-connected-words, and key and value are connected by }(hThe boot config syntax is a simple structured key-value. Each key consists of dot-connected-words, and key and value are connected by hjihhhNhNubhliteral)}(h``=``h]h=}(hhhjthhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjiubh0. The value has to be terminated by semi-colon (}(h0. The value has to be terminated by semi-colon (hjihhhNhNubjs)}(h``;``h]h;}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjiubh) or newline (}(h) or newline (hjihhhNhNubjs)}(h``\n``h]h\n}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjiubh:). For array value, array entries are separated by comma (}(h:). For array value, array entries are separated by comma (hjihhhNhNubjs)}(h``,``h]h,}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjiubh).}(h).hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh literal_block)}(h)KEY[.WORD[...]] = VALUE[, VALUE2[...]][;]h]h)KEY[.WORD[...]] = VALUE[, VALUE2[...]][;]}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjXhhubh)}(hPUnlike the kernel command line syntax, spaces are OK around the comma and ``=``.h](hJUnlike the kernel command line syntax, spaces are OK around the comma and }(hJUnlike the kernel command line syntax, spaces are OK around the comma and hjhhhNhNubjs)}(h``=``h]h=}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh.}(h.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh)}(hXEach key word must contain only alphabets, numbers, dash (``-``) or underscore (``_``). And each value only contains printable characters or spaces except for delimiters such as semi-colon (``;``), new-line (``\n``), comma (``,``), hash (``#``) and closing brace (``}``).h](h:Each key word must contain only alphabets, numbers, dash (}(h:Each key word must contain only alphabets, numbers, dash (hjhhhNhNubjs)}(h``-``h]h-}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh) or underscore (}(h) or underscore (hjhhhNhNubjs)}(h``_``h]h_}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubhi). And each value only contains printable characters or spaces except for delimiters such as semi-colon (}(hi). And each value only contains printable characters or spaces except for delimiters such as semi-colon (hjhhhNhNubjs)}(h``;``h]h;}(hhhj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh ), new-line (}(h ), new-line (hjhhhNhNubjs)}(h``\n``h]h\n}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh ), comma (}(h ), comma (hjhhhNhNubjs)}(h``,``h]h,}(hhhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh ), hash (}(h ), hash (hjhhhNhNubjs)}(h``#``h]h#}(hhhj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh) and closing brace (}(h) and closing brace (hjhhhNhNubjs)}(h``}``h]h}}(hhhjshhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh).}(h).hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh)}(hIf you want to use those delimiters in a value, you can use either double- quotes (``"VALUE"``) or single-quotes (``'VALUE'``) to quote it. Note that you can not escape these quotes.h](hSIf you want to use those delimiters in a value, you can use either double- quotes (}(hSIf you want to use those delimiters in a value, you can use either double- quotes (hjhhhNhNubjs)}(h ``"VALUE"``h]h"VALUE"}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh) or single-quotes (}(h) or single-quotes (hjhhhNhNubjs)}(h ``'VALUE'``h]h'VALUE'}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh9) to quote it. Note that you can not escape these quotes.}(h9) to quote it. Note that you can not escape these quotes.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK#hjXhhubh)}(hThere can be a key which doesn't have value or has an empty value. Those keys are used for checking if the key exists or not (like a boolean).h]hThere can be a key which doesn’t have value or has an empty value. Those keys are used for checking if the key exists or not (like a boolean).}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjXhhubh)}(hhh](h)}(hKey-Value Syntaxh]hKey-Value Syntax}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK+ubh)}(haThe boot config file syntax allows user to merge partially same word keys by brace. For example::h]h`The boot config file syntax allows user to merge partially same word keys by brace. For example:}(h`The boot config file syntax allows user to merge partially same word keys by brace. For example:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjhhubj)}(h.foo.bar.baz = value1 foo.bar.qux.quux = value2h]h.foo.bar.baz = value1 foo.bar.qux.quux = value2}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhK0hjhhubh)}(hThese can be written also in::h]hThese can be written also in:}(hThese can be written also in:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjhhubj)}(h0foo.bar { baz = value1 qux.quux = value2 }h]h0foo.bar { baz = value1 qux.quux = value2 }}(hhhj ubah}(h]h ]h"]h$]h&]hhuh1jhhhK5hjhhubh)}(h'Or more shorter, written as following::h]h&Or more shorter, written as following:}(h&Or more shorter, written as following:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubj)}(h+foo.bar { baz = value1; qux.quux = value2 }h]h+foo.bar { baz = value1; qux.quux = value2 }}(hhhj)ubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubeh}(h]key-value-syntaxah ]h"]key-value syntaxah$]h&]uh1hhjXhhhhhK+ubh)}(hhh](h)}(hSame-key Valuesh]hSame-key Values}(hjRhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhhhhhKBubh)}(hSIt is prohibited that two or more values or arrays share a same-key. For example,::h]hRIt is prohibited that two or more values or arrays share a same-key. For example,:}(hRIt is prohibited that two or more values or arrays share a same-key. For example,:hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjMhhubj)}(hAfoo = bar, baz foo = qux # !ERROR! we can not re-define same keyh]hAfoo = bar, baz foo = qux # !ERROR! we can not re-define same key}(hhhjmubah}(h]h ]h"]h$]h&]hhuh1jhhhKGhjMhhubh)}(hdIf you want to update the value, you must use the override operator ``:=`` explicitly. For example::h](hDIf you want to update the value, you must use the override operator }(hDIf you want to update the value, you must use the override operator hj{hhhNhNubjs)}(h``:=``h]h:=}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj{ubh explicitly. For example:}(h explicitly. For example:hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKJhjMhhubj)}(hfoo = bar, baz foo := quxh]hfoo = bar, baz foo := qux}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKMhjMhhubh)}(hthen, the ``qux`` is assigned to ``foo`` key. This is useful for overriding the default value by adding (partial) custom bootconfigs without parsing the default bootconfig.h](h then, the }(h then, the hjhhhNhNubjs)}(h``qux``h]hqux}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh is assigned to }(h is assigned to hjhhhNhNubjs)}(h``foo``h]hfoo}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh key. This is useful for overriding the default value by adding (partial) custom bootconfigs without parsing the default bootconfig.}(h key. This is useful for overriding the default value by adding (partial) custom bootconfigs without parsing the default bootconfig.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKPhjMhhubh)}(hnIf you want to append the value to existing key as an array member, you can use ``+=`` operator. For example::h](hPIf you want to append the value to existing key as an array member, you can use }(hPIf you want to append the value to existing key as an array member, you can use hjhhhNhNubjs)}(h``+=``h]h+=}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh operator. For example:}(h operator. For example:hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKThjMhhubj)}(hfoo = bar, baz foo += quxh]hfoo = bar, baz foo += qux}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKWhjMhhubh)}(h?In this case, the key ``foo`` has ``bar``, ``baz`` and ``qux``.h](hIn this case, the key }(hIn this case, the key hjhhhNhNubjs)}(h``foo``h]hfoo}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh has }(h has hjhhhNhNubjs)}(h``bar``h]hbar}(hhhj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh, }(h, hjhhhNhNubjs)}(h``baz``h]hbaz}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh and }(h and hjhhhNhNubjs)}(h``qux``h]hqux}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh.}(hjhjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhjMhhubh)}(hjMoreover, sub-keys and a value can coexist under a parent key. For example, following config is allowed.::h]hiMoreover, sub-keys and a value can coexist under a parent key. For example, following config is allowed.:}(hiMoreover, sub-keys and a value can coexist under a parent key. For example, following config is allowed.:hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjMhhubj)}(hKfoo = value1 foo.bar = value2 foo := value3 # This will update foo's value.h]hKfoo = value1 foo.bar = value2 foo := value3 # This will update foo's value.}(hhhjyubah}(h]h ]h"]h$]h&]hhuh1jhhhK_hjMhhubh)}(hNote, since there is no syntax to put a raw value directly under a structured key, you have to define it outside of the brace. For example::h]hNote, since there is no syntax to put a raw value directly under a structured key, you have to define it outside of the brace. For example:}(hNote, since there is no syntax to put a raw value directly under a structured key, you have to define it outside of the brace. For example:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjMhhubj)}(hRfoo { bar = value1 bar { baz = value2 qux = value3 } }h]hRfoo { bar = value1 bar { baz = value2 qux = value3 } }}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKfhjMhhubh)}(hAlso, the order of the value node under a key is fixed. If there are a value and subkeys, the value is always the first child node of the key. Thus if user specifies subkeys first, e.g.::h]hAlso, the order of the value node under a key is fixed. If there are a value and subkeys, the value is always the first child node of the key. Thus if user specifies subkeys first, e.g.:}(hAlso, the order of the value node under a key is fixed. If there are a value and subkeys, the value is always the first child node of the key. Thus if user specifies subkeys first, e.g.:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjMhhubj)}(hfoo.bar = value1 foo = value2h]hfoo.bar = value1 foo = value2}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKrhjMhhubh)}(hBIn the program (and /proc/bootconfig), it will be shown as below::h]hAIn the program (and /proc/bootconfig), it will be shown as below:}(hAIn the program (and /proc/bootconfig), it will be shown as below:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjMhhubj)}(hfoo = value2 foo.bar = value1h]hfoo = value2 foo.bar = value1}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKwhjMhhubeh}(h]same-key-valuesah ]h"]same-key valuesah$]h&]uh1hhjXhhhhhKBubh)}(hhh](h)}(hCommentsh]hComments}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK{ubh)}(hThe config syntax accepts shell-script style comments. The comments starting with hash ("#") until newline ("\n") will be ignored.h]hThe config syntax accepts shell-script style comments. The comments starting with hash (“#”) until newline (”n”) will be ignored.}(hThe config syntax accepts shell-script style comments. The comments starting with hash ("#") until newline ("\n") will be ignored.hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjhhubj)}(hv# comment line foo = value # value is set to foo. bar = 1, # 1st element 2, # 2nd element 3 # 3rd elementh]hv# comment line foo = value # value is set to foo. bar = 1, # 1st element 2, # 2nd element 3 # 3rd element}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hThis is parsed as below::h]hThis is parsed as below:}(hThis is parsed as below:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hfoo = value bar = 1, 2, 3h]hfoo = value bar = 1, 2, 3}(hhhj#ubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hNote that you can not put a comment between value and delimiter(``,`` or ``;``). This means following config has a syntax error ::h](h@Note that you can not put a comment between value and delimiter(}(h@Note that you can not put a comment between value and delimiter(hj1hhhNhNubjs)}(h``,``h]h,}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj1ubh or }(h or hj1hhhNhNubjs)}(h``;``h]h;}(hhhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj1ubh1). This means following config has a syntax error}(h1). This means following config has a syntax errorhj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hkey = 1 # comment ,2h]hkey = 1 # comment ,2}(hhhjfubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubeh}(h]commentsah ]h"]commentsah$]h&]uh1hhjXhhhhhK{ubeh}(h]config-file-syntaxah ]h"]config file syntaxah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h/proc/bootconfigh]h/proc/bootconfig}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h/proc/bootconfig is a user-space interface of the boot config. Unlike /proc/cmdline, this file shows the key-value style list. Each key-value pair is shown in each line with following style::h]h/proc/bootconfig is a user-space interface of the boot config. Unlike /proc/cmdline, this file shows the key-value style list. Each key-value pair is shown in each line with following style:}(h/proc/bootconfig is a user-space interface of the boot config. Unlike /proc/cmdline, this file shows the key-value style list. Each key-value pair is shown in each line with following style:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h(KEY[.WORDS...] = "[VALUE]"[,"VALUE2"...]h]h(KEY[.WORDS...] = "[VALUE]"[,"VALUE2"...]}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubeh}(h]proc-bootconfigah ]h"]/proc/bootconfigah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hBoot Kernel With a Boot Configh]hBoot Kernel With a Boot Config}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThere are two options to boot the kernel with bootconfig: attaching the bootconfig to the initrd image or embedding it in the kernel itself.h]hThere are two options to boot the kernel with bootconfig: attaching the bootconfig to the initrd image or embedding it in the kernel itself.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(h!Attaching a Boot Config to Initrdh]h!Attaching a Boot Config to Initrd}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hSince the boot configuration file is loaded with initrd by default, it will be added to the end of the initrd (initramfs) image file with padding, size, checksum and 12-byte magic word as below.h]hSince the boot configuration file is loaded with initrd by default, it will be added to the end of the initrd (initramfs) image file with padding, size, checksum and 12-byte magic word as below.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hH[initrd][bootconfig][padding][size(le32)][checksum(le32)][#BOOTCONFIG\n]h]hH[initrd][bootconfig][padding][size(le32)][checksum(le32)][#BOOTCONFIGn]}(hH[initrd][bootconfig][padding][size(le32)][checksum(le32)][#BOOTCONFIG\n]hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDThe size and checksum fields are unsigned 32bit little endian value.h]hDThe size and checksum fields are unsigned 32bit little endian value.}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hWhen the boot configuration is added to the initrd image, the total file size is aligned to 4 bytes. To fill the gap, null characters (``\0``) will be added. Thus the ``size`` is the length of the bootconfig file + padding bytes.h](hWhen the boot configuration is added to the initrd image, the total file size is aligned to 4 bytes. To fill the gap, null characters (}(hWhen the boot configuration is added to the initrd image, the total file size is aligned to 4 bytes. To fill the gap, null characters (hjhhhNhNubjs)}(h``\0``h]h\0}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh) will be added. Thus the }(h) will be added. Thus the hjhhhNhNubjs)}(h``size``h]hsize}(hhhj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh6 is the length of the bootconfig file + padding bytes.}(h6 is the length of the bootconfig file + padding bytes.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXThe Linux kernel decodes the last part of the initrd image in memory to get the boot configuration data. Because of this "piggyback" method, there is no need to change or update the boot loader and the kernel image itself as long as the boot loader passes the correct initrd file size. If by any chance, the boot loader passes a longer size, the kernel fails to find the bootconfig data.h]hXThe Linux kernel decodes the last part of the initrd image in memory to get the boot configuration data. Because of this “piggyback” method, there is no need to change or update the boot loader and the kernel image itself as long as the boot loader passes the correct initrd file size. If by any chance, the boot loader passes a longer size, the kernel fails to find the bootconfig data.}(hjLhjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hTo do this operation, Linux kernel provides ``bootconfig`` command under tools/bootconfig, which allows admin to apply or delete the config file to/from initrd image. You can build it by the following command::h](h,To do this operation, Linux kernel provides }(h,To do this operation, Linux kernel provides hjXhhhNhNubjs)}(h``bootconfig``h]h bootconfig}(hhhjahhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjXubh command under tools/bootconfig, which allows admin to apply or delete the config file to/from initrd image. You can build it by the following command:}(h command under tools/bootconfig, which allows admin to apply or delete the config file to/from initrd image. You can build it by the following command:hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h# make -C tools/bootconfigh]h# make -C tools/bootconfig}(hhhjzubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(huTo add your boot config file to initrd image, run bootconfig as below (Old data is removed automatically if exists)::h]htTo add your boot config file to initrd image, run bootconfig as below (Old data is removed automatically if exists):}(htTo add your boot config file to initrd image, run bootconfig as below (Old data is removed automatically if exists):hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hC# tools/bootconfig/bootconfig -a your-config /boot/initrd.img-X.Y.Zh]hC# tools/bootconfig/bootconfig -a your-config /boot/initrd.img-X.Y.Z}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hETo remove the config from the image, you can use -d option as below::h]hDTo remove the config from the image, you can use -d option as below:}(hDTo remove the config from the image, you can use -d option as below:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h7# tools/bootconfig/bootconfig -d /boot/initrd.img-X.Y.Zh]h7# tools/bootconfig/bootconfig -d /boot/initrd.img-X.Y.Z}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hThen add "bootconfig" on the normal kernel command line to tell the kernel to look for the bootconfig at the end of the initrd file. Alternatively, build your kernel with the ``CONFIG_BOOT_CONFIG_FORCE`` Kconfig option selected.h](hThen add “bootconfig” on the normal kernel command line to tell the kernel to look for the bootconfig at the end of the initrd file. Alternatively, build your kernel with the }(hThen add "bootconfig" on the normal kernel command line to tell the kernel to look for the bootconfig at the end of the initrd file. Alternatively, build your kernel with the hjhhhNhNubjs)}(h``CONFIG_BOOT_CONFIG_FORCE``h]hCONFIG_BOOT_CONFIG_FORCE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh Kconfig option selected.}(h Kconfig option selected.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]!attaching-a-boot-config-to-initrdah ]h"]!attaching a boot config to initrdah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h#Embedding a Boot Config into Kernelh]h#Embedding a Boot Config into Kernel}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hIf you can not use initrd, you can also embed the bootconfig file in the kernel by Kconfig options. In this case, you need to recompile the kernel with the following configs::h]hIf you can not use initrd, you can also embed the bootconfig file in the kernel by Kconfig options. In this case, you need to recompile the kernel with the following configs:}(hIf you can not use initrd, you can also embed the bootconfig file in the kernel by Kconfig options. In this case, you need to recompile the kernel with the following configs:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hSCONFIG_BOOT_CONFIG_EMBED=y CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"h]hSCONFIG_BOOT_CONFIG_EMBED=y CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"}(hhhj ubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h``CONFIG_BOOT_CONFIG_EMBED_FILE`` requires an absolute path or a relative path to the bootconfig file from source tree or object tree. The kernel will embed it as the default bootconfig.h](js)}(h!``CONFIG_BOOT_CONFIG_EMBED_FILE``h]hCONFIG_BOOT_CONFIG_EMBED_FILE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubh requires an absolute path or a relative path to the bootconfig file from source tree or object tree. The kernel will embed it as the default bootconfig.}(h requires an absolute path or a relative path to the bootconfig file from source tree or object tree. The kernel will embed it as the default bootconfig.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hJust as when attaching the bootconfig to the initrd, you need ``bootconfig`` option on the kernel command line to enable the embedded bootconfig, or, alternatively, build your kernel with the ``CONFIG_BOOT_CONFIG_FORCE`` Kconfig option selected.h](h>Just as when attaching the bootconfig to the initrd, you need }(h>Just as when attaching the bootconfig to the initrd, you need hj7hhhNhNubjs)}(h``bootconfig``h]h bootconfig}(hhhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj7ubht option on the kernel command line to enable the embedded bootconfig, or, alternatively, build your kernel with the }(ht option on the kernel command line to enable the embedded bootconfig, or, alternatively, build your kernel with the hj7hhhNhNubjs)}(h``CONFIG_BOOT_CONFIG_FORCE``h]hCONFIG_BOOT_CONFIG_FORCE}(hhhjShhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj7ubh Kconfig option selected.}(h Kconfig option selected.hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hNote that even if you set this option, you can override the embedded bootconfig by another bootconfig which attached to the initrd.h]hNote that even if you set this option, you can override the embedded bootconfig by another bootconfig which attached to the initrd.}(hjnhjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]#embedding-a-boot-config-into-kernelah ]h"]#embedding a boot config into kernelah$]h&]uh1hhjhhhhhKubeh}(h]boot-kernel-with-a-boot-configah ]h"]boot kernel with a boot configah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h!Kernel parameters via Boot Configh]h!Kernel parameters via Boot Config}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX<In addition to the kernel command line, the boot config can be used for passing the kernel parameters. All the key-value pairs under ``kernel`` key will be passed to kernel cmdline directly. Moreover, the key-value pairs under ``init`` will be passed to init process via the cmdline. The parameters are concatenated with user-given kernel cmdline string as the following order, so that the command line parameter can override bootconfig parameters (this depends on how the subsystem handles parameters but in general, earlier parameter will be overwritten by later one.)::h](hIn addition to the kernel command line, the boot config can be used for passing the kernel parameters. All the key-value pairs under }(hIn addition to the kernel command line, the boot config can be used for passing the kernel parameters. All the key-value pairs under hjhhhNhNubjs)}(h ``kernel``h]hkernel}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubhT key will be passed to kernel cmdline directly. Moreover, the key-value pairs under }(hT key will be passed to kernel cmdline directly. Moreover, the key-value pairs under hjhhhNhNubjs)}(h``init``h]hinit}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubhXP will be passed to init process via the cmdline. The parameters are concatenated with user-given kernel cmdline string as the following order, so that the command line parameter can override bootconfig parameters (this depends on how the subsystem handles parameters but in general, earlier parameter will be overwritten by later one.):}(hXP will be passed to init process via the cmdline. The parameters are concatenated with user-given kernel cmdline string as the following order, so that the command line parameter can override bootconfig parameters (this depends on how the subsystem handles parameters but in general, earlier parameter will be overwritten by later one.):hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hT[bootconfig params][cmdline params] -- [bootconfig init params][cmdline init params]h]hT[bootconfig params][cmdline params] -- [bootconfig init params][cmdline init params]}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hGHere is an example of the bootconfig file for kernel/init parameters.::h]hFHere is an example of the bootconfig file for kernel/init parameters.:}(hFHere is an example of the bootconfig file for kernel/init parameters.:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hGkernel { root = 01234567-89ab-cdef-0123-456789abcd } init { splash }h]hGkernel { root = 01234567-89ab-cdef-0123-456789abcd } init { splash }}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hEThis will be copied into the kernel cmdline string as the following::h]hDThis will be copied into the kernel cmdline string as the following:}(hDThis will be copied into the kernel cmdline string as the following:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h3root="01234567-89ab-cdef-0123-456789abcd" -- splashh]h3root="01234567-89ab-cdef-0123-456789abcd" -- splash}(hhhj ubah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h-If user gives some other command line like,::h]h,If user gives some other command line like,:}(h,If user gives some other command line like,:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hro bootconfig -- quieth]hro bootconfig -- quiet}(hhhj'ubah}(h]h ]h"]h$]h&]hhuh1jhhhMhjhhubh)}(h0The final kernel cmdline will be the following::h]h/The final kernel cmdline will be the following:}(h/The final kernel cmdline will be the following:hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hGroot="01234567-89ab-cdef-0123-456789abcd" ro bootconfig -- splash quieth]hGroot="01234567-89ab-cdef-0123-456789abcd" ro bootconfig -- splash quiet}(hhhjDubah}(h]h ]h"]h$]h&]hhuh1jhhhMhjhhubeh}(h]!kernel-parameters-via-boot-configah ]h"]!kernel parameters via boot configah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hConfig File Limitationh]hConfig File Limitation}(hj_hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhhhhhM ubh)}(hX Currently the maximum config size size is 32KB and the total key-words (not key-value entries) must be under 1024 nodes. Note: this is not the number of entries but nodes, an entry must consume more than 2 nodes (a key-word and a value). So theoretically, it will be up to 512 key-value pairs. If keys contains 3 words in average, it can contain 256 key-value pairs. In most cases, the number of config items will be under 100 entries and smaller than 8KB, so it would be enough. If the node number exceeds 1024, parser returns an error even if the file size is smaller than 32KB. (Note that this maximum size is not including the padding null characters.) Anyway, since bootconfig command verifies it when appending a boot config to initrd image, user can notice it before boot.h]hX Currently the maximum config size size is 32KB and the total key-words (not key-value entries) must be under 1024 nodes. Note: this is not the number of entries but nodes, an entry must consume more than 2 nodes (a key-word and a value). So theoretically, it will be up to 512 key-value pairs. If keys contains 3 words in average, it can contain 256 key-value pairs. In most cases, the number of config items will be under 100 entries and smaller than 8KB, so it would be enough. If the node number exceeds 1024, parser returns an error even if the file size is smaller than 32KB. (Note that this maximum size is not including the padding null characters.) Anyway, since bootconfig command verifies it when appending a boot config to initrd image, user can notice it before boot.}(hjmhjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjZhhubeh}(h]config-file-limitationah ]h"]config file limitationah$]h&]uh1hhhhhhhhM ubh)}(hhh](h)}(hBootconfig APIsh]hBootconfig APIs}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hUser can query or loop on key-value pairs, also it is possible to find a root (prefix) key node and find key-values under that node.h]hUser can query or loop on key-value pairs, also it is possible to find a root (prefix) key node and find key-values under that node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX6If you have a key string, you can query the value directly with the key using xbc_find_value(). If you want to know what keys exist in the boot config, you can use xbc_for_each_key_value() to iterate key-value pairs. Note that you need to use xbc_array_for_each_value() for accessing each array's value, e.g.::h]hX7If you have a key string, you can query the value directly with the key using xbc_find_value(). If you want to know what keys exist in the boot config, you can use xbc_for_each_key_value() to iterate key-value pairs. Note that you need to use xbc_array_for_each_value() for accessing each array’s value, e.g.:}(hX5If you have a key string, you can query the value directly with the key using xbc_find_value(). If you want to know what keys exist in the boot config, you can use xbc_for_each_key_value() to iterate key-value pairs. Note that you need to use xbc_array_for_each_value() for accessing each array's value, e.g.:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjhhubj)}(hvnode = NULL; xbc_find_value("key.word", &vnode); if (vnode && xbc_node_is_array(vnode)) xbc_array_for_each_value(vnode, value) { printk("%s ", value); }h]hvnode = NULL; xbc_find_value("key.word", &vnode); if (vnode && xbc_node_is_array(vnode)) xbc_array_for_each_value(vnode, value) { printk("%s ", value); }}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhM&hjhhubh)}(hIf you want to focus on keys which have a prefix string, you can use xbc_find_node() to find a node by the prefix string, and iterate keys under the prefix node with xbc_node_for_each_key_value().h]hIf you want to focus on keys which have a prefix string, you can use xbc_find_node() to find a node by the prefix string, and iterate keys under the prefix node with xbc_node_for_each_key_value().}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjhhubh)}(hpBut the most typical usage is to get the named value under prefix or get the named array under prefix as below::h]hoBut the most typical usage is to get the named value under prefix or get the named array under prefix as below:}(hoBut the most typical usage is to get the named value under prefix or get the named array under prefix as below:hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hjhhubj)}(hroot = xbc_find_node("key.prefix"); value = xbc_node_find_value(root, "option", &vnode); ... xbc_node_for_each_array_value(root, "array-option", value, anode) { ... }h]hroot = xbc_find_node("key.prefix"); value = xbc_node_find_value(root, "option", &vnode); ... xbc_node_for_each_array_value(root, "array-option", value, anode) { ... }}(hhhjubah}(h]h ]h"]h$]h&]hhuh1jhhhM4hjhhubh)}(hWThis accesses a value of "key.prefix.option" and an array of "key.prefix.array-option".h]h_This accesses a value of “key.prefix.option” and an array of “key.prefix.array-option”.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM;hjhhubh)}(hLocking is not needed, since after initialization, the config becomes read-only. All data and keys must be copied if you need to modify it.h]hLocking is not needed, since after initialization, the config becomes read-only. All data and keys must be copied if you need to modify it.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hjhhubeh}(h]bootconfig-apisah ]h"]bootconfig apisah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hFunctions and structuresh]hFunctions and structures}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMCubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlexbc_calc_checksum (C function)c.xbc_calc_checksumhNtauh1j hj hhhNhNubhdesc)}(hhh](hdesc_signature)}(h6uint32_t xbc_calc_checksum (void *data, uint32_t size)h]hdesc_signature_line)}(h5uint32_t xbc_calc_checksum(void *data, uint32_t size)h](h)}(hhh]h desc_sig_name)}(huint32_th]huint32_t}(hhhjD hhhNhNubah}(h]h ]nah"]h$]h&]uh1jB hj? ubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjF modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]ja ASTIdentifier)}j\ xbc_calc_checksumsbc.xbc_calc_checksumasbuh1hhj; hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK ubhdesc_sig_space)}(h h]h }(hhhjr hhhNhNubah}(h]h ]wah"]h$]h&]uh1jp hj; hhhjo hK ubh desc_name)}(hxbc_calc_checksumh]jC )}(hjl h]hxbc_calc_checksum}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j hj; hhhjo hK ubhdesc_parameterlist)}(h(void *data, uint32_t size)h](hdesc_parameter)}(h void *datah](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hhhj hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j hj ubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj ubhdesc_sig_punctuation)}(h*h]h*}(hhhj hhhNhNubah}(h]h ]pah"]h$]h&]uh1j hj ubjC )}(hdatah]hdata}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubj )}(h uint32_t sizeh](h)}(hhh]jC )}(huint32_th]huint32_t}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj modnameN classnameNj` jc )}jf ]jj c.xbc_calc_checksumasbuh1hhj ubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj ubjC )}(hsizeh]hsize}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubeh}(h]h ]h"]h$]h&]hhuh1j hj; hhhjo hK ubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1j9 sphinx_line_type declaratorhj5 hhhjo hK ubah}(h]j, ah ](sig sig-objecteh"]h$]h&] is_multilineuh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK'hj0 hhubh desc_content)}(hhh]h)}(h Calculate checksum of bootconfigh]h Calculate checksum of bootconfig}(hjU hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjP hhubah}(h]h ]h"]h$]h&]uh1jN hj0 hhhjo hK ubeh}(h]h ](jZ functioneh"]h$]h&]domainjZ objtypejk desctypejk noindexuh1j. hhhj hNhNubh container)}(hX!**Parameters** ``void *data`` Bootconfig data. ``uint32_t size`` The size of the bootconfig data. **Description** Calculate the checksum value of the bootconfig data. The checksum will be used with the BOOTCONFIG_MAGIC and the size for embedding the bootconfig in the initrd image.h](h)}(h**Parameters**h]hstrong)}(hj{ h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjy ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK#hju ubhdefinition_list)}(hhh](hdefinition_list_item)}(h ``void *data`` Bootconfig data. h](hterm)}(h``void *data``h]js)}(hj h]h void *data}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK hj ubh definition)}(hhh]h)}(hBootconfig data.h]hBootconfig data.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK hj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hK hj ubj )}(h3``uint32_t size`` The size of the bootconfig data. h](j )}(h``uint32_t size``h]js)}(hj h]h uint32_t size}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK!hj ubj )}(hhh]h)}(h The size of the bootconfig data.h]h The size of the bootconfig data.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK!hj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hK!hj ubeh}(h]h ]h"]h$]h&]uh1j hju ubh)}(h**Description**h]j~ )}(hj h]h Description}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK#hju ubh)}(hCalculate the checksum value of the bootconfig data. The checksum will be used with the BOOTCONFIG_MAGIC and the size for embedding the bootconfig in the initrd image.h]hCalculate the checksum value of the bootconfig data. The checksum will be used with the BOOTCONFIG_MAGIC and the size for embedding the bootconfig in the initrd image.}(hj0 hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK#hju ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_is_value (C function)c.xbc_node_is_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h.bool xbc_node_is_value (struct xbc_node *node)h]j: )}(h-bool xbc_node_is_value(struct xbc_node *node)h](j )}(hboolh]hbool}(hhhj] hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKMubjq )}(h h]h }(hhhjl hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjY hhhjk hKMubj )}(hxbc_node_is_valueh]jC )}(hxbc_node_is_valueh]hxbc_node_is_value}(hhhj~ hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjz ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjY hhhjk hKMubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](hdesc_sig_keyword)}(hstructh]hstruct}(hhhj hhhNhNubah}(h]h ]kah"]h$]h&]uh1j hj ubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj modnameN classnameNj` jc )}jf ]ji )}j\ j sbc.xbc_node_is_valueasbuh1hhj ubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj ubj )}(hj h]h*}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubjC )}(hnodeh]hnode}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjY hhhjk hKMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjU hhhjk hKMubah}(h]jP ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKQhjR hhubjO )}(hhh]h)}(hTest the node is a value nodeh]hTest the node is a value node}(hj$ hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKLhj hhubah}(h]h ]h"]h$]h&]uh1jN hjR hhhjk hKMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j: jq j: jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Test the **node** is a value node and return true if a value node, false if not.h](h)}(h**Parameters**h]j~ )}(hjD h]h Parameters}(hhhjF hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjB ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKPhj> ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hjc h]hstruct xbc_node *node}(hhhje hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhja ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKMhj] ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj~ hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx hKMhjy ubah}(h]h ]h"]h$]h&]uh1j hj] ubeh}(h]h ]h"]h$]h&]uh1j hjx hKMhjZ ubah}(h]h ]h"]h$]h&]uh1j hj> ubh)}(h**Description**h]j~ )}(hj h]h Description}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKOhj> ubh)}(hPTest the **node** is a value node and return true if a value node, false if not.h](h Test the }(h Test the hj hhhNhNubj~ )}(h**node**h]hnode}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj ubh? is a value node and return true if a value node, false if not.}(h? is a value node and return true if a value node, false if not.hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKOhj> ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_is_key (C function)c.xbc_node_is_keyhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h,bool xbc_node_is_key (struct xbc_node *node)h]j: )}(h+bool xbc_node_is_key(struct xbc_node *node)h](j )}(hj_ h]hbool}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKXubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj hhhj hKXubj )}(hxbc_node_is_keyh]jC )}(hxbc_node_is_keyh]hxbc_node_is_key}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj hhhj hKXubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj3 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ ubjq )}(h h]h }(hhhj@ hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj/ ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhjQ hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjN ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetjS modnameN classnameNj` jc )}jf ]ji )}j\ j sbc.xbc_node_is_keyasbuh1hhj/ ubjq )}(h h]h }(hhhjq hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj/ ubj )}(hj h]h*}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ ubjC )}(hnodeh]hnode}(hhhj hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj/ ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj+ ubah}(h]h ]h"]h$]h&]hhuh1j hj hhhj hKXubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj hhhj hKXubah}(h]j ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK\hj hhubjO )}(hhh]h)}(hTest the node is a key nodeh]hTest the node is a key node}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKWhj hhubah}(h]h ]h"]h$]h&]uh1jN hj hhhj hKXubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j jq j jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Test the **node** is a key node and return true if a key node, false if not.h](h)}(h**Parameters**h]j~ )}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhK[hj ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj h]hstruct xbc_node *node}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKXhj ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKXhjubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKXhj ubah}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j~ )}(hj3h]h Description}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj1ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKZhj ubh)}(hLTest the **node** is a key node and return true if a key node, false if not.h](h Test the }(h Test the hjIhhhNhNubj~ )}(h**node**h]hnode}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjIubh; is a key node and return true if a key node, false if not.}(h; is a key node and return true if a key node, false if not.hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKZhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_is_array (C function)c.xbc_node_is_arrayhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h.bool xbc_node_is_array (struct xbc_node *node)h]j: )}(h-bool xbc_node_is_array(struct xbc_node *node)h](j )}(hj_ h]hbool}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKcubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhjhKcubj )}(hxbc_node_is_arrayh]jC )}(hxbc_node_is_arrayh]hxbc_node_is_array}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhjhKcubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetjmodnameN classnameNj` jc )}jf ]ji )}j\ jsbc.xbc_node_is_arrayasbuh1hhjubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjC )}(hnodeh]hnode}(hhhj!hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhKcubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhjhKcubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKghjhhubjO )}(hhh]h)}(h&Test the node is an arraied value nodeh]h&Test the node is an arraied value node}(hjNhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKbhjIhhubah}(h]h ]h"]h$]h&]uh1jN hjhhhjhKcubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jdjq jdjr uh1j. hhhj hNhNubjt )}(hv**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Test the **node** is an arraied value node.h](h)}(h**Parameters**h]j~ )}(hjnh]h Parameters}(hhhjphhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjlubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKfhjhubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hjh]hstruct xbc_node *node}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKchjubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKchjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKchjubah}(h]h ]h"]h$]h&]uh1j hjhubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKehjhubh)}(h+Test the **node** is an arraied value node.h](h Test the }(h Test the hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh is an arraied value node.}(h is an arraied value node.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKehjhubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_is_leaf (C function)c.xbc_node_is_leafhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h-bool xbc_node_is_leaf (struct xbc_node *node)h]j: )}(h,bool xbc_node_is_leaf(struct xbc_node *node)h](j )}(hj_ h]hbool}(hhhj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKnubjq )}(h h]h }(hhhj/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhj.hKnubj )}(hxbc_node_is_leafh]jC )}(hxbc_node_is_leafh]hxbc_node_is_leaf}(hhhjAhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj=ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhj.hKnubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubjq )}(h h]h }(hhhjjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjYubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj{hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjxubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj}modnameN classnameNj` jc )}jf ]ji )}j\ jCsbc.xbc_node_is_leafasbuh1hhjYubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjYubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubjC )}(hnodeh]hnode}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjUubah}(h]h ]h"]h$]h&]hhuh1j hjhhhj.hKnubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhj.hKnubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKuhjhhubjO )}(hhh]h)}(h Test the node is a leaf key nodeh]h Test the node is a leaf key node}(hjhjhhhNhNuba/h}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKmhjhhubah}(h]h ]h"]h$]h&]uh1jN hjhhhj.hKnubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jjq jjr uh1j. hhhj hNhNubjt )}(hX&**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Test the **node** is a leaf key node which is a key node and has a value node or no child. Returns true if it is a leaf node, or false if not. Note that the leaf node can have subkey nodes in addition to the value node.h](h)}(h**Parameters**h]j~ )}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKqhjubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj"h]hstruct xbc_node *node}(hhhj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKnhjubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj=hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKnhj8ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj7hKnhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hj]h]h Description}(hhhj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj[ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKphjubh)}(hTest the **node** is a leaf key node which is a key node and has a value node or no child. Returns true if it is a leaf node, or false if not. Note that the leaf node can have subkey nodes in addition to the value node.h](h Test the }(h Test the hjshhhNhNubj~ )}(h**node**h]hnode}(hhhj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjsubh is a leaf key node which is a key node and has a value node or no child. Returns true if it is a leaf node, or false if not. Note that the leaf node can have subkey nodes in addition to the value node.}(h is a leaf key node which is a key node and has a value node or no child. Returns true if it is a leaf node, or false if not. Note that the leaf node can have subkey nodes in addition to the value node.hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKphjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_find_value (C function)c.xbc_find_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hFconst char * xbc_find_value (const char *key, struct xbc_node **vnode)h]j: )}(hDconst char *xbc_find_value(const char *key, struct xbc_node **vnode)h](j )}(hconsth]hconst}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhjhKubj )}(hcharh]hchar}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhjhKubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKubj )}(hxbc_find_valueh]jC )}(hxbc_find_valueh]hxbc_find_value}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhjhKubj )}(h*(const char *key, struct xbc_node **vnode)h](j )}(hconst char *keyh](j )}(hjh]hconst}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(h h]h }(hhhj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(hcharh]hchar}(hhhj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(h h]h }(hhhjEhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(hj h]h*}(hhhjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjC )}(hkeyh]hkey}(hhhj`hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hstruct xbc_node **vnodeh](j )}(hj h]hstruct}(hhhjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjuubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetjmodnameN classnameNj` jc )}jf ]ji )}j\ jsbc.xbc_find_valueasbuh1hhjuubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjuubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubjC )}(hvnodeh]hvnode}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjuubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhjhKubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubjO )}(hhh]h)}(h"Find a value which matches the keyh]h"Find a value which matches the key}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jN hjhhhjhKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j"jq j"jr uh1j. hhhj hNhNubjt )}(hXx**Parameters** ``const char *key`` Search key ``struct xbc_node **vnode`` A container pointer of XBC value node. **Description** Search a value whose key matches **key** from whole of XBC tree and return the value if found. Found value node is stored in ***vnode**. Note that this can return 0-length string and store NULL in ***vnode** for key-only (non-value) entry.h](h)}(h**Parameters**h]j~ )}(hj,h]h Parameters}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj*ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj&ubj )}(hhh](j )}(h``const char *key`` Search key h](j )}(h``const char *key``h]js)}(hjKh]hconst char *key}(hhhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjIubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjEubj )}(hhh]h)}(h Search keyh]h Search key}(hjfhjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKhjaubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj`hKhjBubj )}(hC``struct xbc_node **vnode`` A container pointer of XBC value node. h](j )}(h``struct xbc_node **vnode``h]js)}(hjh]hstruct xbc_node **vnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj~ubj )}(hhh]h)}(h&A container pointer of XBC value node.h]h&A container pointer of XBC value node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hj~ubeh}(h]h ]h"]h$]h&]uh1j hjhKhjBubeh}(h]h ]h"]h$]h&]uh1j hj&ubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj&ubh)}(hSearch a value whose key matches **key** from whole of XBC tree and return the value if found. Found value node is stored in ***vnode**. Note that this can return 0-length string and store NULL in ***vnode** for key-only (non-value) entry.h](h!Search a value whose key matches }(h!Search a value whose key matches hjhhhNhNubj~ )}(h**key**h]hkey}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubhU from whole of XBC tree and return the value if found. Found value node is stored in }(hU from whole of XBC tree and return the value if found. Found value node is stored in hjhhhNhNubj~ )}(h ***vnode**h]h*vnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh>. Note that this can return 0-length string and store NULL in }(h>. Note that this can return 0-length string and store NULL in hjhhhNhNubj~ )}(h ***vnode**h]h*vnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh for key-only (non-value) entry.}(h for key-only (non-value) entry.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_find_node (C function)c.xbc_find_nodehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h1struct xbc_node * xbc_find_node (const char *key)h]j: )}(h/struct xbc_node *xbc_find_node(const char *key)h](j )}(hj h]hstruct}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubjq )}(h h]h }(hhhjLhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:hhhjKhKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj]hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjZubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj_modnameN classnameNj` jc )}jf ]ji )}j\ xbc_find_nodesbc.xbc_find_nodeasbuh1hhj:hhhjKhKubjq )}(h h]h }(hhhj~hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:hhhjKhKubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:hhhjKhKubj )}(h xbc_find_nodeh]jC )}(hj{h]h xbc_find_node}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hj:hhhjKhKubj )}(h(const char *key)h]j )}(hconst char *keyh](j )}(hjh]hconst}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(hcharh]hchar}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjC )}(hkeyh]hkey}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hj:hhhjKhKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj6hhhjKhKubah}(h]j1ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj3hhubjO )}(hhh]h)}(h!Find a node which matches the keyh]h!Find a node which matches the key}(hj)hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1jN hj3hhhjKhKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j?jq j?jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``const char *key`` Search key **Description** Search a (key) node whose key matches **key** from whole of XBC tree and return the node if found. If not found, returns NULL.h](h)}(h**Parameters**h]j~ )}(hjIh]h Parameters}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjGubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjCubj )}(hhh]j )}(h``const char *key`` Search key h](j )}(h``const char *key``h]js)}(hjhh]hconst char *key}(hhhjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjfubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjbubj )}(hhh]h)}(h Search keyh]h Search key}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hKhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj}hKhj_ubah}(h]h ]h"]h$]h&]uh1j hjCubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjCubh)}(h~Search a (key) node whose key matches **key** from whole of XBC tree and return the node if found. If not found, returns NULL.h](h&Search a (key) node whose key matches }(h&Search a (key) node whose key matches hjhhhNhNubj~ )}(h**key**h]hkey}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubhQ from whole of XBC tree and return the node if found. If not found, returns NULL.}(hQ from whole of XBC tree and return the node if found. If not found, returns NULL.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_get_subkey (C function)c.xbc_node_get_subkeyhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h=struct xbc_node * xbc_node_get_subkey (struct xbc_node *node)h]j: )}(h;struct xbc_node *xbc_node_get_subkey(struct xbc_node *node)h](j )}(hj h]hstruct}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubjq )}(h h]h }(hhhj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhj hKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetjmodnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_get_subkeysbc.xbc_node_get_subkeyasbuh1hhjhhhj hKubjq )}(h h]h }(hhhj<hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhj hKubj )}(hj h]h*}(hhhjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj hKubj )}(hxbc_node_get_subkeyh]jC )}(hj9h]hxbc_node_get_subkey}(hhhj[hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjWubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhj hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjrubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetjmodnameN classnameNj` jc )}jf ]j7c.xbc_node_get_subkeyasbuh1hhjrubjq )}(h h]h }(hhhjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjrubj )}(hj h]h*}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubjC )}(hnodeh]hnode}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjnubah}(h]h ]h"]h$]h&]hhuh1j hjhhhj hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhj hKubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubjO )}(hhh]h)}(h&Return the first subkey node if existsh]h&Return the first subkey node if exists}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jN hjhhhj hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jjq jjr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` Parent node **Description** Return the first subkey node of the **node**. If the **node** has no child or only value node, this will return NULL.h](h)}(h**Parameters**h]j~ )}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]j )}(h&``struct xbc_node *node`` Parent node h](j )}(h``struct xbc_node *node``h]js)}(hj9h]hstruct xbc_node *node}(hhhj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj7ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj3ubj )}(hhh]h)}(h Parent nodeh]h Parent node}(hjThjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhKhjOubah}(h]h ]h"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]uh1j hjNhKhj0ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hjth]h Description}(hhhjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjrubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubh)}(huReturn the first subkey node of the **node**. If the **node** has no child or only value node, this will return NULL.h](h$Return the first subkey node of the }(h$Return the first subkey node of the hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh . If the }(h . If the hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh8 has no child or only value node, this will return NULL.}(h8 has no child or only value node, this will return NULL.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* "xbc_array_for_each_value (C macro)c.xbc_array_for_each_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_array_for_each_valueh]j: )}(hxbc_array_for_each_valueh]j )}(hxbc_array_for_each_valueh]jC )}(hjh]hxbc_array_for_each_value}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhjhKubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hjhhhjhKubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jjq jjr uh1j. hhhj hNhNubh)}(h+``xbc_array_for_each_value (anode, value)``h]js)}(hjh]h'xbc_array_for_each_value (anode, value)}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj hhubh block_quote)}(hhh]h)}(hIterate value nodes on an arrayh]hIterate value nodes on an array}(hj4hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj/ubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(hX**Parameters** ``anode`` An XBC arraied value node ``value`` A value **Description** Iterate array value nodes and values starts from **anode**. This is expected to be used with xbc_find_value() and xbc_node_find_value(), so that user can process each array entry node.h](h)}(h**Parameters**h]j~ )}(hjMh]h Parameters}(hhhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjKubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjGubj )}(hhh](j )}(h$``anode`` An XBC arraied value node h](j )}(h ``anode``h]js)}(hjlh]hanode}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjfubj )}(hhh]h)}(hAn XBC arraied value nodeh]hAn XBC arraied value node}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjfubeh}(h]h ]h"]h$]h&]uh1j hjhKhjcubj )}(h``value`` A value h](j )}(h ``value``h]js)}(hjh]hvalue}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(hA valueh]hA value}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjcubeh}(h]h ]h"]h$]h&]uh1j hjGubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjGubh)}(hIterate array value nodes and values starts from **anode**. This is expected to be used with xbc_find_value() and xbc_node_find_value(), so that user can process each array entry node.h](h1Iterate array value nodes and values starts from }(h1Iterate array value nodes and values starts from hjhhhNhNubj~ )}(h **anode**h]hanode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh~. This is expected to be used with xbc_find_value() and xbc_node_find_value(), so that user can process each array entry node.}(h~. This is expected to be used with xbc_find_value() and xbc_node_find_value(), so that user can process each array entry node.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* !xbc_node_for_each_child (C macro)c.xbc_node_for_each_childhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_node_for_each_childh]j: )}(hxbc_node_for_each_childh]j )}(hxbc_node_for_each_childh]jC )}(hj3h]hxbc_node_for_each_child}(hhhj=hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj9ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj5hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj1hhhjPhKubah}(h]j,ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj.hhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hj.hhhjPhKubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jjjq jjjr uh1j. hhhj hNhNubh)}(h+``xbc_node_for_each_child (parent, child)``h]js)}(hjph]h'xbc_node_for_each_child (parent, child)}(hhhjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjnubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj hhubj.)}(hhh]h)}(hIterate child nodesh]hIterate child nodes}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(h**Parameters** ``parent`` An XBC node. ``child`` Iterated XBC node. **Description** Iterate child nodes of **parent**. Each child nodes are stored to **child**. The **child** can be mixture of a value node and subkey nodes.h](h)}(h**Parameters**h]j~ )}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh](j )}(h``parent`` An XBC node. h](j )}(h ``parent``h]js)}(hjh]hparent}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(h``child`` Iterated XBC node. h](j )}(h ``child``h]js)}(hjh]hchild}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(hIterated XBC node.h]hIterated XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hj7h]h Description}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj5ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubh)}(hIterate child nodes of **parent**. Each child nodes are stored to **child**. The **child** can be mixture of a value node and subkey nodes.h](hIterate child nodes of }(hIterate child nodes of hjMhhhNhNubj~ )}(h **parent**h]hparent}(hhhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjMubh!. Each child nodes are stored to }(h!. Each child nodes are stored to hjMhhhNhNubj~ )}(h **child**h]hchild}(hhhjihhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjMubh. The }(h. The hjMhhhNhNubj~ )}(h **child**h]hchild}(hhhj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjMubh1 can be mixture of a value node and subkey nodes.}(h1 can be mixture of a value node and subkey nodes.hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* "xbc_node_for_each_subkey (C macro)c.xbc_node_for_each_subkeyhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_node_for_each_subkeyh]j: )}(hxbc_node_for_each_subkeyh]j )}(hxbc_node_for_each_subkeyh]jC )}(hjh]hxbc_node_for_each_subkey}(hhhjhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjhhhjhKubah}(h]jah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjhhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hjhhhjhKubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jjq jjr uh1j. hhhj hNhNubh)}(h,``xbc_node_for_each_subkey (parent, child)``h]js)}(hjh]h(xbc_node_for_each_subkey (parent, child)}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj hhubj.)}(hhh]h)}(hIterate child subkey nodesh]hIterate child subkey nodes}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(h**Parameters** ``parent`` An XBC node. ``child`` Iterated XBC node. **Description** Iterate subkey nodes of **parent**. Each child nodes are stored to **child**. The **child** is only the subkey node.h](h)}(h**Parameters**h]j~ )}(hj!h]h Parameters}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh](j )}(h``parent`` An XBC node. h](j )}(h ``parent``h]js)}(hj@h]hparent}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj>ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj:ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj[hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjVubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hjUhKhj7ubj )}(h``child`` Iterated XBC node. h](j )}(h ``child``h]js)}(hjyh]hchild}(hhhj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjwubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjsubj )}(hhh]h)}(hIterated XBC node.h]hIterated XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjsubeh}(h]h ]h"]h$]h&]uh1j hjhKhj7ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubh)}(htIterate subkey nodes of **parent**. Each child nodes are stored to **child**. The **child** is only the subkey node.h](hIterate subkey nodes of }(hIterate subkey nodes of hjhhhNhNubj~ )}(h **parent**h]hparent}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh!. Each child nodes are stored to }(h!. Each child nodes are stored to hjhhhNhNubj~ )}(h **child**h]hchild}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh. The }(h. The hjhhhNhNubj~ )}(h **child**h]hchild}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh is only the subkey node.}(h is only the subkey node.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* 'xbc_node_for_each_array_value (C macro)c.xbc_node_for_each_array_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_node_for_each_array_valueh]j: )}(hxbc_node_for_each_array_valueh]j )}(hxbc_node_for_each_array_valueh]jC )}(hj-h]hxbc_node_for_each_array_value}(hhhj7hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj3ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj/hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj+hhhjJhKubah}(h]j&ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj(hhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hj(hhhjJhKubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jdjq jdjr uh1j. hhhj hNhNubh)}(h;``xbc_node_for_each_array_value (node, key, anode, value)``h]js)}(hjjh]h7xbc_node_for_each_array_value (node, key, anode, value)}(hhhjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjhubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj hhubj.)}(hhh]h)}(h"Iterate array entries of geven keyh]h"Iterate array entries of geven key}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(hX]**Parameters** ``node`` An XBC node. ``key`` A key string searched under **node** ``anode`` Iterated XBC node of array entry. ``value`` Iterated value of array entry. **Description** Iterate array entries of given **key** under **node**. Each array entry node is stored to **anode** and **value**. If the **node** doesn't have **key** node, it does nothing. Note that even if the found key node has only one value (not array) this executes block once. However, if the found key node has no value (key-only node), this does nothing. So don't use this for testing the key-value pair existence.h](h)}(h**Parameters**h]j~ )}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh](j )}(h``node`` An XBC node. h](j )}(h``node``h]js)}(hjh]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(h-``key`` A key string searched under **node** h](j )}(h``key``h]js)}(hjh]hkey}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(h$A key string searched under **node**h](hA key string searched under }(hA key string searched under hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj )}(h,``anode`` Iterated XBC node of array entry. h](j )}(h ``anode``h]js)}(hj>h]hanode}(hhhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj<ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj8ubj )}(hhh]h)}(h!Iterated XBC node of array entry.h]h!Iterated XBC node of array entry.}(hjYhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKhjTubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShKhjubj )}(h)``value`` Iterated value of array entry. h](j )}(h ``value``h]js)}(hjwh]hvalue}(hhhjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjuubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjqubj )}(hhh]h)}(hIterated value of array entry.h]hIterated value of array entry.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubh)}(hXIterate array entries of given **key** under **node**. Each array entry node is stored to **anode** and **value**. If the **node** doesn't have **key** node, it does nothing. Note that even if the found key node has only one value (not array) this executes block once. However, if the found key node has no value (key-only node), this does nothing. So don't use this for testing the key-value pair existence.h](hIterate array entries of given }(hIterate array entries of given hjhhhNhNubj~ )}(h**key**h]hkey}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh under }(h under hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh%. Each array entry node is stored to }(h%. Each array entry node is stored to hjhhhNhNubj~ )}(h **anode**h]hanode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh and }(h and hjhhhNhNubj~ )}(h **value**h]hvalue}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh . If the }(h . If the hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh doesn’t have }(h doesn't have hjhhhNhNubj~ )}(h**key**h]hkey}(hhhj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubhX node, it does nothing. Note that even if the found key node has only one value (not array) this executes block once. However, if the found key node has no value (key-only node), this does nothing. So don’t use this for testing the key-value pair existence.}(hX node, it does nothing. Note that even if the found key node has only one value (not array) this executes block once. However, if the found key node has no value (key-only node), this does nothing. So don't use this for testing the key-value pair existence.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* %xbc_node_for_each_key_value (C macro)c.xbc_node_for_each_key_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_node_for_each_key_valueh]j: )}(hxbc_node_for_each_key_valueh]j )}(hxbc_node_for_each_key_valueh]jC )}(hjdh]hxbc_node_for_each_key_value}(hhhjnhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjfhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjbhhhjhKubah}(h]j]ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj_hhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hj_hhhjhKubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jjq jjr uh1j. hhhj hNhNubh)}(h4``xbc_node_for_each_key_value (node, knode, value)``h]js)}(hjh]h0xbc_node_for_each_key_value (node, knode, value)}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj hhubj.)}(hhh]h)}(h$Iterate key-value pairs under a nodeh]h$Iterate key-value pairs under a node}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(h**Parameters** ``node`` An XBC node. ``knode`` Iterated key node ``value`` Iterated value string **Description** Iterate key-value pairs under **node**. Each key node and value string are stored in **knode** and **value** respectively.h](h)}(h**Parameters**h]j~ )}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh](j )}(h``node`` An XBC node. h](j )}(h``node``h]js)}(hjh]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjhj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj )}(h``knode`` Iterated key node h](j )}(h ``knode``h]js)}(hj-h]hknode}(hhhj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj+ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj'ubj )}(hhh]h)}(hIterated key nodeh]hIterated key node}(hjHhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhKhjubj )}(h ``value`` Iterated value string h](j )}(h ``value``h]js)}(hjfh]hvalue}(hhhjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjdubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj`ubj )}(hhh]h)}(hIterated value stringh]hIterated value string}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hKhj|ubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hj{hKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j~ )}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubh)}(hzIterate key-value pairs under **node**. Each key node and value string are stored in **knode** and **value** respectively.h](hIterate key-value pairs under }(hIterate key-value pairs under hjhhhNhNubj~ )}(h**node**h]hnode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh/. Each key node and value string are stored in }(h/. Each key node and value string are stored in hjhhhNhNubj~ )}(h **knode**h]hknode}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh and }(h and hjhhhNhNubj~ )}(h **value**h]hvalue}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjubh respectively.}(h respectively.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_for_each_key_value (C macro)c.xbc_for_each_key_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hxbc_for_each_key_valueh]j: )}(hxbc_for_each_key_valueh]j )}(hxbc_for_each_key_valueh]jC )}(hj h]hxbc_for_each_key_value}(hhhj$ hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMubah}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj hhhj7 hMubah}(h]j ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj hhubjO )}(hhh]h}(h]h ]h"]h$]h&]uh1jN hj hhhj7 hMubeh}(h]h ](jZ macroeh"]h$]h&]jo jZ jp jQ jq jQ jr uh1j. hhhj hNhNubh)}(h)``xbc_for_each_key_value (knode, value)``h]js)}(hjW h]h%xbc_for_each_key_value (knode, value)}(hhhjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjU ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj hhubj.)}(hhh]h)}(hIterate key-value pairsh]hIterate key-value pairs}(hjr hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhjm ubah}(h]h ]h"]h$]h&]uh1j-hj hhhNhNubjt )}(h**Parameters** ``knode`` Iterated key node ``value`` Iterated value string **Description** Iterate key-value pairs in whole XBC tree. Each key node and value string are stored in **knode** and **value** respectively.h](h)}(h**Parameters**h]j~ )}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj ubj )}(hhh](j )}(h``knode`` Iterated key node h](j )}(h ``knode``h]js)}(hj h]hknode}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhKhj ubj )}(hhh]h)}(hIterated key nodeh]hIterated key node}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(h ``value`` Iterated value string h](j )}(h ``value``h]js)}(hj h]hvalue}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj ubj )}(hhh]h)}(hIterated value stringh]hIterated value string}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMhj ubeh}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j~ )}(hj!h]h Description}(hhhj !hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj!ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj ubh)}(h}Iterate key-value pairs in whole XBC tree. Each key node and value string are stored in **knode** and **value** respectively.h](hXIterate key-value pairs in whole XBC tree. Each key node and value string are stored in }(hXIterate key-value pairs in whole XBC tree. Each key node and value string are stored in hj4!hhhNhNubj~ )}(h **knode**h]hknode}(hhhj=!hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj4!ubh and }(h and hj4!hhhNhNubj~ )}(h **value**h]hvalue}(hhhjP!hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj4!ubh respectively.}(h respectively.hj4!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* !xbc_node_compose_key (C function)c.xbc_node_compose_keyhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hHint xbc_node_compose_key (struct xbc_node *node, char *buf, size_t size)h]j: )}(hGint xbc_node_compose_key(struct xbc_node *node, char *buf, size_t size)h](j )}(hinth]hint}(hhhj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMubjq )}(h h]h }(hhhj!hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj!hhhj!hMubj )}(hxbc_node_compose_keyh]jC )}(hxbc_node_compose_keyh]hxbc_node_compose_key}(hhhj!hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj!ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj!hhhj!hMubj )}(h/(struct xbc_node *node, char *buf, size_t size)h](j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubjq )}(h h]h }(hhhj!hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj!ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj!hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj!ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj!modnameN classnameNj` jc )}jf ]ji )}j\ j!sbc.xbc_node_compose_keyasbuh1hhj!ubjq )}(h h]h }(hhhj"hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj!ubj )}(hj h]h*}(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubjC )}(hnodeh]hnode}(hhhj "hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj!ubj )}(h char *bufh](j )}(hcharh]hchar}(hhhj9"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5"ubjq )}(h h]h }(hhhjG"hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj5"ubj )}(hj h]h*}(hhhjU"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5"ubjC )}(hbufh]hbuf}(hhhjb"hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj5"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj!ubj )}(h size_t sizeh](h)}(hhh]jC )}(hsize_th]hsize_t}(hhhj~"hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj{"ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj"modnameN classnameNj` jc )}jf ]j"c.xbc_node_compose_keyasbuh1hhjw"ubjq )}(h h]h }(hhhj"hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjw"ubjC )}(hsizeh]hsize}(hhhj"hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjw"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj!ubeh}(h]h ]h"]h$]h&]hhuh1j hj!hhhj!hMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj!hhhj!hMubah}(h]j}!ah ](jG jH eh"]h$]h&]jL uh1j3 hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj!hhubjO )}(hhh]h)}(h'Compose full key string of the XBC nodeh]h'Compose full key string of the XBC node}(hj"hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhM hj"hhubah}(h]h ]h"]h$]h&]uh1jN hj!hhhj!hMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j"jq j"jr uh1j. hhhj hNhNubjt )}(hXr**Parameters** ``struct xbc_node *node`` An XBC node. ``char *buf`` A buffer to store the key. ``size_t size`` The size of the **buf**. **Description** Compose the full-length key of the **node** into **buf**. Returns the total length of the key stored in **buf**. Or returns -EINVAL if **node** is NULL, and -ERANGE if the key depth is deeper than max depth.h](h)}(h**Parameters**h]j~ )}(hj"h]h Parameters}(hhhj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj"ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj"ubj )}(hhh](j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj#h]hstruct xbc_node *node}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj#ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj#ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj1#hj/#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+#hMhj,#ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hj+#hMhj #ubj )}(h)``char *buf`` A buffer to store the key. h](j )}(h ``char *buf``h]js)}(hjO#h]h char *buf}(hhhjQ#hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjM#ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhjI#ubj )}(hhh]h)}(hA buffer to store the key.h]hA buffer to store the key.}(hjj#hjh#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd#hMhje#ubah}(h]h ]h"]h$]h&]uh1j hjI#ubeh}(h]h ]h"]h$]h&]uh1j hjd#hMhj #ubj )}(h)``size_t size`` The size of the **buf**. h](j )}(h``size_t size``h]js)}(hj#h]h size_t size}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj#ubah}(h]h ]h"]h$]h&]uh1j hb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj#ubj )}(hhh]h)}(hThe size of the **buf**.h](hThe size of the }(hThe size of the hj#hhhNhNubj~ )}(h**buf**h]hbuf}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubh.}(hjhj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hMhj #ubeh}(h]h ]h"]h$]h&]uh1j hj"ubh)}(h**Description**h]j~ )}(hj#h]h Description}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj"ubh)}(hCompose the full-length key of the **node** into **buf**. Returns the total length of the key stored in **buf**. Or returns -EINVAL if **node** is NULL, and -ERANGE if the key depth is deeper than max depth.h](h#Compose the full-length key of the }(h#Compose the full-length key of the hj#hhhNhNubj~ )}(h**node**h]hnode}(hhhj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubh into }(h into hj#hhhNhNubj~ )}(h**buf**h]hbuf}(hhhj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubh0. Returns the total length of the key stored in }(h0. Returns the total length of the key stored in hj#hhhNhNubj~ )}(h**buf**h]hbuf}(hhhj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubh. Or returns -EINVAL if }(h. Or returns -EINVAL if hj#hhhNhNubj~ )}(h**node**h]hnode}(hhhj.$hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#ubh@ is NULL, and -ERANGE if the key depth is deeper than max depth.}(h@ is NULL, and -ERANGE if the key depth is deeper than max depth.hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:325: ./include/linux/bootconfig.hhMhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_get_info (C function)c.xbc_get_infohNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h4int xbc_get_info (int *node_size, size_t *data_size)h]j: )}(h3int xbc_get_info(int *node_size, size_t *data_size)h](j )}(hinth]hint}(hhhjh$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjd$hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKVubjq )}(h h]h }(hhhjw$hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjd$hhhjv$hKVubj )}(h xbc_get_infoh]jC )}(h xbc_get_infoh]h xbc_get_info}(hhhj$hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj$ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjd$hhhjv$hKVubj )}(h#(int *node_size, size_t *data_size)h](j )}(hint *node_sizeh](j )}(hinth]hint}(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubjq )}(h h]h }(hhhj$hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj$ubj )}(hj h]h*}(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubjC )}(h node_sizeh]h node_size}(hhhj$hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj$ubj )}(hsize_t *data_sizeh](h)}(hhh]jC )}(hsize_th]hsize_t}(hhhj$hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj$ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj$modnameN classnameNj` jc )}jf ]ji )}j\ j$sbc.xbc_get_infoasbuh1hhj$ubjq )}(h h]h }(hhhj %hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj$ubj )}(hj h]h*}(hhhj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubjC )}(h data_sizeh]h data_size}(hhhj%%hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj$ubeh}(h]h ]h"]h$]h&]hhuh1j hjd$hhhjv$hKVubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj`$hhhjv$hKVubah}(h]j[$ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chK]hj]$hhubjO )}(hhh]h)}(h)Get the information of loaded boot configh]h)Get the information of loaded boot config}(hjR%hjP%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKUhjM%hhubah}(h]h ]h"]h$]h&]uh1jN hj]$hhhjv$hKVubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jh%jq jh%jr uh1j. hhhj hNhNubjt )}(hXk**Parameters** ``int *node_size`` A pointer to store the number of nodes. ``size_t *data_size`` A pointer to store the size of bootconfig data. **Description** Get the number of used nodes in **node_size** if it is not NULL, and the size of bootconfig data in **data_size** if it is not NULL. Return 0 if the boot config is initialized, or return -ENODEV.h](h)}(h**Parameters**h]j~ )}(hjr%h]h Parameters}(hhhjt%hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjp%ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKYhjl%ubj )}(hhh](j )}(h;``int *node_size`` A pointer to store the number of nodes. h](j )}(h``int *node_size``h]js)}(hj%h]hint *node_size}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj%ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKVhj%ubj )}(hhh]h)}(h'A pointer to store the number of nodes.h]h'A pointer to store the number of nodes.}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKVhj%ubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hKVhj%ubj )}(hF``size_t *data_size`` A pointer to store the size of bootconfig data. h](j )}(h``size_t *data_size``h]js)}(hj%h]hsize_t *data_size}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj%ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKWhj%ubj )}(hhh]h)}(h/A pointer to store the size of bootconfig data.h]h/A pointer to store the size of bootconfig data.}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKWhj%ubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hKWhj%ubeh}(h]h ]h"]h$]h&]uh1j hjl%ubh)}(h**Description**h]j~ )}(hj&h]h Description}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj&ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKYhjl%ubh)}(hGet the number of used nodes in **node_size** if it is not NULL, and the size of bootconfig data in **data_size** if it is not NULL. Return 0 if the boot config is initialized, or return -ENODEV.h](h Get the number of used nodes in }(h Get the number of used nodes in hj&hhhNhNubj~ )}(h **node_size**h]h node_size}(hhhj$&hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj&ubh7 if it is not NULL, and the size of bootconfig data in }(h7 if it is not NULL, and the size of bootconfig data in hj&hhhNhNubj~ )}(h **data_size**h]h data_size}(hhhj7&hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj&ubhR if it is not NULL. Return 0 if the boot config is initialized, or return -ENODEV.}(hR if it is not NULL. Return 0 if the boot config is initialized, or return -ENODEV.hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKYhjl%ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_root_node (C function)c.xbc_root_nodehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h&struct xbc_node * xbc_root_node (void)h]j: )}(h$struct xbc_node *xbc_root_node(void)h](j )}(hj h]hstruct}(hhhjq&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm&hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKsubjq )}(h h]h }(hhhj&hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjm&hhhj~&hKsubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj&hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj&ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj&modnameN classnameNj` jc )}jf ]ji )}j\ xbc_root_nodesbc.xbc_root_nodeasbuh1hhjm&hhhj~&hKsubjq )}(h h]h }(hhhj&hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjm&hhhj~&hKsubj )}(hj h]h*}(hhhj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm&hhhj~&hKsubj )}(h xbc_root_nodeh]jC )}(hj&h]h xbc_root_node}(hhhj&hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj&ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjm&hhhj~&hKsubj )}(h(void)h]j )}(hvoidh]j )}(hvoidh]hvoid}(hhhj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubah}(h]h ]h"]h$]h&]noemphhhuh1j hj&ubah}(h]h ]h"]h$]h&]hhuh1j hjm&hhhj~&hKsubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hji&hhhj~&hKsubah}(h]jd&ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKwhjf&hhubjO )}(hhh]h)}(h)Get the root node of extended boot configh]h)Get the root node of extended boot config}(hj'hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKrhj'hhubah}(h]h ]h"]h$]h&]uh1jN hjf&hhhj~&hKsubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j.'jq j.'jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``void`` no arguments **Description** Return the address of root node of extended boot config. If the extended boot config is not initiized, return NULL.h](h)}(h**Parameters**h]j~ )}(hj8'h]h Parameters}(hhhj:'hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj6'ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKvhj2'ubj )}(hhh]j )}(h``void`` no arguments h](j )}(h``void``h]js)}(hjW'h]hvoid}(hhhjY'hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjU'ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKyhjQ'ubj )}(hhh]h)}(h no argumentsh]h no arguments}(hjr'hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl'hKyhjm'ubah}(h]h ]h"]h$]h&]uh1j hjQ'ubeh}(h]h ]h"]h$]h&]uh1j hjl'hKyhjN'ubah}(h]h ]h"]h$]h&]uh1j hj2'ubh)}(h**Description**h]j~ )}(hj'h]h Description}(hhhj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj'ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chK{hj2'ubh)}(hsReturn the address of root node of extended boot config. If the extended boot config is not initiized, return NULL.h]hsReturn the address of root node of extended boot config. If the extended boot config is not initiized, return NULL.}(hj'hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKthj2'ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_index (C function)c.xbc_node_indexhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h*int xbc_node_index (struct xbc_node *node)h]j: )}(h)int xbc_node_index(struct xbc_node *node)h](j )}(hinth]hint}(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhj'hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj'hhhj'hKubj )}(hxbc_node_indexh]jC )}(hxbc_node_indexh]hxbc_node_index}(hhhj'hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj'ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj'hhhj'hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubjq )}(h h]h }(hhhj!(hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj(ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj2(hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj/(ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj4(modnameN classnameNj` jc )}jf ]ji )}j\ j'sbc.xbc_node_indexasbuh1hhj(ubjq )}(h h]h }(hhhjR(hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj(ubj )}(hj h]h*}(hhhj`(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubjC )}(hnodeh]hnode}(hhhjm(hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj (ubah}(h]h ]h"]h$]h&]hhuh1j hj'hhhj'hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj'hhhj'hKubah}(h]j'ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj'hhubjO )}(hhh]h)}(hGet the index of XBC nodeh]hGet the index of XBC node}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj(hhubah}(h]h ]h"]h$]h&]uh1jN hj'hhhj'hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j(jq j(jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` A target node of getting index. **Description** Return the index number of **node** in XBC node list.h](h)}(h**Parameters**h]j~ )}(hj(h]h Parameters}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj(ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj(ubj )}(hhh]j )}(h:``struct xbc_node *node`` A target node of getting index. h](j )}(h``struct xbc_node *node``h]js)}(hj(h]hstruct xbc_node *node}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj(ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj(ubj )}(hhh]h)}(hA target node of getting index.h]hA target node of getting index.}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hKhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hKhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubh)}(h**Description**h]j~ )}(hj)h]h Description}(hhhj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj)ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj(ubh)}(h5Return the index number of **node** in XBC node list.h](hReturn the index number of }(hReturn the index number of hj*)hhhNhNubj~ )}(h**node**h]hnode}(hhhj3)hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj*)ubh in XBC node list.}(h in XBC node list.hj*)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_get_parent (C function)c.xbc_node_get_parenthNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h=struct xbc_node * xbc_node_get_parent (struct xbc_node *node)h]j: )}(h;struct xbc_node *xbc_node_get_parent(struct xbc_node *node)h](j )}(hj h]hstruct}(hhhjm)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji)hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhj{)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hji)hhhjz)hKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj)hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj)ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj)modnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_get_parentsbc.xbc_node_get_parentasbuh1hhji)hhhjz)hKubjq )}(h h]h }(hhhj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hji)hhhjz)hKubj )}(hj h]h*}(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji)hhhjz)hKubj )}(hxbc_node_get_parenth]jC )}(hj)h]hxbc_node_get_parent}(hhhj)hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj)ubah}(h]h ](j j eh"]h$]h&]hhuh1j hji)hhhjz)hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubjq )}(h h]h }(hhhj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj*hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj*ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj*modnameN classnameNj` jc )}jf ]j)c.xbc_node_get_parentasbuh1hhj)ubjq )}(h h]h }(hhhj#*hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubj )}(hj h]h*}(hhhj1*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubjC )}(hnodeh]hnode}(hhhj>*hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj)ubah}(h]h ]h"]h$]h&]hhuh1j hji)hhhjz)hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hje)hhhjz)hKubah}(h]j`)ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjb)hhubjO )}(hhh]h)}(hGet the parent XBC nodeh]hGet the parent XBC node}(hjk*hji*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjf*hhubah}(h]h ]h"]h$]h&]uh1jN hjb)hhhjz)hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j*jq j*jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Return the parent node of **node**. If the node is top node of the tree, return NULL.h](h)}(h**Parameters**h]j~ )}(hj*h]h Parameters}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj*ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj*ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj*h]hstruct xbc_node *node}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj*ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj*ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj*hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]uh1j hj*hKhj*ubah}(h]h ]h"]h$]h&]uh1j hj*ubh)}(h**Description**h]j~ )}(hj*h]h Description}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj*ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj*ubh)}(hUReturn the parent node of **node**. If the node is top node of the tree, return NULL.h](hReturn the parent node of }(hReturn the parent node of hj*hhhNhNubj~ )}(h**node**h]hnode}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj*ubh3. If the node is top node of the tree, return NULL.}(h3. If the node is top node of the tree, return NULL.hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_get_child (C function)c.xbc_node_get_childhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:+hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhjL+hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:+hhhjK+hKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj]+hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjZ+ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj_+modnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_get_childsbc.xbc_node_get_childasbuh1hhj:+hhhjK+hKubjq )}(h h]h }(hhhj~+hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:+hhhjK+hKubj )}(hj h]h*}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:+hhhjK+hKubj )}(hxbc_node_get_childh]jC )}(hj{+h]hxbc_node_get_child}(hhhj+hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj+ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj:+hhhjK+hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubjq )}(h h]h }(hhhj+hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj+ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj+hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj+ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj+modnameN classnameNj` jc )}jf ]jy+c.xbc_node_get_childasbuh1hhj+ubjq )}(h h]h }(hhhj+hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj+ubj )}(hj h]h*}(hhhj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubjC )}(hnodeh]hnode}(hhhj,hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj+ubah}(h]h ]h"]h$]h&]hhuh1j hj:+hhhjK+hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj6+hhhjK+hKubah}(h]j1+ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj3+hhubjO )}(hhh]h)}(hGet the child XBC nodeh]hGet the child XBC node}(hj<,hj:,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj7,hhubah}(h]h ]h"]h$]h&]uh1jN hj3+hhhjK+hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jR,jq jR,jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Return the first child node of **node**. If the node has no child, return NULL.h](h)}(h**Parameters**h]j~ )}(hj\,h]h Parameters}(hhhj^,hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjZ,ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjV,ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj{,h]hstruct xbc_node *node}(hhhj},hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjy,ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhju,ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj,hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhj,ubah}(h]h ]h"]h$]h&]uh1j hju,ubeh}(h]h ]h"]h$]h&]uh1j hj,hKhjr,ubah}(h]h ]h"]h$]h&]uh1j hjV,ubh)}(h**Description**h]j~ )}(hj,h]h Description}(hhhj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj,ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjV,ubh)}(hOReturn the first child node of **node**. If the node has no child, return NULL.h](hReturn the first child node of }(hReturn the first child node of hj,hhhNhNubj~ )}(h**node**h]hnode}(hhhj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj,ubh(. If the node has no child, return NULL.}(h(. If the node has no child, return NULL.hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjV,ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_get_next (C function)c.xbc_node_get_nexthNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h;struct xbc_node * xbc_node_get_next (struct xbc_node *node)h]j: )}(h9struct xbc_node *xbc_node_get_next(struct xbc_node *node)h](j )}(hj h]hstruct}(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj -hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhj-hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj -hhhj-hKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj.-hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj+-ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj0-modnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_get_nextsbc.xbc_node_get_nextasbuh1hhj -hhhj-hKubjq )}(h h]h }(hhhjO-hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj -hhhj-hKubj )}(hj h]h*}(hhhj]-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj -hhhj-hKubj )}(hxbc_node_get_nexth]jC )}(hjL-h]hxbc_node_get_next}(hhhjn-hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjj-ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj -hhhj-hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubjq )}(h h]h }(hhhj-hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj-ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj-hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj-ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj-modnameN classnameNj` jc )}jf ]jJ-c.xbc_node_get_nextasbuh1hhj-ubjq )}(h h]h }(hhhj-hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj-ubj )}(hj h]h*}(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubjC )}(hnodeh]hnode}(hhhj-hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj-ubah}(h]h ]h"]h$]h&]hhuh1j hj -hhhj-hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj-hhhj-hKubah}(h]j-ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj-hhubjO )}(hhh]h)}(hGet the next sibling XBC nodeh]hGet the next sibling XBC node}(hj .hj .hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj.hhubah}(h]h ]h"]h$]h&]uh1jN hj-hhhj-hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j#.jq j#.jr uh1j. hhhj hNhNubjt )}(hX=**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Return the NEXT sibling node of **node**. If the node has no next sibling, return NULL. Note that even if this returns NULL, it doesn't mean **node** has no siblings. (You also has to check whether the parent's child node is **node** or not.)h](h)}(h**Parameters**h]j~ )}(hj-.h]h Parameters}(hhhj/.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+.ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj'.ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hjL.h]hstruct xbc_node *node}(hhhjN.hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjJ.ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjF.ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjg.hje.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja.hKhjb.ubah}(h]h ]h"]h$]h&]uh1j hjF.ubeh}(h]h ]h"]h$]h&]uh1j hja.hKhjC.ubah}(h]h ]h"]h$]h&]uh1j hj'.ubh)}(h**Description**h]j~ )}(hj.h]h Description}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj.ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj'.ubh)}(hReturn the NEXT sibling node of **node**. If the node has no next sibling, return NULL. Note that even if this returns NULL, it doesn't mean **node** has no siblings. (You also has to check whether the parent's child node is **node** or not.)h](h Return the NEXT sibling node of }(h Return the NEXT sibling node of hj.hhhNhNubj~ )}(h**node**h]hnode}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj.ubhg. If the node has no next sibling, return NULL. Note that even if this returns NULL, it doesn’t mean }(he. If the node has no next sibling, return NULL. Note that even if this returns NULL, it doesn't mean hj.hhhNhNubj~ )}(h**node**h]hnode}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj.ubhN has no siblings. (You also has to check whether the parent’s child node is }(hL has no siblings. (You also has to check whether the parent's child node is hj.hhhNhNubj~ )}(h**node**h]hnode}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj.ubh or not.)}(h or not.)hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj'.ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_get_data (C function)c.xbc_node_get_datahNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(h6const char * xbc_node_get_data (struct xbc_node *node)h]j: )}(h4const char *xbc_node_get_data(struct xbc_node *node)h](j )}(hjh]hconst}(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhj/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj/hhhj/hKubj )}(hcharh]hchar}(hhhj"/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhj/hKubjq )}(h h]h }(hhhj0/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj/hhhj/hKubj )}(hj h]h*}(hhhj>/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhj/hKubj )}(hxbc_node_get_datah]jC )}(hxbc_node_get_datah]hxbc_node_get_data}(hhhjO/hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjK/ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj/hhhj/hKubj )}(h(struct xbc_node *node)h]j )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhjk/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjg/ubjq )}(h h]h }(hhhjx/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjg/ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj/hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj/ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj/modnameN classnameNj` jc )}jf ]ji )}j\ jQ/sbc.xbc_node_get_dataasbuh1hhjg/ubjq )}(h h]h }(hhhj/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjg/ubj )}(hj h]h*}(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjg/ubjC )}(hnodeh]hnode}(hhhj/hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjg/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjc/ubah}(h]h ]h"]h$]h&]hhuh1j hj/hhhj/hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj.hhhj/hKubah}(h]j.ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj.hhubjO )}(hhh]h)}(hGet the data of XBC nodeh]hGet the data of XBC node}(hj/hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj/hhubah}(h]h ]h"]h$]h&]uh1jN hj.hhhj/hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j0jq j0jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``struct xbc_node *node`` An XBC node. **Description** Return the data (which is always a null terminated string) of **node**. If the node has invalid data, warn and return NULL.h](h)}(h**Parameters**h]j~ )}(hj0h]h Parameters}(hhhj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj0ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj 0ubj )}(hhh]j )}(h'``struct xbc_node *node`` An XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj00h]hstruct xbc_node *node}(hhhj20hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj.0ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj*0ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjK0hjI0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjE0hKhjF0ubah}(h]h ]h"]h$]h&]uh1j hj*0ubeh}(h]h ]h"]h$]h&]uh1j hjE0hKhj'0ubah}(h]h ]h"]h$]h&]uh1j hj 0ubh)}(h**Description**h]j~ )}(hjk0h]h Description}(hhhjm0hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hji0ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj 0ubh)}(h{Return the data (which is always a null terminated string) of **node**. If the node has invalid data, warn and return NULL.h](h>Return the data (which is always a null terminated string) of }(h>Return the data (which is always a null terminated string) of hj0hhhNhNubj~ )}(h**node**h]hnode}(hhhj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj0ubh5. If the node has invalid data, warn and return NULL.}(h5. If the node has invalid data, warn and return NULL.hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj 0ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* !xbc_node_find_subkey (C function)c.xbc_node_find_subkeyhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hQstruct xbc_node * xbc_node_find_subkey (struct xbc_node *parent, const char *key)h]j: )}(hOstruct xbc_node *xbc_node_find_subkey(struct xbc_node *parent, const char *key)h](j )}(hj h]hstruct}(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhj0hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0hhhj0hKubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj0hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj0ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj0modnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_find_subkeysbc.xbc_node_find_subkeyasbuh1hhj0hhhj0hKubjq )}(h h]h }(hhhj1hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0hhhj0hKubj )}(hj h]h*}(hhhj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhj0hKubj )}(hxbc_node_find_subkeyh]jC )}(hj1h]hxbc_node_find_subkey}(hhhj#1hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj1ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj0hhhj0hKubj )}(h*(struct xbc_node *parent, const char *key)h](j )}(hstruct xbc_node *parenth](j )}(hj h]hstruct}(hhhj>1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:1ubjq )}(h h]h }(hhhjK1hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:1ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj\1hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjY1ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj^1modnameN classnameNj` jc )}jf ]j0c.xbc_node_find_subkeyasbuh1hhj:1ubjq )}(h h]h }(hhhjz1hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:1ubj )}(hj h]h*}(hhhj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:1ubjC )}(hparenth]hparent}(hhhj1hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj:1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj61ubj )}(hconst char *keyh](j )}(hjh]hconst}(hhhj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubjq )}(h h]h }(hhhj1hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj1ubj )}(hcharh]hchar}(hhhj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubjq )}(h h]h }(hhhj1hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj1ubj )}(hj h]h*}(hhhj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubjC )}(hkeyh]hkey}(hhhj1hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj61ubeh}(h]h ]h"]h$]h&]hhuh1j hj0hhhj0hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj0hhhj0hKubah}(h]j0ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj0hhubjO )}(hhh]h)}(h*Find a subkey node which matches given keyh]h*Find a subkey node which matches given key}(hj2hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj2hhubah}(h]h ]h"]h$]h&]uh1jN hj0hhhj0hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j52jq j52jr uh1j. hhhj hNhNubjt )}(hXE**Parameters** ``struct xbc_node *parent`` An XBC node. ``const char *key`` A key string. **Description** Search a key node under **parent** which matches **key**. The **key** can contain several words jointed with '.'. If **parent** is NULL, this searches the node from whole tree. Return NULL if no node is matched.h](h)}(h**Parameters**h]j~ )}(hj?2h]h Parameters}(hhhjA2hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj=2ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj92ubj )}(hhh](j )}(h)``struct xbc_node *parent`` An XBC node. h](j )}(h``struct xbc_node *parent``h]js)}(hj^2h]hstruct xbc_node *parent}(hhhj`2hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj\2ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjX2ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hjy2hjw2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs2hKhjt2ubah}(h]h ]h"]h$]h&]uh1j hjX2ubeh}(h]h ]h"]h$]h&]uh1j hjs2hKhjU2ubj )}(h"``const char *key`` A key string. h](j )}(h``const char *key``h]js)}(hj2h]hconst char *key}(hhhj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj2ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj2ubj )}(hhh]h)}(h A key string.h]h A key string.}(hj2hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKhj2ubah}(h]h ]h"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]uh1j hj2hKhjU2ubeh}(h]h ]h"]h$]h&]uh1j hj92ubh)}(h**Description**h]j~ )}(hj2h]h Description}(hhhj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj2ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj92ubh)}(hSearch a key node under **parent** which matches **key**. The **key** can contain several words jointed with '.'. If **parent** is NULL, this searches the node from whole tree. Return NULL if no node is matched.h](hSearch a key node under }(hSearch a key node under hj2hhhNhNubj~ )}(h **parent**h]hparent}(hhhj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj2ubh which matches }(h which matches hj2hhhNhNubj~ )}(h**key**h]hkey}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj2ubh. The }(h. The hj2hhhNhNubj~ )}(h**key**h]hkey}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj2ubh4 can contain several words jointed with ‘.’. If }(h0 can contain several words jointed with '.'. If hj2hhhNhNubj~ )}(h **parent**h]hparent}(hhhj*3hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj2ubhT is NULL, this searches the node from whole tree. Return NULL if no node is matched.}(hT is NULL, this searches the node from whole tree. Return NULL if no node is matched.hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj92ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_node_find_value (C function)c.xbc_node_find_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hdconst char * xbc_node_find_value (struct xbc_node *parent, const char *key, struct xbc_node **vnode)h]j: )}(hbconst char *xbc_node_find_value(struct xbc_node *parent, const char *key, struct xbc_node **vnode)h](j )}(hjh]hconst}(hhhjd3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`3hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKubjq )}(h h]h }(hhhjr3hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj`3hhhjq3hKubj )}(hcharh]hchar}(hhhj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`3hhhjq3hKubjq )}(h h]h }(hhhj3hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj`3hhhjq3hKubj )}(hj h]h*}(hhhj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`3hhhjq3hKubj )}(hxbc_node_find_valueh]jC )}(hxbc_node_find_valueh]hxbc_node_find_value}(hhhj3hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj3ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj`3hhhjq3hKubj )}(hC(struct xbc_node *parent, const char *key, struct xbc_node **vnode)h](j )}(hstruct xbc_node *parenth](j )}(hj h]hstruct}(hhhj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubjq )}(h h]h }(hhhj3hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj3ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj3hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj3ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj3modnameN classnameNj` jc )}jf ]ji )}j\ j3sbc.xbc_node_find_valueasbuh1hhj3ubjq )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj3ubj )}(hj h]h*}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubjC )}(hparenth]hparent}(hhhj"4hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3ubj )}(hconst char *keyh](j )}(hjh]hconst}(hhhj;4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj74ubjq )}(h h]h }(hhhjH4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj74ubj )}(hcharh]hchar}(hhhjV4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj74ubjq )}(h h]h }(hhhjd4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj74ubj )}(hj h]h*}(hhhjr4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj74ubjC )}(hkeyh]hkey}(hhhj4hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj74ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3ubj )}(hstruct xbc_node **vnodeh](j )}(hj h]hstruct}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubjq )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj4ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj4hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj4ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj4modnameN classnameNj` jc )}jf ]j4c.xbc_node_find_valueasbuh1hhj4ubjq )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj4ubj )}(hj h]h*}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj )}(hj h]h*}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubjC )}(hvnodeh]hvnode}(hhhj4hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3ubeh}(h]h ]h"]h$]h&]hhuh1j hj`3hhhjq3hKubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj\3hhhjq3hKubah}(h]jW3ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjY3hhubjO )}(hhh]h)}(h)Find a value node which matches given keyh]h)Find a value node which matches given key}(hj)5hj'5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj$5hhubah}(h]h ]h"]h$]h&]uh1jN hjY3hhhjq3hKubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j?5jq j?5jr uh1j. hhhj hNhNubjt )}(hX**Parameters** ``struct xbc_node *parent`` An XBC node. ``const char *key`` A key string. ``struct xbc_node **vnode`` A container pointer of found XBC node. **Description** Search a value node under **parent** whose (parent) key node matches **key**, store it in ***vnode**, and returns the value string. The **key** can contain several words jointed with '.'. If **parent** is NULL, this searches the node from whole tree. Return the value string if a matched key found, return NULL if no node is matched. Note that this returns 0-length string and stores NULL in ***vnode** if the key has no value. And also it will return the value of the first entry if the value is an array.h](h)}(h**Parameters**h]j~ )}(hjI5h]h Parameters}(hhhjK5hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjG5ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjC5ubj )}(hhh](j )}(h)``struct xbc_node *parent`` An XBC node. h](j )}(h``struct xbc_node *parent``h]js)}(hjh5h]hstruct xbc_node *parent}(hhhjj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjf5ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjb5ubj )}(hhh]h)}(h An XBC node.h]h An XBC node.}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}5hKhj~5ubah}(h]h ]h"]h$]h&]uh1j hjb5ubeh}(h]h ]h"]h$]h&]uh1j hj}5hKhj_5ubj )}(h"``const char *key`` A key string. h](j )}(h``const char *key``h]js)}(hj5h]hconst char *key}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj5ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj5ubj )}(hhh]h)}(h A key string.h]h A key string.}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKhj5ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hKhj_5ubj )}(hC``struct xbc_node **vnode`` A container pointer of found XBC node. h](j )}(h``struct xbc_node **vnode``h]js)}(hj5h]hstruct xbc_node **vnode}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj5ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhj5ubj )}(hhh]h)}(h&A container pointer of found XBC node.h]h&A container pointer of found XBC node.}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKhj5ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hKhj_5ubeh}(h]h ]h"]h$]h&]uh1j hjC5ubh)}(h**Description**h]j~ )}(hj6h]h Description}(hhhj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj6ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjC5ubh)}(hXSearch a value node under **parent** whose (parent) key node matches **key**, store it in ***vnode**, and returns the value string. The **key** can contain several words jointed with '.'. If **parent** is NULL, this searches the node from whole tree. Return the value string if a matched key found, return NULL if no node is matched. Note that this returns 0-length string and stores NULL in ***vnode** if the key has no value. And also it will return the value of the first entry if the value is an array.h](hSearch a value node under }(hSearch a value node under hj+6hhhNhNubj~ )}(h **parent**h]hparent}(hhhj46hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubh! whose (parent) key node matches }(h! whose (parent) key node matches hj+6hhhNhNubj~ )}(h**key**h]hkey}(hhhjG6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubh, store it in }(h, store it in hj+6hhhNhNubj~ )}(h ***vnode**h]h*vnode}(hhhjZ6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubh$, and returns the value string. The }(h$, and returns the value string. The hj+6hhhNhNubj~ )}(h**key**h]hkey}(hhhjm6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubh4 can contain several words jointed with ‘.’. If }(h0 can contain several words jointed with '.'. If hj+6hhhNhNubj~ )}(h **parent**h]hparent}(hhhj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubh is NULL, this searches the node from whole tree. Return the value string if a matched key found, return NULL if no node is matched. Note that this returns 0-length string and stores NULL in }(h is NULL, this searches the node from whole tree. Return the value string if a matched key found, return NULL if no node is matched. Note that this returns 0-length string and stores NULL in hj+6hhhNhNubj~ )}(h ***vnode**h]h*vnode}(hhhj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj+6ubhh if the key has no value. And also it will return the value of the first entry if the value is an array.}(hh if the key has no value. And also it will return the value of the first entry if the value is an array.hj+6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chKhjC5ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* 'xbc_node_compose_key_after (C function)c.xbc_node_compose_key_afterhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(heint xbc_node_compose_key_after (struct xbc_node *root, struct xbc_node *node, char *buf, size_t size)h]j: )}(hdint xbc_node_compose_key_after(struct xbc_node *root, struct xbc_node *node, char *buf, size_t size)h](j )}(hinth]hint}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMubjq )}(h h]h }(hhhj6hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj6hhhj6hMubj )}(hxbc_node_compose_key_afterh]jC )}(hxbc_node_compose_key_afterh]hxbc_node_compose_key_after}(hhhj6hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj6ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj6hhhj6hMubj )}(hF(struct xbc_node *root, struct xbc_node *node, char *buf, size_t size)h](j )}(hstruct xbc_node *rooth](j )}(hj h]hstruct}(hhhj 7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubjq )}(h h]h }(hhhj7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj7ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj(7hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj%7ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj*7modnameN classnameNj` jc )}jf ]ji )}j\ j6sbc.xbc_node_compose_key_afterasbuh1hhj7ubjq )}(h h]h }(hhhjH7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj7ubj )}(hj h]h*}(hhhjV7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubjC )}(hrooth]hroot}(hhhjc7hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubj )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj|7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjx7ubjq )}(h h]h }(hhhj7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjx7ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj7hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj7ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj7modnameN classnameNj` jc )}jf ]jD7c.xbc_node_compose_key_afterasbuh1hhjx7ubjq )}(h h]h }(hhhj7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjx7ubj )}(hj h]h*}(hhhj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjx7ubjC )}(hnodeh]hnode}(hhhj7hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjx7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubj )}(h char *bufh](j )}(hcharh]hchar}(hhhj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubjq )}(h h]h }(hhhj7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj7ubj )}(hj h]h*}(hhhj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubjC )}(hbufh]hbuf}(hhhj8hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubj )}(h size_t sizeh](h)}(hhh]jC )}(hsize_th]hsize_t}(hhhj18hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj.8ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj38modnameN classnameNj` jc )}jf ]jD7c.xbc_node_compose_key_afterasbuh1hhj*8ubjq )}(h h]h }(hhhjO8hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj*8ubjC )}(hsizeh]hsize}(hhhj]8hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj*8ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubeh}(h]h ]h"]h$]h&]hhuh1j hj6hhhj6hMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj6hhhj6hMubah}(h]j6ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chM%hj6hhubjO )}(hhh]h)}(h*Compose partial key string of the XBC nodeh]h*Compose partial key string of the XBC node}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8hhubah}(h]h ]h"]h$]h&]uh1jN hj6hhhj6hMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j8jq j8jr uh1j. hhhj hNhNubjt )}(hX**Parameters** ``struct xbc_node *root`` Root XBC node ``struct xbc_node *node`` Target XBC node. ``char *buf`` A buffer to store the key. ``size_t size`` The size of the **buf**. **Description** Compose the partial key of the **node** into **buf**, which is starting right after **root** (**root** is not included.) If **root** is NULL, this returns full key words of **node**. Returns the total length of the key stored in **buf**. Returns -EINVAL if **node** is NULL or **root** is not the ancestor of **node** or **root** is **node**, or returns -ERANGE if the key depth is deeper than max depth. This is expected to be used with xbc_find_node() to list up all (child) keys under given key.h](h)}(h**Parameters**h]j~ )}(hj8h]h Parameters}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj8ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8ubj )}(hhh](j )}(h(``struct xbc_node *root`` Root XBC node h](j )}(h``struct xbc_node *root``h]js)}(hj8h]hstruct xbc_node *root}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj8ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8ubj )}(hhh]h)}(h Root XBC nodeh]h Root XBC node}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj8ubj )}(h+``struct xbc_node *node`` Target XBC node. h](j )}(h``struct xbc_node *node``h]js)}(hj9h]hstruct xbc_node *node}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj9ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8ubj )}(hhh]h)}(hTarget XBC node.h]hTarget XBC node.}(hj9hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hj9hMhj8ubj )}(h)``char *buf`` A buffer to store the key. h](j )}(h ``char *buf``h]js)}(hj;9h]h char *buf}(hhhj=9hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj99ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj59ubj )}(hhh]h)}(hA buffer to store the key.h]hA buffer to store the key.}(hjV9hjT9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP9hMhjQ9ubah}(h]h ]h"]h$]h&]uh1j hj59ubeh}(h]h ]h"]h$]h&]uh1j hjP9hMhj8ubj )}(h)``size_t size`` The size of the **buf**. h](j )}(h``size_t size``h]js)}(hjt9h]h size_t size}(hhhjv9hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjr9ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjn9ubj )}(hhh]h)}(hThe size of the **buf**.h](hThe size of the }(hThe size of the hj9hhhNhNubj~ )}(h**buf**h]hbuf}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh.}(hjhj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1j hjn9ubeh}(h]h ]h"]h$]h&]uh1j hj9hMhj8ubeh}(h]h ]h"]h$]h&]uh1j hj8ubh)}(h**Description**h]j~ )}(hj9h]h Description}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8ubh)}(hXCompose the partial key of the **node** into **buf**, which is starting right after **root** (**root** is not included.) If **root** is NULL, this returns full key words of **node**. Returns the total length of the key stored in **buf**. Returns -EINVAL if **node** is NULL or **root** is not the ancestor of **node** or **root** is **node**, or returns -ERANGE if the key depth is deeper than max depth. This is expected to be used with xbc_find_node() to list up all (child) keys under given key.h](hCompose the partial key of the }(hCompose the partial key of the hj9hhhNhNubj~ )}(h**node**h]hnode}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh into }(h into hj9hhhNhNubj~ )}(h**buf**h]hbuf}(hhhj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh , which is starting right after }(h , which is starting right after hj9hhhNhNubj~ )}(h**root**h]hroot}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh (}(h (hj9hhhNhNubj~ )}(h**root**h]hroot}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh is not included.) If }(h is not included.) If hj9hhhNhNubj~ )}(h**root**h]hroot}(hhhj-:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh) is NULL, this returns full key words of }(h) is NULL, this returns full key words of hj9hhhNhNubj~ )}(h**node**h]hnode}(hhhj@:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh0. Returns the total length of the key stored in }(h0. Returns the total length of the key stored in hj9hhhNhNubj~ )}(h**buf**h]hbuf}(hhhjS:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh. Returns -EINVAL if }(h. Returns -EINVAL if hj9hhhNhNubj~ )}(h**node**h]hnode}(hhhjf:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh is NULL or }(h is NULL or hj9hhhNhNubj~ )}(h**root**h]hroot}(hhhjy:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh is not the ancestor of }(h is not the ancestor of hj9hhhNhNubj~ )}(h**node**h]hnode}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh or }(h or hj9hhhNhNubj~ )}(h**root**h]hroot}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh is }(h is hj9hhhNhNubj~ )}(h**node**h]hnode}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj9ubh, or returns -ERANGE if the key depth is deeper than max depth. This is expected to be used with xbc_find_node() to list up all (child) keys under given key.}(h, or returns -ERANGE if the key depth is deeper than max depth. This is expected to be used with xbc_find_node() to list up all (child) keys under given key.hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* $xbc_node_find_next_leaf (C function)c.xbc_node_find_next_leafhNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hXstruct xbc_node * xbc_node_find_next_leaf (struct xbc_node *root, struct xbc_node *node)h]j: )}(hVstruct xbc_node *xbc_node_find_next_leaf(struct xbc_node *root, struct xbc_node *node)h](j )}(hj h]hstruct}(hhhj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMOubjq )}(h h]h }(hhhj:hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:hhhj:hMOubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj ;hhhNhNubah}(hނ]h ]jO ah"]h$]h&]uh1jB hj;ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj ;modnameN classnameNj` jc )}jf ]ji )}j\ xbc_node_find_next_leafsbc.xbc_node_find_next_leafasbuh1hhj:hhhj:hMOubjq )}(h h]h }(hhhj,;hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj:hhhj:hMOubj )}(hj h]h*}(hhhj:;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:hhhj:hMOubj )}(hxbc_node_find_next_leafh]jC )}(hj);h]hxbc_node_find_next_leaf}(hhhjK;hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjG;ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj:hhhj:hMOubj )}(h.(struct xbc_node *root, struct xbc_node *node)h](j )}(hstruct xbc_node *rooth](j )}(hj h]hstruct}(hhhjf;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjb;ubjq )}(h h]h }(hhhjs;hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjb;ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj;hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj;ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj;modnameN classnameNj` jc )}jf ]j';c.xbc_node_find_next_leafasbuh1hhjb;ubjq )}(h h]h }(hhhj;hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjb;ubj )}(hj h]h*}(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjb;ubjC )}(hrooth]hroot}(hhhj;hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjb;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj^;ubj )}(hstruct xbc_node *nodeh](j )}(hj h]hstruct}(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubjq )}(h h]h }(hhhj;hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj;hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj;ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj;modnameN classnameNj` jc )}jf ]j';c.xbc_node_find_next_leafasbuh1hhj;ubjq )}(h h]h }(hhhj<hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;ubj )}(hj h]h*}(hhhj <hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubjC )}(hnodeh]hnode}(hhhj-<hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj^;ubeh}(h]h ]h"]h$]h&]hhuh1j hj:hhhj:hMOubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj:hhhj:hMOubah}(h]j:ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMVhj:hhubjO )}(hhh]h)}(h(Find the next leaf node under given nodeh]h(Find the next leaf node under given node}(hjZ<hjX<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMNhjU<hhubah}(h]h ]h"]h$]h&]uh1jN hj:hhhj:hMOubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp jp<jq jp<jr uh1j. hhhj hNhNubjt )}(hXG**Parameters** ``struct xbc_node *root`` An XBC root node ``struct xbc_node *node`` An XBC node which starts from. **Description** Search the next leaf node (which means the terminal key node) of **node** under **root** node (including **root** node itself). Return the next node or NULL if next leaf node is not found.h](h)}(h**Parameters**h]j~ )}(hjz<h]h Parameters}(hhhj|<hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjx<ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMRhjt<ubj )}(hhh](j )}(h+``struct xbc_node *root`` An XBC root node h](j )}(h``struct xbc_node *root``h]js)}(hj<h]hstruct xbc_node *root}(hhhj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj<ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMOhj<ubj )}(hhh]h)}(hAn XBC root nodeh]hAn XBC root node}(hj<hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMOhj<ubah}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]uh1j hj<hMOhj<ubj )}(h9``struct xbc_node *node`` An XBC node which starts from. h](j )}(h``struct xbc_node *node``h]js)}(hj<h]hstruct xbc_node *node}(hhhj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj<ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMPhj<ubj )}(hhh]h)}(hAn XBC node which starts from.h]hAn XBC node which starts from.}(hj<hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMPhj<ubah}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]uh1j hj<hMPhj<ubeh}(h]h ]h"]h$]h&]uh1j hjt<ubh)}(h**Description**h]j~ )}(hj =h]h Description}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj =ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMRhjt<ubh)}(hSearch the next leaf node (which means the terminal key node) of **node** under **root** node (including **root** node itself). Return the next node or NULL if next leaf node is not found.h](hASearch the next leaf node (which means the terminal key node) of }(hASearch the next leaf node (which means the terminal key node) of hj#=hhhNhNubj~ )}(h**node**h]hnode}(hhhj,=hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#=ubh under }(h under hj#=hhhNhNubj~ )}(h**root**h]hroot}(hhhj?=hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#=ubh node (including }(h node (including hj#=hhhNhNubj~ )}(h**root**h]hroot}(hhhjR=hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#=ubhK node itself). Return the next node or NULL if next leaf node is not found.}(hK node itself). Return the next node or NULL if next leaf node is not found.hj#=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMRhjt<ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* )xbc_node_find_next_key_value (C function)c.xbc_node_find_next_key_valuehNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hYconst char * xbc_node_find_next_key_value (struct xbc_node *root, struct xbc_node **leaf)h]j: )}(hWconst char *xbc_node_find_next_key_value(struct xbc_node *root, struct xbc_node **leaf)h](j )}(hjh]hconst}(hhhj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMubjq )}(h h]h }(hhhj=hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj=hhhj=hMubj )}(hcharh]hchar}(hhhj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=hhhj=hMubjq )}(h h]h }(hhhj=hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj=hhhj=hMubj )}(hj h]h*}(hhhj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=hhhj=hMubj )}(hxbc_node_find_next_key_valueh]jC )}(hxbc_node_find_next_key_valueh]hxbc_node_find_next_key_value}(hhhj=hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj=ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj=hhhj=hMubj )}(h/(struct xbc_node *root, struct xbc_node **leaf)h](j )}(hstruct xbc_node *rooth](j )}(hj h]hstruct}(hhhj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=ubjq )}(h h]h }(hhhj=hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj=ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj>hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj >ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj>modnameN classnameNj` jc )}jf ]ji )}j\ j=sbc.xbc_node_find_next_key_valueasbuh1hhj=ubjq )}(h h]h }(hhhj/>hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj=ubj )}(hj h]h*}(hhhj=>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=ubjC )}(hrooth]hroot}(hhhjJ>hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj=ubj )}(hstruct xbc_node **leafh](j )}(hj h]hstruct}(hhhjc>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_>ubjq )}(h h]h }(hhhjp>hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj_>ubh)}(hhh]jC )}(hxbc_nodeh]hxbc_node}(hhhj>hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj~>ubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj>modnameN classnameNj` jc )}jf ]j+>c.xbc_node_find_next_key_valueasbuh1hhj_>ubjq )}(h h]h }(hhhj>hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj_>ubj )}(hj h]h*}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_>ubj )}(hj h]h*}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_>ubjC )}(hleafh]hleaf}(hhhj>hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj_>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj=ubeh}(h]h ]h"]h$]h&]hhuh1j hj=hhhj=hMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj=hhhj=hMubah}(h]j=ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj=hhubjO )}(hhh]h)}(h"Find the next key-value pair nodesh]h"Find the next key-value pair nodes}(hj>hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj>hhubah}(h]h ]h"]h$]h&]uh1jN hj=hhhj=hMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j ?jq j ?jr uh1j. hhhj hNhNubjt )}(hX**Parameters** ``struct xbc_node *root`` An XBC root node ``struct xbc_node **leaf`` A container pointer of XBC node which starts from. **Description** Search the next leaf node (which means the terminal key node) of ***leaf** under **root** node. Returns the value and update ***leaf** if next leaf node is found, or NULL if no next leaf node is found. Note that this returns 0-length string if the key has no value, or the value of the first entry if the value is an array.h](h)}(h**Parameters**h]j~ )}(hj?h]h Parameters}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj?ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj?ubj )}(hhh](j )}(h+``struct xbc_node *root`` An XBC root node h](j )}(h``struct xbc_node *root``h]js)}(hj3?h]hstruct xbc_node *root}(hhhj5?hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj1?ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj-?ubj )}(hhh]h)}(hAn XBC root nodeh]hAn XBC root node}(hjN?hjL?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH?hMhjI?ubah}(h]h ]h"]h$]h&]uh1j hj-?ubeh}(h]h ]h"]h$]h&]uh1j hjH?hMhj*?ubj )}(hN``struct xbc_node **leaf`` A container pointer of XBC node which starts from. h](j )}(h``struct xbc_node **leaf``h]js)}(hjl?h]hstruct xbc_node **leaf}(hhhjn?hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjj?ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjf?ubj )}(hhh]h)}(h2A container pointer of XBC node which starts from.h]h2A container pointer of XBC node which starts from.}(hj?hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1j hjf?ubeh}(h]h ]h"]h$]h&]uh1j hj?hMhj*?ubeh}(h]h ]h"]h$]h&]uh1j hj?ubh)}(h**Description**h]j~ )}(hj?h]h Description}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj?ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj?ubh)}(hXCSearch the next leaf node (which means the terminal key node) of ***leaf** under **root** node. Returns the value and update ***leaf** if next leaf node is found, or NULL if no next leaf node is found. Note that this returns 0-length string if the key has no value, or the value of the first entry if the value is an array.h](hASearch the next leaf node (which means the terminal key node) of }(hASearch the next leaf node (which means the terminal key node) of hj?hhhNhNubj~ )}(h ***leaf**h]h*leaf}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj?ubh under }(h under hj?hhhNhNubj~ )}(h**root**h]hroot}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj?ubh$ node. Returns the value and update }(h$ node. Returns the value and update hj?hhhNhNubj~ )}(h ***leaf**h]h*leaf}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj?ubh if next leaf node is found, or NULL if no next leaf node is found. Note that this returns 0-length string if the key has no value, or the value of the first entry if the value is an array.}(h if next leaf node is found, or NULL if no next leaf node is found. Note that this returns 0-length string if the key has no value, or the value of the first entry if the value is an array.hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* _xbc_exit (C function) c._xbc_exithNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hvoid _xbc_exit (bool early)h]j: )}(hvoid _xbc_exit(bool early)h](j )}(hvoidh]hvoid}(hhhj&@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"@hhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMubjq )}(h h]h }(hhhj5@hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj"@hhhj4@hMubj )}(h _xbc_exith]jC )}(h _xbc_exith]h _xbc_exit}(hhhjG@hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjC@ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj"@hhhj4@hMubj )}(h (bool early)h]j )}(h bool earlyh](j )}(hj_ h]hbool}(hhhjc@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_@ubjq )}(h h]h }(hhhjp@hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj_@ubjC )}(hearlyh]hearly}(hhhj~@hhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hj_@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj[@ubah}(h]h ]h"]h$]h&]hhuh1j hj"@hhhj4@hMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hj@hhhj4@hMubah}(h]j@ah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@hhubjO )}(hhh]h)}(hClean up all parsed bootconfigh]hClean up all parsed bootconfig}(hj@hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@hhubah}(h]h ]h"]h$]h&]uh1jN hj@hhhj4@hMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j@jq j@jr uh1j. hhhj hNhNubjt )}(h**Parameters** ``bool early`` Set true if this is called before budy system is initialized. **Description** This clears all data structures of parsed bootconfig on memory. If you need to reuse xbc_init() with new boot config, you can use this.h](h)}(h**Parameters**h]j~ )}(hj@h]h Parameters}(hhhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj@ubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@ubj )}(hhh]j )}(hM``bool early`` Set true if this is called before budy system is initialized. h](j )}(h``bool early``h]js)}(hj@h]h bool early}(hhhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jrhj@ubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@ubj )}(hhh]h)}(h=Set true if this is called before budy system is initialized.h]h=Set true if this is called before budy system is initialized.}(hjAhjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhjAubah}(h]h ]h"]h$]h&]uh1j hj@ubeh}(h]h ]h"]h$]h&]uh1j hj@hMhj@ubah}(h]h ]h"]h$]h&]uh1j hj@ubh)}(h**Description**h]j~ )}(hj%Ah]h Description}(hhhj'AhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj#Aubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@ubh)}(hThis clears all data structures of parsed bootconfig on memory. If you need to reuse xbc_init() with new boot config, you can use this.h]hThis clears all data structures of parsed bootconfig on memory. If you need to reuse xbc_init() with new boot config, you can use this.}(hj=Ahj;AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j* xbc_init (C function) c.xbc_inithNtauh1j hj hhhNhNubj/ )}(hhh](j4 )}(hJint xbc_init (const char *data, size_t size, const char **emsg, int *epos)h]j: )}(hIint xbc_init(const char *data, size_t size, const char **emsg, int *epos)h](j )}(hinth]hint}(hhhjjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfAhhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMubjq )}(h h]h }(hhhjyAhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjfAhhhjxAhMubj )}(hxbc_inith]jC )}(hxbc_inith]hxbc_init}(hhhjAhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjAubah}(h]h ](j j eh"]h$]h&]hhuh1j hjfAhhhjxAhMubj )}(h=(const char *data, size_t size, const char **emsg, int *epos)h](j )}(hconst char *datah](j )}(hjh]hconst}(hhhjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubjq )}(h h]h }(hhhjAhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjAubj )}(hcharh]hchar}(hhhjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubjq )}(h h]h }(hhhjAhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjAubj )}(hj h]h*}(hhhjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubjC )}(hdatah]hdata}(hhhjAhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjAubj )}(h size_t sizeh](h)}(hhh]jC )}(hsize_th]hsize_t}(hhhjBhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjBubah}(h]h ]h"]h$]h&] refdomainjZ reftypej\ reftargetj BmodnameN classnameNj` jc )}jf ]ji )}j\ jAsb c.xbc_initasbuh1hhjBubjq )}(h h]h }(hhhj'BhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjBubjC )}(hsizeh]hsize}(hhhj5BhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjAubj )}(hconst char **emsgh](j )}(hjh]hconst}(hhhjNBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJBubjq )}(h h]h }(hhhj[BhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjJBubj )}(hcharh]hchar}(hhhjiBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJBubjq )}(h h]h }(hhhjwBhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjJBubj )}(hj h]h*}(hhhjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJBubj )}(hj h]h*}(hhhjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJBubjC )}(hemsgh]hemsg}(hhhjBhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjJBubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjAubj )}(h int *eposh](j )}(hinth]hint}(hhhjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubjq )}(h h]h }(hhhjBhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjBubj )}(hj h]h*}(hhhjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubjC )}(heposh]hepos}(hhhjBhhhNhNubah}(h]h ]jO ah"]h$]h&]uh1jB hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjAubeh}(h]h ]h"]h$]h&]hhuh1j hjfAhhhjxAhMubeh}(h]h ]h"]h$]h&]hhjA uh1j9 jB jC hjbAhhhjxAhMubah}(h]j]Aah ](jG jH eh"]h$]h&]jL uh1j3 hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj_AhhubjO )}(hhh]h)}(h0Parse given XBC file and build XBC internal treeh]h0Parse given XBC file and build XBC internal tree}(hjChj ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj Chhubah}(h]h ]h"]h$]h&]uh1jN hj_AhhhjxAhMubeh}(h]h ](jZ functioneh"]h$]h&]jo jZ jp j$Cjq j$Cjr uh1j. hhhj hNhNubjt )}(hX**Parameters** ``const char *data`` The boot config text original data ``size_t size`` The size of **data** ``const char **emsg`` A pointer of const char * to store the error message ``int *epos`` A pointer of int to store the error position **Description** This parses the boot config text in **data**. **size** must be smaller than XBC_DATA_MAX. Return the number of stored nodes (>0) if succeeded, or -errno if there is any error. In error cases, **emsg** will be updated with an error message and **epos** will be updated with the error position which is the byte offset of **buf**. If the error is not a parser error, **epos** will be -1.h](h)}(h**Parameters**h]j~ )}(hj.Ch]h Parameters}(hhhj0ChhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj,Cubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj(Cubj )}(hhh](j )}(h8``const char *data`` The boot config text original data h](j )}(h``const char *data``h]js)}(hjMCh]hconst char *data}(hhhjOChhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjKCubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjGCubj )}(hhh]h)}(h"The boot config text original datah]h"The boot config text original data}(hjhChjfChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbChMhjcCubah}(h]h ]h"]h$]h&]uh1j hjGCubeh}(h]h ]h"]h$]h&]uh1j hjbChMhjDCubj )}(h%``size_t size`` The size of **data** h](j )}(h``size_t size``h]js)}(hjCh]h size_t size}(hhhjChhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjCubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjCubj )}(hhh]h)}(hThe size of **data**h](h The size of }(h The size of hjChhhNhNubj~ )}(h**data**h]hdata}(hhhjChhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjCubeh}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hjChMhjDCubj )}(hK``const char **emsg`` A pointer of const char * to store the error message h](j )}(h``const char **emsg``h]js)}(hjCh]hconst char **emsg}(hhhjChhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjCubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjCubj )}(hhh]h)}(h4A pointer of const char * to store the error messageh]h4A pointer of const char * to store the error message}(hjChjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjCubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hjChMhjDCubj )}(h;``int *epos`` A pointer of int to store the error position h](j )}(h ``int *epos``h]js)}(hjDh]h int *epos}(hhhj DhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjDubah}(h]h ]h"]h$]h&]uh1j hX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhjDubj )}(hhh]h)}(h,A pointer of int to store the error positionh]h,A pointer of int to store the error position}(hj"Dhj DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j hjDubeh}(h]h ]h"]h$]h&]uh1j hjDhMhjDCubeh}(h]h ]h"]h$]h&]uh1j hj(Cubh)}(h**Description**h]j~ )}(hjBDh]h Description}(hhhjDDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hj@Dubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj(Cubh)}(hXThis parses the boot config text in **data**. **size** must be smaller than XBC_DATA_MAX. Return the number of stored nodes (>0) if succeeded, or -errno if there is any error. In error cases, **emsg** will be updated with an error message and **epos** will be updated with the error position which is the byte offset of **buf**. If the error is not a parser error, **epos** will be -1.h](h$This parses the boot config text in }(h$This parses the boot config text in hjXDhhhNhNubj~ )}(h**data**h]hdata}(hhhjaDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubh. }(h. hjXDhhhNhNubj~ )}(h**size**h]hsize}(hhhjtDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubh must be smaller than XBC_DATA_MAX. Return the number of stored nodes (>0) if succeeded, or -errno if there is any error. In error cases, }(h must be smaller than XBC_DATA_MAX. Return the number of stored nodes (>0) if succeeded, or -errno if there is any error. In error cases, hjXDhhhNhNubj~ )}(h**emsg**h]hemsg}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubh+ will be updated with an error message and }(h+ will be updated with an error message and hjXDhhhNhNubj~ )}(h**epos**h]hepos}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubhE will be updated with the error position which is the byte offset of }(hE will be updated with the error position which is the byte offset of hjXDhhhNhNubj~ )}(h**buf**h]hbuf}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubh&. If the error is not a parser error, }(h&. If the error is not a parser error, hjXDhhhNhNubj~ )}(h**epos**h]hepos}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j} hjXDubh will be -1.}(h will be -1.hjXDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/bootconfig:326: ./lib/bootconfig.chMhj(Cubeh}(h]h ] kernelindentah"]h$]h&]uh1js hj hhhNhNubeh}(h]functions-and-structuresah ]h"]functions and structuresah$]h&]uh1hhhhhhhhMCubeh}(h](boot-configurationheh ]h"](boot configuration bootconfigeh$]h&]uh1hhhhhhhhKexpect_referenced_by_name}jDhsexpect_referenced_by_id}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjEerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confapep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKline_length_limitM'syntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_link embed_imagesenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}h]hasnameids}(jDhjDjDjUjRjj~jJjGjjjyjvjjjjjjjj|jWjTj~j{j j jDjDu nametypes}(jDjDNjUNjNjJNjNjyNjNjNjNjNjWNj~Nj NjDNuh}(hhjDhjRj1j~jXjGjjjMjvjjjjjjjj|jjTjj{jZj jjDj j, j5 jP jU j j jjjjjjj1j6jjjjj,j1jjj&j+j]jbj j j}!j!j[$j`$jd&ji&j'j'j`)je)j1+j6+j-j-j.j.j0j0jW3j\3j6j6j:j:j=j=j@j@j]AjbAu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]h0Hyperlink target "bootconfig" is not referenced.}(hhhjEubah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1jEuba transformerN include_log] decorationNhhub.