TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Andrew Grillet
from: Mike Bilow
date: 1996-06-06 16:57:58
subject: ASM...

Andrew Grillet wrote in a message to Mike Bilow:

 VJ> My drivers are compiled small modell and I tried to avoid
 VJ> far pointers even more.  

 AG> I have used a far pointer for the IORB - why is this bad?

Certain operations require that the IORB or things pointed to by it be
near.  As a practical matter, the only reasonable way to handle passing
such things as SCSI status blocks is to tack them onto the end of an IORB
and pass the extended IORB as if it was a conventional IORB.

 MB> I just use small model and put IORB space in the default data segment.
 MB> The only requirement is that IORB space be accessible as
"near" data
 MB> and never be swapped or moved, and the default data segment of any
 MB> OS/2 device driver will fulfill those requirements.  

 AG> The IORB is surely in the App's adress space - how can it be
 AG> in the drivers default address space.

Applications should not be generating IORBs.  An IORB is a data structure
used by the storage device drivers to communicate with each other.  In
general, an IORB is allocated by and is considered owned by a DMD.  The DMD
may then pass the IORB through a FLT or directly to an ADD.  The ADD will
queue the IORB for processing and eventually return it up the chain to the
owner DMD, in which case the IORB serves as a kind of token representing
responsibility for the operation.  It is possible though unusual for IORBs
to be owned by components other than a DMD, as when a FLT splits a single
IORB into more than one.

Applications make requests through the file system interface or,
occasionally, directly through a DMD.  However, an IORB necessarily refers
to memory which is only accessible in Ring 0, and an application could not
get direct access to an IORB that would be meaningful even if a device
driver moved it back and forth as a raw buffer.

An IORB also has special addressing concerns.  It must be absolutely fixed
in physical memory, and cannot be swapped or even moved.  It must be
accessible regardless of driver mode, including an interrupt time.  It must
be accessible to DMA hardware because it can contain DMA structures such as
the head of the page list and can be implicated in scatter-gather.  While
the default data segment of the IORB's owner meets all these requirements,
considerable manual work would be required to allocate space for the IORB
anywhere else.
 
-- Mike


--- 
* Origin: N1BEE BBS +1 401 944 8498 V.34/V.FC/V.32bis/HST16.8 (1:323/107)
SEEN-BY: 50/99 270/101 620/243 711/401 409 410 413 430 808 809 934 955
SEEN-BY: 712/407 515 517 628 713/888 800/1
@PATH: 323/107 396/1 270/101 712/515 711/808 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.