this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initial __sysctl() syscall implementation Map /dev/random to /dev/urandom

+13 -1
+3
kernel/emulation/linux/CMakeLists.txt
··· 44 44 signal/kill.c 45 45 misc/ioctl.c 46 46 misc/thread_selfid.c 47 + misc/sysctl.c 47 48 fcntl/open.c 48 49 network/socket.c 49 50 network/connect.c ··· 88 89 set_source_files_properties(ext/timerfd_gettime.c PROPERTIES COMPILE_FLAGS 89 90 "-I${CMAKE_CURRENT_SOURCE_DIR}/../../../platform-include -I${CMAKE_CURRENT_SOURCE_DIR}/../../../kernel-include") 90 91 set_source_files_properties(ext/timerfd_settime.c PROPERTIES COMPILE_FLAGS 92 + "-I${CMAKE_CURRENT_SOURCE_DIR}/../../../platform-include -I${CMAKE_CURRENT_SOURCE_DIR}/../../../kernel-include") 93 + set_source_files_properties(misc/sysctl.c PROPERTIES COMPILE_FLAGS 91 94 "-I${CMAKE_CURRENT_SOURCE_DIR}/../../../platform-include -I${CMAKE_CURRENT_SOURCE_DIR}/../../../kernel-include") 92 95 93 96 add_library(emulation OBJECT ${emulation_sources})
+6
kernel/emulation/linux/fcntl/open.c
··· 17 17 18 18 int oflags_bsd_to_linux(int flags); 19 19 20 + extern int strcmp(const char *s1, const char *s2); 21 + 20 22 long sys_open(const char* filename, int flags, unsigned int mode) 21 23 { 22 24 return sys_open_nocancel(filename, flags, mode); ··· 34 36 } 35 37 36 38 // TODO: Check filename, handle wrong case 39 + 40 + // XNU /dev/random behaves like Linux /dev/urandom 41 + if (strcmp(filename, "/dev/random") == 0) 42 + filename = "/dev/urandom"; 37 43 38 44 ret = LINUX_SYSCALL(__NR_open, filename, linux_flags, mode); 39 45 if (ret < 0)
+2 -1
kernel/emulation/linux/syscalls-amd64.asm
··· 5 5 movq (%r10,%rax,8), %r10 6 6 test %r10, %r10 7 7 jz .no_sys 8 - jmp *%r10 8 + call *%r10 9 + ret 9 10 .no_sys: 10 11 movq %rax, %rdi 11 12 call __unknown_syscall@PLT
+2
kernel/emulation/linux/syscalls.c
··· 30 30 #include "signal/kill.h" 31 31 #include "misc/ioctl.h" 32 32 #include "misc/thread_selfid.h" 33 + #include "misc/sysctl.h" 33 34 #include "fcntl/open.h" 34 35 #include "network/socket.h" 35 36 #include "network/connect.h" ··· 75 76 [197] = sys_mmap, 76 77 [199] = sys_lseek, 77 78 [201] = sys_ftruncate, 79 + [202] = sys_sysctl, 78 80 [339] = sys_fstat64, 79 81 [344] = sys_getdirentries64, 80 82 [372] = sys_thread_selfid,