Remove pthread_lib_init() declaration
[akaros.git] / user / utest / devarch_file_test.c
1
2 #include <ros/arch/arch.h>
3 #include <ros/arch/msr-index.h>
4 #include <sys/stat.h>
5 #include <sys/types.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <unistd.h>
9 #include <fcntl.h>
10 #include <utest/utest.h>
11
12 TEST_SUITE("DEVARCH");
13
14 /* <--- Begin definition of test cases ---> */
15
16 static bool test_msr(void)
17 {
18         static const int max_cpus = MAX_NUM_CORES;
19         int fd = open("#arch/msr", O_RDWR);
20         uint64_t *values = malloc(max_cpus * sizeof(uint64_t));
21         uint64_t tmp = 0;
22         ssize_t n;
23
24         UT_ASSERT_M("Failed to open MSR device file (#arch/msr)", fd >= 0);
25         UT_ASSERT_M("Failed to allocated MSR values memory", values);
26
27         n = pread(fd, values, max_cpus * sizeof(uint64_t), MSR_IA32_TSC);
28         UT_ASSERT_M("Failed to read MSR values from 0x10", n > 0);
29
30         n = pread(fd, values, max_cpus * sizeof(uint64_t),
31                                   MSR_CORE_PERF_FIXED_CTR0);
32         UT_ASSERT_M("Failed to read MSR values from 0x309", n > 0);
33
34         n = pwrite(fd, &tmp, sizeof(uint64_t), MSR_CORE_PERF_FIXED_CTR0);
35         UT_ASSERT_M("Failed to write MSR values to 0x309",
36                                 n == sizeof(uint64_t));
37
38         free(values);
39         close(fd);
40
41         return true;
42 }
43
44 static bool test_mem(void)
45 {
46         int fd = open("#arch/realmem", O_RDONLY);
47         ssize_t n;
48         char buf[256];
49
50         UT_ASSERT_M("Failed to open memory device file (#arch/mem)", fd >= 0);
51
52         n = pread(fd, buf, sizeof(buf), 0);
53         UT_ASSERT_M("Failed to read real mode memory from offset 0",
54                                 n == sizeof(buf));
55
56         close(fd);
57
58         return true;
59 }
60
61 /* <--- End definition of test cases ---> */
62
63 static struct utest utests[] = {
64         UTEST_REG(msr),
65         UTEST_REG(mem)
66 };
67 static const int num_utests = sizeof(utests) / sizeof(struct utest);
68
69 int main(int argc, char *argv[])
70 {
71         RUN_TEST_SUITE(utests, num_utests, argv + 1, argc - 1);
72 }