/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IOSleep.Linux.cpp Date: 2022-5-13 Author: Reece ***/ #include #include "IO.hpp" #include "IOSleep.Linux.hpp" #include "UNIX/IOSubmit.Linux.hpp" namespace Aurora::IO { AUKN_SYM bool WaitFor(AuUInt32 milliseconds, bool waitEntireFrame) { bool bHit {}; AuUInt32 targetTime = milliseconds ? AuTime::CurrentClockNS() + AuNSToMS(milliseconds) : 0; if (!milliseconds) { waitEntireFrame = false; } while (true) { AuUInt32 sleep; if (targetTime) { auto now = AuTime::CurrentClockNS(); if (now >= targetTime) { break; } sleep = AuNSToMS(now - targetTime); } else { sleep = 0; } if (!UNIX::LinuxOverlappedPoll(sleep)) { continue; } bHit = true; if (!waitEntireFrame) { break; } } return bHit; } AUKN_SYM bool IOYield() { AuLogWarn("TODO"); return false; } }