struct vm_object marker;
vm_object_t object;
long collisions;
+ int burst;
bzero(&total, sizeof(total));
totalp = &total;
*/
lwkt_gettoken(&vmobj_token);
TAILQ_INSERT_HEAD(&vm_object_list, &marker, object_list);
+ burst = 0;
for (object = TAILQ_FIRST(&vm_object_list);
object != NULL;
}
/*
+ * Don't waste time unnecessarily
+ */
+ if (++burst < 25)
+ continue;
+ burst = 0;
+
+ /*
* Don't hog the vmobj_token if someone else wants it.
*/
+ TAILQ_REMOVE(&vm_object_list, &marker, object_list);
+ TAILQ_INSERT_AFTER(&vm_object_list, object,
+ &marker, object_list);
+ object = ▮
if (collisions != vmobj_token.t_collisions) {
- TAILQ_REMOVE(&vm_object_list, &marker, object_list);
- TAILQ_INSERT_AFTER(&vm_object_list, object,
- &marker, object_list);
tsleep(&vm_object_list, 0, "breath", 1);
- object = ▮
collisions = vmobj_token.t_collisions;
} else {
lwkt_yield();