iPXE
fault.h
Go to the documentation of this file.
1#ifndef _IPXE_FAULT_H
2#define _IPXE_FAULT_H
3
4/** @file
5 *
6 * Fault injection
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11FILE_SECBOOT ( PERMITTED );
12
13#include <stdint.h>
14#include <config/fault.h>
15
16extern int inject_fault_nonzero ( unsigned int rate );
17extern void inject_corruption_nonzero ( unsigned int rate, const void *data,
18 size_t len );
19
20/**
21 * Inject fault with a specified probability
22 *
23 * @v rate Reciprocal of fault probability (zero for no faults)
24 * @ret rc Return status code
25 */
26static inline __attribute__ (( always_inline )) int
27inject_fault ( unsigned int rate ) {
28
29 /* Force dead code elimination in non-fault-injecting builds */
30 if ( rate == 0 )
31 return 0;
32
33 return inject_fault_nonzero ( rate );
34}
35
36/**
37 * Corrupt data with a specified probability
38 *
39 * @v rate Reciprocal of fault probability (zero for no faults)
40 * @v data Data
41 * @v len Length of data
42 * @ret rc Return status code
43 */
44static inline __attribute__ (( always_inline )) void
45inject_corruption ( unsigned int rate, const void *data, size_t len ) {
46
47 /* Force dead code elimination in non-fault-injecting builds */
48 if ( rate == 0 )
49 return;
50
52}
53
54#endif /* _IPXE_FAULT_H */
Fault injection.
ring len
Length.
Definition dwmac.h:226
uint8_t data[48]
Additional event data.
Definition ena.h:11
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:926
#define __attribute__(x)
Definition compiler.h:10
int inject_fault_nonzero(unsigned int rate)
Inject fault with a specified probability.
Definition fault.c:42
void inject_corruption_nonzero(unsigned int rate, const void *data, size_t len)
Corrupt data with a specified probability.
Definition fault.c:63