Bug #3354 » bug-3354.patch
| thread.c | ||
|---|---|---|
| #define blocking_region_begin(th, region, func, arg) \ | ||
|   do { \ | ||
|     (region)->prev_status = (th)->status; \ | ||
|     (th)->blocking_region_buffer = (region); \ | ||
|     set_unblock_function((th), (func), (arg), &(region)->oldubf); \ | ||
|     (th)->blocking_region_buffer = (region); \ | ||
|     (th)->status = THREAD_STOPPED; \ | ||
|     thread_debug("enter blocking region (%p)\n", (void *)(th)); \ | ||
|     RB_GC_SAVE_MACHINE_CONTEXT(th); \ | ||