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); \
|
||