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

自动发卡网和卡密兑换网站开发视频教程山东网站app制作

自动发卡网和卡密兑换网站开发视频教程,山东网站app制作,商城网站开发项目描述,企业管理软件销售在阅读和编写内核相关的代码时#xff0c;经常会看到IS_ERR、ERR_PTR等函数。这些函数在内核头文件的err.h中。以我服务器的代码为例#xff0c;内核版本为5.15。 这个文件的代码如下#xff1a; /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_ERR_H #define _L…在阅读和编写内核相关的代码时经常会看到IS_ERR、ERR_PTR等函数。这些函数在内核头文件的err.h中。以我服务器的代码为例内核版本为5.15。 这个文件的代码如下 /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_ERR_H #define _LINUX_ERR_H#include linux/compiler.h #include linux/types.h#include asm/errno.h/** Kernel pointers have redundant information, so we can use a* scheme where we can return either an error code or a normal* pointer with the same return value.** This should be a per-architecture thing, to allow different* error and pointer decisions.*/ #define MAX_ERRNO 4095#ifndef __ASSEMBLY__#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) (unsigned long)-MAX_ERRNO)static inline void * __must_check ERR_PTR(long error) {return (void *) error; }static inline long __must_check PTR_ERR(__force const void *ptr) {return (long) ptr; }static inline bool __must_check IS_ERR(__force const void *ptr) {return IS_ERR_VALUE((unsigned long)ptr); }static inline bool __must_check IS_ERR_OR_NULL(__force const void *ptr) {return unlikely(!ptr) || IS_ERR_VALUE((unsigned long)ptr); }/*** ERR_CAST - Explicitly cast an error-valued pointer to another pointer type* ptr: The pointer to cast.** Explicitly cast an error-valued pointer to another pointer type in such a* way as to make it clear thats whats going on.*/ static inline void * __must_check ERR_CAST(__force const void *ptr) {/* cast away the const */return (void *) ptr; }static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr) {if (IS_ERR(ptr))return PTR_ERR(ptr);elsereturn 0; }#endif#endif /* _LINUX_ERR_H */ 这个文件提供了一套用于处理错误指针的宏和函数。主要部分的解释 #define MAX_ERRNO 4095定义了最大的错误号为4095。 #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) (unsigned long)-MAX_ERRNO)定义了一个宏用于检查一个值是否在错误号的范围内。 ERR_PTR(long error)这个函数将一个错误号转换为一个错误指针这样就可以将错误信息通过指针返回。 PTR_ERR(const void *ptr)这个函数将一个错误指针转换回对应的错误号。 IS_ERR(const void *ptr)这个函数检查一个指针是否是错误指针。 IS_ERR_OR_NULL(const void *ptr)这个函数检查一个指针是否是错误指针或者NULL指针。 ERR_CAST(const void *ptr)这个函数将一个错误指针强制转换为另一种类型的指针。 PTR_ERR_OR_ZERO(const void *ptr)这个函数检查一个指针如果它是错误指针就返回对应的错误号否则返回0。 这些函数和宏提供了一种机制使得函数可以通过返回指针的方式来返回错误信息。 错误号的部分信息在文件errno.h中 代码如下 /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_ERRNO_H #define _LINUX_ERRNO_H#include uapi/linux/errno.h/** These should never be seen by user programs. To return one of ERESTART** codes, signal_pending() MUST be set. Note that ptrace can observe these* at syscall exit tracing, but they will never be left for the debugged user* process to see.*/ #define ERESTARTSYS 512 #define ERESTARTNOINTR 513 #define ERESTARTNOHAND 514 /* restart if no handler.. */ #define ENOIOCTLCMD 515 /* No ioctl command */ #define ERESTART_RESTARTBLOCK 516 /* restart by calling sys_restart_syscall */ #define EPROBE_DEFER 517 /* Driver requests probe retry */ #define EOPENSTALE 518 /* open found a stale dentry */ #define ENOPARAM 519 /* Parameter not supported *//* Defined for the NFSv3 protocol */ #define EBADHANDLE 521 /* Illegal NFS file handle */ #define ENOTSYNC 522 /* Update synchronization mismatch */ #define EBADCOOKIE 523 /* Cookie is stale */ #define ENOTSUPP 524 /* Operation is not supported */ #define ETOOSMALL 525 /* Buffer or request is too small */ #define ESERVERFAULT 526 /* An untranslatable error occurred */ #define EBADTYPE 527 /* Type not supported by server */ #define EJUKEBOX 528 /* Request initiated, but will not complete before timeout */ #define EIOCBQUEUED 529 /* iocb queued, will get completion event */ #define ERECALLCONFLICT 530 /* conflict with recalled state */ #define ENOGRACE 531 /* NFS file lock reclaim refused */#endif 错误号的部分解释如下 ERESTARTSYS (512)系统调用由于接收到一个可以被处理的信号而被中断需要被重新启动。 ERESTARTNOINTR (513)系统调用由于某些原因被中断需要被重新启动但是不需要检查未决的信号。 ERESTARTNOHAND (514)系统调用由于接收到一个不能被当前进程处理的信号而被中断需要被重新启动。 ENOIOCTLCMD (515)没有找到对应的ioctl命令。 ERESTART_RESTARTBLOCK (516)系统调用需要被重新启动但是使用了不同的方法。 EPROBE_DEFER (517)设备驱动程序请求延迟探测。 EOPENSTALE (518)打开操作找到了一个过时的目录项。 ENOPARAM (519)不支持的参数。 EBADHANDLE (521)NFS协议中的非法文件句柄。 ENOTSYNC (522)更新同步不匹配。 EBADCOOKIE (523)Cookie过期。 ENOTSUPP (524)不支持的操作。 ETOOSMALL (525)缓冲区或请求太小。 ESERVERFAULT (526)发生了无法翻译的错误。 EBADTYPE (527)服务器不支持的类型。 EJUKEBOX (528)请求已经启动但在超时前不会完成。 EIOCBQUEUED (529)iocb已经入队将会收到完成事件。 ERECALLCONFLICT (530)与被召回的状态冲突。 ENOGRACE (531)NFS文件锁恢复被拒绝。
http://www.hkea.cn/news/14335765/

