24#include "xtc_export.h"
31 XTC_SIM_RNG_SCHED = 0,
32 XTC_SIM_RNG_STEAL = 1,
33 XTC_SIM_RNG_PLACE = 2,
34 XTC_SIM_RNG_LOCKVIC = 3,
36 XTC_SIM_RNG_FAULT = 5,
38 XTC_SIM_RNG_BUGGIFY = 7,
61XTC_API
int __xtc_sim_active(
void);
69XTC_API
void __xtc_sim_nondeterminism(
const char *what);
70XTC_API
void xtc_sim_strict(
int on);
71XTC_API
int xtc_sim_nondeterminism_count(
void);
86XTC_API
void xtc_sim_clock_skew(int64_t offset_ns,
int jitter_ns);
90XTC_API
void xtc_sim_activate(uint64_t seed);
91XTC_API
void xtc_sim_deactivate(
void);
96XTC_API uint64_t __xtc_sim_rng(
int s);
100XTC_API uint64_t __xtc_sim_rng_range(
int s, uint64_t bound);
110XTC_API
int xtc_sim_fault(
unsigned pct_per_1000);
126XTC_API
void xtc_sim_fault_points_enable(
unsigned pct_per_1000);
127XTC_API
void xtc_sim_fault_points_disable(
void);
128XTC_API
int xtc_sim_fault_point(
const char *name);
129XTC_API uint64_t xtc_sim_fault_point_fires(
const char *name);
130XTC_API
int xtc_sim_fault_points_seen(
void);
146XTC_API
void xtc_sim_io_faults_enable(int64_t lat_min_ns, int64_t lat_max_ns,
147 unsigned fault_pct_per_1000);
148XTC_API
void xtc_sim_io_faults_disable(
void);
149XTC_API
int __xtc_sim_io_faults_active(
void);
150XTC_API int64_t __xtc_sim_io_latency(
void);
151XTC_API
int __xtc_sim_io_should_fault(
void);
171XTC_API
void xtc_sim_io_corrupt_enable(
unsigned corrupt_pct_per_1000);
172XTC_API
void xtc_sim_io_corrupt_disable(
void);
173XTC_API
int __xtc_sim_io_corrupt_active(
void);
174XTC_API
int __xtc_sim_io_torn_prefix(
int full_len);
175XTC_API
int __xtc_sim_io_flip_byte(
int len);
187XTC_API
void xtc_sim_io_enospc_enable(
unsigned pct_per_1000);
188XTC_API
int __xtc_sim_io_enospc(
void);
203XTC_API
void xtc_sim_io_stale_enable(
unsigned pct_per_1000);
204XTC_API
void __xtc_sim_io_stale_record(
int fd, uint64_t off,
const void *buf,
int len);
205XTC_API
int __xtc_sim_io_stale_read(
int fd, uint64_t off,
void *buf,
int len);
225XTC_API
void xtc_sim_io_wb_enable(
int on);
226XTC_API
void __xtc_sim_io_wb_wrote(
int fd, uint64_t end_off);
227XTC_API
void __xtc_sim_io_wb_synced(
int fd);
228XTC_API uint64_t xtc_sim_io_durable_end(
int fd);
254XTC_API
void xtc_sim_partition_set(
int src_loop_id,
int dst_loop_id,
int blocked);
255XTC_API
void xtc_sim_partition_isolate(
int loop_id);
256XTC_API
void xtc_sim_partition_clear(
void);
257XTC_API
int __xtc_sim_partition_blocked(
int src_loop_id,
int dst_loop_id);
258XTC_API
void xtc_sim_net_latency(int64_t min_ns, int64_t max_ns);
259XTC_API int64_t __xtc_sim_net_latency(
void);
265#if defined(XTC_INJECT_DISABLE)
266# define XTC_SIM_FAULT_POINT(name) ((void)0)
268# define XTC_SIM_FAULT_POINT(name) ((void)xtc_sim_fault_point(name))
289XTC_API
void xtc_sim_buggify_enable(
unsigned pct_per_1000);
290XTC_API
void xtc_sim_buggify_disable(
void);
291XTC_API
int xtc_sim_buggify(
const char *name);
292XTC_API
int xtc_sim_buggify_active_count(
void);
293XTC_API
int xtc_sim_buggify_reached_count(
void);
294XTC_API
int xtc_sim_buggify_site(
int idx,
char *buf,
size_t buflen,
296XTC_API
int xtc_sim_buggify_fault(
unsigned pct_per_1000);
301#if defined(XTC_INJECT_DISABLE)
302# define XTC_SIM_BUGGIFY(name) (0)
304# define XTC_SIM_BUGGIFY(name) xtc_sim_buggify(name)
310XTC_API
void xtc_sim_clock_enable(int64_t start_ns);
311XTC_API
void xtc_sim_clock_disable(
void);
312XTC_API
void xtc_sim_clock_advance(int64_t delta_ns);
313XTC_API
void xtc_sim_clock_set(int64_t ns);
317XTC_API
int __xtc_sim_vclock(int64_t *out_ns);
333XTC_API
int xtc_sim_exec_run(
struct xtc_exec *e, uint64_t seed,
long max_steps);
343XTC_API
int xtc_sim_check(
struct xtc_exec *e);
344XTC_API uint64_t xtc_sim_state_hash(
struct xtc_exec *e);
364XTC_API
void xtc_sim_sched_pessimal(
unsigned pct_per_1000);
365XTC_API
int __xtc_sim_sched_pessimal_pct(
void);
385XTC_API
void xtc_sim_swizzle_enable(
unsigned pct_per_1000);
386XTC_API
void xtc_sim_swizzle_disable(
void);
387XTC_API
int __xtc_sim_swizzle_pct(
void);
403typedef int (*xtc_sim_consistency_fn)(
void *arg);
404XTC_API
void xtc_sim_set_consistency_check(xtc_sim_consistency_fn fn,
void *arg);
405XTC_API
int __xtc_sim_run_consistency_check(
void);