当前位置:  技术问答>linux和unix

在用户程序中怎样调用内核函数?

    来源: 互联网  发布时间:2015-01-15

    本文导语:  如题! 请各位大虾指点!高分酬谢! | 内核函数是通过系统调用的, 系统调用的时候会检查权限 asm("int $0x80")来实现的 | 1. # vi /usr/src/linux/kernel/sys.c  在文件的最后增加一...

如题!
请各位大虾指点!高分酬谢!

|
内核函数是通过系统调用的,
系统调用的时候会检查权限
asm("int $0x80")来实现的

|
1.
# vi /usr/src/linux/kernel/sys.c 
在文件的最后增加一个系统调用函数: 
asmlinkage int sys_print_info(int testflag) 

printk(" Its my syscall function!n"); 
return 0; 

该函数有一个int型入口参数testflag,并返回整数0。
2.
vi /usr/src/linux/arch/i386/kernel/entry.S
把函数的入口地址加到sys_call_table表中:
.long SYMBOL_NAME(sys_print_info)
.rept NR_syscalls-191 (数字加一)
3
vi /usr/src/linux/include/asm/unistd.h 
把增加的sys_call_table表项所对应的向量,在include/asm/unistd.h中进行必要申明,以供用户进程和其他系统进程查询或调用。 
#define __NR_print_info 191
4
编译内核
#my.c
_syscall1(int,print_info,int,testflag) 
main() 

int i; 
i= print_info(0); 
if(i==0) 
printf("i=%d , syscall success!n",i); 

如果要在用户程序中使用系统调用函数,那么在主函数main前必须申明调用_syscall,其中1 表示该系统调用只有一个入口参数,第一个int 表示系统调用的返回值为整型,print_info为系统调用函数名,第二个int 表示入口参数的类型为整型,testflag为入口参数名。

|
用户态下不能随便调用内核函数的,内核可以把一些常用的功能以系统调用的方式提供给你。如果用户态下可以随意调用内核函数的话,岂不天下大乱,要知道在内核态想干什么就干什么。
如果你一定要调用内核函数,可以修改内核向系统调用表中加些你想调用的东西,或是做个模块。

    
 
 

您可能感兴趣的文章:

  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 求内核和用户态简单易行的通信方法,用户态只需得到一个内核模块参数
  • 内核栈~ 内核线程 ~用户线程 之间关系 问题
  • 内核空间能否调用用户空间程序?
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux 用户态和内核态
  • daemon 是属于 用户态编程 还是 内核态编程? 关于内核编程的书/资料介绍些好吗?
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍 iis7站长之家
  • 用户模式和内核模式
  • 用户态程序如何和多个内核模块进行同时数据交互??
  • 关于内核进程和用户层命令不是很理解?
  • 内核访问用户空间
  • linux用户空间到内核空间数据传递
  • 关于内核空间和用户空间之间的实时通信?
  • 用户层的数据怎么传输到内核层呢?谢谢!
  • 如何利用Linux内核线程来保存用户进程
  • :(关于用户态和内核态不懂,帮帮忙啊。
  • 用户空间的程序如何改成运行于内核的?
  • 内核进程与用户进程间的通信
  • 用户空间如何访问内核变量。
  • 内核与用户进程通信得问题,求助!
  • 内核调用用户态函数的问题
  • 如何修改内核 来控制用户空间的程序 的系统调用.
  • 用户态调用除0错中断的问题
  • 如何在用户态调用内核态的函数?
  • Asp.Net其他页面如何调用Web用户控件写的分页
  • 以普通用户的身份登陆到unix,能不能调用shell执行特定的操作?
  • 关于用户态程序ioctl调用内核模块接口
  • 在linux kernel 里添加了系统调用,如何在用户程序中调用添加的系统调用呢?急
  • c#通过进程调用cmd判断登录用户权限代码分享
  • 问:系统调用的原理,一个C函数怎么就把系统功能提供给了用户程序呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 应用程序为普通用户所有,不改变其所有,如何在程序中使用超级用户级别的函数啊
  • 关于打印用户空间函数栈的问题
  • 请问如何用system函数切换到root用户
  • 用哪些函数可以得到执行一个程序的系统CPU时间,用户CPU时间,时钟时间啊?
  • 在LINUX系统下编译用户态的代码时提示undefined refirence to "函数名"错误请求帮助?谢谢!!
  • JSP 里面 怎么取得用户 的IP地址???有没有什么函数可以做到?
  • 用jsp那个函数可以得到用户的IP地址,急救。谢谢!!!!!
  • 请问什么c函数能取得当前用户名?
  • please help me ?如何像用户程序一样用man命令察看内核定义函数,如printk,kmalloc等?
  • 为什么IO函数要把内容从内核缓冲区拷贝到用户缓冲区? 有点浪费
  • linux下有添加用户的函数吗?
  • 在sql Server自定义一个用户定义星期函数
  • php中filter函数验证、过滤用户输入的数据
  • php中filter函数验证、过滤用户输入数据综合示例
  • 从创建数据库到存储过程与用户自定义函数的小感
  • php用户注册邮箱验证(1)加密函数authcode
  • CREATE FUNCTION sqlserver用户定义函数
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 概念混乱,请专人解释:实际用户ID,有效用户ID,设置用户ID
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • proftp中,如何让FTP的用户是非Linux用户,只是FTP用户?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • 我装的是RED HAT LINUX 8.0,我在root用户中把root用户删除了,怎办也进不了root用户
  • 怎样让普通用户拥有超级用户的权限,是把普通用户的组设为root组吗?具体怎么做,急死了
  • 我一个服务器同时接受到很多个用户的认证请求(得到用户名和密码),然后把用户名密码发给认证服务器。因为是远程认证,所
  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎
  • root用户附权限给其他用户问题
  • 如何添加一个用户,让这个用户只能访问某个特定的目录,
  • 如何过滤系统用户只显示创建的用户?
  • 匿名用户登录nobody用户的作用


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3