These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / fault.h
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 */