<kernel v5.0>
setup_command_line()
init/main.c
/* * We need to store the untouched command line for future reference. * We also need to store the touched command line since the parameter * parsing is performed in place, and we should allow a component to * store reference of name/value for future reference. */
static void __init setup_command_line(char *command_line) { saved_command_line = memblock_alloc(strlen(boot_command_line) + 1, SMP_CACHE_BYTES); initcall_command_line = memblock_alloc(strlen(boot_command_line) + 1, SMP_CACHE_BYTES); static_command_line = memblock_alloc(strlen(command_line) + 1, SMP_CACHE_BYTES); strcpy(saved_command_line, boot_command_line); strcpy(static_command_line, command_line); }
다음 3 개의 cmdline용 메모리를 할당하여 그 주소를 전역 변수에 대입한다.
- saved_command_line
- boot_command_line을 복사하여 놓는다.
- 이 문자열은 변경되지 않는다.
- initcall_command_line
- boot_command_line 크기만큼 일단 공간만 확보해 놓는다.
- 이 문자열은 per-initcall 파라메터 파싱을 위해 사용된다.
- static_command_line
- 인수로 받은 command_line을 복사하여 놓는다.
- 이 문자열은 파라메터 파싱용으로 사용되며 변경될 수 있다.