麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

Adb bootloader流程

2024-04-29 21:00:58
字體:
來源:轉載
供稿:網(wǎng)友
ADB 根據(jù)ADB_HOST可以編譯出電腦上使用adb和手機內(nèi)使用的adbd,代碼目錄在system/core/adb

 

作為adb  adb_commandline是主要的命令處理函數(shù)。

 

作為adbd service_to_fd是接收到socket命令后的處理函數(shù)。

 

adb_main

transport_registration_func

transport_socket_events

handle_packet

create_local_service_socket

service_to_fd

 

 

 

以下部分是reboot的代碼執(zhí)行流程

__reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,LINUX_REBOOT_CMD_RESTART2, (char *)arg);

這個__reboot是調用了bionic/libc/arch-arm/syscalls/__reboot.S

                    

01

.text

02

    .type __reboot, #function

03

    .globl __reboot

04

    .align 4

05

    .fnstart

06

__reboot:

07

    .save   {r4, r7}

08

    stmfd   sp!, {r4, r7}

09

    ldr     r7, =__NR_reboot

10

    swi     #0

11

    ldmfd   sp!, {r4, r7}

12

    movs    r0, r0

13

    bxpl    lr

14

    b       __set_syscall_errno

15

    .fnend

 

swi # 0系統(tǒng)調用應該等同于int 0x80

 

__NR_reboot調用定義在kernel/include/asm-generic/unistd.h

#define __NR_reboot 142

__SYSCALL(__NR_reboot, sys_reboot)

 

sys_reboot實現(xiàn) LINUX_REBOOT_CMD_RESTART2應該是后來實現(xiàn),用來拓展參數(shù)的。 

01

SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,void __user *, arg)

02

{

03

    .....

04

    case LINUX_REBOOT_CMD_RESTART2:

05

        if (strncpy_from_user(&buffer[0], arg, sizeof(buffer) - 1) < 0) {

06

            ret = -EFAULT;

07

            break;

08

        }

09

        buffer[sizeof(buffer) - 1] = '/0';

10

 

11

        kernel_restart(buffer);

12

        break;

13

    ......

14

}

 

kernel_restart接口 
    kernel_restart_prepare(cmd);     //這里會調用到msm_reboot_call,在這個接口里會根據(jù)str來賦值reboot reason  
     if ( !cmd) 
        printk(KERN_EMERG "Restarting system./n"); 
     else 
        printk(KERN_EMERG "Restarting system with command '%s'./n", cmd); 
    kmsg_dump(KMSG_DUMP_RESTART); 
    machine_restart(cmd);       //這里會調用到msm_pm_restart 
  

msm_pm_restart 調用 msm_proc_comm(PCOM_RESET_CHIP, &restart_reason, 0);

把reboot reason寫到內(nèi)存里,機器開啟后aboot.c會判斷reason后進入對應的模式。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费国产视频大全入口 | 免费国产视频在线观看 | 狠狠婷婷综合久久久久久妖精 | 性欧美xxxx极品摘花 | 最新亚洲国产 | 真人一级毛片免费 | 色爱99 | 成人男女啪啪免费观看网站四虎 | 成人综合在线观看 | 久久国产精品久久久久久电车 | 日韩欧美电影在线观看 | 久久人人做 | 日本黄色大片免费观看 | 一区在线免费视频 | 国产精品免费一区二区三区四区 | 久久96国产精品久久秘臀 | 中文字幕国 | 亚州精品国产 | 国产免费高清在线 | 欧美日韩亚洲成人 | 成人免费看片a | 毛片免费看的 | 成人情欲视频在线看免费 | 日本在线一区二区 | 国产一区二区三区视频在线观看 | 国产亚洲欧美日韩在线观看不卡 | 精品一区二区三区免费毛片爱 | 久久成人免费网站 | 国产一区二区三区四区五区精品 | 毛片118极品美女写真 | jizzjizz中国人少妇中文 | 精品视频 久久久 | 欧美黄色一级生活片 | 性片久久| 日日噜噜噜夜夜狠狠久久蜜桃 | 宅男噜噜噜66一区二区 | 日韩黄色三级视频 | 欧美级毛片 | 精品国产91一区二区三区 | 久久久久久久久久久久久久国产 | 最新av在线播放 |