![]() |
![]() |
#21 |
Registered User
Join Date: Jan 2017
Location: London, UK
Posts: 433
|
Ok, some more, perhaps stupid questions.
When you open a device, you establish a “communication channel” with that device via a single IORequest messsage. So you can use this to submit commands to the device and receive responses (if required), via this IORequest. What formal process is there for streaming commands to a device? Say that I don’t care about any response, I just want to send an arbitrary number of command messages to the device, and it is up to the device to handle them (or not), my task doesn’t care, it just wants to send several command messages and then move on (maybe terminate, or whatever), relying on the device’s message port queue to ensure the device received them. |
![]() |
![]() |
#22 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,313
|
Quote:
Typically, you would allocate a limited number of requests and SendIO() them, when you run out of them, you wait for the signal of the reply port, and then CheckIO() which of the requests became ready. On such a request, you WaitIO() to dequeue it from the port - it is then ready for recycling, and can be SendIO()'d again. The FFS (and many other file systems) create IORequests whose io_Node.ln_Name points to a struct DosPacket of type ACTION_READ_RETURN or ACTION_WRITE_RETURN. This way, when the packet is replied by the device, the FFS (or other handler) receive a "pseudo packet" of the particular type (ACTION_READ_RETURN) and then continue with the activity. Actually, what FFS does is that it creates a co-routine for every file handle, and on ACTION_READ_RETURN this co-routine continues to operate. As of 3.1.4, CrossDos and the CDFileSystem work the same - this way, FFS can continue to serve requests while the device (e.g. the trackdisk.device) is busy. |
|
![]() |
![]() |
#23 | ||||
Registered User
Join Date: Jan 2017
Location: London, UK
Posts: 433
|
Quote:
Quote:
As you are essentially batching all your requests. Quote:
Quote:
Many thanks for your insight again! |
||||
![]() |
![]() |
#24 | |||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,313
|
Quote:
Quote:
Quote:
The FFS is actually smarter than one thinks - at least as far as the asynchronous I/O handling is the case. The adminsitration disk structure is from days in the past. |
|||
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Exec library codes | millis | support.Other | 2 | 21 July 2017 19:22 |
LVO tables in exec libraries | bloodline | Coders. System | 2 | 25 February 2017 15:35 |
CDTV exec.library | Arnie | support.WinUAE | 19 | 18 February 2016 13:11 |
debugging session with exec lib | pixel | Coders. Asm / Hardware | 4 | 20 May 2014 23:49 |
exec.library problem with VisualPrefs | oldpx | support.Apps | 4 | 29 August 2002 00:18 |
|
|