From 4becd5a1b2f8b1e537171fefe6e90aa984a6e756 Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Fri, 16 Mar 2001 01:20:02 +0000 Subject: This patch fixes a scheduling bug and is to be incorporated in the next version. In the meantime, apply with the port. FYI, the bug is demonstrated by this program: #include #include #include static int check_something(void *arg) { return (0); } static void *thread(void *arg) { printf("thread sleeping five seconds...\n"); pth_nap(pth_time(5, 0)); printf("thread is done sleeping\n"); /* bug: we never get here */ return (NULL); } int main(int ac, char **av) { pth_event_t ev; pth_init(); pth_spawn(NULL, thread, NULL); ev = pth_event(PTH_EVENT_FUNC, check_something, NULL, pth_time(2, 0)); while (1) pth_wait(ev); } --- devel/pth/files/patch-aa | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 devel/pth/files/patch-aa (limited to 'devel/pth/files/patch-aa') diff --git a/devel/pth/files/patch-aa b/devel/pth/files/patch-aa new file mode 100644 index 000000000000..53e5c233ccd8 --- /dev/null +++ b/devel/pth/files/patch-aa @@ -0,0 +1,14 @@ +--- pth_sched.c.broken Fri Mar 10 02:58:32 2000 ++++ pth_sched.c Fri Feb 16 20:21:57 2001 +@@ -763,8 +763,10 @@ + } + + /* perhaps we have to internally loop... */ +- if (loop_repeat) ++ if (loop_repeat) { ++ pth_time_set(now, PTH_TIME_NOW); + goto loop_entry; ++ } + + pth_debug1("pth_sched_eventmanager: leaving"); + return; -- cgit v1.2.3