在上面函数主要识别的关键字有:
copy capability chdir chroot class class_start class_stop console chown chmod critical disabled domainname device exec export group hostname
ifup insmod import keycodes loglevel mkdir mount on oneshot onrestart restart service setenv setkey setprop setrlimit socket start stop
symlink sysclktz trigger user write。
也就是配置文件只能使用上面的关键字,其它都是作为标识符的。这些关键的作用,其实是通过预先定义的操作来决定的,如下代码所示:
#001 #define KEYWORD(symbol, flags, nargs, func) K_##symbol,
#002 enum {
#003 K_UNKNOWN,
#004 #endif
#005 KEYWORD(capability, OPTION, 0, 0)
这个关键字是用来执行linux服务之前检查linux内核的兼容性,它是一个选项。
#006 KEYWORD(chdir, COMMAND, 1, do_chdir)
这个关键字是用来改变当前工作的目录,它是一个命令。
#007 KEYWORD(chroot, COMMAND, 1, do_chroot)
这个关键字是用来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全,它是一个命令。
#008 KEYWORD(class, OPTION, 0, 0)
这个关键字是为一个服务指明一个类名称,它是一个选项。
#009 KEYWORD(class_start, COMMAND, 1, do_class_start)
这个关键字是启动所有指定服务类下的未运行服务,它是一个命令。
#010 KEYWORD(class_stop, COMMAND, 1, do_class_stop)
这个关键字是停止指定服务类下的所有已运行的服务,它是一个命令。
#011 KEYWORD(console, OPTION, 0, 0)
这个关键字是控制台选项,它是一个选项。
#012 KEYWORD(critical, OPTION, 0, 0)
这个关键字是说明这是一个对于设备关键的服务。如果他四分钟内退出大于四次,系统将会重启并进入recovery(恢复)模式。
#013 KEYWORD(disabled, OPTION, 0, 0)
这个关键字是说明这个服务不会同与他同trigger(触发器)下的服务自动启动。他必须被明确的按名启动。。
#014 KEYWORD(domainname, COMMAND, 1, do_domainname)
这个关键字是设置域名,它是一个命令。
#015 KEYWORD(exec, COMMAND, 1, do_exec)
这个关键字是创建或执行一个程序,它是一个命令。
#016 KEYWORD(export, COMMAND, 2, do_export)
这个关键字是用来设置全局环境变量的值,它是一个命令。
#017 KEYWORD(group, OPTION, 0, 0)
这个关键字是用来改服务的组名,它是一个选项。
#018 KEYWORD(hostname, COMMAND, 1, do_hostname)
这个关键字是用来主机名称,它是一个命令。
#019 KEYWORD(ifup, COMMAND, 1, do_ifup)
这个关键字是用来启动网络接口,它是一个命令。
#020 KEYWORD(insmod, COMMAND, 1, do_insmod)
这个关键字是用来加载指定路径的模块,它是一个命令。
#021 KEYWORD(import, COMMAND, 1, do_import)
这个关键字是用来加载一个init能识别的rc文件,它是一个命令。
#022 KEYWORD(keycodes, OPTION, 0, 0)
这个关键字是用来定义按键码的选项。
#023 KEYWORD(mkdir, COMMAND, 1, do_mkdir)
这个关键字是用来建立一个目录,它是一个命令。
#024 KEYWORD(mount, COMMAND, 3, do_mount)
这个关键字是用来指定目录加载设备,它是一个命令。
#025 KEYWORD(on, SECTION, 0, 0)
这个关键字是用来设置一段命令按什么事件进行触发运行,它是一个段描述符。
#026 KEYWORD(oneshot, OPTION, 0, 0)
这个关键字是用来设置服务器只运行一次就关闭,它是一个选项。
#027 KEYWORD(onrestart, OPTION, 0, 0)
这个关键字是用来设置当服务重启动,执行一个命令,它是一个选项。
#028 KEYWORD(restart, COMMAND, 1, do_restart)
这个关键字是用来重新启动服务,它是一个命令。
#029 KEYWORD(service, SECTION, 0, 0)
这个关键字是用来设置一段服务的命令,往往一段服务里需要有多个选项组成。
#030 KEYWORD(setenv, OPTION, 2, 0)
这个关键字是用来设置环境变量,它是一个选项。
#031 KEYWORD(setkey, COMMAND, 0, do_setkey)
这个关键字是用来设置按键的索引和键值,它是一个命令。
#032 KEYWORD(setprop, COMMAND, 2, do_setprop)
这个关键字是用来设置系统属性名称为某个值,它是一个命令。
#033 KEYWORD(setrlimit, COMMAND, 3, do_setrlimit)
这个关键字是用来设置系统资源限制,它是一个命令。
#034 KEYWORD(socket, OPTION, 0, 0)
这个关键字是用来设置socket给一个应用程序,它是一个选项。
#035 KEYWORD(start, COMMAND, 1, do_start)
这个关键字是用来启动一个服务,它是一个命令。
#036 KEYWORD(stop, COMMAND, 1, do_stop)
这个关键字是用来停止一个服务,它是一个命令。
#037 KEYWORD(trigger, COMMAND, 1, do_trigger)
这个关键字是用来标志一个触发命令,它是一个命令。
#038 KEYWORD(symlink, COMMAND, 1, do_symlink)
这个关键字是用来设置一个路径的符号连接,它是一个命令。
#039 KEYWORD(sysclktz, COMMAND, 1, do_sysclktz)
这个关键字是用来设置系统时钟基准,它是一个命令。
#040 KEYWORD(user, OPTION, 0, 0)
这个关键字是用来设置服务、文件或目录所属的用户,它是一个选项。
#041 KEYWORD(write, COMMAND, 2, do_write)
这个关键字是用来打开一个文件写多个字符串,它是一个命令。
#042 KEYWORD(copy, COMMAND, 2, do_copy)
这个关键字是用来拷贝文件,它是一个命令。
#043 KEYWORD(chown, COMMAND, 2, do_chown)
这个关键字是用来改变文件或目录的属某个用户的属性,它是一个命令。
#044 KEYWORD(chmod, COMMAND, 2, do_chmod)
这个关键字是用来改变文件或目录的访问权限,它是一个命令。
#045 KEYWORD(loglevel, COMMAND, 1, do_loglevel)
这个关键字是用来设置log输出的级别,它是一个命令。
#046 KEYWORD(device, COMMAND, 4, do_device)
这个关键字是用来设置设备的名称,它是一个命令。
#047 #ifdef __MAKE_KEYWORD_ENUM__
#048 KEYWORD_COUNT,
#049 };
Android初始化语言包含了四种类型的声明:Actions(行动)、Commands(命令)、Services(服务)和Options(选 项)。