diff --git a/README.md b/README.md index 40ee7533f6db8da5dffc0a0cbb78bd3c75e59e14..c83f697d92577bab3d8f6b64c3fd70af243da00c 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ The following students (in alphabetical order) have helped with various parts of The following students (in alphabetical order) have helped with various parts of libfibre: - Qin An (FreeBSD/kqueue) +- Bilal Akhtar (gdb extension) - Peng Chen (split stack support) - Wen Shi (gdb extension) diff --git a/src/libfibre/Poller.cc b/src/libfibre/Poller.cc index 556c5b95c0a83f37b49b10fd749d691308d0a9da..83636337c9ff7b0d64bde5b7a4e22f6fd0dad511 100644 --- a/src/libfibre/Poller.cc +++ b/src/libfibre/Poller.cc @@ -85,12 +85,13 @@ inline int MasterPoller::blockingPoll() { if (_lfEventEngine->tryblock<true>(timerFD)) { #if __linux__ uint64_t count; - SYSCALLIO(read(timerFD, (void*)&count, sizeof(count))); + if (TRY_SYSCALLIO(read(timerFD, (void*)&count, sizeof(count)), EAGAIN) < 0) goto skipTimeout; #endif Time currTime; SYSCALL(clock_gettime(CLOCK_REALTIME, &currTime)); defaultTimerQueue->checkExpiry(currTime); } +skipTimeout: return PollerThread::blockingPoll(); } diff --git a/src/libfibre/Poller.h b/src/libfibre/Poller.h index 13b70a1aa2bb1fcf7f166ca8d9e745f7774b2da0..651f6176ac3b21548531d4c5b2152202e6455e65 100644 --- a/src/libfibre/Poller.h +++ b/src/libfibre/Poller.h @@ -231,7 +231,7 @@ public: void finish() { #if !TESTING_POLLER_IDLETIMEDWAIT pollThreshold = 0; - pollCond.signal() + pollCond.signal(); #endif // !TESTING_POLLER_IDLETIMEDWAIT } #endif // TESTING_POLLER_IDLEWAIT diff --git a/src/libfibre/include/u++.h b/src/libfibre/include/u++.h index c5857b12370a5d6907de35656d9ae4d0787c6ea6..5090729a714e0f05af040bbe6f687b876b788ba6 100644 --- a/src/libfibre/include/u++.h +++ b/src/libfibre/include/u++.h @@ -11,7 +11,7 @@ typedef uProcessor SystemProcessor; #define CurrProcessor uThisProcessor -typedef uCluster FibreCluuster; +typedef uCluster FibreCluster; #define CurrCluster uThisCluster _Task Fibre { diff --git a/src/libfibre/lfbasics.h b/src/libfibre/lfbasics.h index 1884237b99e617c883a0f5108c7c3c7556b339a6..db9c1a98aeaf209f3b1b6a3161052aed0d30c7bc 100644 --- a/src/libfibre/lfbasics.h +++ b/src/libfibre/lfbasics.h @@ -270,10 +270,8 @@ extern void _lfNotifyTimeout(const Time& timeout); // **** global constants #ifdef SPLIT_STACK -static const size_t minimumStackSize = 2 * pagesize<1>(); static const size_t defaultStackSize = 2 * pagesize<1>(); #else -static const size_t minimumStackSize = 1 * pagesize<1>(); static const size_t defaultStackSize = 16 * pagesize<1>(); #endif static const size_t stackProtection = pagesize<1>();