检测Linux系统是否支持某系统调用
随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持epoll_create1:
- // 文件名: x.cpp
- // 编译: g++ -g -o x x.cpp
- #include errno.h>
- #include stdio.h>
- #include stdint.h>
- #include stdlib.h>
- #include string.h>
- #include unistd.h>
- #ifndef __NR_epoll_create1
- # if defined(__x86_64__)
- # define __NR_epoll_create1 291
- # elif defined(__i386__)
- # define __NR_epoll_create1 329
- # elif defined(__arm__)
- # define __NR_epoll_create1 (UV_SYSCALL_BASE + 357)
- # endif
- #endif /* __NR_epoll_create1 */
- // 2.6.27内核才支持epoll_create1
- // glibc2.9开始提供epoll_create1
- static inline int epoll_create1(int flags)
- {
- return syscall(__NR_epoll_create1, flags);
- }
- int main()
- {
- int efd = epoll_create1(0);
- if (-1 == efd)
- {
- // 如果不支持,则会输出:epoll_create: Function not implemented
- perror("epoll_create");
- exit(1);
- }
- // 走到这里,表示支持该系统调用
- printf("epoll_create1 supported\n");
- return 0;
- }
相关头文件:
/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系统是否支持某系统调用相关推荐
- Linux系统如何支持NTFS文件系统?
由于Linux系统默认是不支持NTFS文件系统的,因此,我们基本不能在Linux系统中挂载NTFS文件系统类型的硬盘或移动硬盘. 为此,最主要的问题是如何使Linux系统支持NTFS文件系统. 一般情 ...
- linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...
信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...
- linux系统可支持多种文件系统类型,Linux文件系统类型简介及支持的文件系统汇总--Linux入门到精通系列...
不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统,比如Windows 2000 Server,系统默认或推荐采用的文件系统是NT ...
- linux系统最大支持多大硬盘容量,LINUX操作系统对硬件支持有上限么?最大多少内存?多大硬盘容量?...
32位的Linux的内存最大支持到4GB,64位的Linux的最大支持内存在TB级别上. (实际上最大支持多大的内容跟操作系统的种类无关,而是跟操作系统是几位的.还有CPU是几位的有关.) DOS是1 ...
- shell写的检测linux系统硬件信息的脚本
前面用python写了一个检测windonws硬件信息的脚本,这里是很久之前用shell写的一个linux系统硬件信息检测脚本,可以对照看一下.检测内容基本一样:操作系统信息.内存.CPU.硬盘分区及 ...
- Linux系统的中断、系统调用和调度概述【转】
转自:http://blog.csdn.net/yanlinwang/article/details/8169725 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近学习Linux操作系统, ...
- linux多点触摸屏驱动程序,Linux系统实现支持多点触控操作[视频]
虽然大多数人目前还不会购买拥有触控屏的设备,不过在Windows 7的大力推动下,触控操作已经开始流行了起来.然而Linux目前却无法支持这一功能,这让很多用户十分郁闷,不过来自ENAC Intera ...
- Linux系统不支持网上银行吗,Linux下如何使用网银
小提示: 如果遇到Linux内核升级后,将U盾插上电脑,只需运行:/etc/init.d/vboxdrv setup来重新配置VirutualBox即可,我的虚拟机设置了两个CPU,. 比较知名的虚拟 ...
- 韦东山二期驱动视频-热拔插驱动——RK3399自制linux系统不支持HDMI热拔插问题分析
背景: 公司的板子,对于HDMI的显示器热拔插不支持,只能在插入HDMI时启动才能输出,而当开机之后,再插入HDMI显示器则无输出,不知道原因. 推测如下: 1.设备树的引脚配置有误,导致插入HDMI ...
最新文章
- APACHE 安装出错 configure: error: Cannot use an external APR with the bundled APR-util
- c语言 amp 位与 什么意思,C语言中amp;是什么意思?--龙方网络
- omnet++ : could not be resolved 或error: coreexception 的解决
- ASP.NET Performance Monitoring, and When to Alert Administrators
- STL——关联式容器
- python批量图片进行双三插值BiCubic后,输出保存(亲测可用)。
- 微信公众号跳转小程序,详细教程
- Linux—生成随机密码
- [2019][CVPR]Balanced Self-Paced Learning for Generative Adversarial Clustering Network 笔记
- Xcode13 新建项目 Products 目录显示方法
- 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
- 单片机 TM4C123GXL 学习 例程
- 麦子金服:互联网金融平台分化加剧,行业头部平台值得选择
- surfacepro4黑苹果触屏_GitHub - MLZC/Surface-Pro-4-Sierra: 微软 Surface Pro 4 macOS Sierra 10.12 黑苹果...
- java利用String将阿拉伯数字变为罗马数字
- 【总结】AWS的(助理)架构师认证体系详解
- VC2005 如何获取系统时间
- Android FrameWork Input触控事件处理流程 笔记
- chromium45 对应 depot_tools 和 chromium 版本
- 前端跨域请求原理及实践(加qq群:342430957)