17c2aad20Sopenharmony_ci/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ 27c2aad20Sopenharmony_ci 37c2aad20Sopenharmony_ci#ifndef __LINUX_ERR_H 47c2aad20Sopenharmony_ci#define __LINUX_ERR_H 57c2aad20Sopenharmony_ci 67c2aad20Sopenharmony_ci#include <linux/types.h> 77c2aad20Sopenharmony_ci#include <asm/errno.h> 87c2aad20Sopenharmony_ci 97c2aad20Sopenharmony_ci#define MAX_ERRNO 4095 107c2aad20Sopenharmony_ci 117c2aad20Sopenharmony_ci#define IS_ERR_VALUE(x) ((x) >= (unsigned long)-MAX_ERRNO) 127c2aad20Sopenharmony_ci 137c2aad20Sopenharmony_cistatic inline void * ERR_PTR(long error_) 147c2aad20Sopenharmony_ci{ 157c2aad20Sopenharmony_ci return (void *) error_; 167c2aad20Sopenharmony_ci} 177c2aad20Sopenharmony_ci 187c2aad20Sopenharmony_cistatic inline long PTR_ERR(const void *ptr) 197c2aad20Sopenharmony_ci{ 207c2aad20Sopenharmony_ci return (long) ptr; 217c2aad20Sopenharmony_ci} 227c2aad20Sopenharmony_ci 237c2aad20Sopenharmony_cistatic inline bool IS_ERR(const void *ptr) 247c2aad20Sopenharmony_ci{ 257c2aad20Sopenharmony_ci return IS_ERR_VALUE((unsigned long)ptr); 267c2aad20Sopenharmony_ci} 277c2aad20Sopenharmony_ci 287c2aad20Sopenharmony_cistatic inline bool IS_ERR_OR_NULL(const void *ptr) 297c2aad20Sopenharmony_ci{ 307c2aad20Sopenharmony_ci return (!ptr) || IS_ERR_VALUE((unsigned long)ptr); 317c2aad20Sopenharmony_ci} 327c2aad20Sopenharmony_ci 337c2aad20Sopenharmony_cistatic inline long PTR_ERR_OR_ZERO(const void *ptr) 347c2aad20Sopenharmony_ci{ 357c2aad20Sopenharmony_ci return IS_ERR(ptr) ? PTR_ERR(ptr) : 0; 367c2aad20Sopenharmony_ci} 377c2aad20Sopenharmony_ci 387c2aad20Sopenharmony_ci#endif 39