24#include "xtc_export.h"
32 XTC_SIM_RNG_SCHED = 0,
33 XTC_SIM_RNG_STEAL = 1,
34 XTC_SIM_RNG_PLACE = 2,
35 XTC_SIM_RNG_LOCKVIC = 3,
37 XTC_SIM_RNG_FAULT = 5,
39 XTC_SIM_RNG_BUGGIFY = 7,
64XTC_API
int __xtc_sim_active(
void);
72XTC_API
void __xtc_sim_nondeterminism(
const char *what);
73XTC_API
void xtc_sim_strict(
int on);
74XTC_API
int xtc_sim_nondeterminism_count(
void);
89XTC_API
void xtc_sim_clock_skew(int64_t offset_ns,
int jitter_ns);
93XTC_API
void xtc_sim_activate(uint64_t seed);
94XTC_API
void xtc_sim_deactivate(
void);
99XTC_API uint64_t __xtc_sim_rng(
int s);
103XTC_API uint64_t __xtc_sim_rng_range(
int s, uint64_t bound);
113XTC_API
int xtc_sim_fault(
unsigned pct_per_1000);
129XTC_API
void xtc_sim_fault_points_enable(
unsigned pct_per_1000);
130XTC_API
void xtc_sim_fault_points_disable(
void);
131XTC_API
int xtc_sim_fault_point(
const char *name);
132XTC_API uint64_t xtc_sim_fault_point_fires(
const char *name);
133XTC_API
int xtc_sim_fault_points_seen(
void);
149XTC_API
void xtc_sim_io_faults_enable(int64_t lat_min_ns, int64_t lat_max_ns,
150 unsigned fault_pct_per_1000);
151XTC_API
void xtc_sim_io_faults_disable(
void);
152XTC_API
int __xtc_sim_io_faults_active(
void);
153XTC_API int64_t __xtc_sim_io_latency(
void);
154XTC_API
int __xtc_sim_io_should_fault(
void);
174XTC_API
void xtc_sim_io_corrupt_enable(
unsigned corrupt_pct_per_1000);
175XTC_API
void xtc_sim_io_corrupt_disable(
void);
176XTC_API
int __xtc_sim_io_corrupt_active(
void);
177XTC_API
int __xtc_sim_io_torn_prefix(
int full_len);
178XTC_API
int __xtc_sim_io_flip_byte(
int len);
190XTC_API
void xtc_sim_io_enospc_enable(
unsigned pct_per_1000);
191XTC_API
int __xtc_sim_io_enospc(
void);
206XTC_API
void xtc_sim_io_stale_enable(
unsigned pct_per_1000);
207XTC_API
void __xtc_sim_io_stale_record(
int fd, uint64_t off,
const void *buf,
int len);
208XTC_API
int __xtc_sim_io_stale_read(
int fd, uint64_t off,
void *buf,
int len);
228XTC_API
void xtc_sim_io_wb_enable(
int on);
229XTC_API
void __xtc_sim_io_wb_wrote(
int fd, uint64_t end_off);
230XTC_API
void __xtc_sim_io_wb_synced(
int fd);
231XTC_API uint64_t xtc_sim_io_durable_end(
int fd);
257XTC_API
void xtc_sim_partition_set(
int src_loop_id,
int dst_loop_id,
int blocked);
258XTC_API
void xtc_sim_partition_isolate(
int loop_id);
259XTC_API
void xtc_sim_partition_clear(
void);
260XTC_API
int __xtc_sim_partition_blocked(
int src_loop_id,
int dst_loop_id);
261XTC_API
void xtc_sim_net_latency(int64_t min_ns, int64_t max_ns);
262XTC_API int64_t __xtc_sim_net_latency(
void);
268#if defined(XTC_INJECT_DISABLE)
269# define XTC_SIM_FAULT_POINT(name) ((void)0)
271# define XTC_SIM_FAULT_POINT(name) ((void)xtc_sim_fault_point(name))
292XTC_API
void xtc_sim_buggify_enable(
unsigned pct_per_1000);
293XTC_API
void xtc_sim_buggify_disable(
void);
294XTC_API
int xtc_sim_buggify(
const char *name);
295XTC_API
int xtc_sim_buggify_active_count(
void);
296XTC_API
int xtc_sim_buggify_reached_count(
void);
297XTC_API
int xtc_sim_buggify_site(
int idx,
char *buf,
size_t buflen,
299XTC_API
int xtc_sim_buggify_fault(
unsigned pct_per_1000);
304#if defined(XTC_INJECT_DISABLE)
305# define XTC_SIM_BUGGIFY(name) (0)
307# define XTC_SIM_BUGGIFY(name) xtc_sim_buggify(name)
313XTC_API
void xtc_sim_clock_enable(int64_t start_ns);
314XTC_API
void xtc_sim_clock_disable(
void);
315XTC_API
void xtc_sim_clock_advance(int64_t delta_ns);
316XTC_API
void xtc_sim_clock_set(int64_t ns);
320XTC_API
int __xtc_sim_vclock(int64_t *out_ns);
327XTC_API
int xtc_sim_clock_active(
void);
343XTC_API
int xtc_sim_exec_run(
struct xtc_exec *e, uint64_t seed,
long max_steps);
353XTC_API
int xtc_sim_check(
struct xtc_exec *e);
354XTC_API uint64_t xtc_sim_state_hash(
struct xtc_exec *e);
374XTC_API
void xtc_sim_sched_pessimal(
unsigned pct_per_1000);
375XTC_API
int __xtc_sim_sched_pessimal_pct(
void);
395XTC_API
void xtc_sim_swizzle_enable(
unsigned pct_per_1000);
396XTC_API
void xtc_sim_swizzle_disable(
void);
397XTC_API
int __xtc_sim_swizzle_pct(
void);
413typedef int (*xtc_sim_consistency_fn)(
void *arg);
414XTC_API
void xtc_sim_set_consistency_check(xtc_sim_consistency_fn fn,
void *arg);
415XTC_API
int __xtc_sim_run_consistency_check(
void);