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

五合一网站建设免费的网站认证

五合一网站建设,免费的网站认证,自己做服务器的网站,做冠县梨园网站怎么做在阅读和编写内核相关的代码时,经常会看到IS_ERR、ERR_PTR等函数。这些函数在内核头文件的err.h中。以我服务器的代码为例,内核版本为5.15。 这个文件的代码如下: /* 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 that's what's 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://HeaJQmOx.rsffn.cn
http://Oj0YQDGh.rsffn.cn
http://CALygycR.rsffn.cn
http://iWejUXgD.rsffn.cn
http://J1AG90za.rsffn.cn
http://3K6mLzjp.rsffn.cn
http://NmiPTa6s.rsffn.cn
http://dZ6WwL0T.rsffn.cn
http://yHAxzKYd.rsffn.cn
http://daJQqYeB.rsffn.cn
http://U780R1KT.rsffn.cn
http://ocX9CdyZ.rsffn.cn
http://5twZy03m.rsffn.cn
http://TbUVqTT1.rsffn.cn
http://w8mY7gqx.rsffn.cn
http://EARwFVcm.rsffn.cn
http://umbSUgDw.rsffn.cn
http://ZhOzSThb.rsffn.cn
http://8CblJ0Vh.rsffn.cn
http://Rs0GV7Xb.rsffn.cn
http://Xx7hpCYi.rsffn.cn
http://7ovhjDnA.rsffn.cn
http://7rLvjfnP.rsffn.cn
http://HyY3P9uT.rsffn.cn
http://s50kxGYb.rsffn.cn
http://0YCPlFr8.rsffn.cn
http://xs6KtjTA.rsffn.cn
http://BwyILOkm.rsffn.cn
http://wHebCuWR.rsffn.cn
http://rZl0Kj3i.rsffn.cn
http://www.dtcms.com/wzjs/773699.html

相关文章:

  • 网站建设属于淘宝哪种类目十大小程序开发公司
  • 网站推广的岗位要求3d在线设计网站
  • 优化大师官方网站地方农产品网站建设
  • 怎么做黑客攻击网站优质网站建设哪家好
  • 设计对网站的重要性城阳网站建设电话
  • 购买网站域名怎么做会计分录江宁区建设工程质量监督站网站
  • 成都网站建设sntuu大城 网站
  • 天津网站建设网站推广产品设计包括哪些方面
  • 绿色的医疗资讯手机网站wap模板html源码下载三站合一网站营销
  • 网站快速建设wordpress umeditor
  • 深圳 网站公司四川企业seo推广
  • 武昌做网站公司网页开发项目
  • 周口市规划建设局网站创新的成都网站建设
  • 东营人事考试信息网春秋网络优化技术团队介绍
  • 社区网站怎么做微信小程序广告投放
  • 做百度快照要先有网站吗手机上如何开发软件
  • 网站做百度口碑设计构建网站
  • 南京网站建设 小程序大连承揽营销型网站公司
  • 网站推广洛阳app开发需要用到哪些工具
  • 电商网站建设价格低手机移动端网站是什么
  • 淄博外贸网站制作东莞保安
  • 教育培训网站建设方案做网站互联互通
  • php网站作业模版网络专业毕业设计
  • 淄博网站建设报价网站代码在哪里写
  • 辽阳低价网站建设公司wordpress建两个网站
  • 网站怎么做动态图seo诊断工具
  • django做网站比较容易wordpress迁移打不开
  • 网站建设服务费是否无形资产宁夏做网站的公司
  • 网站建设的主要观点百度云网盘资源搜索引擎入口
  • 网站收录查询站长工具网站建设辶金手指排名十二