mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 06:15:26 +00:00
48 lines
1.2 KiB
Text
48 lines
1.2 KiB
Text
|
|
||
|
|
||
|
|
||
|
ActivePoll -> Timer, Dpc, Handles
|
||
|
|
||
|
|
||
|
FCB -> Polls Involved In ...
|
||
|
|
||
|
|
||
|
What poll needs to do:
|
||
|
Accumulate:
|
||
|
for each fcb
|
||
|
If error is set, check error condition on fcb on entry
|
||
|
If writable is set, check fcb on entry for zero send content
|
||
|
If readable is set, check fcb has nonzero read content
|
||
|
|
||
|
If any handle was not valid, complete fail
|
||
|
|
||
|
If any of the above checks were true, complete success
|
||
|
Otherwise:
|
||
|
make an active poll object
|
||
|
for each fcb, make a poll entry
|
||
|
chain the poll entry to the fcb
|
||
|
set summary bits in fcb state for polling (what must be polled)
|
||
|
chain the active poll object to the device ext
|
||
|
set timer and dpc
|
||
|
pending
|
||
|
|
||
|
complete select:
|
||
|
for each fcb
|
||
|
find the poll entry in the fcb and unchain it
|
||
|
rescan poll bits for this fcb
|
||
|
get irp from poll object, and deallocate poll object
|
||
|
complete irp
|
||
|
|
||
|
select timeout:
|
||
|
Find the poll object in the device ext chain and unchain it
|
||
|
complete select with timeout
|
||
|
|
||
|
fcb send complete and connect complete:
|
||
|
if no more send irps and send bit set in summary
|
||
|
find each poll entry with send bit set and complete select with (1) on it
|
||
|
|
||
|
fcb recv complete:
|
||
|
if fcb has recv data and recv bit set in summary
|
||
|
find each poll entry with recv bit set and complete select with (1) on it
|
||
|
|