let copy_page from_page to_page = Array.blit memory (from_page * page_size) memory (to_page * page_size) page_size;; let clone_ptable ptable size = let new_ptable = new_page () in let offset = ptable * page_size in let new_offset = new_ptable * page_size in for i = 0 to size - 1 do match mode_of_int memory.(offset + 2*i) with | RW -> let new_page = new_page () in copy_page memory.(offset + 2*i +1) new_page; memory.(new_offset + 2*i) <- int_of_mode RW; memory.(new_offset + 2*i +1) <- new_page | _ -> memory.(new_offset + 2*i) <- int_of_mode UN done; new_ptable;; |