System call 的分析
来源:互联网 发布:名片设计软件 编辑:程序博客网 时间:2024/06/09 22:50
0. sysfs_write_file@kernel/fs/sysfs/file.c
1. vfs_write@kernel/fs/read_write.c
2. sys_write@kernel/fs/read_write.c有SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count)定义, SYSCALL_DEFINEx的定义在 kernel/include/linux/syscalls.h, 经过转换就变成了sys_write(...)
3. ret_fast_syscall(asm)@kernel/arch/arm/kernel/entry-common.S中(entry_armv.s)
4. 所有的system call函数都是以 sys_???开头的
5. kernel/arch/arm/include/asm/unistd.h 中定义了system call number, 系统调用的调用号规则,
#define __NR_write (__NR_SYSCALL_BASE+ 4)
6. kernle/arch/arm/kernel/calls.S声明了系统调用函数 CALL(sys_write) 为于第4个
7. kernel/arch/arm/kernel/entry-common.S,中有sys_syscall的定义,还有vector_swi的定义,用于软中断的进入,也就是最终会执行例程vector_swi来完成对系统调用的处理。
8. kernel/arch/avr32/kernel/syscall_table.S,中有sys_call_table(系统调用系统call)的定义
9. kernel/arch/arm/kernel/entry-armv.S和entry-header.S,中有 ARM Linux的异常向量表
__vectors_start:
ARM( swi SYS_ERROR0 )
THUMB( svc #0 )
THUMB( nop )
W(ldr) pc, .LCvswi + stubs_offset//另外有定义.LCvswi: .word vector_swi;所以最终执行到了vector_swi
W(b) vector_irq + stubs_offset//定义在vector_stub irq, IRQ_MODE, 4; 是Interrupt dispatcher
__vectors_end:
10. 总而言之,system call是用户空间程序用系统软中断(0x80)模拟出现异常,然后进入内核空间的异常处理handler,-->vector_swi-->读取相关寄存器获取系统调用号(4)->参照sys_call_table对应到sys_XXX(sys_write)->进入vfs_write-->???
11. system all最多可传7个参数保存在(R0--R6),R7->syscall number, R8->syscall table pointer&linux syscall, R9->Current thread_info,这些在kernel/arch/arm/kernel/entry-header.S中有说明
1. vfs_write@kernel/fs/read_write.c
2. sys_write@kernel/fs/read_write.c有SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count)定义, SYSCALL_DEFINEx的定义在 kernel/include/linux/syscalls.h, 经过转换就变成了sys_write(...)
3. ret_fast_syscall(asm)@kernel/arch/arm/kernel/entry-common.S中(entry_armv.s)
4. 所有的system call函数都是以 sys_???开头的
5. kernel/arch/arm/include/asm/unistd.h 中定义了system call number, 系统调用的调用号规则,
#define __NR_write (__NR_SYSCALL_BASE+ 4)
6. kernle/arch/arm/kernel/calls.S声明了系统调用函数 CALL(sys_write) 为于第4个
7. kernel/arch/arm/kernel/entry-common.S,中有sys_syscall的定义,还有vector_swi的定义,用于软中断的进入,也就是最终会执行例程vector_swi来完成对系统调用的处理。
8. kernel/arch/avr32/kernel/syscall_table.S,中有sys_call_table(系统调用系统call)的定义
9. kernel/arch/arm/kernel/entry-armv.S和entry-header.S,中有 ARM Linux的异常向量表
__vectors_start:
ARM( swi SYS_ERROR0 )
THUMB( svc #0 )
THUMB( nop )
W(ldr) pc, .LCvswi + stubs_offset//另外有定义.LCvswi: .word vector_swi;所以最终执行到了vector_swi
W(b) vector_irq + stubs_offset//定义在vector_stub irq, IRQ_MODE, 4; 是Interrupt dispatcher
__vectors_end:
10. 总而言之,system call是用户空间程序用系统软中断(0x80)模拟出现异常,然后进入内核空间的异常处理handler,-->vector_swi-->读取相关寄存器获取系统调用号(4)->参照sys_call_table对应到sys_XXX(sys_write)->进入vfs_write-->???
11. system all最多可传7个参数保存在(R0--R6),R7->syscall number, R8->syscall table pointer&linux syscall, R9->Current thread_info,这些在kernel/arch/arm/kernel/entry-header.S中有说明
- System call 的分析
- System Call
- system call
- Linux system call的来龙去脉浅析
- windows 7 x64 下的 System Call
- windows 7 x64 下的 System Call
- system函数的分析
- Call分析(三)Call中运行的任务
- connect & Interrupted System Call
- Linux System Call Table
- process-system call-interrupt
- Interrupted system call
- 增加System Call
- Windows System Call Table
- C system call test
- epoll_wait Interrupted system call
- Linux System Call Table
- Linux System Call Table
- System manager分析
- [php-fpm自动拉起]从nginx的502错误出发谈锁机制在服务器自动监控脚本中的应用
- 单体测试 观点
- 解决Photoshop CS3 输入中文不能显示 输入文字不能显示 输入文字显示缓慢
- 使用 kexec 快速重启 Linux
- System call 的分析
- SetCapture
- winform textbox自动聚焦但不选中:
- OpenOffice 使用 文档结构图 目录
- index
- linux软中断的实现
- photoshop快捷键
- C#点击ListView的列头时,对ListView排序
- 在类中定义引用类型成员变量