void*ERR_PTR(longerror);longIS_ERR(constvoid*ptr);longPTR_ERR(constvoid*ptr); 第一个函数实际上把错误值作为指针返回。假若函数在内存申请失败后要执行语句return -ENOMEM;,则必须改为这样的语句:return ERR_PTR(-ENOMEM);。 第二个函数用于检查返回值是否是指针错误:if (IS_ERR(foo))。最后一个函数返...
因为错误码都是整数,而返回的是指针,所以需要强制转换一下,这就诞生了这三个宏PTR_ERR,ERR_PTR,IS_ERR。这三个宏(内联函数)的定义在err.h中 #defineMAX_ERRNO 4095#ifndef__ASSEMBLY__#defineIS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)staticinlinevoid*ERR_PTR(longerror){return(v...
union err_t err; memcpy(&err, &val, sizeof(val)); printf("int: %d\n", err.i); printf("long: %ld\n", err.l); printf("unsigned int: %u, 0x%08X\n", err.ui, err.ui); printf("unsigned long: %lu, 0x%08lX\n", err.ul, err.ul); printf("void *: %p\n", err.p); }...
Linux函数返回值类型包括整型和指针。内核中,整型用于errno,指针分为三种:空指针NULL(地址为0),异常指针(地址空间高4095个字节,32位为0xfffff001-0xffffffff,64位为0xfffffffffffff001-0xffffffffffffffff),以及普通指针。errno最大值MAX_ERRNO在err.h定义,为4095。变量转换后的值可通过测试...
static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr) { if (IS_ERR(ptr)) return PTR_ERR(ptr); else return 0; } 应用到如下地方用于减少函数行,使用统一api diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c ...
static inline __check_ret int PTR_ERR(const void *ptr) { return (intptr_t)ptr; return (int)(intptr_t) ptr; } static inline __check_ret void * ERR_TO_PTR(intptr_t err) static inline __check_ret void * ERR_PTR(int err) { return (void *)err; return (void *)(intptr_t)...
if (IS_ERR((void *)(*handle))) return PTR_ERR((void *)*handle); return 0; } static void zs_zpool_free(void *pool, unsigned long handle) { @@ -1400,7 +1403,7 @@ static unsigned long obj_malloc(struct zs_pool *pool, * @gfp: gfp flags when allocating object...
public: int SetFont(IntPtr hwnd, IntPtr hf, cli::array <Microsoft::VisualStudio::Shell::Interop::VSIME_ERR> ^ perr); Parameters hwnd IntPtr [in] Handle to the editor window. hf IntPtr [in] Handle to the font. If null, uses the default system font. perr VSIME_ERR[] [out...
// sts is now MFX_ERR_NULL_PTR But this does: mfxVideoParam encodeParams = {}; ... // configure encodeParams mfxVideoParam correctedParams = encodeParams; // make a copy sts = MFXVideoENCODE_Query(session, &encodeParams, &correctedParams); Translate 0 Kudos Copy link ...
-> OSErr func AEGetAttributePtr(UnsafePointer<AppleEvent>!, AEKeyword, DescType, UnsafeMutablePointer<DescType>!, UnsafeMutableRawPointer!, Size, UnsafeMutablePointer<Size>!) -> OSErr func AEGetCoercionHandler(DescType, DescType, UnsafeMutablePointer<AECoercionHandlerUPP?>!, UnsafeMutablePointer<...