字符设备驱动访问原理

来源:互联网 发布:ee是哪个国家域名 编辑:程序博客网 时间:2024/06/05 04:19

1.字符驱动的访问都有一个统一的入口,位于arch/arm/kernel/entry_common.S的207行(我使用的linux-3.4.2)

ENTRY(vector_swi)                                                                                   //入口

sub sp, sp, #S_FRAME_SIZE
stmia sp, {r0 - r12}@ Calling r0 - r12
 ARM( add r8, sp, #S_PC )
 ARM( stmdb r8, {sp, lr}^ )@ Calling sp, lr
 THUMB( mov r8, sp )
 THUMB( store_user_sp_lr r8, r10, S_SP) @ calling sp, lr
mrs r8, spsr@ called from non-FIQ mode, so ok.
str lr, [sp, #S_PC]@ Save calling PC
str r8, [sp, #S_PSR]@ Save CPSR
str r0, [sp, #S_OLD_R0]@ Save OLD_R0
zero_fp

2.然后会获取应用程序中访问函数的id,如read,write,close等,有用一个固定的id

3.在后就是会跳转到一个id表中(arch/arm/kernel/calls.S),通过id找到对应的函数,然后调用


0 0