Fix Windows overlapped timeout code for microseconds
parent
d3d57c800b
commit
b48c051b1b
|
@ -48,12 +48,12 @@ M: winnt add-completion ( win32-handle -- )
|
||||||
} cond
|
} cond
|
||||||
] with-timeout ;
|
] with-timeout ;
|
||||||
|
|
||||||
:: wait-for-overlapped ( ms -- bytes-transferred overlapped error? )
|
:: wait-for-overlapped ( us -- bytes-transferred overlapped error? )
|
||||||
master-completion-port get-global
|
master-completion-port get-global
|
||||||
0 <int> [ ! bytes
|
0 <int> [ ! bytes
|
||||||
f <void*> ! key
|
f <void*> ! key
|
||||||
f <void*> [ ! overlapped
|
f <void*> [ ! overlapped
|
||||||
ms INFINITE or ! timeout
|
us 1000 /i INFINITE or ! timeout
|
||||||
GetQueuedCompletionStatus zero?
|
GetQueuedCompletionStatus zero?
|
||||||
] keep *void*
|
] keep *void*
|
||||||
] keep *int spin ;
|
] keep *int spin ;
|
||||||
|
@ -61,7 +61,7 @@ M: winnt add-completion ( win32-handle -- )
|
||||||
: resume-callback ( result overlapped -- )
|
: resume-callback ( result overlapped -- )
|
||||||
pending-overlapped get-global delete-at* drop resume-with ;
|
pending-overlapped get-global delete-at* drop resume-with ;
|
||||||
|
|
||||||
: handle-overlapped ( timeout -- ? )
|
: handle-overlapped ( us -- ? )
|
||||||
wait-for-overlapped [
|
wait-for-overlapped [
|
||||||
dup [
|
dup [
|
||||||
>r drop GetLastError 1array r> resume-callback t
|
>r drop GetLastError 1array r> resume-callback t
|
||||||
|
@ -75,7 +75,7 @@ M: winnt add-completion ( win32-handle -- )
|
||||||
M: win32-handle cancel-operation
|
M: win32-handle cancel-operation
|
||||||
[ check-disposed ] [ handle>> CancelIo drop ] bi ;
|
[ check-disposed ] [ handle>> CancelIo drop ] bi ;
|
||||||
|
|
||||||
M: winnt io-multiplex ( ms -- )
|
M: winnt io-multiplex ( us -- )
|
||||||
handle-overlapped [ 0 io-multiplex ] when ;
|
handle-overlapped [ 0 io-multiplex ] when ;
|
||||||
|
|
||||||
M: winnt init-io ( -- )
|
M: winnt init-io ( -- )
|
||||||
|
|
Loading…
Reference in New Issue