Messages in this thread Patch in this message | | | From | Evgeniy Baskov <> | Subject | [PATCH v4 2/5] x86: Add resolve_cmdline() helper | Date | Wed, 25 May 2022 13:10:10 +0300 |
| |
Command line needs to be combined in both compressed and uncompressed kernel from built-in and boot command line strings, which requires non-trivial logic depending on CONFIG_CMDLINE_BOOL and CONFIG_CMDLINE_OVERRIDE.
Add a helper function to avoid code duplication.
Signed-off-by: Evgeniy Baskov <baskov@ispras.ru>
create mode 100644 arch/x86/include/asm/shared/setup-cmdline.h
diff --git a/arch/x86/include/asm/shared/setup-cmdline.h b/arch/x86/include/asm/shared/setup-cmdline.h new file mode 100644 index 000000000000..9822e5af4925 --- /dev/null +++ b/arch/x86/include/asm/shared/setup-cmdline.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _ASM_X86_SETUP_CMDLINE_H +#define _ASM_X86_SETUP_CMDLINE_H + +#define _SETUP +#include <asm/setup.h> /* For COMMAND_LINE_SIZE */ +#undef _SETUP + +#include <linux/string.h> + +#ifdef CONFIG_CMDLINE_BOOL +#define COMMAND_LINE_INIT CONFIG_CMDLINE +#else +#define COMMAND_LINE_INIT "" +#endif + +/* + * command_line and boot_command_line are expected to be at most + * COMMAND_LINE_SIZE length. command_line needs to be initialized + * with COMMAND_LINE_INIT. + */ + +static inline void resolve_cmdline(char *command_line, + const char *boot_command_line) +{ +#ifdef CONFIG_CMDLINE_BOOL + if (!IS_ENABLED(CONFIG_CMDLINE_OVERRIDE)) { + /* Append boot loader cmdline to builtin */ + strlcat(command_line, " ", COMMAND_LINE_SIZE); + strlcat(command_line, boot_command_line, COMMAND_LINE_SIZE); + } +#else + strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); +#endif +} + +#endif /* _ASM_X86_SETUP_CMDLINE_H */ -- 2.36.1
| |