| vfs_write_block#(START, INODE, BUF, END, DIRS; TOTAL, DONE, ERR, FILES, ASYNCED) {let PAGENO = (START + TOTAL) / VFS_PAGE_SIZE, OFFSET = (START + TOTAL) % VFS_PAGE_SIZE in let N = min(END - START + TOTAL, VFS_PAGE_SIZE - OFFSET) in if N ≠ 0 then {vfs_writepage#(INODE, PAGENO, BUF, TOTAL, OFFSET, N, DIRS; ERR, FILES, ASYNCED); if ERR = ESUCCESS then TOTAL := TOTAL + N} else DONE := true } |