public static int Nanosleep(Thread current, ref Arch.ExceptionRegisters regs, UserPtr rqtp, UserPtr rmtp) { timespec ts; timespec trem; trem.tv_sec = 0; trem.tv_nsec = 0; if (rqtp.Read(current, out ts) != 0 || rmtp.Write(current, ref trem) != 0) { return(-ErrorCode.EFAULT); } Globals.TimeoutQueue.Enqueue(ts.ToMilliseconds(), current); var c = new SleepCompletion(current); Globals.CompletionQueue.Enqueue(c); current.SaveState(ref regs); current.AsyncReturn = true; return(0); }
public static int Nanosleep(Thread current, ref Arch.ExceptionRegisters regs, UserPtr rqtp, UserPtr rmtp) { timespec ts; timespec trem; trem.tv_sec = 0; trem.tv_nsec = 0; if (rqtp.Read(current, out ts) != 0 || rmtp.Write(current, ref trem) != 0) return -ErrorCode.EFAULT; Globals.TimeoutQueue.Enqueue(ts.ToMilliseconds(), current); var c = new SleepCompletion(current); Globals.CompletionQueue.Enqueue(c); current.SaveState(ref regs); current.AsyncReturn = true; return 0; }