UNIX 6th Edition Commentary CONTENTS
18 File Access and Control 71
18.1 File Characteristics . . . . . . . . . . 71
18.2 System Calls . . . . . . . . . . . . . 71
18.3 Control Tables . . . . . . . . . . . . 71
18.4 file (5507) . . . . . . . . . . . . . . . 71
18.5 inode (5659) . . . . . . . . . . . . . . 72
18.6 Resources Required . . . . . . . . . . 72
18.7 Opening a File . . . . . . . . . . . . 72
18.8 creat (5781) . . . . . . . . . . . . . . 72
18.9 openl (5804) . . . . . . . . . . . . . . 72
18.10open (5763) . . . . . . . . . . . . . . 73
18.11openl revisited . . . . . . . . . . . . 73
18.12close (5846) . . . . . . . . . . . . . . 73
18.13closef (6643) . . . . . . . . . . . . . . 73
18.14iput (7344) . . . . . . . . . . . . . . 73
18.15Deletion of Files . . . . . . . . . . . 73
18.16Reading and Writing . . . . . . . . . 74
18.17rdwr (5731) . . . . . . . . . . . . . . 74
18.18readi (6221) . . . . . . . . . . . . . . 75
18.19writei . . . . . . . . . . . . . . . . . 75
18.20iomove (6364) . . . . . . . . . . . . . 75
18.21bmap (6415) . . . . . . . . . . . . . 75
18.22Leftovers . . . . . . . . . . . . . . . . 76
19 File Directories and Directory Files 77
19.1 The Directory Data Structure . . . . 77
19.2 Directory Files . . . . . . . . . . . . 77
19.3 namei (7518) . . . . . . . . . . . . . 77
19.4 Some Comments . . . . . . . . . . . 78
19.5 link (5909) . . . . . . . . . . . . . . . 79
19.6 wdir (7477) . . . . . . . . . . . . . . 79
19.7 maknode (7455) . . . . . . . . . . . . 79
19.8 unlink (3510) . . . . . . . . . . . . . 79
19.9 mknod (5952) . . . . . . . . . . . . . 80
19.10access (6746) . . . . . . . . . . . . . 80
20 File Systems 81
20.1 The ‘Super Block’ (5561) . . . . . . 81
20.2 The ’mount’ table (0272) . . . . . . 81
20.3 iinit (6922) . . . . . . . . . . . . . . 81
20.4 Mounting . . . . . . . . . . . . . . . 82
20.5 smount (6086) . . . . . . . . . . . . 82
20.6 Notes . . . . . . . . . . . . . . . . . 82
20.7 iget (7276) . . . . . . . . . . . . . . . 82
20.8 getfs (7167) . . . . . . . . . . . . . . 83
20.9 update (7201) . . . . . . . . . . . . . 83
20.10sumount (6144) . . . . . . . . . . . . 84
20.11Resource Allocation . . . . . . . . . 84
20.12alloc (6965) . . . . . . . . . . . . . . 84
20.13itrunc (7414) . . . . . . . . . . . . . 84
20.14free (7000) . . . . . . . . . . . . . . . 85
20.15iput (7344) . . . . . . . . . . . . . . 85
20.16ifree (7134) . . . . . . . . . . . . . . 85
20.17iupdat (7374) . . . . . . . . . . . . . 85
21 Pipes 87
21.1 pipe (7723) . . . . . . . . . . . . . . 87
21.2 readp (7758) . . . . . . . . . . . . . 87
21.3 writep (7805) . . . . . . . . . . . . . 87
21.4 plock (7862) . . . . . . . . . . . . . . 87
21.5 prele (7882) . . . . . . . . . . . . . . 87
22 Character Oriented Special Files 88
22.1 LP11 Line Printer Driver . . . . . . 88
22.2 lpopen (8850) . . . . . . . . . . . . . 88
22.3 Notes . . . . . . . . . . . . . . . . . 88
22.4 lpoutput (8986) . . . . . . . . . . . . 89
22.5 lpstart (8967) . . . . . . . . . . . . . 89
22.6 lpinit(8976) . . . . . . . . . . . . . . 89
22.7 lpwrite (8870) . . . . . . . . . . . . . 89
22.8 Discussion . . . . . . . . . . . . . . . 90
22.9 lpcanon (8879) . . . . . . . . . . . . 90
22.10For idle readers: A suggestion . . . . 91
22.11PC-11 Paper Tape Reader/Punch
Driver . . . . . . . . . . . . . . . . . 91
23 Character Handling 92
23.1 cinit (8234) . . . . . . . . . . . . . . 93
23.2 getc (0930) . . . . . . . . . . . . . . 93
23.3 putc (0967) . . . . . . . . . . . . . . 93
23.4 Character Sets . . . . . . . . . . . . 94
23.5 Control Characters . . . . . . . . . . 94
23.6 Graphic Characters . . . . . . . . . . 94
23.7 Graphic Character Sets . . . . . . . 94
23.8 maptab (8117) . . . . . . . . . . . . 95
23.9 partab (7947) . . . . . . . . . . . . . 95
24 Interactive Terminals 96
24.1 The ’tty’ Structure (7926) . . . . . . 96
24.2 Interactive Terminals . . . . . . . . 96
24.3 Initialisation . . . . . . . . . . . . . 97
24.4 stty (8183) . . . . . . . . . . . . . . 97
24.5 sgtty (8201) . . . . . . . . . . . . . . 97
24.6 klsgtty (8090) . . . . . . . . . . . . . 97
24.7 tysty (8577) . . . . . . . . . . . . . . 97
24.8 The DL11/KL11 Terminal Device
Handler . . . . . . . . . . . . . . . . 97
24.9 Device Registers . . . . . . . . . . . 98
24.10UNIBUS Addresses . . . . . . . . . . 98
24.11Software Considerations . . . . . . . 98
24.12Interrupt Vector Addresses . . . . . 98
24.13Source Code . . . . . . . . . . . . . . 98
24.14klopen (8023) . . . . . . . . . . . . . 99
24.15klclose (8055) . . . . . . . . . . . . . 99
24.16klxint (8070) . . . . . . . . . . . . . 99
24.17klrint (8078) . . . . . . . . . . . . . . 99
25 The File “tty.c” 101
25.1 flushtty (8252) . . . . . . . . . . . . 101
25.2 wflushtty (8217) . . . . . . . . . . . 101
25.3 Character Input . . . . . . . . . . . 101
25.4 ttread (8535) . . . . . . . . . . . . . 101
iii