Claims
- 1. An apparatus for executing multithreaded, blocking, application-like functionality in kernel space, the apparatus comprising:
a work queue manager assigning a context thread representing at least a portion of the application-like functionality to a kernel thread for execution; a buffer manager allocating memory for use by the kernel thread; and a threading manager providing a context object associated with the kernel thread, the context object representing at least a portion of context thread work to be performed.
- 2. The apparatus of claim 1 wherein the threading manager provides a plurality of context objects and wherein one of the plurality of context objects is created at a control transfer point in the context thread execution flow.
- 3. The apparatus of claim 1 further comprising a synchronization manager providing a general purpose synchronization object used by the context thread to protect access to a system resource.
- 4. The apparatus of claim 3 wherein the synchronization object is provided with two separate states: locked and bound.
- 5. The apparatus of claim 1 further comprising a timer providing a time-out indication.
- 6. The apparatus of claim 1 wherein the buffer manager allocates memory using heap storage.
- 7. The apparatus of claim 1 wherein the buffer manager provides a buffer pool comprising fixed-size buffers.
- 8. The apparatus of claim 1 wherein the buffer manager provides a page pool comprising fixed-size, block-aligned storage objects.
- 9. The apparatus of claim 1 wherein the buffer manager provides a heap pool comprising variably-sized memory objects.
- 10. The apparatus of claim 1 further comprising a dispatcher/loader receiving a request and creating a context thread to service the request.
- 11. A data structure associated with a context thread executing in kernel space, the data structure comprising:
a definition flag stored in a memory element, said definition flag defining the associated context thread; an execution flag stored in a memory element, said execution flag controlling execution of the associated context thread; a pointer stored in a memory element indicating the currently executing context thread; and an address indicator stored in a memory element which stores the address of the associated context thread.
- 12. The data structure of claim 11 further comprising a status indicator stored in a memory element.
- 13. The data structure of claim 11 further comprising an exception indicator stored in a memory element.
- 14. A method for allowing in-kernel execution of multithreaded, blocking, application-like functionality, the method comprising the steps of:
(a) associating a data structure with a context thread representing at least a portion of multithreaded, blocking, application-like functionality to be executed, the data structure stored in a memory element; (b) storing context thread state in the data structure associated with the context thread; and (c) executing, responsive to the data structure, the context thread as one of a number of kernel threads executing on a processor.
- 15. The method of claim 14 further comprising the step of retrieving context thread state from the data structure associated with the context thread.
- 16. The method of claim 14 wherein step (b) further comprises:
(b-a) allocating, in response to a procedure call, memory space used by the context thread to store local variables and temporary computation space; and (b-b) storing an indication of the allocated memory space in the data structure associated with the context thread.
- 17. The method of claim 14 further comprising the step of generating a duplicate of the context thread by duplicating the data structure associated with the context thread.
- 18. An article of manufacture having computer-readable program means embodied therein, the article comprising:
(a) computer-readable program means for associating a data structure with a context thread representing at least a portion of multithreaded, blocking, application-like functionality to be executed, the data structure stored in a memory element; (b) computer-readable program means for storing context thread state in the data structure associated with the context thread; and (c) computer-readable program means for executing, responsive to the data structure, the context thread as one of a number of kernel threads executing on a processor.
- 19. The article of claim 18 further comprising computer-readable program means for retrieving context thread state from the data structure associated with the context thread.
- 20. The article of claim 18 wherein the computer-readable storing means further comprises:
(b-a) computer-readable program means for allocating, in response to a procedure call, memory space used by the context thread to store local variables and temporary computation space; and (b-b) computer-readable program means for storing an indication of the allocated memory space in the data structure associated with the context thread.
- 21. The article of claim 18 further comprising computer-readable program means for generating a duplicate of the context thread by duplicating the data structure associated with the context thread.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims the benefit of co-pending provisional application Serial No. 60/045,701 filed May 2, 1997.