Wake-and-Go Mechanism with Data Monitoring
First Claim
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
- detecting a thread that is waiting for an event associated with a target address, wherein the event is based on a value being written to the target address that relates to an expected data value by a comparison type;
populating, by a wake-and-go mechanism, a wake-and-go storage array with the target address, the expected data value, and the comparison type;
placing the thread in a sleep state;
responsive to an event that modifies a data value associated with the target address, determining whether to wake the thread; and
in response to a determination that the thread is to be awoken, placing the thread in a non-sleep state.
2 Assignments
0 Petitions
Accused Products
Abstract
A wake-and-go mechanism is provided for a data processing system. The wake-and-go mechanism recognizes a programming idiom, specialized instruction, operating system call, or application programming interface call that indicates that a thread is waiting for an event. The wake-and-go mechanism updates a wake-and-go array with a target address, expected data value, and comparison type associated with the event. The thread then goes to sleep until the event occurs. The wake-and-go array may be a content addressable memory (CAM). When a transaction appears on the symmetric multiprocessing (SMP) fabric that modifies the value at a target address in the CAM, logic associated with the CAM performs a comparison based on the data value being written, expected data value, and comparison type.
149 Citations
20 Claims
-
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
-
detecting a thread that is waiting for an event associated with a target address, wherein the event is based on a value being written to the target address that relates to an expected data value by a comparison type; populating, by a wake-and-go mechanism, a wake-and-go storage array with the target address, the expected data value, and the comparison type; placing the thread in a sleep state; responsive to an event that modifies a data value associated with the target address, determining whether to wake the thread; and in response to a determination that the thread is to be awoken, placing the thread in a non-sleep state. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A data processing system, comprising:
-
a wake-and-go mechanism; and a wake-and-go array, wherein the wake-and-go mechanism is configured to; detect a thread that is waiting for an event associated with a target address, wherein the event is based on a value being written to the target address that relates to an expected data value by a comparison type; populate the wake-and-go storage array with the target address, the expected data value, and the comparison type; place the thread in a sleep state; responsive to an event that modifies a data value associated with the target address, determine whether to wake the thread; and in response to a determination that the thread is to be awoken, place the thread in a non-sleep state. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer program product comprising a computer useable medium having a computer readable program, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
detect a thread that is waiting for an event associated with a target address, wherein the event is based on a value being written to the target address that relates to an expected data value by a comparison type; populate, by a wake-and-go mechanism, a wake-and-go storage array with the target address, the expected data value, and the comparison type; place the thread in a sleep state; responsive to an event that modifies a data value associated with the target address, determine whether to wake the thread; and in response to a determination that the thread is to be awoken, place the thread in a non-sleep state. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification