| inode = mkinode(m0, md0, boolvar, m1, m2, m3), pageno = n, ((m0 =>mkfile(n0, md, m, σ) * F))(files), afs-cons(dirs, files), pre-readpage(inode, pageno, buf, dirs, files) ⊦ [if pageno ∈ files[inode.ino].content then buf := files[inode.ino].content[pageno] else buf := zeropage; err := ESUCCESS] (err = ESUCCESS ∧ ⌜buf⌝ = (σ from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE ∨ ⌊err⌋ ) |
inode = mkinode(m0, md0, boolvar, m1, m2, m3), pageno = n, ((m0 =>mkfile(n0, md, m, σ) * F))(files), afs-cons(dirs, files), pre-readpage(inode, pageno, buf, dirs, files), pageno ∈ files[inode.ino].content ⊦ [buf := files[inode.ino].content[pageno]; err := ESUCCESS] (err = ESUCCESS ∧ ⌜buf⌝ = (σ from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE ∨ ⌊err⌋ )
inode = mkinode(m0, md0, boolvar, m1, m2, m3), pageno = n, ((m0 =>mkfile(n0, md, m, σ) * F))(files), afs-cons(dirs, files), pre-readpage(inode, pageno, buf, dirs, files) ⊦ [buf := zeropage; err := ESUCCESS] (err = ESUCCESS ∧ ⌜buf⌝ = (σ from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE ∨ ⌊err⌋ ), pageno ∈ files[inode.ino].content