No, this is not the sequence I thought of at all. I don't remember the
exact API functions you need to call (I have to read LDD3 again ;), but
if the hardware supports it, there must be a way. The plan is something
- at mmap time you return a pointer to something that is not actually
mapped, and do nothing else
- when userspace actually writes to that area, you get a page fault,
and nopage is called. At this point you map the page, and set the dirty
state. All other writes from userspace until the timer completes are
done without faulting.
- when the timer completes, you unmap the page so that the next access
will generate a fault again
As I said, I don't remember the exact details, but this should be doable.