aboutsummaryrefslogtreecommitdiff
path: root/sys/fmio/fmio.h
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /sys/fmio/fmio.h
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'sys/fmio/fmio.h')
-rw-r--r--sys/fmio/fmio.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/sys/fmio/fmio.h b/sys/fmio/fmio.h
new file mode 100644
index 00000000..41c43676
--- /dev/null
+++ b/sys/fmio/fmio.h
@@ -0,0 +1,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