相关文章:

  • 呼和浩特网站建设费用手机挣钱最快的软件
  • 企业网站制作公司合肥娄底网站建设是什么
  • 做seo要明白网站成都seo公司
  • 网站建设学习教程四大工业设计软件有哪些
  • 丰台网站开发高校专业建设网站
  • 大屏网站做响应开发网站公司排行榜
  • 做网站龙头长沙装修公司口碑哪家好
  • 新建网站如何让百度收录制作网页爱心代码
  • 我有服务器怎么做网站wordpress及时聊天
  • 上海十大网站建如何做一名合格的网站人
  • 东莞网站制作哪家公司好免费网站推广app
  • 服装网站设计方案标志设计ppt课件
  • 做物流网站电话号码wordpress建站教程pdf
  • 宁夏网站建站网站建设课程大纲
  • 滕州市中远建设工程公司网站首页电影免费在线观看
  • 建筑网站源码wordpress分类目录修改
  • 合作网站seo免费看视频的软件是什么
  • 网络架构师工资一般多少seo优化什么意思
  • 网站建设开西安计算机培训机构
  • 黄浦网站设计建设网站北京市
  • 上海低价网站建设该企业为暂停开票企业解决方案
  • 怀来网站seodede做招聘网站
  • 商品网站开发需求表拥有域名后怎么搭建网站
  • 深圳哪家网站建设好晋城网站开发
  • 河池城乡住房和建设局网站wordpress安装域名
  • 我想在阿里巴巴做卫生纸的网站对高校网站建设的期待
  • 济南市建设工程招投标协会网站网站设置怎么删除数据
  • 专业网站建设86215湖南网站建设多少钱
  • 网站建设的服务器免费域名注册查询入口
  • 什么网站可以做期货学校的网站开发过程