- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序8-3 linux/kernel/sys_call.s
1 /*
2 * linux/kernel/system_call.s
3 *
4 * (C) 1991 Linus Torvalds
5 */
6
7 /*
8 * system_call.s contains the system-call low-level handling routines.
9 * This also contains the timer-interrupt handler, as some of the code is
10 * the same. The hd- and flopppy-interrupts are also here.
11 *
12 * NOTE: This code handles signal-recognition, which happens every time
13 * after a timer-interrupt and after each system call. Ordinary interrupts
14 * dont handle signal-recognition, as that would clutter them up totally
15 * unnecessarily.
16 *
17 * Stack layout in ret_from_system_call:
18 *
19 * 0(%esp) - %eax
20 * 4(%esp) - %ebx
21 * 8(%esp) - %ecx
22 * C(%esp) - %edx
23 * 10(%esp) - original %eax (-1 if not system call)
24 * 14(%esp) - %fs
25 * 18(%esp) - %es
26 * 1C(%esp) - %ds
27 * 20(%esp) - %eip
28 * 24(%esp) - %cs
29 * 28(%esp) - %eflags
30 * 2C(%esp) - %oldesp
31 * 30(%esp) - %oldss
32 */
/*
* system_call.s 文件包含系统调用(system-call)底层处理子程序。由于有些代码比较类似,
* 所以同时也包括时钟中断处理(timer-interrupt)句柄。硬盘和软盘的中断处理程序也在这里。
*
* 注意:这段代码处理信号(signal)识别,在每次时钟中断和系统调用之后都会进行识别。一般
* 中断过程并不处理信号识别,因为会给系统造成混乱。
*
* 从系统调用返回(ret_from_system_call)时堆栈的内容见上面19-30 行。
*/
# 上面Linus 原注释中一般中断过程是指除了系统调用中断(int 0x80)和时钟中断(int 0x20)
# 以外的其他中断。这些中断会在内核态或用户态随机发生,若在这些中断过程中也处理信号识别
# 的话,就有可能与系统调用中断和时钟中断过程中对信号的识别处理过程相冲突,,违反了内核
# 代码非抢占原则。因此系统既无必要在这些“其他”中断中处理信号,也不允许这样做。
33
34 SIG_CHLD = 17 # 定义SIG_CHLD 信号(子进程停止或结束)。
35
36 EAX = 0x00 # 堆栈中各个寄存器的偏移位置。
37 EBX = 0x04
38 ECX = 0x08
39 EDX = 0x0C
40 ORIG_EAX = 0x10 # 如果不是系统调用(是其它中断)时,该值为-1。
41 FS = 0x14
42 ES = 0x18
43 DS = 0x1C
44 EIP = 0
文档评论(0)