From 1d766fe3d70421e54422eb52314f177c38e3baa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Sun, 5 May 2019 00:00:00 +0000 Subject: [PATCH] userland: make build perfect --- baremetal/add.c | 14 +------------- baremetal/add.py | 10 +--------- baremetal/interactive/assert_fail.c | 7 +------ lkmc/add.c | 13 +++++++++++++ lkmc/add.py | 9 +++++++++ lkmc/assert_fail.c | 5 +++++ userland/common.h => lkmc/pagemap.h | 14 +++++++------- userland/add.c | 1 - userland/add.py | 1 - userland/assert_fail.c | 1 - userland/c/add.c | 1 + userland/c/add.py | 1 + userland/c/assert_fail.c | 1 + userland/kernel_modules/mmap.c | 6 +++--- userland/linux/pagemap_dump.c | 6 +++--- userland/linux/virt_to_phys_user.c | 6 +++--- 16 files changed, 49 insertions(+), 47 deletions(-) mode change 100644 => 120000 baremetal/add.c mode change 100644 => 120000 baremetal/add.py mode change 100644 => 120000 baremetal/interactive/assert_fail.c create mode 100644 lkmc/add.c create mode 100644 lkmc/add.py create mode 100644 lkmc/assert_fail.c rename userland/common.h => lkmc/pagemap.h (86%) delete mode 120000 userland/add.c delete mode 120000 userland/add.py delete mode 120000 userland/assert_fail.c create mode 120000 userland/c/add.c create mode 120000 userland/c/add.py create mode 120000 userland/c/assert_fail.c diff --git a/baremetal/add.c b/baremetal/add.c deleted file mode 100644 index b363317..0000000 --- a/baremetal/add.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -int main(void) { - int i, j, k; - i = 1; - /* test-gdb-op1 */ - j = 2; - /* test-gdb-op2 */ - k = i + j; - /* test-gdb-result */ - if (k != 3) - lkmc_assert_fail(); -} diff --git a/baremetal/add.c b/baremetal/add.c new file mode 120000 index 0000000..42c36f0 --- /dev/null +++ b/baremetal/add.c @@ -0,0 +1 @@ +../lkmc/add.c \ No newline at end of file diff --git a/baremetal/add.py b/baremetal/add.py deleted file mode 100644 index 0f42d2b..0000000 --- a/baremetal/add.py +++ /dev/null @@ -1,9 +0,0 @@ -def test(self): - self.sendline('tbreak main') - self.sendline('continue') - self.continue_to('op1') - assert self.get_int('i') == 1 - self.continue_to('op2') - assert self.get_int('j') == 2 - self.continue_to('result') - assert self.get_int('k') == 3 diff --git a/baremetal/add.py b/baremetal/add.py new file mode 120000 index 0000000..d819366 --- /dev/null +++ b/baremetal/add.py @@ -0,0 +1 @@ +../lkmc/add.py \ No newline at end of file diff --git a/baremetal/interactive/assert_fail.c b/baremetal/interactive/assert_fail.c deleted file mode 100644 index a08a498..0000000 --- a/baremetal/interactive/assert_fail.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(void) { - lkmc_assert_fail(); -} - diff --git a/baremetal/interactive/assert_fail.c b/baremetal/interactive/assert_fail.c new file mode 120000 index 0000000..c1c99d6 --- /dev/null +++ b/baremetal/interactive/assert_fail.c @@ -0,0 +1 @@ +../../lkmc/assert_fail.c \ No newline at end of file diff --git a/lkmc/add.c b/lkmc/add.c new file mode 100644 index 0000000..b363317 --- /dev/null +++ b/lkmc/add.c @@ -0,0 +1,13 @@ +#include + +int main(void) { + int i, j, k; + i = 1; + /* test-gdb-op1 */ + j = 2; + /* test-gdb-op2 */ + k = i + j; + /* test-gdb-result */ + if (k != 3) + lkmc_assert_fail(); +} diff --git a/lkmc/add.py b/lkmc/add.py new file mode 100644 index 0000000..0f42d2b --- /dev/null +++ b/lkmc/add.py @@ -0,0 +1,9 @@ +def test(self): + self.sendline('tbreak main') + self.sendline('continue') + self.continue_to('op1') + assert self.get_int('i') == 1 + self.continue_to('op2') + assert self.get_int('j') == 2 + self.continue_to('result') + assert self.get_int('k') == 3 diff --git a/lkmc/assert_fail.c b/lkmc/assert_fail.c new file mode 100644 index 0000000..68fbefa --- /dev/null +++ b/lkmc/assert_fail.c @@ -0,0 +1,5 @@ +#include + +int main(void) { + lkmc_assert_fail(); +} diff --git a/userland/common.h b/lkmc/pagemap.h similarity index 86% rename from userland/common.h rename to lkmc/pagemap.h index 3abd606..f8891ca 100644 --- a/userland/common.h +++ b/lkmc/pagemap.h @@ -1,5 +1,5 @@ -#ifndef COMMON_H -#define COMMON_H +#ifndef LKMC_PAGEMAP_H +#define LKMC_PAGEMAP_H #define _XOPEN_SOURCE 700 #include /* open */ @@ -17,7 +17,7 @@ typedef struct { unsigned int file_page : 1; unsigned int swapped : 1; unsigned int present : 1; -} PagemapEntry; +} LkmcPagemapEntry; /* Parse the pagemap entry for the given virtual address. * @@ -26,7 +26,7 @@ typedef struct { * @param[in] vaddr virtual address to get entry for * @return 0 for success, 1 for failure */ -int pagemap_get_entry(PagemapEntry *entry, int pagemap_fd, uintptr_t vaddr) { +int lkmc_pagemap_get_entry(LkmcPagemapEntry *entry, int pagemap_fd, uintptr_t vaddr) { size_t nread; ssize_t ret; uint64_t data; @@ -61,7 +61,7 @@ int pagemap_get_entry(PagemapEntry *entry, int pagemap_fd, uintptr_t vaddr) { * @param[in] vaddr virtual address to get entry for * @return 0 for success, 1 for failure */ -int virt_to_phys_user(uintptr_t *paddr, pid_t pid, uintptr_t vaddr) { +int lkmc_pagemap_virt_to_phys_user(uintptr_t *paddr, pid_t pid, uintptr_t vaddr) { char pagemap_file[BUFSIZ]; int pagemap_fd; @@ -70,8 +70,8 @@ int virt_to_phys_user(uintptr_t *paddr, pid_t pid, uintptr_t vaddr) { if (pagemap_fd < 0) { return 1; } - PagemapEntry entry; - if (pagemap_get_entry(&entry, pagemap_fd, vaddr)) { + LkmcPagemapEntry entry; + if (lkmc_pagemap_get_entry(&entry, pagemap_fd, vaddr)) { return 1; } close(pagemap_fd); diff --git a/userland/add.c b/userland/add.c deleted file mode 120000 index b0aea66..0000000 --- a/userland/add.c +++ /dev/null @@ -1 +0,0 @@ -../baremetal/add.c \ No newline at end of file diff --git a/userland/add.py b/userland/add.py deleted file mode 120000 index 5b1d1e0..0000000 --- a/userland/add.py +++ /dev/null @@ -1 +0,0 @@ -../baremetal/add.py \ No newline at end of file diff --git a/userland/assert_fail.c b/userland/assert_fail.c deleted file mode 120000 index fb1be37..0000000 --- a/userland/assert_fail.c +++ /dev/null @@ -1 +0,0 @@ -../baremetal/interactive/assert_fail.c \ No newline at end of file diff --git a/userland/c/add.c b/userland/c/add.c new file mode 120000 index 0000000..01339d7 --- /dev/null +++ b/userland/c/add.c @@ -0,0 +1 @@ +../../lkmc/add.c \ No newline at end of file diff --git a/userland/c/add.py b/userland/c/add.py new file mode 120000 index 0000000..6c162bc --- /dev/null +++ b/userland/c/add.py @@ -0,0 +1 @@ +../../lkmc/add.py \ No newline at end of file diff --git a/userland/c/assert_fail.c b/userland/c/assert_fail.c new file mode 120000 index 0000000..c1c99d6 --- /dev/null +++ b/userland/c/assert_fail.c @@ -0,0 +1 @@ +../../lkmc/assert_fail.c \ No newline at end of file diff --git a/userland/kernel_modules/mmap.c b/userland/kernel_modules/mmap.c index de3f3ce..afdaa9e 100644 --- a/userland/kernel_modules/mmap.c +++ b/userland/kernel_modules/mmap.c @@ -10,7 +10,7 @@ #include #include /* sysconf */ -#include /* virt_to_phys_user */ +#include /* lkmc_pagemap_virt_to_phys_user */ enum { BUFFER_SIZE = 4 }; @@ -62,9 +62,9 @@ int main(int argc, char **argv) { /* Check that the physical addresses are the same. * They are, but TODO why virt_to_phys on kernel gives a different value? */ - assert(!virt_to_phys_user(&paddr, getpid(), (uintptr_t)address1)); + assert(!lkmc_pagemap_virt_to_phys_user(&paddr, getpid(), (uintptr_t)address1)); printf("paddr1 = 0x%jx\n", (uintmax_t)paddr); - assert(!virt_to_phys_user(&paddr, getpid(), (uintptr_t)address2)); + assert(!lkmc_pagemap_virt_to_phys_user(&paddr, getpid(), (uintptr_t)address2)); printf("paddr2 = 0x%jx\n", (uintmax_t)paddr); /* Check that modifications made from userland are also visible from the kernel. */ diff --git a/userland/linux/pagemap_dump.c b/userland/linux/pagemap_dump.c index fe29d92..e6669c9 100644 --- a/userland/linux/pagemap_dump.c +++ b/userland/linux/pagemap_dump.c @@ -9,7 +9,7 @@ #include #include -#include /* virt_to_phys_user */ +#include /* lkmc_pagemap_virt_to_phys_user */ int main(int argc, char **argv) { char buffer[BUFSIZ]; @@ -89,10 +89,10 @@ int main(int argc, char **argv) { } /* Get info about all pages in this page range with pagemap. */ { - PagemapEntry entry; + LkmcPagemapEntry entry; for (uintptr_t vaddr = low; vaddr < high; vaddr += sysconf(_SC_PAGE_SIZE)) { /* TODO always fails for the last page (vsyscall), why? pread returns 0. */ - if (!pagemap_get_entry(&entry, pagemap_fd, vaddr)) { + if (!lkmc_pagemap_get_entry(&entry, pagemap_fd, vaddr)) { printf( "%jx %jx %u %u %u %u %s\n", (uintmax_t)vaddr, diff --git a/userland/linux/virt_to_phys_user.c b/userland/linux/virt_to_phys_user.c index e35dfc2..c25b08c 100644 --- a/userland/linux/virt_to_phys_user.c +++ b/userland/linux/virt_to_phys_user.c @@ -4,7 +4,7 @@ #include /* printf */ #include /* EXIT_SUCCESS, EXIT_FAILURE, strtoull */ -#include /* virt_to_phys_user */ +#include /* lkmc_pagemap_virt_to_phys_user */ int main(int argc, char **argv) { pid_t pid; @@ -16,8 +16,8 @@ int main(int argc, char **argv) { } pid = strtoull(argv[1], NULL, 0); vaddr = strtoull(argv[2], NULL, 0); - if (virt_to_phys_user(&paddr, pid, vaddr)) { - fprintf(stderr, "error: virt_to_phys_user\n"); + if (lkmc_pagemap_virt_to_phys_user(&paddr, pid, vaddr)) { + fprintf(stderr, "error: lkmc_pagemap_virt_to_phys_user\n"); return EXIT_FAILURE; }; printf("0x%jx\n", (uintmax_t)paddr);