this repo has no description
1
fork

Configure Feed

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

Fix psynch errno bugs

+26 -14
+7
src/kernel/emulation/linux/mach/lkm.c
··· 81 81 return __real_ioctl(driver_fd, call_nr, arg); 82 82 } 83 83 84 + __attribute__((visibility("default"))) 85 + int lkm_call_raw(int call_nr, void* arg) 86 + { 87 + return __real_ioctl_raw(driver_fd, call_nr, arg); 88 + } 89 + 90 + 84 91 int mach_driver_get_fd(void) 85 92 { 86 93 return driver_fd;
+1 -1
src/kernel/emulation/linux/mach/lkm.h
··· 3 3 4 4 void mach_driver_init(const char** applep); 5 5 int lkm_call(int call_nr, void* arg); 6 - 6 + int lkm_call_raw(int call_nr, void* arg); // w/o errno translation 7 7 8 8 #endif 9 9
+4
src/kernel/emulation/linux/misc/ioctl.c
··· 14 14 return ret; 15 15 } 16 16 17 + long __real_ioctl_raw(int fd, int req, void* arg) 18 + { 19 + return LINUX_SYSCALL(__NR_ioctl, fd, req, arg); 20 + }
+1
src/kernel/emulation/linux/misc/ioctl.h
··· 2 2 #define LINUX_IOCTL_H 3 3 4 4 long __real_ioctl(int fd, int req, void* arg); 5 + long __real_ioctl_raw(int fd, int req, void* arg); 5 6 6 7 #endif 7 8
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvbroad.c
··· 18 18 .flags = flags, 19 19 }; 20 20 21 - int rv = lkm_call(NR_psynch_cvbroad_trap, &args); 21 + int rv = lkm_call_raw(NR_psynch_cvbroad_trap, &args); 22 22 return psynch_errno(rv); 23 23 } 24 24
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvclrprepost.c
··· 18 18 .flags = flags 19 19 }; 20 20 21 - int rv = lkm_call(NR_psynch_cvclrprepost, &args); 21 + int rv = lkm_call_raw(NR_psynch_cvclrprepost, &args); 22 22 return psynch_errno(rv); 23 23 } 24 24
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvsignal.c
··· 22 22 23 23 // __simple_printf("sys_psynch_mutexwait(mutex=%p, mgen=%x)\n", mutex, mgen); 24 24 25 - int rv = lkm_call(NR_psynch_cvsignal_trap, &args); 25 + int rv = lkm_call_raw(NR_psynch_cvsignal_trap, &args); 26 26 return psynch_errno(rv); 27 27 } 28 28
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvwait.c
··· 22 22 23 23 // __simple_printf("sys_psynch_mutexwait(mutex=%p, mgen=%x)\n", mutex, mgen); 24 24 25 - int rv = lkm_call(NR_psynch_cvwait_trap, &args); 25 + int rv = lkm_call_raw(NR_psynch_cvwait_trap, &args); 26 26 return psynch_errno(rv); 27 27 } 28 28
+1 -1
src/kernel/emulation/linux/psynch/psynch_mutexdrop.c
··· 18 18 19 19 // __simple_printf("sys_psynch_mutexdrop(mutex=%p, mgen=%x)\n", mutex, mgen); 20 20 21 - int rv = lkm_call(NR_psynch_mutexdrop_trap, &args); 21 + int rv = lkm_call_raw(NR_psynch_mutexdrop_trap, &args); 22 22 return psynch_errno(rv); 23 23 } 24 24
+1 -1
src/kernel/emulation/linux/psynch/psynch_mutexwait.c
··· 18 18 19 19 // __simple_printf("sys_psynch_mutexwait(mutex=%p, mgen=%x)\n", mutex, mgen); 20 20 21 - int rv = lkm_call(NR_psynch_mutexwait_trap, &args); 21 + int rv = lkm_call_raw(NR_psynch_mutexwait_trap, &args); 22 22 return psynch_errno(rv); 23 23 } 24 24
+1 -1
src/kernel/emulation/linux/psynch/psynch_rw_rdlock.c
··· 16 16 .flags = flags 17 17 }; 18 18 19 - int rv = lkm_call(NR_psynch_rw_rdlock, &args); 19 + int rv = lkm_call_raw(NR_psynch_rw_rdlock, &args); 20 20 return psynch_errno(rv); 21 21 } 22 22
+1 -1
src/kernel/emulation/linux/psynch/psynch_rw_unlock.c
··· 16 16 .flags = flags 17 17 }; 18 18 19 - int rv = lkm_call(NR_psynch_rw_unlock, &args); 19 + int rv = lkm_call_raw(NR_psynch_rw_unlock, &args); 20 20 return psynch_errno(rv); 21 21 } 22 22
+1 -1
src/kernel/emulation/linux/psynch/psynch_rw_wrlock.c
··· 16 16 .flags = flags 17 17 }; 18 18 19 - int rv = lkm_call(NR_psynch_rw_wrlock, &args); 19 + int rv = lkm_call_raw(NR_psynch_rw_wrlock, &args); 20 20 return psynch_errno(rv); 21 21 } 22 22
+2 -2
src/kernel/emulation/linux/psynch/ulock_wait.c
··· 21 21 bool no_errno = operation & ULF_NO_ERRNO; 22 22 23 23 24 - char dbg[100]; 24 + // char dbg[100]; 25 25 // __simple_sprintf(dbg, "ulock_wait on %p for %d ns", addr, timeout / 1000); 26 - lkm_call(0x1028, dbg); 26 + // lkm_call(0x1028, dbg); 27 27 28 28 if (timeout > 0) 29 29 {
+2 -2
src/kernel/emulation/linux/psynch/ulock_wake.c
··· 12 12 int ret, op; 13 13 bool no_errno = operation & ULF_NO_ERRNO; 14 14 15 - char buf[100]; 15 + // char buf[100]; 16 16 // __simple_sprintf(buf, "ulock_wake on %p", addr); 17 - lkm_call(0x1024, buf); 17 + // lkm_call(0x1024, buf); 18 18 19 19 op = operation & UL_OPCODE_MASK; 20 20 if (op == UL_COMPARE_AND_WAIT || op == UL_UNFAIR_LOCK)