Changeset 13102


Ignore:
Timestamp:
Oct 27, 2009, 11:08:15 AM (10 years ago)
Author:
gb
Message:

In the windows version of raise_thread_interrupt(), don't try to
use either CancelIoEx? (if it exists ...) or CancelIo?() to cancel
pending I/O operations. (This probably means that we can drop
the stuff that maintains tcr->pending_io.) CancelIo?() only cancels
requests made by the calling thread (useful ...), and CancelIoEx?()
seems to require that the thread doing the indicated I/O operation
is runnable (not suspended); we don't have a good idea of what I/O
operations are pending unless the thread's suspended. What a steaming
pile of crap Windows is ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/thread_manager.c

    r13067 r13102  
    106106       !((where < (pc) (ts->high)) &&
    107107         (where >= (pc) (ts->low))))) {
     108
     109    target->interrupt_pending = (1LL << (nbits_in_word - 1LL));
     110
     111#if 0
    108112    /* If the thread's in a blocking syscall, it'd be nice to
    109113       get it out of that state here. */
    110114    GetThreadIOPendingFlag(hthread,&io_pending);
    111     target->interrupt_pending = (1LL << (nbits_in_word - 1LL));
    112115    if (io_pending) {
    113116      pending_io * pending = (pending_io *) (target->pending_io_info);
     
    120123      }
    121124    }
     125#endif
    122126    if (pCancelSynchronousIo) {
    123127      pCancelSynchronousIo(hthread);
Note: See TracChangeset for help on using the changeset viewer.