当前位置: 首页 > news >正文

linux 系统调用返回 1,Linux内核系统调用返回-1而不是{-1,-256}

我是一个内核新手,面临着一个奇怪的问题.我编写了一个概念验证计算器系统调用,虽然它适用于大多数计算,但当SUBTRACTION结果介于-1到-256之间时它返回-1.如果有人可以对可能发生的事情有所了解,那就会很感激.下面是系统调用代码.

SYSCALL_DEFINE3(calc, int, a, int, b , char, op) {

int res_int;

switch(op) {

case '+': res_int = a + b;

break;

case '-': res_int = a - b;

break;

case '*': res_int = a * b;

break;

case '/': res_int = (a*1000) / b;

break;

}

printk(KERN_INFO "KERNEL CALC RESULT : %d %c %d = %ld",a, op, b, res_int);

return res_int;

}

编辑:

内核版本:Android Linux Kernel 3.10.xxx.

平台:Nexus7 ARM EABI.

我不明白的是它失败的原因. errno完全没用,因为它将-res_int设置为errno.另外,我不明白为什么只有当res_int为{-1,-256}时才会失败.

a = 1200,b = 1300 op =’ – ‘=> res_int = -100是printk打印-100的示例,但在我的用户空间应用程序中,我收到-1.

看起来当res_int为{-1,-256}时,errno被设置为-res_int.

root@android:/data/local # ./calc

Please enter request in 'num1 oper num2' format:

2.45 - 2.2

returned from syscall with res_int = 250

errno = 22, strerror(errno) = Invalid argument

Calculator result = 0.250000

root@android:/data/local # ./calc

Please enter request in 'num1 oper num2' format:

2.2 - 2.45

returned from syscall with res_int = -1

errno = 250, strerror(errno) = Unknown error 250

Calculator result = -0.001000

root@android:/data/local #

相关文章:

  • win7保存不了linux系统凭据,Win7无法保存凭据导致网络打印机脱机怎么办 解决方法介绍...
  • linux命令中的cp,【整理】Linux命令中:rsync和cp之间的区别
  • linux命令grpck,Linux基础命令---验证组文件grpck
  • linux文件夹按日期排序,linux – 如何按日期对文件内容进行排序?
  • linux源码编译rpm,Linux RPM 命令详解及源码编译安装
  • 企业 linux安装软件有哪些,RedHat 6.0 Enterprise企业版如何使用yum安装软件
  • linux应用参数 冒号,Lua-面向对象中函数使用时冒号(:)和点(.)的区别
  • linux执行计划步骤,linux下定时执行计划任务(Scheduled execution tasks under Linux).doc...
  • linux下跑酷游戏编程,【Unity3D开发小游戏】《跑酷小游戏》Unity开发教程
  • c语言中实型变量的三种类型,在C语言中实型变量分为两种类型.doc
  • 如何用c语言输出1 11 111,C语言练习1-11.doc
  • c语言 出库入库软件,终于把栈的实现库遍好了(C语言也可以用哦)
  • 数列极差问题c语言源代码,数列极差问题
  • c语言 输出链表函数,大神帮我看一下怎么输入输出一个链表,我输入了但是没输出啊...
  • android编程歌词显示,Android 音乐播放器实现歌词显示
  • #Java异常处理
  • 《Java编程思想》读书笔记-对象导论
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Debian下无root权限使用Python访问Oracle
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • IndexedDB
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascript编码规范
  • JavaScript的使用你知道几种?(上)
  • Meteor的表单提交:Form
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Spring-boot 启动时碰到的错误
  • 阿里云前端周刊 - 第 26 期
  • 安装python包到指定虚拟环境
  • 创建一种深思熟虑的文化
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 动态魔术使用DBMS_SQL
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 网络应用优化——时延与带宽
  • 小程序开发中的那些坑
  • 译自由幺半群
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​比特币大跌的 2 个原因
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (07)Hive——窗口函数详解
  • (8)STL算法之替换
  • (C语言)共用体union的用法举例
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (办公)springboot配置aop处理请求.
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)大道至简,职场上做人做事做管理
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 的静态构造函数是否线程安全?答案是肯定的!