restarted_io->md.thr_bound_cpu = NULL;
__declspec(thread) PRThread  *_pr_current_fiber;__declspec(thread) PRThread  *_pr_fiber_last_run;__declspec(thread) _PRCPU    *_pr_current_cpu;__declspec(thread) PRUintn    _pr_ints_off;DWORD _pr_currentFiberIndex;DWORD _pr_lastFiberIndex;DWORD _pr_currentCPUIndex;DWORD _pr_intsOffIndex;_MDLock                       _nt_idleLock;PRCList                       _nt_idleList;PRUint32                        _nt_idleCount;extern __declspec(thread) PRThread *_pr_io_restarted_io;extern DWORD _pr_io_restartedIOIndex;/* Must check the restarted_io *before* decrementing no_sched to 0 */#define POST_SWITCH_WORK() \    PR_BEGIN_MACRO \        PRThread *restarted_io = \            (_pr_use_static_tls ? _pr_io_restarted_io \            : (PRThread *) TlsGetValue(_pr_io_restartedIOIndex)); \        if (restarted_io) { \            _nt_handle_restarted_io(restarted_io); \        } \        _PR_MD_LAST_THREAD()->no_sched = 0; \    PR_END_MACROvoid_nt_handle_restarted_io(PRThread *restarted_io){    /* After the switch we can resume an IO if needed.     * XXXMB - this needs to be done in create thread, since that could     * be the result for a context switch too..     */    PR_ASSERT(restarted_io->io_suspended == PR_TRUE);    _PR_THREAD_LOCK(restarted_io);    if (restarted_io->io_pending == PR_FALSE) {        /* The IO already completed, put us back on the runq. */        int pri = restarted_io->priority;        restarted_io->state = _PR_RUNNABLE;        _PR_RUNQ_LOCK(restarted_io->cpu);        _PR_ADD_RUNQ(restarted_io, restarted_io->cpu, pri);        _PR_RUNQ_UNLOCK(restarted_io->cpu);    } else {        _PR_SLEEPQ_LOCK(restarted_io->cpu);        _PR_ADD_SLEEPQ(restarted_io, restarted_io->sleep);        _PR_SLEEPQ_UNLOCK(restarted_io->cpu);    }    restarted_io->io_suspended = PR_FALSE;    _PR_THREAD_UNLOCK(restarted_io);    if (_pr_use_static_tls) {        _pr_io_restarted_io = NULL;    } else {        TlsSetValue(_pr_io_restartedIOIndex, NULL);    }}