this repo has no description
1
fork

Configure Feed

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

Fix cvwait hangs

+11 -2
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvwait.c
··· 6 6 #include "../../../../lkm/api.h" 7 7 #include "../simple.h" 8 8 9 - long sys_psynch_cvwait(void* cv, uint32_t cvgen, uint32_t cvugen, void* mutex, uint32_t mgen, 9 + long sys_psynch_cvwait(void* cv, uint32_t cvgen, uint32_t cvugen, void* mutex, uint64_t mgen, 10 10 uint32_t ugen, uint64_t sec, uint32_t usec) 11 11 { 12 12 struct psynch_cvwait_args args = {
+1 -1
src/kernel/emulation/linux/psynch/psynch_cvwait.h
··· 2 2 #define LINUX_PSYNCH_CVWAIT_H 3 3 #include <stdint.h> 4 4 5 - long sys_psynch_cvwait(void* cv, uint32_t cvgen, uint32_t cvugen, void* mutex, uint32_t mgen, 5 + long sys_psynch_cvwait(void* cv, uint32_t cvgen, uint32_t cvugen, void* mutex, uint64_t mgen, 6 6 uint32_t ugen, uint64_t sec, uint32_t usec); 7 7 8 8 #endif
+5
src/kernel/emulation/linux/psynch/ulock_wait.c
··· 20 20 struct timespec ts; 21 21 bool no_errno = operation & ULF_NO_ERRNO; 22 22 23 + 24 + char dbg[100]; 25 + __simple_sprintf(dbg, "ulock_wait on %p for %d ns", addr, timeout / 1000); 26 + lkm_call(0x1028, dbg); 27 + 23 28 if (timeout > 0) 24 29 { 25 30 ts.tv_sec = timeout / 1000*1000;
+4
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]; 16 + __simple_sprintf(buf, "ulock_wake on %p", addr); 17 + lkm_call(0x1024, buf); 18 + 15 19 op = operation & UL_OPCODE_MASK; 16 20 if (op == UL_COMPARE_AND_WAIT || op == UL_UNFAIR_LOCK) 17 21 {