setup_command_line()

 

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_virt_alloc(strlen(boot_command_line) + 1, 0);
        initcall_command_line =
                memblock_virt_alloc(strlen(boot_command_line) + 1, 0);
        static_command_line = memblock_virt_alloc(strlen(command_line) + 1, 0);
        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을 복사하여 놓는다.
      • 이 문자열은 파라메터 파싱용으로 사용되며 변경될 수 있다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.