Dequeuing from a host adapter two-dimensional queue
AssigneeAdaptec, Inc.
InventorB. Arlen Young
Life of this patent
Estimating the term…
Abstract
A two-dimensional command block queue includes a plurality of command blocks in a first linked list. One of the command blocks in a string is included in the first linked list. The string is delimited by only a tail pointer stored in a tail pointer list. Following dequeuing the string for processing, a pointer to the one command block of the string that was in the common queue is included in a string head pointer list. The tail pointer to the string is not changed in the tail pointer list following dequeuing of the string. This allows any new SCBs to be appended to the end of the string, while the string is being processed. This allows streaming of new SCBs to an I/O device that had previously been selected and is still connected to the host adapter.
Claims5
A method of managing a two-dimensional queue comprising:
- delimiting a first string of command blocks in said two-dimensional queue with a string tail pointer,
- wherein said string tail pointer addresses a tail command block in said first string;
- and
- said first string is coupled to another string of command blocks in said two-dimensional queue by a link;
- and
- dequeuing said first string from said two-dimensional queue by removing said link and leaving said string tail pointer unchanged.
A method comprising:
- testing a predefined location in a list of tail pointers to determine whether a string exists for a device specified in a command block;
- appending said command block to a tail of the string for said device upon said testing indicating that the string exists and independent of whether said string is included in a two-dimensional queue;
- and
- appending said command block to a tail of a common queue in said two-dimensional queue upon said testing indicating that the string does not exist.
Dependencies are inferred from the claim text.