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 
12 #include <stdint.h>
13 #include <config/fault.h>
14 
15 extern int inject_fault_nonzero ( unsigned int rate );
16 extern void inject_corruption_nonzero ( unsigned int rate, const void *data,
17  size_t len );
18 
19 /**
20  * Inject fault with a specified probability
21  *
22  * @v rate Reciprocal of fault probability (zero for no faults)
23  * @ret rc Return status code
24  */
25 static inline __attribute__ (( always_inline )) int
26 inject_fault ( unsigned int rate ) {
27 
28  /* Force dead code elimination in non-fault-injecting builds */
29  if ( rate == 0 )
30  return 0;
31 
32  return inject_fault_nonzero ( rate );
33 }
34 
35 /**
36  * Corrupt data with a specified probability
37  *
38  * @v rate Reciprocal of fault probability (zero for no faults)
39  * @v data Data
40  * @v len Length of data
41  * @ret rc Return status code
42  */
43 static inline __attribute__ (( always_inline )) void
44 inject_corruption ( unsigned int rate, const void *data, size_t len ) {
45 
46  /* Force dead code elimination in non-fault-injecting builds */
47  if ( rate == 0 )
48  return;
49 
50  return inject_corruption_nonzero ( rate, data, len );
51 }
52 
53 #endif /* _IPXE_FAULT_H */
static const void size_t len
Definition: fault.h:44
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:25
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
static const void * data
Definition: fault.h:44
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)