ConnectQueues
Creates and configures the buffers that store the data moving to and from the device.
Declaration
virtual kern_return_t ConnectQueues(IOBufferMemoryDescriptor **ifmd, IOMemoryDescriptor **rxqmd, IOMemoryDescriptor **txqmd, IOMemoryDescriptor *in_rxqmd, IOMemoryDescriptor *in_txqmd, uint32_t in_rxqoffset, uint32_t in_txqoffset, uint8_t in_rxqlogsz, uint8_t in_txqlogsz);Parameters
- ifmd:
On return, a pointer to the memory buffer for storing interrupt-related data.
- rxqmd:
On return, a pointer to the memory buffer for storing data received from the device.
- txqmd:
On return, a pointer to the memory buffer for storing data ready to transmit to the device.
- in_rxqmd:
An existing memory buffer to configure and return in the
rxqmdparameter. SpecifyNULLif you want this method to create the memory buffer for you. If you specify your own buffer object, this method retains it. - in_txqmd:
An existing memory buffer to configure and return in the
txqmdparameter. SpecifyNULLif you want this method to create the memory buffer for you. If you specify your own buffer object, this method retains it. - in_rxqoffset:
The offset, in bytes, to the beginning of the
in_rxqmdbuffer. The offset represents the location at which the system starts accessing the buffer data. Specify0to indicate the beginning of the memory buffer. - in_txqoffset:
The offset, in bytes, to the beginning of the
in_txqmdbuffer. The offset represents the location at which the system starts accessing the buffer data. Specify0to indicate the beginning of the memory buffer. - in_rxqlogsz:
The base-2 logarithmic size of the buffer in the
in_rxqmdparameter. For example, specify14for a buffer that is 16 kilobytes (2^14 bytes) in size. Ifin_rxqmdisNULL, this method creates a 16k buffer regardless of the value in this parameter. - in_txqlogsz:
The base-2 logarithmic size of the buffer in the
in_txqmdparameter. For example, specify14for a buffer that is 16 kilobytes (2^14 bytes) in size. Ifin_txqmdisNULL, this method creates a 16k buffer regardless of the value in this parameter.
Return Value
kIOReturnSuccess on success, or another value if an error occurs. See Error Codes.
Discussion
When creating a custom serial driver, use this method to create or register the buffers that your driver uses to store data moving to and from the device. If you want to provide the memory buffers yourself, specify those values in the in_rxqmd and in_txqmd parameters. When creating custom buffers, always make the size of your buffers a power of 2. If you specify NULL for in_rxqmd and in_txqmd, this method creates new buffers for you.
This method returns pointers to the buffers in the rxqmd and txqmd parameters. It also returns the system-created buffer for storing interrupt-related data in the ifmd parameter.