6
const char* prop = "/registers/fpga/reg1";
10
void *get_prop(void *arg)
12
pcilib_t *ctx = (pcilib_t*)arg;
17
pcilib_value_t val = {0};
18
err = pcilib_get_property(ctx, prop, &val);
21
printf("err pcilib_read_register\n");
24
long value = pcilib_get_value_as_int(ctx, &val, &err);
25
pcilib_clean_value(ctx, &val);
28
printf("err pcilib_get_value_as_int\n");
31
printf("reg = %li\n", value);
36
void *read_reg(void *arg)
38
pcilib_t *ctx = (pcilib_t*)arg;
43
pcilib_register_value_t reg_val = {0};
44
pcilib_value_t val = {0};
46
err = pcilib_read_register(ctx, NULL, reg, ®_val);
50
printf("err pcilib_read_register\n");
53
err = pcilib_set_value_from_register_value(ctx, &val, reg_val);
56
printf("err pcilib_set_value_from_register_value\n");
59
long value = pcilib_get_value_as_int(ctx, &val, &err);
60
pcilib_clean_value(ctx, &val);
63
printf("err pcilib_get_value_as_int\n");
66
printf("reg = %li\n", value);
71
int main(int argc, char *argv[])
74
printf("Usage:\n\t\t%s <device> <model> <register> <num_threads>\n", argv[0]);
79
int threads = atoi( argv[4] );
81
pcilib_t *ctx = pcilib_open(argv[1], argv[2]);
83
for(int i = 0; i < threads; i++)
86
pthread_create(&pth, NULL, read_reg, ctx);