check_syscall.zip
随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持epoll_create1:

  1. // 文件名: x.cpp
  2. // 编译: g++ -g -o x x.cpp
  3. #include errno.h>
  4. #include stdio.h>
  5. #include stdint.h>
  6. #include stdlib.h>
  7. #include string.h>
  8. #include unistd.h>
  9. #ifndef __NR_epoll_create1
  10. # if defined(__x86_64__)
  11. # define __NR_epoll_create1 291
  12. # elif defined(__i386__)
  13. # define __NR_epoll_create1 329
  14. # elif defined(__arm__)
  15. # define __NR_epoll_create1 (UV_SYSCALL_BASE + 357)
  16. # endif
  17. #endif /* __NR_epoll_create1 */
  18. // 2.6.27内核才支持epoll_create1
  19. // glibc2.9开始提供epoll_create1
  20. static inline int epoll_create1(int flags)
  21. {
  22. return syscall(__NR_epoll_create1, flags);
  23. }
  24. int main()
  25. {
  26. int efd = epoll_create1(0);
  27. if (-1 == efd)
  28. {
  29. // 如果不支持,则会输出:epoll_create: Function not implemented
  30. perror("epoll_create");
  31. exit(1);
  32. }
  33. // 走到这里,表示支持该系统调用
  34. printf("epoll_create1 supported\n");
  35. return 0;
  36. }

相关头文件:
/usr/include/bits/syscall.h
/usr/include/asm/unistd.h
/usr/include/asm/unistd_32.h
/usr/include/asm/unistd_64.h
/usr/include/asm/unistd_x32.h

检测Linux系统是否支持某系统调用相关推荐

  1. Linux系统如何支持NTFS文件系统?

    由于Linux系统默认是不支持NTFS文件系统的,因此,我们基本不能在Linux系统中挂载NTFS文件系统类型的硬盘或移动硬盘. 为此,最主要的问题是如何使Linux系统支持NTFS文件系统. 一般情 ...

  2. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  3. linux系统可支持多种文件系统类型,Linux文件系统类型简介及支持的文件系统汇总--Linux入门到精通系列...

    不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统,比如Windows 2000 Server,系统默认或推荐采用的文件系统是NT ...

  4. linux系统最大支持多大硬盘容量,LINUX操作系统对硬件支持有上限么?最大多少内存?多大硬盘容量?...

    32位的Linux的内存最大支持到4GB,64位的Linux的最大支持内存在TB级别上. (实际上最大支持多大的内容跟操作系统的种类无关,而是跟操作系统是几位的.还有CPU是几位的有关.) DOS是1 ...

  5. shell写的检测linux系统硬件信息的脚本

    前面用python写了一个检测windonws硬件信息的脚本,这里是很久之前用shell写的一个linux系统硬件信息检测脚本,可以对照看一下.检测内容基本一样:操作系统信息.内存.CPU.硬盘分区及 ...

  6. Linux系统的中断、系统调用和调度概述【转】

    转自:http://blog.csdn.net/yanlinwang/article/details/8169725 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近学习Linux操作系统, ...

  7. linux多点触摸屏驱动程序,Linux系统实现支持多点触控操作[视频]

    虽然大多数人目前还不会购买拥有触控屏的设备,不过在Windows 7的大力推动下,触控操作已经开始流行了起来.然而Linux目前却无法支持这一功能,这让很多用户十分郁闷,不过来自ENAC Intera ...

  8. Linux系统不支持网上银行吗,Linux下如何使用网银

    小提示: 如果遇到Linux内核升级后,将U盾插上电脑,只需运行:/etc/init.d/vboxdrv setup来重新配置VirutualBox即可,我的虚拟机设置了两个CPU,. 比较知名的虚拟 ...

  9. 韦东山二期驱动视频-热拔插驱动——RK3399自制linux系统不支持HDMI热拔插问题分析

    背景: 公司的板子,对于HDMI的显示器热拔插不支持,只能在插入HDMI时启动才能输出,而当开机之后,再插入HDMI显示器则无输出,不知道原因. 推测如下: 1.设备树的引脚配置有误,导致插入HDMI ...

最新文章

  1. APACHE 安装出错 configure: error: Cannot use an external APR with the bundled APR-util
  2. c语言 amp 位与 什么意思,C语言中amp;是什么意思?--龙方网络
  3. omnet++ : could not be resolved 或error: coreexception 的解决
  4. ASP.NET Performance Monitoring, and When to Alert Administrators
  5. STL——关联式容器
  6. python批量图片进行双三插值BiCubic后,输出保存(亲测可用)。
  7. 微信公众号跳转小程序,详细教程
  8. Linux—生成随机密码
  9. [2019][CVPR]Balanced Self-Paced Learning for Generative Adversarial Clustering Network 笔记
  10. Xcode13 新建项目 Products 目录显示方法
  11. 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
  12. 单片机 TM4C123GXL 学习 例程
  13. 麦子金服:互联网金融平台分化加剧,行业头部平台值得选择
  14. surfacepro4黑苹果触屏_GitHub - MLZC/Surface-Pro-4-Sierra: 微软 Surface Pro 4 macOS Sierra 10.12 黑苹果...
  15. java利用String将阿拉伯数字变为罗马数字
  16. 【总结】AWS的(助理)架构师认证体系详解
  17. VC2005 如何获取系统时间
  18. Android FrameWork Input触控事件处理流程 笔记
  19. chromium45 对应 depot_tools 和 chromium 版本
  20. 前端跨域请求原理及实践(加qq群:342430957)

热门文章

  1. 原来 Sql Server 的存储过程是可以调试的
  2. vue-cli+webpack项目,修改项目名称
  3. 网易对象存储NOS图床神器
  4. 虚拟环境安装Scrapy框架
  5. bzoj 3594: [Scoi2014]方伯伯的玉米田
  6. 「译」JUnit 5 系列:环境搭建
  7. 免安装Oracle客户端使用PL/SQL
  8. windows下面使用nssm设置新的服务实现开机自启等
  9. SharePoint 2013 Nintex Workflow 工作流帮助(九)
  10. 简单好用的sshfs -- 通过ssh映射远程路径(转)