Preemptive operating system without context switching
First Claim
1. A computer program product tangibly stored on a computer readable hardware storage device, the computer program product for managing constrained computing devices, the computer program product comprising instructions to cause a processor to:
- schedule user-defined independently executable functions to execute from a single stack common to all user-defined independently executable functions by the processor according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions, with the instructions to schedule further causing the processor to;
identify a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running;
preempt the currently running user-defined independently executable function by the instructions placing the particular user-defined independently executable function on the single stack that has register values for the currently running user-defined independently executable function, pushing down the state data of the currently running user-defined independently executable function lower in the stack;
execute the particular user-defined independently executable function; and
pop from the stack, all of the stack usage of the particular user-defined independently executable function, after execution of the particular user-defined independently executable function, and when the particular user-defined independently executable function completes running and returns, the preempted currently running function resumes running.
2 Assignments
0 Petitions
Accused Products
Abstract
A device, such as a constrained device that includes a processing device and memory, schedules user-defined independently executable functions to execute from a single stack common to all user-defined independently executable functions according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions and preempts currently running user-defined independently executable function by placing the particular user-defined independently executable function on a single stack that has register values for the currently running user-defined independently executable function.
56 Citations
29 Claims
-
1. A computer program product tangibly stored on a computer readable hardware storage device, the computer program product for managing constrained computing devices, the computer program product comprising instructions to cause a processor to:
-
schedule user-defined independently executable functions to execute from a single stack common to all user-defined independently executable functions by the processor according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions, with the instructions to schedule further causing the processor to; identify a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running; preempt the currently running user-defined independently executable function by the instructions placing the particular user-defined independently executable function on the single stack that has register values for the currently running user-defined independently executable function, pushing down the state data of the currently running user-defined independently executable function lower in the stack; execute the particular user-defined independently executable function; and pop from the stack, all of the stack usage of the particular user-defined independently executable function, after execution of the particular user-defined independently executable function, and when the particular user-defined independently executable function completes running and returns, the preempted currently running function resumes running. - View Dependent Claims (2, 3, 4)
-
-
5. A method executed in a real-time operating system environment on a constrained device that comprises a processor and memory, the method comprising:
-
scheduling by the processor in the constrained device, user-defined independently executable functions to execute from a stack common to all user-defined independently executable functions according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions; identifying by the processor a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running; preempting by the processor, the currently running user-defined independently executable function by placing the particular user-defined independently executable function on the stack that has register values for the currently running user-defined independently executable function, pushing down the state data of the currently running user-defined independently executable function lower in the stack; executing by the processor the particular user-defined independently executable function; popping from the stack all of the stack usage of the particular user-defined independently executable function, when the particular user-defined independently executable function completes running; and pushing up by the processor in the stack those register values of the preempted currently running independently executable function, after execution of the particular user-defined independently executable function to resume running the preempted currently running function. - View Dependent Claims (6, 7, 8)
-
-
9. A constrained device comprises:
-
a processor device, configured to; schedule by the processor user-defined independently executable functions to execute from a stack common to all user-defined independently executable functions according to availability and priority of the user-defined independently executable functions relative to others of the user-defined independently executable functions, with the processor further configured to; identify a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running; preempt the currently running user-defined independently executable function by the instructions placing the particular user-defined independently executable function on the stack that has register values for the currently running user-defined independently executable function, pushing down the state data of the currently running user-defined independently executable function lower in the stack; execute the particular user-defined independently executable function; and pop from the stack, all of the stack usage of the particular user-defined independently executable function, after execution of the particular user-defined independently executable function, and when the particular user-defined independently executable function completes running and returns, the preempted currently running function resumes running. - View Dependent Claims (10, 11)
-
-
12. A computer program product tangibly stored on a computer readable hardware storage device, the computer program product for schedule user-defined independently executable functions to execute on constrained computing devices, the computer program product comprising instructions to cause a processor to:
-
schedule in response to an interrupt a particular user-defined independently executable function of plural user-defined independently executable functions to execute by the processor from a stack that is common to all user-defined independently executable functions according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions, with the instructions to schedule further causing the processor to; identify a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running; check a stack depth to determine whether a maximum stack depth has not been exceeded; invoke preemption by a wrapped interrupt service routine to preempt the currently running user-defined independently executable function when the stack depth has not been exceeded; disable interrupts during preemption of the currently running user-defined independently executable function to provide an effective atomic sequence; execute the particular user-defined independently executable function; and mark the preempted currently running user-defined independently executable function for execution upon return from servicing of the interrupt by the interrupt service routine. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A constrained device comprises:
-
a processor device, configured to; memory in communication with the processor device, a computer readable hardware storage device, storing computer program instructions for scheduling user-defined independently executable functions to execute on the constrained device, the instructions to cause the processor to; schedule in response to an interrupt a particular user-defined independently executable function of plural user-defined independently executable functions to execute by the processor from a stack that is common to all user-defined independently executable functions according to availability and priority of the user-defined independently executable functions relative to other user-defined independently executable functions, with the instructions to schedule further causing the processor to; identify a particular user-defined independently executable function as ready to run, which user-defined independently executable functions is of higher priority than a user-defined independently executable function currently running; check a stack depth to determine whether a maximum stack depth has not been exceeded; invoke preemption by a wrapped interrupt service routine to preempt the currently running user-defined independently executable function when the stack depth has not been exceeded; disable interrupts during preemption of the currently running user-defined independently executable function to provide an effective atomic sequence; execute the particular user-defined independently executable function; and mark the preempted currently running user-defined independently executable function for execution upon return from servicing of the interrupt by the interrupt service routine. - View Dependent Claims (24, 25, 26, 27, 28, 29)
-
Specification