Linux内核实验报告——实验5.doc

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核实验报告 实验题目: 新系统调用设计实验 实验目的: 系统调用是内核提供给用户应用程序使用的内核函数名,这些函数提供了内核为用户 应用程序所提供的系统服务功能。这些函数在用户应用程序中的书写格式与用户自定义函 数形式上没有什么不同,但这些函数的编写和调用过程却与自定义函数有着很大的不同。 它们需要事先在内核中安排好入口和函数体,当调用时会引发系统软中断根据对应的存根 函数查中断表进入请求的内核函数。 我们能够学会添加一个自己的系统调用 硬件环境: Pentium(R) Dual-Core CPU T4400 @ 2.20GHz 软件环境: Ubuntu12.04 gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 内核版本:3.0.24 实验步骤: 代码分析 着中讲解第二个实验:要在do_page_fault中增加一个计数pfcount,设计它为一个全局变量,声明在mm.h中。设计系统调用,返回该pfcount。 设计说明 do_page_fault的时候每次在缺页的时候都会将pfcount计数加一,这样我们只需要设计系统调用就能够得到该值。 调试记录 无 结论分析与体会: 在本次实验中我们完整设计了两个系统调用,实现系统调用主要有三个过程: 1.在syscall_table_32.S这个汇编文件中添加系统调用的入口项 2.在unistd_32.h中添加系统调用号,以便用户程序调用 3.在内核中的某个地方实现系统调用 另外关于asmlinkage这个标记: “asmlinkage is defined, for example, in the header file include/asm-i386/linkage.h as __attribute__((regparm(0))) that tells compiler put all function parameters in the stack (i.e. disables call optimization). ” 也就是说它告诉编译器把所有的参数都放在堆栈中,而不是寄存器,这样内嵌汇编代码的时候有好处? 程序完整源代码: kernel/sys.c /* * linux/kernel/sys.c * * Copyright (C) 1991, 1992 Linus Torvalds */ #include linux/module.h #include linux/mm.h #include linux/utsname.h #include linux/mman.h #include linux/notifier.h #include linux/reboot.h #include linux/prctl.h #include linux/highuid.h #include linux/fs.h #include linux/perf_event.h #include linux/resource.h #include linux/kernel.h #include linux/kexec.h #include linux/workqueue.h #include linux/capability.h #include linux/device.h #include linux/key.h #include linux/times.h #include linux/posix-timers.h #include linux/security.h #include linux/dcookies.h #include linux/suspend.h #include linux/tty.h #include linux/signal.h #include linux/cn_proc.h #include linux/getcpu.h #include linux/task_io_accounting_ops.h #include linux/seccomp.h #include linux/cpu.h #include linux/personality.h #include linux/ptrace.h #include linux/fs_struct.h #include linux/gfp.h #include linux/compat.h #include linux/syscalls.h #include linux/kprobes.h #include linux/user_namespace.

文档评论(0)

ea238982 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档