1 #include "linux_rawio.h"
8 static int create_status(char *path, size_t path_size, const char *cap_eff) {
12 if (path_size < sizeof("/tmp/friidump-rawio-XXXXXX"))
15 snprintf(path, path_size, "/tmp/friidump-rawio-XXXXXX");
27 fprintf(f, "Name:\ttest\nCapInh:\t0000000000000000\nCapEff:\t%s\n", cap_eff);
32 static int expect_state(
35 friidump_linux_rawio_state expected,
36 unsigned long long expected_mask) {
37 unsigned long long mask = 0;
38 friidump_linux_rawio_state actual =
39 friidump_linux_rawio_state_from_status_file(path, &mask);
41 if (actual != expected || mask != expected_mask) {
43 "FAIL: %s state=%d expected=%d mask=0x%llx expected=0x%llx\n",
44 label, (int) actual, (int) expected,
49 printf("PASS: %s\n", label);
54 char present_path[64];
55 char missing_path[64];
56 char malformed_path[64];
57 unsigned long long rawio_mask = 1ULL << FRIIDUMP_LINUX_CAP_SYS_RAWIO;
58 char present_value[32];
61 snprintf(present_value, sizeof(present_value), "%016llx", rawio_mask);
63 ok &= create_status(present_path, sizeof(present_path), present_value);
64 ok &= create_status(missing_path, sizeof(missing_path), "0000000000000000");
65 ok &= create_status(malformed_path, sizeof(malformed_path), "not-hex");
68 fprintf(stderr, "FAIL: fixture creation\n");
73 "CAP_SYS_RAWIO present",
75 FRIIDUMP_LINUX_RAWIO_PRESENT,
78 "CAP_SYS_RAWIO missing",
80 FRIIDUMP_LINUX_RAWIO_MISSING,
85 FRIIDUMP_LINUX_RAWIO_UNKNOWN,
88 "missing status file",
89 "/definitely/not/a/real/status/file",
90 FRIIDUMP_LINUX_RAWIO_UNKNOWN,
95 remove(malformed_path);
100 printf("LINUX RAW-I/O CAPABILITY PARSER: PASS\n");