<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ultibo.org/mediawiki_ultibo_org/index.php?action=history&amp;feed=atom&amp;title=TCache</id>
		<title>TCache - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://ultibo.org/mediawiki_ultibo_org/index.php?action=history&amp;feed=atom&amp;title=TCache"/>
		<link rel="alternate" type="text/html" href="https://ultibo.org/mediawiki_ultibo_org/index.php?title=TCache&amp;action=history"/>
		<updated>2026-04-06T01:52:26Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.1</generator>

	<entry>
		<id>https://ultibo.org/mediawiki_ultibo_org/index.php?title=TCache&amp;diff=4054&amp;oldid=prev</id>
		<title>Ultibo: Created page with &quot;Return to Unit Filesystem   __TOC__  === Description === ----  &#039;&#039;To be documented&#039;&#039;  === Class definitions === ----   &lt;div class=&quot;toccolours mw-collapsible...&quot;</title>
		<link rel="alternate" type="text/html" href="https://ultibo.org/mediawiki_ultibo_org/index.php?title=TCache&amp;diff=4054&amp;oldid=prev"/>
				<updated>2018-05-17T04:36:16Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Return to &lt;a href=&quot;/wiki/Unit_Filesystem&quot; title=&quot;Unit Filesystem&quot;&gt;Unit Filesystem&lt;/a&gt;   __TOC__  === Description === ----  &amp;#039;&amp;#039;To be documented&amp;#039;&amp;#039;  === Class definitions === ----   &amp;lt;div class=&amp;quot;toccolours mw-collapsible...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Return to [[Unit_Filesystem|Unit Filesystem]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;To be documented&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Class definitions ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TCache = class(TObject)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Note: A simple block cache with Read Only/Read Write modes and Free/Clean/Dirty page tracking. (No longer used)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;constructor Create(ADriver:TFileSysDriver);&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destructor Destroy; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;private&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FDriver:TFileSysDriver;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLock:TCriticalSectionHandle;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FBuffer:Pointer;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FPageSize:LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FPageCount:LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FCacheSize:LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FCacheMode:TCacheMode;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FCacheState:TCacheState;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FCacheTimeout:LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FReadCached:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FReadDirect:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FWriteBack:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FWriteThrough:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FWriteDirect:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FHitCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FMissCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFailCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FSuccessCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFlushCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FDiscardCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FUnknownCount:Int64;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFirstPage:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| First Cache Page (Any State)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLastPage:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Last Cache Page (Any State)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFirstEmpty:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| First Free Page&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLastEmpty:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Last Free Page&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFirstClean:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| First Clean Page (Used with no Write pending)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLastClean:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Last Clean Page (Used with no Write pending)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FFirstDirty:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| First Dirty Page (Used with Write pending)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FLastDirty:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Last Dirty Page (Used with Write pending)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FTimer:TCacheTimer;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FThread:TCacheThread;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AcquireLock:Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function ReleaseLock:Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddPage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function RemovePage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddEmpty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddClean(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddDirty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddUnknown(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UpdateClean(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UpdateDirty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function RoundPageSize(APageSize:LongWord):LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function LinkPage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UnlinkPage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function LinkEmpty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UnlinkEmpty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function LinkClean(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UnlinkClean(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function LinkDirty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UnlinkDirty(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;public&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property PageSize:LongWord read FPageSize;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property PageCount:LongWord read FPageCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property CacheSize:LongWord read FCacheSize;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property CacheMode:TCacheMode read FCacheMode;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property CacheState:TCacheState read FCacheState;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property CacheTimeout:LongWord read FCacheTimeout;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property ReadCached:Int64 read FReadCached;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property ReadDirect:Int64 read FReadDirect;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property WriteBack:Int64 read FWriteBack;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property WriteThrough:Int64 read FWriteThrough;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property WriteDirect:Int64 read FWriteDirect;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property HitCount:Int64 read FHitCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property MissCount:Int64 read FMissCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property FailCount:Int64 read FFailCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property SuccessCount:Int64 read FSuccessCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property FlushCount:Int64 read FFlushCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property DiscardCount:Int64 read FDiscardCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;property UnknownCount:Int64 read FUnknownCount;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function OpenCache(ACacheSize,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function CloseCache:Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function DeviceRead(ADevice:TDiskDevice; ASector:LongWord; ACount:Word; var ABuffer):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function DeviceErase(ADevice:TDiskDevice; ASector:LongWord; ACount:Word):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage; virtual;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function GetEmptyPage:TCachePage;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage; virtual;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function DiscardPage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function DiscardCache(AFirst,AAll:Boolean):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function ReleaseDevicePages(ADevice:TDiskDevice):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function FlushPage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function FlushPageEx(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function FlushCache(AFirst,AAll:Boolean):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function CheckTimer:Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function ProcessTimer:Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function UnschedulePage(APage:TCachePage):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function declarations ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;constructor TCache.Create(ADriver:TFileSysDriver);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;destructor TCache.Destroy;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AcquireLock:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.ReleaseLock:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AddPage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Add a new page to the Page list and the Empty list&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.RemovePage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Remove a Page from the Page list and any other lists then Free the Page&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AddEmpty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Add a Page to the Empty list, removing from other lists if needed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AddClean(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Add a Page to the Clean list, removing from other lists if needed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AddDirty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Add a Page to the Dirty list, removing from other lists if needed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AddUnknown(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Make a Page Unknown by removing from any other lists if needed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UpdateClean(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Move a Page to the end of the Clean list&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UpdateDirty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Move a Page to the end of the Dirty list&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.RoundPageSize(APageSize:LongWord):LongWord;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Round Page Size to the power of 2 of Sector Size&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.RoundCacheSize(ACacheSize,APageSize:LongWord):LongWord;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Round Cache Size to the next multiple of Page Size&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.LinkPage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Link APage to PrevPage,NextPage siblings and Adjust FirstPage/LastPage&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UnlinkPage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Unlink APage from PrevPage,NextPage Siblings and Adjust FirstPage/LastPage&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.LinkEmpty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Link APage to PrevLink,NextLink siblings and Adjust FirstEmpty/LastEmpty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UnlinkEmpty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Unlink APage from PrevLink,NextLink Siblings and Adjust FirstEmpty/LastEmpty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.LinkClean(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Link APage to PrevLink,NextLink siblings and Adjust FirstClean/LastClean&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UnlinkClean(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Unlink APage from PrevLink,NextLink Siblings and Adjust FirstClean/LastClean&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.LinkDirty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Link APage to PrevLink,NextLink siblings and Adjust FirstDirty/LastDirty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UnlinkDirty(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Unlink APage from PrevLink,NextLink Siblings and Adjust FirstDirty/LastDirty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.PrepareDeviceWrite(ADevice:TDiskDevice; APage:TCachePage; ASector,ACount:LongWord):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Prepare a Cache Page for Write by ensuring that required sectors are cached&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sector&lt;br /&gt;
