Inter-thread long jumps in a multithreaded environment
First Claim
1. A method in a computer system for performing an inter-thread long jump, the method comprising:
- receiving an indication of a set jump location, the set jump location set by a set jump thread;
determining whether the set jump thread that set the set jump location is the same thread that is currently executing; and
when the set jump thread is not the same thread that is currently executing, setting a state of the set jump thread to execute a long jump indicating the set jump location.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system that prepares a task for being swapped out from processor utilization that is executing on a computer with multiple processors that each support multiple streams. The task has one or more teams of threads, where each team represents threads executing on a single processor. The task designates, for each stream that is executing a thread, one stream as a team master stream and one stream as a task master stream. For each team master stream, the task notifies the operating system that the team is ready to be swapped out when each other thread of the team has saved its state and has quit its stream. Finally, for the task master stream, the task notifies the operating system that the task is ready to be swapped when it has saved its state and each other team has notified that it is ready to be swapped out.
92 Citations
32 Claims
-
1. A method in a computer system for performing an inter-thread long jump, the method comprising:
-
receiving an indication of a set jump location, the set jump location set by a set jump thread; determining whether the set jump thread that set the set jump location is the same thread that is currently executing; and when the set jump thread is not the same thread that is currently executing, setting a state of the set jump thread to execute a long jump indicating the set jump location. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system having a processor for performing an inter-thread long jump, the system comprising:
-
a processing component; a component executing on the processing component that determines whether a set jump thread that set a set jump location is the same thread that is currently executing; and a component executing on the processing component that, when the set jump thread is not the same thread that is currently executing, sets a state of the set jump thread to transfer control to the set jump location. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method in a computer system for performing an inter-thread long jump, the method comprising:
-
under control of a set jump function, storing a current stream state, the current stream state including a return address; and under control of a long jump function, when the long jump function is invoked by a thread that is different from a thread that invoked the set jump function, locating state information for the thread that invoked the set jump function in the restored stream state; setting a program counter in the located state information to point to an instruction that invokes the long jump function; and under control of the thread that invoked the set jump function, performing a long jump by executing the instruction pointed to by the program counter wherein the long jump function deallocates memory allocated since the set jump function was invoked; restores the stored stream state; and jumps to the return address included in the restored stream state. - View Dependent Claims (20, 21)
-
-
22. A method in a long jump thread of a computer system for performing an inter-thread long jump to a location in a set jump thread, the method comprising:
in a second thread different from a set jump thread, receiving information relating to the set jump thread; retrieving a thread identifier for the set jump thread from the received information; retrieving a thread control block for the set jump thread based on the retrieved thread identifier; determining from the retrieved thread control block a state of the set jump thread; and causing, based on the determined state, the set jump thread to execute at a set jump location. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
Specification