MTK 开机流程分析

mmi_bootup_flow_start


static mmi_bootup_flow_cntx_struct g_mmi_bootup_flow_cntx;


typedef struct
{
    mmi_frm_proc_struct *main_flow;


    struct
    {
        MMI_BOOL timeout;
        mmi_frm_proc_id_info_struct id_info;
    } events_timer;


    struct
    {
        mmi_frm_proc_id_info_struct id_info;
    } disk_check;


    struct
    {
        S8 disabled_count;
    } interrupt;
} mmi_bootup_flow_cntx_struct;


    g_mmi_bootup_flow_cntx.interrupt.disabled_count = 0;




创建了一个seq_proc
其结构体为:
    mmi_frm_proc_seq_cntx_struct *cntx;
表示这个过程序列的
    cntx->my_id = id;  //1001
    cntx->children_proc = sub_procs;  //g_mmi_bootup_main_flow
    cntx->n_children = n_sub_procs;
    cntx->currently_executing_index = 0;
    cntx->is_completed = MMI_FALSE;
    cntx->status_callback = NULL;
    cntx->user_data = NULL;
然后初始化了一个过程
    mmi_frm_proc_init(proc, id, mmi_frm_proc_seq_entry, cntx);
赋值给了
                            mmi_frm_proc_struct *proc,
  g_mmi_bootup_flow_cntx.main_flow =
{1001,mmi_frm_proc_seq_entry,cntx}
然后是给这个创建的seq_proc结构体中status_callback 和user_date 赋值
    mmi_frm_proc_seq_set_status_callback(
        g_mmi_bootup_flow_cntx.main_flow,
        mmi_bootup_flow_stop_check,
        &(g_mmi_bootup_flow_cntx));
        
        
        然后调用mmi_frm_proc_post_complete_execute
        进行执行的过程
            mmi_frm_proc_post_complete_execute(
        MMI_FRM_PROC_ID_BOOTUP_MAIN,
        mmi_bootup_flow_completed,
        &(g_mmi_bootup_flow_cntx),
        g_mmi_bootup_flow_cntx.main_flow);








对于启动类的proc 为mmi_bootup_flow_completed


1,1001,这个是启动的时候


1001,2  MMI_FRM_PROC_ID_BOOTUP_WAIT_FOR_EVENTS


2,1002 con_proc 


1002,MMI_FRM_PROC_ID_BOOTUP_WAITING_TIMER






mmi_frm_proc_con_cr_ex_child_completed_proc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值