Debugging a segfault in ELF loader (when loading CLIShell)
[tpg/acess2.git] / Kernel / include / tpl_drv_disk.h
index 2af6f55..47efb04 100644 (file)
@@ -40,10 +40,10 @@ enum eTplDisk_IOCtl {
        DISK_IOCTL_GETBLOCKSIZE = 4,\r
        \r
        /**\r
-        * ioctl(..., tTplDisk_CacheRegion *Region)\r
+        * ioctl(..., tTplDisk_CacheRegion *RegionInfo)\r
         * \brief Sets the cache importantce and protocol for a section of\r
         *        memory.\r
-        * \param Region        Pointer to a region information structure\r
+        * \param RegionInfo    Pointer to a region information structure\r
         * \return Boolean failure\r
         */\r
        DISK_IOCTL_SETCACHEREGION,\r
@@ -51,12 +51,24 @@ enum eTplDisk_IOCtl {
        /**\r
         * ioctl(..., Uint64 *Info[2])\r
         * \brief Asks the driver to precache a region of disk.\r
-        * \param Info  64-bit Address and Size pair describing the area to cache\r
+        * \param Region        64-bit Address and Size pair describing the area to cache\r
         * \return Number of blocks cached\r
         */\r
-       DISK_IOCTL_PRECACHE\r
+       DISK_IOCTL_PRECACHE,\r
+       \r
+       /**\r
+        * ioclt(..., Uint64 *Region[2])\r
+        * \brief Asks to driver to flush the region back to disk\r
+        * \param Region        64-bit Address and Size pair describing the area to flush\r
+        * \note If Region[0] == -1 then the entire disk's cache is flushed\r
+        * \return Number of blocks flushed (or 0 for entire disk)\r
+        */\r
+       DISK_IOCTL_FLUSH\r
 };\r
 \r
+/**\r
+ * \brief Describes the cache parameters of a region on the disk\r
+ */\r
 typedef struct sTplDisk_CacheRegion\r
 {\r
        Uint64  Base;   //!< Base of cache region\r
@@ -71,7 +83,11 @@ typedef struct sTplDisk_CacheRegion
         */\r
        Uint8   Flags;\r
        Uint8   Priority;       //!< Lower is a higher proritory\r
-       Uint16  CacheSize;      //!< Maximum size of cache, in blocks\r
+       /**\r
+        * \brief Maximum size of cache, in blocks\r
+        * \note If CacheSize is zero, the implemenation defined limit is used\r
+        */\r
+       Uint16  CacheSize;\r
 }      tTplDisk_CacheRegion;\r
 \r
 /**\r
@@ -80,8 +96,9 @@ typedef struct sTplDisk_CacheRegion
 enum eTplDisk_CacheProtocols\r
 {\r
        /**\r
-        * \brief Region is not cached\r
+        * \brief Don't cache the region\r
         */\r
+       \r
        DISK_CACHEPROTO_DONTCACHE,\r
        /**\r
         * \brief Most recently used blocks cached\r
@@ -98,22 +115,30 @@ enum eTplDisk_CacheProtocols
        /**\r
         * \brief Cache only on demand\r
         * \r
-        * Only cache when the ::DISK_IOCTL_PRECACHE ioctl is used\r
+        * Only cache when the ::DISK_IOCTL_PRECACHE IOCtl is used\r
         */\r
        DISK_CACHEPROTO_EXPLICIT\r
 };\r
+\r
+/**\r
+ * \brief Flags for the cache\r
+ */\r
 enum eTplDisk_CacheFlags\r
 {\r
-       DISK_CACHEFLAG_WRITETHROUGH\r
+       /**\r
+        * \brief Write all changes to the region straight back to media\r
+        */\r
+       DISK_CACHEFLAG_WRITETHROUGH = 0x10\r
 };\r
 \r
 /**\r
  * \brief IOCtl name strings\r
  */\r
-#define        DRV_DISK_IOCTLNAMES     "get_block_size", "set_cache_region"\r
+#define        DRV_DISK_IOCTLNAMES     "get_block_size","set_cache_region","set_precache"\r
 \r
 /**\r
- * \section Disk Driver Utilities\r
+ * \name Disk Driver Utilities\r
+ * \{\r
  */\r
 \r
 /**\r
@@ -152,4 +177,8 @@ extern Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, void *Buffer,
        tDrvUtil_Callback ReadBlocks, tDrvUtil_Callback WriteBlocks,\r
        Uint64 BlockSize, Uint Argument);\r
 \r
+/**\r
+ * \}\r
+ */\r
+\r
 #endif\r

UCC git Repository :: git.ucc.asn.au