blob: 41c43676e598bb4ad1dcaa964ea1f30140c33019 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# FMIO.H -- File manager interface definitions (private to FMIO).
define FMIO_MAGIC 28006 # "fm"
define FMIO_VERSION 101 # current interface version number
define DEF_PAGESIZE 512 # default page size, bytes
define DEF_MAXLFILES 128 # default max lfiles / datafile
define DEF_MAXPTPAGES 256 # default max page table pages
define DEF_OPTBUFNP 4 # default npages in lfile FIO buffer
define DEF_MAXBUFNP 0 # default npages max buffer size
define DEF_BIGBUFNP 16 # large buffer for lfile copies
define DEF_DFHDRLEN 4096 # default DF header buflen (su)
define DEF_FCACHESIZE 8 # default open files in file cache
define DEF_PMLEN 64 # default lfile pagemap array length
define INC_PMLEN 128 # default page table buflen (pte)
define SZ_DFNAME 63 # datafile name
define SZ_ERROPSTR 63 # operand string, for posted errors
define SYNC_INTERVAL 300 # interval between automatic syncs
define PT_LFILE 0 # lfile in which page table is stored
# Main FMIO descriptor.
define LEN_FMDES 150
# GEN
define FM_MAGIC Memi[$1+0] # set once descriptor is initialized
define FM_ACTIVE Memi[$1+1] # set once descriptor is initialized
define FM_CHAN Memi[$1+2] # host channel of datafile
define FM_MODE Memi[$1+3] # access mode of datafile
define FM_DFVERSION Memi[$1+4] # datafile version number
define FM_SZBPAGE Memi[$1+5] # datafile page size, bytes
define FM_NLFILES Memi[$1+6] # number of lfiles in datafile
define FM_DATASTART Memi[$1+7] # file offset of first data page
define FM_DEVBLKSIZE Memi[$1+8] # device block size
define FM_OPTBUFSIZE Memi[$1+9] # optimum FIO buffer size
define FM_MAXBUFSIZE Memi[$1+10] # maximum FIO buffer size
define FM_SZFCACHE Memi[$1+11] # number of LF in file cache
define FM_LSYNCTIME Memi[$1+12] # time of last sync
define FM_DHMODIFIED Memi[$1+13] # datafile header has been modified
# FT
define FM_FTOFF Memi[$1+15] # offset of stored file table (su)
define FM_FTLASTNF Memi[$1+16] # last new file allocated (runtime)
define FM_FTABLE Memi[$1+17] # pointer to in-core file table
# PTI
define FM_PTIOFF Memi[$1+20] # offset of stored PTI (su)
define FM_PTILEN Memi[$1+21] # page table index length (allocated)
define FM_PTINPTI Memi[$1+22] # number of page table pages
define FM_PTINDEX Memi[$1+23] # pointer to page table index
# PT
define FM_PTLEN Memi[$1+25] # number of allocated PTE entries
define FM_PTNPTE Memi[$1+26] # number of PTEs (data pages) in-core
define FM_PTLUPTE Memi[$1+27] # last updated PTE on disk
define FM_PTABLE Memi[$1+28] # pointer to page table data
# LFC
define FM_FCACHE Memi[$1+30] # pointer to file cache descriptor
define FM_ERRCODE Memi[$1+31] # opcode for posting errors
define FM_ERROPSTR Memc[P2C($1+32)]# error operand string
define FM_DFNAME Memc[P2C($1+96)]# datafile name, for error messages
# File table entry (FTE) during datafile access.
define LEN_FTE 8 # length of file table entry (ints)
define LF_FM Memi[$1] # backpointer to FMIO descriptor
define LF_FSIZE Memi[$1+1] # file size, bytes
define LF_FLAGS Memi[$1+2] # file bitflags
define LF_STATUS Memi[$1+3] # status word for async i/o
define LF_LTSIZE Memi[$1+4] # logical size of last transfer
define LF_NPAGES Memi[$1+5] # number of pages in file page table
define LF_PAGEMAP Memi[$1+6] # pointer to pagemap array
define LF_PMLEN Memi[$1+7] # length of pagemap array
# FTE bitflags.
define LFF_SAVE 007B # flags saved while datafile is closed
define LFF_ALLOCATED 001B # lfile slot has been allocated
define LFF_DELETED 002B # set if file is deleted
define LFF_TEXTFILE 004B # set if file is a text file
define LFF_IOINPROGRESS 010B # set when i/o is in progress
define LFF_LOCKOUT 020B # set when i/o is in progress
# --------------
# Physical datafile file format.
# Datafile file header.
define LEN_DHSTRUCT 12
define DH_MAGIC Memi[$1] # magic value identifying data format
define DH_DFVERSION Memi[$1+1] # FMIO version used to write datafile
define DH_SZBPAGE Memi[$1+2] # datafile page size, bytes
define DH_NLFILES Memi[$1+3] # number of lfiles in datafile
define DH_FTOFF Memi[$1+4] # offset of file table in datafile
define DH_FTLASTNF Memi[$1+5] # last new file allocated (runtime)
define DH_PTIOFF Memi[$1+6] # offset of stored page table index
define DH_PTILEN Memi[$1+7] # page table index length (allocated)
define DH_PTINPTI Memi[$1+8] # number of page table pages
define DH_PTLEN Memi[$1+9] # number of allocated PTE entries
define DH_PTNPTE Memi[$1+10] # number of PTEs (data pages)
define DH_DATASTART Memi[$1+11] # file offset of first data page
# File table entry (FTE) on disk.
define LEN_FTEX 2 # length of file table entry (ints)
define FT_FSIZE Memi[$1] # file size, bytes
define FT_FLAGS Memi[$1+1] # file bitflags
|