#ifndef __ASC_SSV_H__ #define __ASC_SSV_H__ // BOILER PLATE: START: COPIED FROM ASC EXAMPLES /* Dense region of sparse state vector. */ typedef struct ssv_subvector { struct iovec iov; int (*peek) (struct iovec * local, struct iovec * remote, pid_t pid); int (*poke) (struct iovec * local, struct iovec * remote, pid_t pid); mpz_t z; } ssv_sub_t; /* Sparse state vector. */ typedef struct ssv { long N; struct { uint8_t SHA[256]; char sha[1][8]; long uid; }; ssv_sub_t sub[]; } ssv_t; #ifndef PTRACE_SYSEMU_SINGLESTEP #define PTRACE_SYSEMU_SINGLESTEP 32 #endif #define ssvs(...) ((ssv_t *[]){__VA_ARGS__, 0}) extern pid_t asc_ptrace_start(int argc, char *argv[]); extern ssv_t *asc_ssv_gather(ssv_t * x, pid_t pid); extern long asc_ssv_pc(ssv_t const *x); extern int asc_ssv_frees(ssv_t *X[]); extern ssv_t *asc_ssv_free(ssv_t *x); extern size_t asc_ssv_outraw(ssv_t const *x, FILE *stream, int *error); // BOILER PLATE: END: COPIED FROM ASC EXAMPLES #endif