cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tracex7_user.c (1219B)


      1#define _GNU_SOURCE
      2
      3#include <stdio.h>
      4#include <unistd.h>
      5#include <bpf/libbpf.h>
      6
      7int main(int argc, char **argv)
      8{
      9	struct bpf_link *link = NULL;
     10	struct bpf_program *prog;
     11	struct bpf_object *obj;
     12	char filename[256];
     13	char command[256];
     14	int ret = 0;
     15	FILE *f;
     16
     17	if (!argv[1]) {
     18		fprintf(stderr, "ERROR: Run with the btrfs device argument!\n");
     19		return 0;
     20	}
     21
     22	snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
     23	obj = bpf_object__open_file(filename, NULL);
     24	if (libbpf_get_error(obj)) {
     25		fprintf(stderr, "ERROR: opening BPF object file failed\n");
     26		return 0;
     27	}
     28
     29	prog = bpf_object__find_program_by_name(obj, "bpf_prog1");
     30	if (!prog) {
     31		fprintf(stderr, "ERROR: finding a prog in obj file failed\n");
     32		goto cleanup;
     33	}
     34
     35	/* load BPF program */
     36	if (bpf_object__load(obj)) {
     37		fprintf(stderr, "ERROR: loading BPF object file failed\n");
     38		goto cleanup;
     39	}
     40
     41	link = bpf_program__attach(prog);
     42	if (libbpf_get_error(link)) {
     43		fprintf(stderr, "ERROR: bpf_program__attach failed\n");
     44		link = NULL;
     45		goto cleanup;
     46	}
     47
     48	snprintf(command, 256, "mount %s tmpmnt/", argv[1]);
     49	f = popen(command, "r");
     50	ret = pclose(f);
     51
     52cleanup:
     53	bpf_link__destroy(link);
     54	bpf_object__close(obj);
     55	return ret ? 0 : 1;
     56}