Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
1.3 kB · 43 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344/* SPDX-License-Identifier: GPL-2.0 */#ifndef _ASM_GENERIC_ERROR_INJECTION_H#define _ASM_GENERIC_ERROR_INJECTION_H
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)enum { EI_ETYPE_NULL, /* Return NULL if failure */ EI_ETYPE_ERRNO, /* Return -ERRNO if failure */ EI_ETYPE_ERRNO_NULL, /* Return -ERRNO or NULL if failure */ EI_ETYPE_TRUE, /* Return true if failure */};
struct error_injection_entry { unsigned long addr; int etype;};
struct pt_regs;
#ifdef CONFIG_FUNCTION_ERROR_INJECTION/* * Whitelist generating macro. Specify functions which can be error-injectable * using this macro. If you unsure what is required for the error-injectable * functions, please read Documentation/fault-injection/fault-injection.rst * 'Error Injectable Functions' section. */#define ALLOW_ERROR_INJECTION(fname, _etype) \static struct error_injection_entry __used \ __section("_error_injection_whitelist") \ _eil_addr_##fname = { \ .addr = (unsigned long)fname, \ .etype = EI_ETYPE_##_etype, \ }
void override_function_with_return(struct pt_regs *regs);#else#define ALLOW_ERROR_INJECTION(fname, _etype)
static inline void override_function_with_return(struct pt_regs *regs) { }#endif#endif
#endif /* _ASM_GENERIC_ERROR_INJECTION_H */