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 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 FILE_SECBOOT ( PERMITTED );
12 
13 #include <stdint.h>
14 #include <config/fault.h>
15 
16 extern int inject_fault_nonzero ( unsigned int rate );
17 extern 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  */
26 static inline __attribute__ (( always_inline )) int
27 inject_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  */
44 static inline __attribute__ (( always_inline )) void
45 inject_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 
51  return inject_corruption_nonzero ( rate, data, len );
52 }
53 
54 #endif /* _IPXE_FAULT_H */
static const void size_t len
Definition: fault.h:45
int inject_fault_nonzero(unsigned int rate)
Inject fault with a specified probability.
Definition: fault.c:42
static __attribute__((always_inline)) int inject_fault(unsigned int rate)
Inject fault with a specified probability.
Definition: fault.h:26
Fault injection.
void inject_corruption_nonzero(unsigned int rate, const void *data, size_t len)
Corrupt data with a specified probability.
Definition: fault.c:63
FILE_SECBOOT(PERMITTED)
static const void * data
Definition: fault.h:45
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)