Claims
- 1. A system for scheduling the order of launch of tasks, the system comprising:
a plurality of tasks, each task comprising one or more executable actions; a plurality of next task indicators, each next task indicator being associated with a respective task, each next task indicator indicating the task which is to be launched after the completion of its respective task; a plurality of next action indicators, each next action indicator being associated with a respective task, each next action indicator indicating an action to be executed upon the launch of its respective task; and a task launcher operative to launch the tasks and execute the actions, the task launcher launching the tasks in an order related to the next task indicators of the tasks, the task launcher, upon launch of a task, executing the action indicated by the next action indicator associated with the launched task.
- 2. The system of claim 1, wherein one or more of the actions are operable to modify a next action indicator.
- 3. The system of claim 2, wherein one or more of the actions are operable to modify a next task indicator.
- 4. The system of claim 3, wherein the task launcher comprises a plurality of task launch points, each task launch point being associated with a respective task.
- 5. The system of claim 4, further comprising a general purpose computer and a computer readable medium associated with the general purpose computer, wherein each of the tasks comprises one or more computer executable actions stored on the computer readable medium and the task launcher comprises a computer executable routine stored on the computer readable medium.
- 6. The system of claim 5, wherein each next action indicator comprises a pointer to a respective task launch point and wherein each next action indicator comprises a pointer to an action.
- 7. The system of claim 3, further comprising a general purpose computer and a computer readable medium associated with the general purpose computer, wherein each of the tasks comprises one or more computer executable actions stored on the computer readable medium and the task launcher comprises a computer executable routine stored on the computer readable medium, wherein the routine comprises the steps of:
(a) launching a first task; (b) executing an action indicated by the next action indicator associated with the first task; (c) launching a second task indicated by the next task indicator associated with the first task; and (d) executing an action indicated by the next action indicator associated with the second task.
- 8. The system of claim 3, further comprising a hard disc drive having a microprocessor and a memory associated with the microprocessor, wherein each of the tasks comprises one or more microprocessor executable actions stored on the memory and the task launcher comprises a microprocessor executable routine stored on memory, wherein the routine comprises the steps of:
(a) launching a first task; (b) executing an action indicated by the next action indicator associated with the first task; (c) launching a second task indicated by the next task indicator associated with the first task; and (d) executing an action indicated by the next action indicator associated with the second task.
- 9. The system of claim 8, wherein each of the tasks is cooperative.
- 10. The system of claim 9, further comprising a preemptive microprocessor executable routine operable to interrupt execution of the task launcher.
- 11. The system of claim 10, wherein at least one microprocessor executable action comprises program code written in assembly language and the task launcher comprises a microprocessor executable routine written in a high level programming language.
- 12. A method for dynamically scheduling a plurality of tasks in a data processing system including a processor and an associated memory, each task comprising one or more associated processor executable actions stored in the memory, an associated next action indicator which indicates the location in memory of an action associated with the task, an associated task launch point, and an associated next task indicator which indicates the location in memory of the task launch point associated with the task, the method comprising steps of:
(a) launching a first task; (b) executing an action indicated by the next action indicator associated with the first task; (c) launching a second task indicated by the next task indicator associated with the first task; and (e) executing an action indicated by the next action indicator associated with the second task.
- 13. The method of claim 12, wherein each next task indicator comprises a pointer to an associated task launch point and wherein each next action indicator comprises a pointer to an associated action.
- 14. The method of claim 12, wherein:
the launching step (a) comprises branching to an address pointed to by the next action indicator associated with the first task; the executing step (b) comprises:
(b)(i) executing an action at the address pointed to by the next action indicator associated with the first task; and (b)(ii) branching to an address pointed to by the next task indicator associated with the first task; the launching step (c) comprises branching to an address pointed to by the next action indicator associated with the second task; and the executing step (d) comprises:
(d)(i) pushing a next task indicator associated with the second task; (d)(ii) executing an action at the address pointed to by the next action indicator associated with the second task; and (d)(iii) returning to the address pointed to by the next task indicator associated with the second task.
- 15. The method of claim 12, wherein the data processing system further includes a memory based list-in-first-out stack and wherein:
the launching step (a) comprises:
(a)(i) loading the next action indicator associated with the first task; and (a)(ii) branching to the address pointed to by the next action indicator associated with the first task; the executing step (b) comprises:
(b)(i) executing the action at the address pointed to by the next action indicator associated with the first task; (b)(ii) loading the next task indicator associated with the first task; and (b)(iii) branching to the address pointed to by the next task indicator associated with the first task; the launching step (c) comprises:
(c)(i) loading the next action indicator associated with the second task; and (c)(ii) branching to the address pointed to by the next action indicator associated with the first task; and the executing step (d) comprises:
(d)(i) pushing the next task indicator associated with the second task; (d)(ii) executing the code at the location pointed to by the next action indicator associated with the second task; and (d)(iii) returning to the address pointed to by the next task indicator associated with the second task.
- 16. The method of claim 12 wherein:
the data processing system further includes a hardware stack, a software stack, an auxiliary register pointer, a first task complete function which sets the auxiliary register to indicate use of the software stack, and a first task complete pointer which points to the first task complete function; the first task comprises program code written in assembly language; the second task comprises program code written in a high level programming language; the launching step (a) comprises:
(a)(i) pushing the next task indicator associated with the first task onto the hardware stack; (a)(ii) loading the next action pointer associated with the first task; and (a)(iii) branching to the address pointed to by the next action pointer associated with the first task; the executing step (b) comprises:
(b)(i) executing the action at the address pointed to by the next action indicator associated with the first task; (b)(ii) loading the first task complete pointer; and (b)(iii) branching to the address pointed to by the first task complete pointer and executing the first task complete function; the launching step (c) comprises:
(c)(i) pushing the next task indicator associated with the second task onto the hardware stack; (c)(ii) loading the next action pointer associated with the second task; and (c)(iii) branching to the address pointed to by the next action pointer associated with the second task; and the executing step (d) comprises:
(d)(i) pushing the next task indicator associated with the second task onto the software stack; (d)(ii) executing the code at the location pointed to by the next action indicator associated with the second task; and (d)(iii) returning to the address pointed to by the next task indicator associated with the second task.
- 17. The method of claim 15, wherein the high level programming language is “C” programming language.
- 18. The method of claim 12, wherein the data processing system is a hard disc drive and the processor comprises a digital signal processor.
- 19. The method of claim 18, further comprising a preemptive processor executable routine operable to interrupt execution of the task launcher and wherein each of the tasks is cooperative.
- 20. A system for scheduling the order of launch of a plurality of tasks in a disc drive:
a microprocessor having an associated memory storing a plurality of tasks; and a means in the memory for scheduling the launch order of the plurality of tasks.
RELATED APPLICATIONS
[0001] This application claims priority of U.S. provisional application Ser. No. 60/181,022, filed Feb. 8, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60181022 |
Feb 2000 |
US |