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