| Passed Sector will be the starting sector for the write to this Page&lt;br /&gt;
|-&lt;br /&gt;
! Count&lt;br /&gt;
| Passed Count will be the write count to this Page (Calculated by caller)&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Only called internally by DeviceWrite&lt;br /&gt;
Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.CalculateDevicePage(ADevice:TDiskDevice; ASector:LongWord; var ACount:LongWord):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Calculate the number of sectors remaining in a page given the starting sector&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Only called internally by DeviceRead/DeviceWrite/DeviceErase&lt;br /&gt;
Caller must hold the lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.OpenCache(ACacheSize,APageSize:LongWord; ACacheMode:TCacheMode):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Allocate the Memory, Create the Empty Pages and Open Cache&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.CloseCache:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Flush all Dirty Pages, Release the Memory and Close the Cache&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.DeviceRead(ADevice:TDiskDevice; ASector,ACount:LongWord; var ABuffer):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Read Data from the Physical Device using either Cached or Direct access&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| AllocDevicePage does all checks for Size, Sector and Count.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.DeviceWrite(ADevice:TDiskDevice; ASector,ACount:LongWord; const ABuffer):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Write Data to the Physical Device using either Cached or Direct access&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| AllocDevicePage does all checks for Size, Sector and Count.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.DeviceErase(ADevice:TDiskDevice; ASector,ACount:LongWord):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Erase Data from the Physical Device and update cached pages accordingly&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.GetDevicePage(ADevice:TDiskDevice; ASector:LongWord):TCachePage;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Get the Clean or Dirty Page that contains this Sector on this Device&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.GetEmptyPage:TCachePage;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Get the First Empty Page, Discard First Clean Page if none Empty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.AllocDevicePage(ADevice:TDiskDevice; ASector:LongWord; AWrite:Boolean):TCachePage;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Allocate an Empty Page to the Device and mark as Clean or Dirty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.DiscardPage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Return a Clean Page to Empty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.DiscardCache(AFirst,AAll:Boolean):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Find any Clean Pages older than CacheTimeout and Discard them&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.ReleaseDevicePages(ADevice:TDiskDevice):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Return all Clean or Dirty Pages on the Device to Empty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.FlushPage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Return a Dirty Page to Clean&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.FlushPageEx(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Return a Dirty Page to Clean if it is older than CacheTimeout&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Only called by CacheThread with page scheduled from CacheTimer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.FlushCache(AFirst,AAll:Boolean):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Find any Dirty Pages older than CacheTimeout and Flush them&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.CheckTimer:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.ProcessTimer:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.SchedulePage(APage:TCachePage; ATimeout:LongWord):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TCache.UnschedulePage(APage:TCachePage):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Return to [[Unit_Reference|Unit Reference]]&lt;/div&gt;</summary>
		<author><name>Ultibo</name></author>	</entry>

	</feed>