码迷,mamicode.com
首页 > 其他好文 > 详细

系统调用简单总结

时间:2016-01-13 12:52:08      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

1.系统调用:在用户态,程序员不能直接调用系统函数,系统调用必须在内核模式下实现。

               所以在用户态某些C库函数通过汇编指令产生软中断异常,进入内核模式,然后我们就可以将系统调用号和参数传给内核使用系统调用。即系统调用是作为一种异常类型来实现处理的。

2.

    1)系统调用号:在unistd.h 文件中  #define _NR_XXX(XXX:系统调用名称)   NNN(NNN:系统调用名称)

    2)系统调用服务进程:sys_xitongdiaoyongname();

     eg:在/usr/src/linux/kernel/sys.c文件中添加源代码,如下所示: 
  asmlinkage int sys_mycall(int number) 
  
  return number; 
  

3. 使用系统调用的两种方式:

 1)c库中封装了系统调用,通过C库间接调用。

 eg:通过调用C库中printf()函数,去调用系统调用write();

 2) 传递系统调用号,利用syscall()函数(注意该函数为内核提供给用户的一个函数)直接调用;

eg: 

int main(void)

{

   int a=syscall(318,100);//318是系统调用号,100是参数

   printf("%d\n",a);

   return 0;

}

    或者

#include 
  _syscall1(int,mycall,int,ret) 
  main() 
  
  printf("%d n",mycall(100)); 
  

系统调用简单总结

标签:

原文地址:http://www.cnblogs.com/happyliuyi/p/5126744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!