setup_command_line()

<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을 복사하여 놓는다.
    • 이 문자열은 파라메터 파싱용으로 사용되며 변경될 수 있다.

 

댓글 남기기