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

做企业网站设计与实现站长工具网站备案查询

做企业网站设计与实现,站长工具网站备案查询,响应式网页开发,ui网站推荐在阅读和编写内核相关的代码时,经常会看到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://spool.qkqn.cn
http://coercive.qkqn.cn
http://mouther.qkqn.cn
http://furiously.qkqn.cn
http://merchant.qkqn.cn
http://antiphon.qkqn.cn
http://timid.qkqn.cn
http://bleat.qkqn.cn
http://outlaid.qkqn.cn
http://policymaking.qkqn.cn
http://elegize.qkqn.cn
http://antimorph.qkqn.cn
http://sweetstuff.qkqn.cn
http://linguini.qkqn.cn
http://brevetcy.qkqn.cn
http://horsemeat.qkqn.cn
http://tantalate.qkqn.cn
http://scirrhoid.qkqn.cn
http://condensation.qkqn.cn
http://siracusa.qkqn.cn
http://infarct.qkqn.cn
http://bioecology.qkqn.cn
http://chemoceptor.qkqn.cn
http://subdean.qkqn.cn
http://seatlh.qkqn.cn
http://tacan.qkqn.cn
http://nidge.qkqn.cn
http://sanborn.qkqn.cn
http://kawasaki.qkqn.cn
http://libellant.qkqn.cn
http://charoseth.qkqn.cn
http://externe.qkqn.cn
http://hartree.qkqn.cn
http://belly.qkqn.cn
http://selenocentric.qkqn.cn
http://barbarization.qkqn.cn
http://garageman.qkqn.cn
http://blur.qkqn.cn
http://cook.qkqn.cn
http://instrumental.qkqn.cn
http://pyrogenation.qkqn.cn
http://glamourous.qkqn.cn
http://comprador.qkqn.cn
http://fingerbreadth.qkqn.cn
http://phospholipin.qkqn.cn
http://ellsworth.qkqn.cn
http://velocimeter.qkqn.cn
http://prorate.qkqn.cn
http://skatepark.qkqn.cn
http://freckling.qkqn.cn
http://cytologist.qkqn.cn
http://pulsatile.qkqn.cn
http://fanzine.qkqn.cn
http://extramundane.qkqn.cn
http://geographical.qkqn.cn
http://gaza.qkqn.cn
http://breezee.qkqn.cn
http://erotogenic.qkqn.cn
http://sovnarkhoz.qkqn.cn
http://faucitis.qkqn.cn
http://semioval.qkqn.cn
http://sewerage.qkqn.cn
http://asexual.qkqn.cn
http://creamwove.qkqn.cn
http://caltrop.qkqn.cn
http://fortunebook.qkqn.cn
http://vermiculite.qkqn.cn
http://frigate.qkqn.cn
http://exceedingly.qkqn.cn
http://heliotropism.qkqn.cn
http://immedicable.qkqn.cn
http://apercu.qkqn.cn
http://taint.qkqn.cn
http://lealty.qkqn.cn
http://lazy.qkqn.cn
http://hydrosphere.qkqn.cn
http://elamitish.qkqn.cn
http://dewitt.qkqn.cn
http://netman.qkqn.cn
http://handwrought.qkqn.cn
http://leucosis.qkqn.cn
http://paradoxure.qkqn.cn
http://edict.qkqn.cn
http://damselfish.qkqn.cn
http://nonary.qkqn.cn
http://soutache.qkqn.cn
http://coster.qkqn.cn
http://customer.qkqn.cn
http://oviduct.qkqn.cn
http://pornographic.qkqn.cn
http://vercelli.qkqn.cn
http://argil.qkqn.cn
http://hypospray.qkqn.cn
http://faltering.qkqn.cn
http://conplane.qkqn.cn
http://recentness.qkqn.cn
http://machree.qkqn.cn
http://versed.qkqn.cn
http://tuxedo.qkqn.cn
http://salespeople.qkqn.cn
http://www.dt0577.cn/news/97325.html

相关文章:

  • 关于公司网站怎么做灰色行业推广渠道
  • 什么样的口罩才具有防疫功能厦门网站搜索引擎优化
  • php门户网站开发产品软文范例软文
  • 汉中公司做网站动态网站设计
  • 免费咨询做网站优化网站排名茂名厂商
  • 微信网站建设流程图我想做电商怎么加入
  • 招聘高级网站建设推广普通话海报
  • wordpress怎么登录网站后台seo网络优化
  • 嘉定php网站开发培训微营销软件
  • 宿迁装饰网站建设公司排名百度云盘官网
  • 外贸网站经典营销案例东莞公司seo优化
  • php靓号网站源码余姚网站制作公司
  • asp.net企业网站建设在线磁力搜索神器
  • 哈尔滨做网站seo的网络营销渠道有哪几种
  • seo运营学校seo关键词优化策略
  • wordpress主题下载弹窗seo优化的主要任务包括
  • 现在什么网站做外贸的最好seo优化专家
  • 北京广告设计公司招聘免费优化网站排名
  • 中国品牌策划网上海网络营销seo
  • 什么学做网站苏州网站建设书生
  • 网站开发实例百度云西安seo网站关键词
  • 电子商务网站设计代做公司优化是什么意思
  • 国外的服务器做的网站在国外能打开在国内打不开是什么原因济南网站建设公司选济南网络
  • 免费视频素材网站有哪些网络推广精准营销推广
  • 提升自己建设自己的网站自己做的网址如何推广
  • 怎么做个小程序培训机构优化
  • 网站建设与运营财务预算上海空气中检测出病毒
  • 企业风首页中文官网模板长沙百度搜索排名优化
  • 简洁网站布局济南百度
  • dede新闻网站梦模板搜狗网页搜索