|
|
DDI and ODDI support various facilities for copying data between different locations. These are summarized in the following table:
Action | DDI | ODDI |
---|---|---|
Copy between kernel addresses | bcopy(D3) | bcopy(D3oddi) |
Copy from user space to kernel space | copyin(D3) | copyin(D3oddi) |
Copy from kernel space to user space | copyout(D3) | copyout(D3oddi) |
Copy between any two addresses | -- | copyio(D3oddi) |
Copy between any two addresses and update uio structure | uiomove(D3) | -- |
Copy between any two addresses and update user area | -- | iomove(D3oddi) |
Copy byte from user space to kernel space | -- |
fubyte(D3oddi)
cpass(D3oddi) |
Copy 32-bit word from user space to kernel space | -- | fuword(D3oddi) |
Copy byte from kernel space to user space | -- |
subyte(D3oddi)
passc(D3oddi) |
Copy 32-bit word from kernel space to user space | -- | suword(D3oddi) |
DDI 8 and later drivers can access memory above the 4GB boundary. Drivers written for SCO OpenServer 5 and earlier DDI versions cannot access large memory.
The two uses of large memory are: