1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #ifndef _IPXE_FAULT_H
- #define _IPXE_FAULT_H
-
- /** @file
- *
- * Fault injection
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
- #include <config/fault.h>
-
- extern int inject_fault_nonzero ( unsigned int rate );
- extern void inject_corruption_nonzero ( unsigned int rate, const void *data,
- size_t len );
-
- /**
- * Inject fault with a specified probability
- *
- * @v rate Reciprocal of fault probability (zero for no faults)
- * @ret rc Return status code
- */
- static inline __attribute__ (( always_inline )) int
- inject_fault ( unsigned int rate ) {
-
- /* Force dead code elimination in non-fault-injecting builds */
- if ( rate == 0 )
- return 0;
-
- return inject_fault_nonzero ( rate );
- }
-
- /**
- * Corrupt data with a specified probability
- *
- * @v rate Reciprocal of fault probability (zero for no faults)
- * @v data Data
- * @v len Length of data
- * @ret rc Return status code
- */
- static inline __attribute__ (( always_inline )) void
- inject_corruption ( unsigned int rate, const void *data, size_t len ) {
-
- /* Force dead code elimination in non-fault-injecting builds */
- if ( rate == 0 )
- return;
-
- return inject_corruption_nonzero ( rate, data, len );
- }
-
- #endif /* _IPXE_FAULT_H */
|