Driver assisted asynchronous command processing
AssigneeVIA Technologies, Inc.
InventorGuofeng Zhang
Life of this patent
Estimating the term…
Abstract
A method for assisting multi-threaded command execution by a driver in a multi-core computer system, is disclosed. The method includes distinguishing asynchronous commands from synchronous commands, buffering the asynchronous commands in a buffer, processing the synchronous commands directly in a CPU driver thread, processing the asynchronous commands from the buffer by one or more CPU work threads, wherein multiple threads of the multi-core computer system can be utilized at the same time; and managing the buffer after the buffer is processed by the CPU work thread, wherein the command executions appear to be just like single-threaded to application software.
Claims23
A method for assisting multi-threaded command execution by a driver in a multi-core computer system, the method comprising:
- separating asynchronous commands from synchronous commands by a device driver interface (DDI);
- buffering the asynchronous commands with corresponding event tags in a buffer, wherein the buffering further comprises:
- searching for resources provided to the buffered asynchronous commands by the DDI;
- changing the resources by issuing DDI returns;
- copying the changed resources to a driver allocated memory;
- and
- modifying the buffered asynchronous commands by the DDI to refer the modified and buffered asynchronous commands to the driver allocated memory;
- processing the asynchronous commands from the buffer by a first CPU thread;
- and
- processing the synchronous commands by a second CPU thread, wherein the step of processing the synchronous commands is finished before issuing the DDI returns.
A method for assisting multi-threaded command execution by a driver in a multi-core computer system, the method comprising:
- separating asynchronous commands from synchronous commands by a device driver interface (DDI);
- buffering the asynchronous commands in a buffer, wherein the buffering further comprises:
- searching for resources provided to the buffered asynchronous commands by the DDI;
- changing the resources by issuing DDI returns;
- copying the changed resources to a driver allocated memory;
- and
- modifying the buffered asynchronous commands by the DDI to refer the modified and buffered asynchronous commands to the driver allocated memory;
- processing the asynchronous commands from the buffer by a first CPU thread;
- and
- processing the synchronous commands by a second CPU thread, wherein the step of processing the synchronous commands is finished before issuing the DDI returns.
A method for assisting multi-threaded command execution by a driver in a multi-core computer system, the method comprising:
- separating asynchronous commands from synchronous commands by a device driver interface (DDI);
- buffering the asynchronous commands in a buffer, wherein the buffering further includes:
- searching for resources provided to the buffered asynchronous commands by the DDI;
- changing the resources by issuing DDI returns;
- copying the changed resources to a driver allocated memory;
- and
- modifying the buffered asynchronous commands by the DDI to refer the modified and buffered asynchronous commands to the driver allocated memory;
- checking the buffer for any error which occurred during said copying and modifying steps;
- processing the asynchronous commands from the buffer by a first CPU thread;
- and
- processing the synchronous commands by a second CPU thread, wherein the stems commands is finished before issuing the DDI returns.
Dependencies are inferred from the claim text.