Lines Matching refs:pTrigger

145 SyncDeleteTriggerFromSyncObject(SyncTrigger * pTrigger)
151 /* pSync needs to be stored in pTrigger before calling here. */
153 if (!pTrigger->pSync)
157 pCur = pTrigger->pSync->pTriglist;
160 if (pCur->pTrigger == pTrigger) {
164 pTrigger->pSync->pTriglist = pCur->next;
174 if (SYNC_COUNTER == pTrigger->pSync->type) {
175 pCounter = (SyncCounter *) pTrigger->pSync;
180 else if (SYNC_FENCE == pTrigger->pSync->type) {
181 SyncFence *pFence = (SyncFence *) pTrigger->pSync;
183 pFence->funcs.DeleteTrigger(pTrigger);
188 SyncAddTriggerToSyncObject(SyncTrigger * pTrigger)
193 if (!pTrigger->pSync)
197 for (pCur = pTrigger->pSync->pTriglist; pCur; pCur = pCur->next) {
198 if (pCur->pTrigger == pTrigger)
205 pCur->pTrigger = pTrigger;
206 pCur->next = pTrigger->pSync->pTriglist;
207 pTrigger->pSync->pTriglist = pCur;
209 if (SYNC_COUNTER == pTrigger->pSync->type) {
210 pCounter = (SyncCounter *) pTrigger->pSync;
215 else if (SYNC_FENCE == pTrigger->pSync->type) {
216 SyncFence *pFence = (SyncFence *) pTrigger->pSync;
218 pFence->funcs.AddTrigger(pTrigger);
225 * pTrigger->CheckTrigger for counter sync objects, corresponding to
227 * can be plugged into pTrigger->CheckTrigger for fence sync objects.
234 * All of them include the condition pTrigger->pSync == NULL.
240 SyncCheckTriggerPositiveComparison(SyncTrigger * pTrigger, int64_t oldval)
246 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_COMPARE))
249 pCounter = (SyncCounter *) pTrigger->pSync;
251 return pCounter == NULL || pCounter->value >= pTrigger->test_value;
255 SyncCheckTriggerNegativeComparison(SyncTrigger * pTrigger, int64_t oldval)
261 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_COMPARE))
264 pCounter = (SyncCounter *) pTrigger->pSync;
266 return pCounter == NULL || pCounter->value <= pTrigger->test_value;
270 SyncCheckTriggerPositiveTransition(SyncTrigger * pTrigger, int64_t oldval)
276 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_COMPARE))
279 pCounter = (SyncCounter *) pTrigger->pSync;
282 (oldval < pTrigger->test_value &&
283 pCounter->value >= pTrigger->test_value));
287 SyncCheckTriggerNegativeTransition(SyncTrigger * pTrigger, int64_t oldval)
293 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_COMPARE))
296 pCounter = (SyncCounter *) pTrigger->pSync;
299 (oldval > pTrigger->test_value &&
300 pCounter->value <= pTrigger->test_value));
304 SyncCheckTriggerFence(SyncTrigger * pTrigger, int64_t unused)
306 SyncFence *pFence = (SyncFence *) pTrigger->pSync;
314 SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
317 SyncObject *pSync = pTrigger->pSync;
346 if (pTrigger->value_type != XSyncRelative &&
347 pTrigger->value_type != XSyncAbsolute) {
348 client->errorValue = pTrigger->value_type;
354 if (pTrigger->value_type == XSyncAbsolute)
355 pTrigger->test_value = pTrigger->wait_value;
362 overflow = checked_int64_add(&pTrigger->test_value,
363 pCounter->value, pTrigger->wait_value);
365 client->errorValue = pTrigger->wait_value >> 32;
374 pTrigger->CheckTrigger = SyncCheckTriggerFence;
379 switch (pTrigger->test_type) {
381 pTrigger->CheckTrigger = SyncCheckTriggerPositiveTransition;
384 pTrigger->CheckTrigger = SyncCheckTriggerNegativeTransition;
387 pTrigger->CheckTrigger = SyncCheckTriggerPositiveComparison;
390 pTrigger->CheckTrigger = SyncCheckTriggerNegativeComparison;
393 client->errorValue = pTrigger->test_type;
400 if (pSync != pTrigger->pSync) { /* new counter for trigger */
401 SyncDeleteTriggerFromSyncObject(pTrigger);
402 pTrigger->pSync = pSync;
411 SyncAddTriggerToSyncObject(pTrigger);
429 SyncTrigger *pTrigger = &pAlarm->trigger;
432 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_ALARM))
435 pCounter = (SyncCounter *) pTrigger->pSync;
443 .alarm_value_hi = pTrigger->test_value >> 32,
444 .alarm_value_lo = pTrigger->test_value,
449 if (pTrigger->pSync && SYNC_COUNTER == pTrigger->pSync->type) {
484 SyncTrigger *pTrigger = &(*ppAwait)->trigger;
488 pev->counter = pTrigger->pSync->id;
489 pev->wait_value_lo = pTrigger->test_value;
490 pev->wait_value_hi = pTrigger->test_value >> 32;
491 if (SYNC_COUNTER == pTrigger->pSync->type) {
492 SyncCounter *pCounter = (SyncCounter *) pTrigger->pSync;
504 pev->destroyed = pTrigger->pSync->beingDestroyed;
512 * It is plugged into pTrigger->CounterDestroyed (for alarm triggers).
515 SyncAlarmCounterDestroyed(SyncTrigger * pTrigger)
517 SyncAlarm *pAlarm = (SyncAlarm *) pTrigger;
521 pTrigger->pSync = NULL;
525 * It is plugged into pTrigger->TriggerFired (for alarm triggers).
528 SyncAlarmTriggerFired(SyncTrigger * pTrigger)
530 SyncAlarm *pAlarm = (SyncAlarm *) pTrigger;
534 if (!SyncCheckWarnIsCounter(pTrigger->pSync, WARN_INVALID_COUNTER_ALARM))
537 pCounter = (SyncCounter *) pTrigger->pSync;
567 paCounter = (SyncCounter *) pTrigger->pSync;
603 pTrigger->test_value = new_test_value;
608 * It goes into pTrigger->TriggerFired AND pTrigger->CounterDestroyed
612 SyncAwaitTriggerFired(SyncTrigger * pTrigger)
614 SyncAwait *pAwait = (SyncAwait *) pTrigger;
723 if ((*ptl->pTrigger->CheckTrigger) (ptl->pTrigger, oldval))
724 (*ptl->pTrigger->TriggerFired) (ptl->pTrigger);
1036 SyncTrigger *pTrigger;
1054 pTrigger = pCur->pTrigger;
1056 if (pTrigger->test_type == XSyncPositiveComparison &&
1058 if (pCounter->value < pTrigger->test_value &&
1059 pTrigger->test_value < psci->bracket_greater) {
1060 psci->bracket_greater = pTrigger->test_value;
1063 else if (pCounter->value > pTrigger->test_value &&
1064 pTrigger->test_value > psci->bracket_less) {
1065 psci->bracket_less = pTrigger->test_value;
1069 else if (pTrigger->test_type == XSyncNegativeComparison &&
1071 if (pCounter->value > pTrigger->test_value &&
1072 pTrigger->test_value > psci->bracket_less) {
1073 psci->bracket_less = pTrigger->test_value;
1076 else if (pCounter->value < pTrigger->test_value &&
1077 pTrigger->test_value < psci->bracket_greater) {
1078 psci->bracket_greater = pTrigger->test_value;
1082 else if (pTrigger->test_type == XSyncNegativeTransition &&
1084 if (pCounter->value >= pTrigger->test_value &&
1085 pTrigger->test_value > psci->bracket_less) {
1091 psci->bracket_less = pTrigger->test_value;
1094 else if (pCounter->value < pTrigger->test_value &&
1095 pTrigger->test_value < psci->bracket_greater) {
1096 psci->bracket_greater = pTrigger->test_value;
1100 else if (pTrigger->test_type == XSyncPositiveTransition &&
1102 if (pCounter->value <= pTrigger->test_value &&
1103 pTrigger->test_value < psci->bracket_greater) {
1110 psci->bracket_greater = pTrigger->test_value;
1113 else if (pCounter->value > pTrigger->test_value &&
1114 pTrigger->test_value > psci->bracket_less) {
1115 psci->bracket_less = pTrigger->test_value;
1166 (*ptl->pTrigger->CounterDestroyed) (ptl->pTrigger);
1699 SyncTrigger *pTrigger;
1717 pTrigger = &pAlarm->trigger;
1718 pTrigger->pSync = NULL;
1719 pTrigger->value_type = XSyncAbsolute;
1720 pTrigger->wait_value = 0;
1721 pTrigger->test_type = XSyncPositiveComparison;
1722 pTrigger->TriggerFired = SyncAlarmTriggerFired;
1723 pTrigger->CounterDestroyed = SyncAlarmCounterDestroyed;
1724 status = SyncInitTrigger(client, pTrigger, None, RTCounter,
1751 if (!pTrigger->pSync) {
1757 if (!SyncCheckWarnIsCounter(pTrigger->pSync,
1763 pCounter = (SyncCounter *) pTrigger->pSync;
1765 if ((*pTrigger->CheckTrigger) (pTrigger, pCounter->value))
1766 (*pTrigger->TriggerFired) (pTrigger);
1822 SyncTrigger *pTrigger;
1832 pTrigger = &pAlarm->trigger;
1838 .counter = (pTrigger->pSync) ? pTrigger->pSync->id : None,
1844 .value_type = pTrigger->value_type,
1845 .wait_value_hi = pTrigger->wait_value >> 32,
1846 .wait_value_lo = pTrigger->wait_value,
1849 .wait_value_hi = pTrigger->test_value >> 32,
1850 .wait_value_lo = pTrigger->test_value,
1853 .test_type = pTrigger->test_type,
2708 trig = list->pTrigger;
2737 trig = list->pTrigger;