struct action { /* node in list of all actions */ struct listnode alist; /* node in the queue of pending actions*/ struct listnode qlist; /* node in list of actions for atrigger */ struct listnode tlist;
struct action { /* node in list of all actions */ struct listnode alist; /* node in the queue of pending actions*/ struct listnode qlist; /* node in list of actions for atrigger */ struct listnode tlist;
struct command { /* list of commands in an action */ struct listnode clist;
int (*func)(int nargs, char **args); int nargs; char *args[1]; };
struct command { /* list of commands in an action */ struct listnode clist;
int (*func)(int nargs, char **args); int nargs; char *args[1]; };
2.4 list action_list 및 action_queueaction_list 해석 init.rc 시 on action을 만나면act->alist를 통해 가입합니다. queue_builtin_action () 실행 함수를command로 구성하고 action을 만듭니다.action_리스트에action_queue 실행 action_for_each_trigger(),act->qlist를 통해 가입; queue_builtin_action () 실행 함수를command로 구성하고 action을 만듭니다.action_list에 추가, action_queue의 팀 끝.3. 액션에 대한 해석은 init의 시작 과정과 앞에서 설명한 init를 결합시킨다.rc의 해석, init 대 init에 대한 정리.rc리action의 해석.3.1 on section 내 action의 해석 1.3.1에서 새로운 on section 호출parse_로 해석action() 시 struct action*act를 신청했습니다. 설정: 1)act->name은onsection의 이름(예:boot/fs/)입니다.2) list act->commands 초기화;3) act->alist를 action에 추가_list의 열 끝에 action이 만들어지고 action에 추가됩니다_리스트 중.3.2 on section 내 action의command에 대한 해석 on section 내 action의command,parse_ 호출line_action()1) 키워드를 찾아서COMMAND인지, 파라미터 수가 정확한지 확인한다.2) structcommand*cmd-cmd->func를 keyword표에서 신청한다.- cmd->nargs에 매개 변수 개수를 설정하고 cmd->args에 매개 변수를 복사합니다.-cmd->clist를 act->commands의 열 끝에 넣으면,command가 action에 추가됩니다.3.3 action_list의 action action 가입_queue 중 action_for_each_trigger () 대기열 action_list에 일치하는 액션, 액션에 추가_queue의 팀 끝; queue_builtin_action () 실행 함수를command로 구성하고 action을 만듭니다.action_list에 추가, action_queue의 팀 끝.3.4 명령 실행 Init의 무한 순환 중 execute_one_command():system/core/init/init.c 1) 액션으로_queue에서 structaction*act를 떼어cur_action;2)cur_로부터action 획득 struct command * 부여cur_command;3) 실행cur_command->func(cur_command->nargs,cur_command->args) 위 단계에서 1, 2 & 3은 한 번에 실행되고, 4는 무한순환으로 실행되며, action_queue에서 액션을 떼고 액션에서command를 얻은 다음command를 실행합니다.4. init.rc 문법 소결 시스템/core/init/Readme에 init가 있습니다.rc 문법의 설명.이전에 필자는 init 원본을 분석하지 않았을 때도 이 Readme 파일을 읽었지만 일부 개념 경계에 대해 잘 알지 못했다.현재 init를 분석했습니다.rc의 해석 후, 다음 면접에서 init를 맞춥니다.rc문법 정리 좀 해주세요.1. # 시작하는 줄도 무시되고 주석에 사용됩니다.2.','\t','\r'는 무시되기 때문에 속성에 빈칸이 있으면 뒤에 식별되지 않습니다.모든 Action에서command 전의 축소는 문법의 요구가 없고 읽기에 편리할 뿐이다.3.''은 줄 바꿈의 표지이고 init 문법에서 새로운 해석의 시작은 모두 새로운 줄의 시작을 바탕으로 하는 것이고 한 줄씩 스캔하여 해석하는 것이다.4. 일부 개념: Section/Action/Command/Trigger-Init.rc에서 on 또는 서비스 []*행을 만나면 새로운 섹션의 시작을 상징합니다. [2.2리 키워드 정의 참조, SECTION의 유형은 on과 서비스뿐입니다]; -on를 만나면trigger는 촉발 조건, 발생 시기입니다.early-init/init/early-fs/fs/post-fs/early-boot/boot;property: =, 속성 의 값이 로 설정되었을 때;device-added-/device-removed-장치 노드가 가입하거나 제거될 때;서비스-exited- 서비스가 종료될 때입니다. -on가 발생할 때 액션, 즉 on 뒷부분을 실행합니다. 여러 개의command를 포함할 수 있습니다. -command는 줄마다 어떤command를 지원하는지 2.2리 키워드 정의에서 COMMAND의 키워드 유형을 보십시오. 형식은 다음과 같습니다. [cpp] onon이 모든 것이 하나의 섹션입니다.모든 를 액션이라고 합니다.본문을 총결하여 init를 해석하였다.rc의 기본 문법은 on 섹션의 해석, 서비스의 해석과property의 지원을 중점적으로 토론하고 후속 주제에서 상세하게 토론한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: