start_class core 具体执行了啥

本文探讨了在Android系统启动过程中,`start_class core`指令如何执行。从`init.rc`开始,经过`builtin.c`和`init_parse.c`,详细解析了service_start()函数,该函数导致init进程fork出子进程执行一系列关键服务,如sysmon、logd、healthd等。同时,还提到了在early-init阶段启动的eventd,以及几个在当前阶段未启动的服务,如adbd和bootanimation。
摘要由CSDN通过智能技术生成


在android\system\core\rootdir\init.rc的 on boot最后start_class core

on boot
    ........
	class_start core

on nonencrypted
    class_start main
    class_start late_start

在android\system\core\init\keyword.h中对应的定义:

KEYWORD(class_start, COMMAND, 1, do_class_start)

在android\system\core\init\builtin.c中:

int do_class_start(int nargs, char **args)
{
        /* Starting a class does not start services
         * which are explicitly disabled.  They must
         * be started individually.
         */
    service_for_each_class(args[1], service_start_if_not_disabled);
    return 0;
}


在android\system\core\init\init_parse.c中:

void service_for_each_class(const char *classname,
                    
可以按照以下步骤修改上述界面代码: 1. 将 JSP 页面中的 `${ticketList}` 替换成 `${tickets}`,以对应机票数组的名称。 2. 在 JSP 页面中添加以下 JSTL 标签库: ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> ``` 3. 修改 JSTL 标签库中的 `<c:forEach>` 标签,以遍历机票数组: ``` <c:forEach var="ticket" items="${tickets}"> <tr> <td>${ticket.id}</td> <td>${ticket.start_time}</td> <td>${ticket.end_time}</td> <td>${ticket.wherestart}</td> <td>${ticket.gotowhere}</td> <td>${ticket.price}</td> <td><input type="checkbox" name="selectedTickets" value="${ticket.id}"></td> </tr> </c:forEach> ``` 4. 根据机票类的属性名在 JSP 页面中对应显示机票的信息,例如 `${ticket.id}` 对应机票的编号,`${ticket.start_time}` 对应机票的起飞时间,以此类推。 5. 在 JSP 页面的表单中,将购买机票的处理接口 `buyTicket` 改为处理 `selectedTickets` 参数的接口。 修改后的代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>机票购买</title> </head> <body> <h1>机票选择</h1> <form action="buySelectedTickets" method="post"> <table> <thead> <tr> <th>机票编号</th> <th>起飞时间</th> <th>到达时间</th> <th>起飞地点</th> <th>到达地点</th> <th>价格</th> <th>选择</th> </tr> </thead> <tbody> <c:forEach var="ticket" items="${tickets}"> <tr> <td>${ticket.id}</td> <td>${ticket.start_time}</td> <td>${ticket.end_time}</td> <td>${ticket.wherestart}</td> <td>${ticket.gotowhere}</td> <td>${ticket.price}</td> <td><input type="checkbox" name="selectedTickets" value="${ticket.id}"></td> </tr> </c:forEach> </tbody> </table> <input type="submit" value="购买"> </form> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值