Claims
- 1. A portable thread environment comprising:
an application programming interface configured to support multiple application program tasks, wherein each task is either a preemptive task comprised of preemptive threads or a cooperative task comprised of cooperative threads; host adaptation logic for communicatively interfacing said cooperative tasks, preemptive tasks, cooperative threads and preemptive threads with a host processing environment; and a scheduler configured to determine an execution order of cooperative threads and preemptive threads based on each cooperative thread's and preemptive thread's priority levels.
- 2. The portable thread environment as in claim 1 wherein threads of the same preemptive task or cooperative task have different priority levels.
- 3. The portable thread environment as in claim 1 wherein a currently running preemptive thread is suspended by a higher priority thread.
- 4. The portable thread environment as in claim 1 wherein a preemptive thread may suspend a currently running lower priority thread.
- 5. The portable thread environment as in claim 1 wherein a currently running cooperative thread is suspended when a preemptive higher priority thread is requested.
- 6. The portable thread environment as in claim 1 wherein a currently running cooperative thread of a task is not suspended when a requested cooperative thread of the task is requested.
- 7. The portable thread environment as in claim 1 wherein a currently running cooperative thread of a first task is suspended when a requested cooperative thread of a second task and having a higher priority level is requested.
- 8. The portable thread environment as in claim 1 wherein a first thread may change a priority level of a second thread.
- 9. A method for porting an application from a first host environment to a second host environment, comprising:
modeling functions supported by said application-specific hardware in the form of a first set of tasks within said application; removing said first set of tasks from said application; loading said application without said first set tasks to said second host environment, said application-specific hardware providing said functions provided by said first set of tasks in said first host environment; and configuring said first set of tasks and second set of tasks to communicate by passing a set of messages in said first host environment, wherein one or more of said set of messages are also used to provide communication between said first set of tasks and said application-specific hardware in said second host environment.
- 10. The method as in claim 9 further comprising:
interrupting the first set of tasks.
- 11. The method as in claim 10, wherein interrupting the first set of tasks further comprises:
determining an execution order of cooperative threads and preemptive threads based on each cooperative thread's and preemptive thread's priority levels.
- 12. The method as in claim 11, further comprising:
sustaining a currently running preemptive thread when a cooperative thread or preemptive thread of lower or equal priority is requested.
- 13. The method as in claim 11, further comprising:
suspending a currently running cooperative thread when a preemptive thread is requested.
- 14. The method as in claim 11, further comprising:
sustaining a currently running cooperative thread of a task when a requested cooperative thread of the task is requested.
- 15. The method as in claim 11, further comprising:
suspending a currently running cooperative thread of a first task when a requested cooperative thread of a second task and having a higher priority level is requested.
- 16. A portable application environment, comprising:
means for modeling functions supported by said application-specific hardware in the form of a first set of tasks within said application; means for removing said first set of tasks from said application; means for loading said application without said first set tasks to said second host environment, said application-specific hardware providing said functions provided by said first set of tasks in said first host environment; means for configuring said first set of tasks and second set of tasks to communicate by passing a set of messages in said first host environment, wherein one or more of said set of messages are also used to provide communication between said first set of tasks and said application-specific hardware in said second host environment; and means for passing the set of messages from a first thread to a second thread.
- 17. The portable application environment as in claim 17 further comprising:
means for interrupting the first set of tasks.
- 18. The portable application environment as in claim 17 further comprising:
means for determining an execution order of cooperative threads and preemptive threads based on each cooperative thread's and preemptive thread's priority levels.
- 19. The portable application environment as in claim 17 further comprising:
means for sustaining a currently running preemptive thread when a cooperative thread or preemptive thread having a lower or equal priority is requested.
- 20. The portable application environment as in claim 17 further comprising:
means for suspending a currently running preemptive thread when a higher priority cooperative thread or higher priority preemptive thread is requested.
- 21. The portable application environment as in claim 17 further comprising:
means for suspending a currently running cooperative thread when a higher priority preemptive thread is requested.
- 22. The portable application environment as in claim 17 further comprising:
means for sustaining a currently running cooperative thread of a task when a requested cooperative thread of the task is requested.
- 23. The portable application environment as in claim 17 further comprising:
means for suspending a currently running cooperative thread of a first task when a requested cooperative thread of a second task having a higher priority level is requested.
- 24. A computer-readable medium having stored thereon a plurality of instructions, said plurality of instructions when executed by a computer, cause said computer to perform:
modeling functions supported by said application-specific hardware in the form of a first set of tasks within said application; removing said first set of tasks from said application; loading said application without said first set tasks to said second host environment, said application-specific hardware providing said functions provided by said first set of tasks in said first host environment; configuring said first set of tasks and second set of tasks to communicate by passing a set of messages in said first host environment, wherein one or more of said set of messages are also used to provide communication between said first set of tasks and said application-specific hardware in said second host environment; and passing the set of messages from a first thread to a second thread.
- 25. The computer-readable medium of claim 24 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
interrupting the first set of tasks.
- 26. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
determining an execution order of cooperative threads and preemptive threads based on each cooperative thread's and preemptive thread's priority levels.
- 27. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
sustaining a currently running preemptive thread when a cooperative thread or preemptive thread having lower or equal priority is requested.
- 28. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
suspending a currently running preemptive thread when a higher priority cooperative thread or higher priority preemptive thread is requested.
- 29. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
suspending a currently running cooperative thread when a higher priority preemptive thread is requested.
- 30. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
sustaining a currently running cooperative thread of a task when a requested cooperative thread of the task is requested.
- 31. The computer-readable medium of claim 25 having stored thereon additional instructions, said additional instructions when executed by a computer, cause said computer to further perform:
suspending a currently running cooperative thread of a first task when a requested cooperative thread of a second task and having a higher priority level is requested.
Parent Case Info
[0001] This application claims the benefit of U.S. Provisional application Ser. No. 60/203,105, filed May 8, 2000. This application is a continuation-in-part of U.S. patent application Ser. No. 09/792,550 filed on Feb. 23, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60203105 |
May 2000 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09792550 |
Feb 2001 |
US |
Child |
09852351 |
May 2001 |
US |