From 0e5eaa95a6e0f7ebfe13b5faffe792ed8124e01e Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Wed, 2 Mar 2016 19:11:42 -0500 Subject: [PATCH] kernel comments --- src/sys/s4.s | 14 +++++++---- src/sys/s6.s | 68 ++++++++++++++++++++++++++-------------------------- src/sys/s8.s | 43 ++++++++++++++++++--------------- 3 files changed, 68 insertions(+), 57 deletions(-) diff --git a/src/sys/s4.s b/src/sys/s4.s index 1d8b983..51c2db3 100644 --- a/src/sys/s4.s +++ b/src/sys/s4.s @@ -1,6 +1,7 @@ "** 01-s1.pdf page 21 " s4 + " allocate a free disk block alloc: 0 -1 tad s.nfblks @@ -29,6 +30,7 @@ alloc: 0 dac s.nfblks jmp alloc+1 + " free a disk block free: 0 lmq lac s.nfblks @@ -54,12 +56,16 @@ free: 0 jmp free i t = t+1 + " load AC indirect (without using indirect!) + " AC/ address + " jms laci + " AC/ contents of address laci: 0 - and o17777 - tad o200000 + and o17777 " clear everything but addr + tad o200000 " make into "lac addr" dac .+1 - lac .. - jmp laci i + lac .. " fetch + jmp laci i " return "** 01-s1.pdf page 22 diff --git a/src/sys/s6.s b/src/sys/s6.s index 7af2c27..faaa13f 100644 --- a/src/sys/s6.s +++ b/src/sys/s6.s @@ -2,41 +2,41 @@ " s6 itrunc: 0 - -7 - dac 9f+t - lac idskpp - dac 9f+t+1 -1: - lac 9f+t+1 i - sna - jmp 4f + -7 " loop 7 times + dac 9f+t " in t0 + lac idskpp " pointer to inode block numbers + dac 9f+t+1 " save in t1 +1: " top of loop for inode blocks + lac 9f+t+1 i " fetch next block number + sna " allocated? + jmp 4f " no + lac i.flags " check flags + and o200000 + sna " large file? + jmp 3f " no + -64 " loop 64 times + dac 9f+t+2 " save count in t2 + lac dskbufp " get pointer to dskbuf + dac 9f+t+3 " in t3 +2: " inner loop for indirect blocks + lac 9f+t+1 i " get indirect block number + jms dskrd " read it + lac 9f+t+3 i " read block number from indirect + sza " free? + jms free " no: free it + isz 9f+t+3 " increment pointer into indirect block + isz 9f+t+2 " increment loop counter, skip if done + jmp 2b " not done: loop +3: " here with small file + lac 9f+t+1 i " load block number + jms free " free it + dzm 9f+t+1 i " clear block number +4: " bottom of loop for inode block ptrs + isz 9f+t+1 " increment block pointer + isz 9f+t " increment count, skip if done + jmp 1b " not done lac i.flags - and o200000 - sna - jmp 3f - -64 - dac 9f+t+2 - lac dskbufp - dac 9f+t+3 -2: - lac 9f+t+1 i - jms dskrd - lac 9f+t+3 i - sza - jms free - isz 9f+t+3 - isz 9f+t+2 - jmp 2b -3: - lac 9f+t+1 i - jms free - dzm 9f+t+1 i -4: - isz 9f+t+1 - isz 9f+t - jmp 1b - lac i.flags - and o577777 + and o577777 " clear large file flag dac i.flags jmp itrunc i t = t+4 diff --git a/src/sys/s8.s b/src/sys/s8.s index 7a60623..20d13f9 100644 --- a/src/sys/s8.s +++ b/src/sys/s8.s @@ -160,10 +160,10 @@ crdata: crchar: .=.+1 sysdata: s.nxfblk: .=.+1 - s.nfblks: .=.+1 - s.fblks: .=.+10 - s.uniq: .=.+1 - s.tim: .=.+2 + s.nfblks: .=.+1 " number of free blocks + s.fblks: .=.+10 " free block numbers + s.uniq: .=.+1 " next unique value + s.tim: .=.+2 " (up)time(?) in 60Hz ticks (low, high) ulist: 0131000;1;0;0 0031040;0;0;0 @@ -176,12 +176,12 @@ ulist: 0031400;0;0;0 0031440;0;0;0 userdata: - u.ac: 0 - u.mq: 0 - u.rq: .=.+9 - u.uid: -1 - u.pid: 1 - u.cdir: 3 + u.ac: 0 " user AC + u.mq: 0 " user MQ + u.rq: .=.+9 " user 010-017 + u.uid: -1 " user id + u.pid: 1 " process id + u.cdir: 3 " connected directory (inode number?) u.ulistp: ulist u.swapret: 0 u.base: 0 @@ -194,18 +194,23 @@ userdata: .=userdata+64 ii: .=.+1 inode: - i.flags: .=.+1 - i.dskps: .=.+7 - i.uid: .=.+1 - i.nlks: .=.+1 + i.flags: .=.+1 " inode flags + " 400000 free?? (checked/toggled by icreat) + " 200000 large file + " 000040 special? (checked by read/write) + " 000020 directory + " 000017 can be changed by chmod. + i.dskps: .=.+7 " disk block pointers (indirect if "large file") + i.uid: .=.+1 " owner + i.nlks: .=.+1 " link count i.size: .=.+1 - i.uniq: .=.+1 + i.uniq: .=.+1 " unique number .= inode+12 di: .=.+1 -dnode: - d.i: .=.+1 - d.name: .=.+4 - d.uniq: .=.+1 +dnode: " directory entry: + d.i: .=.+1 " inode number + d.name: .=.+4 " name (space padded) + d.uniq: .=.+1 " unique number from directory inode . = dnode+8 fnode: f.flags: .=.+1