zoukankan      html  css  js  c++  java
  • syscalls.h 与unitsd.h

    1 unitsd.h :1)定义了系统调用原型:eg read(),write()....

                      2)定义了系统调用宏 :eg _syscall2( ret-type, func-name, arg1-type, arg1-name, arg2-type, arg2-name )  

                      3) 定义了系统调用号:eg  #define __NR_getjiffies 320

    2 syscall.h:  1) 定义了间接系统调用函数syscall()原型(可以 用man syscall 查看该函数具体用法)

                      2) SYS_ 符号常量:大部分系统调用都包括了一个 SYS_ 符号常量来指定自己到 __NR_ 索引的映射。例如,使用 syscall 调用 __NR_getpid 索引:syscall( SYS_getpid )

    #include <stdio.h>
    #include <linux/unistd.h>
    #include <sys/syscall.h>
    
    #define __NR_getjiffies		320
    #define __NR_diffjiffies	321
    #define __NR_pdiffjiffies	322
    
    _syscall0( long, getjiffies );
    _syscall1( long, diffjiffies, long, ujiffies );
    _syscall2( long, pdiffjiffies, long, ujiffies, long*, presult );
    
    int main()
    {
      long jifs, result;
      int err;
    
      jifs = getjiffies();
    
      printf( "difference is %lx
    ", diffjiffies(jifs) );
    
      err = pdiffjiffies( jifs, &result );
    
      if (!err) {
        printf( "difference is %lx
    ", result );
      } else {
        printf( "error
    " );
      }
    
      return 0;
    }

    注意 __NR 索引在这个应用程序中是必需的,因为 _syscall 宏使用了 func-name 来构造 __NR 索引(getjiffies -> __NR_getjiffies)。其结果是您可以使用它们的名字来调用内核函数,就像其他任何系统调用一样。

  • 相关阅读:
    【NIO】IO与NIO的区别
    【在线工具】java开发常用在线工具
    【JVM】符号引用和直接引用
    【多线程】公平锁/非公平锁、乐观锁/悲观锁
    【Jenkins、sonar】
    开源软件记录
    Git Flow
    CF1324A Yet Another Tetris Problem 题解
    洛谷 P1199 三国游戏 题解
    CF33C Wonderful Randomized Sum 题解
  • 原文地址:https://www.cnblogs.com/happyliuyi/p/5142484.html
Copyright © 2011-2022 走看看