rem: scrub_count = i;
context: page_scrubber(void *unused){#define SCRUB_SIZE 16	int state;	vm_page *page[SCRUB_SIZE];	int i;	int scrub_count;	(void)(unused);	TRACE(("page_scrubber starting...\n"));	for (;;) {		snooze(100000); // 100ms		if (page_free_queue.count > 0) {			state = disable_interrupts();			acquire_spinlock(&page_lock);			for (i = 0; i < SCRUB_SIZE; i++) {				page[i] = dequeue_page(&page_free_queue);				if (page[i] == NULL)					break;			}			release_spinlock(&page_lock);			restore_interrupts(state);			scrub_count = i;			for (i = 0; i < scrub_count; i++) {				clear_page(page[i]->ppn * B_PAGE_SIZE);			}			state = disable_interrupts();			acquire_spinlock(&page_lock);			for (i = 0; i < scrub_count; i++) {				page[i]->state = PAGE_STATE_CLEAR;				enqueue_page(&page_clear_queue, page[i]);			}			release_spinlock(&page_lock);			restore_interrupts(state);		}	}	return 0;}