From ef72e90ed6e13fed6d044bd9fbbfb779049bef29 Mon Sep 17 00:00:00 2001 From: Guru Das Srinagesh Date: Sat, 22 Apr 2017 23:59:50 -0700 Subject: [PATCH] Add Task 15 description --- Task15/task15.txt | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Task15/task15.txt diff --git a/Task15/task15.txt b/Task15/task15.txt new file mode 100644 index 0000000..2f04c5a --- /dev/null +++ b/Task15/task15.txt @@ -0,0 +1,35 @@ +This is Task 15 of the Eudyptula Challenge +------------------------------------------ + +That process task turned out to not be all that complex, but digging +through the core kernel was a tough task, nice work with that. + +Speaking of "core kernel" tasks, let's do another one. It's one of the +most common undergraduate tasks there is: create a new syscall! +Yeah, loads of fun, but it's good to know the basics of how to do this, +and, how to call it from userspace. + +For this task: + - Add a new syscall to the kernel called "sys_eudyptula", so this is + all going to be changes to the kernel tree itself, no stand-alone + module needed for this task (unless you want to do it that way + without hacking around the syscall table, if so, bonus points for + you...) + - The syscall number needs to be the next syscall number for the + architecture you test it on (some of you all are doing this on ARM + systems, showoffs, and syscall numbers are not the same across all + architectures). Document the arch you are using and why you picked + this number in the module. + - The syscall should take two parameters: int high_id, int low_id. + - The syscall will take the two values, mush them together into one + 64bit value (low_id being the lower 32bits of the id, high_id being + the upper 32bits of the id). + - If the id value matches your id (which of course you know as + "[redacted]", then the syscall returns success. Otherwise it + returns a return code signifying an invalid value was passed to it. + - Write a userspace C program that calls the syscall and properly + exercises it (valid and invalid calls need to be made). + - "Proof" of running the code needs to be provided. + +So you need to send in a .c userspace program, a kernel patch, and +"proof" that it all works, as a response.