Changeset View
Changeset View
Standalone View
Standalone View
sys/x86/iommu/intel_dmar.h
Show First 20 Lines • Show All 518 Lines • ▼ Show 20 Lines | #define DMAR_WAIT_UNTIL(cond) \ | ||||
bool forever; \ | bool forever; \ | ||||
\ | \ | ||||
if (dmar_hw_timeout.tv_sec == 0 && \ | if (dmar_hw_timeout.tv_sec == 0 && \ | ||||
dmar_hw_timeout.tv_nsec == 0) { \ | dmar_hw_timeout.tv_nsec == 0) { \ | ||||
forever = true; \ | forever = true; \ | ||||
} else { \ | } else { \ | ||||
forever = false; \ | forever = false; \ | ||||
nanouptime(&curr); \ | nanouptime(&curr); \ | ||||
last = curr; \ | timespecadd(&curr, &dmar_hw_timeout, &last); \ | ||||
timespecadd(&last, &dmar_hw_timeout); \ | |||||
} \ | } \ | ||||
for (;;) { \ | for (;;) { \ | ||||
if (cond) { \ | if (cond) { \ | ||||
error = 0; \ | error = 0; \ | ||||
break; \ | break; \ | ||||
} \ | } \ | ||||
nanouptime(&curr); \ | nanouptime(&curr); \ | ||||
if (!forever && timespeccmp(&last, &curr, <)) { \ | if (!forever && timespeccmp(&last, &curr, <)) { \ | ||||
Show All 21 Lines |