Messages in this thread Patch in this message | | | From | Javier Malave <> | Subject | [RFC 4/9] Popcorn system call additions | Date | Wed, 29 Apr 2020 15:32:51 -0400 |
| |
The Popcorn system calls are a core component of Popcorn Linux. All system calls have been added to kernel/sched/core.c
The main system call is popcorn_migrate. User applications may invoke this system call to trigger a migration from their origin node to a remote node; and vice-versa. The system call relies on several "server modules" (process server, vma server, page server) to perform the migration and maintain VMA coherency. A message layer for IPC has been also added to communicate Popcorn messages across the distributed threads. You may find a basic example of the system call at the Popcorn kernel library. All three system calls are showcased in the Popcorn kernel library. --- arch/x86/entry/syscalls/syscall_64.tbl | 3 +++ include/linux/syscalls.h | 9 +++++++++ include/uapi/asm-generic/unistd.h | 11 +++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl index b4e6f9e62..5f8aff57e 100644 --- a/arch/x86/entry/syscalls/syscall_64.tbl +++ b/arch/x86/entry/syscalls/syscall_64.tbl @@ -355,6 +355,9 @@ 431 common fsconfig __x64_sys_fsconfig 432 common fsmount __x64_sys_fsmount 433 common fspick __x64_sys_fspick +434 64 popcorn_migrate __x64_sys_popcorn_migrate +435 64 popcorn_get_thread_status __x64_sys_popcorn_get_thread_status +436 64 popcorn_get_node_info __x64_sys_popcorn_get_node_info # # x32-specific system call numbers start at 512 to avoid cache impact diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 2bcef4c70..e8e4430d5 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1250,6 +1250,15 @@ ssize_t ksys_pread64(unsigned int fd, char __user *buf, size_t count, ssize_t ksys_pwrite64(unsigned int fd, const char __user *buf, size_t count, loff_t pos); int ksys_fallocate(int fd, int mode, loff_t offset, loff_t len); +#ifdef CONFIG_POPCORN +long ksys_brk(unsigned long brk); +long ksys_mremap(unsigned long addr, + unsigned long old_len, unsigned long new_len, + unsigned long flags, unsigned long new_addr); +long ksys_madvise(unsigned long start, size_t len, int behavior); +long ksys_mprotect(unsigned long start, size_t len, + unsigned long prot); +#endif #ifdef CONFIG_ADVISE_SYSCALLS int ksys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice); #else diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h index a87904daf..71a526a1b 100644 --- a/include/uapi/asm-generic/unistd.h +++ b/include/uapi/asm-generic/unistd.h @@ -844,9 +844,16 @@ __SYSCALL(__NR_fsconfig, sys_fsconfig) __SYSCALL(__NR_fsmount, sys_fsmount) #define __NR_fspick 433 __SYSCALL(__NR_fspick, sys_fspick) - +#ifdef CONFIG_POPCORN +#define __NR_popcorn_migrate 434 +__SYSCALL(__NR_popcorn_migrate, sys_popcorn_migrate) +#define __NR_popcorn_get_thread_status 435 +__SYSCALL(__NR_popcorn_get_thread_status, sys_popcorn_get_thread_status) +#define __NR_popcorn_get_node_info 436 +__SYSCALL(__NR_popcorn_get_node_info, sys_popcorn_get_node_info) +#endif #undef __NR_syscalls -#define __NR_syscalls 434 +#define __NR_syscalls 437 /* * 32 bit systems traditionally used different -- 2.17.1
| |