📄 segment.h
字号:
/* *---------------------------------------------------------------------- * T-Kernel / Standard Extension * * Copyright (C) 2006 by Ken Sakamura. All rights reserved. * T-Kernel / Standard Extension is distributed * under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * * Version: 1.00.00 * Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* * segment.h * * Segment management */#ifndef __EXTENSION_SYS_SEGMENT_H__#define __EXTENSION_SYS_SEGMENT_H__#include <basic.h>#include <extension/typedef.h>#include <sys/segment.h>#ifdef __cplusplusextern "C" {#endif/* * Specify map */typedef struct { unsigned int resv:3; unsigned int rank:3; /* Specify rank */ unsigned int real:1; /* Specify real/virtual IO */ unsigned int clear:3; /* Specify clear */ unsigned int level:6; /* Specify access level */ UW space:16; /* Specify map space */ VP addr; /* Specify map address */ VW info; /* Map information */} MapMode;/* Define map clear */typedef enum { MapNoClr = 0x0, /* Clear */ MapClr = 0x1, /* Not clear */ MapUnsettle = 0x4, /* Undefined */ MapNoClrTop = 0x5, /* Not clear first logical block */ MapNoClrEnd = 0x6 /* Not clear last logical block */} MapModeClr;/* Define map rank */typedef enum { MapRankPROG = 0, /* For program execution*/ MapRankMM0 = 1, /* For memory manager */ MapRankMM1 = 2, /* For memory manager (not used) */ MapRankMM2 = 3, /* For memory manager (not used) */ MapRankFM0 = 4, /* For file manager (data) */ MapRankFM1 = 5, /* For file manager (management information) */ MapRankFM2 = 6, /* For file manager */ MapRankFM3 = 7 /* For file manager */} MapModeRank;/* * Error information */typedef struct { ER err; /* Error code */ ID diskid; /* ID of disk where error occurred */ UW blk; /* Physical block number of disk where error occurred */ ID taskid; /* ID of mapped task */ MapMode mode; /* Mode of map where error occurred */} DiskErrInfo;/* * File system information */typedef struct { UH lbsz; /* Logical block size (bytes) */ UH btsz; /* Boot block size (bytes) */} FsSpec;/* * Device open mode * (*) Compliant with open mode for device management */#define D_ATTACH 0x0004U /* Connect to file system */#define D_READ 0x0001U /* Read-only open */#define D_WRITE 0x0002U /* Write-only open */#define D_UPDATE 0x0003U /* Open for update */#define D_EXCL 0x0100U /* Specify exclusive mode */#define D_WEXCL 0x0200U /* Specify exclusive write mode *//* * Flag of UnmapDisk() */#define MD_RDONLY 0x0000U /* Read only */#define MD_WRITE 0x0001U /* Read & write *//* * Definitions for automatic generation of interface library (mkiflib) *//*** DEFINE_IFLIB[INCLUDE FILE]<sys/segment.h>[PREFIX]SEG***//* [BEGIN SYSCALLS] */IMPORT ER AttachFS(TC *devname, UW omode, PINFO *pinfo, DiskInfo *diskinfo);IMPORT ER CheckFS(TC *devname, UW omode, PINFO *pinfo);IMPORT ER DetachFS(ID diskid, PINFO *pinfo, BOOL eject);IMPORT ER SyncFS(ID diskid, VW info);IMPORT ER MapDisk(ID diskid, PhyBlk *block, MapMode *mode);IMPORT ER UnmapDisk(ID mapid, UW flag);IMPORT ER NotifyDiskErr(FP errhdr);IMPORT ER InformFS(ID diskid, FsSpec *spec);/* ALIGN_NO 0x100 */#ifndef LockSpaceIMPORT ER LockSpace( VP laddr, INT len );IMPORT ER UnlockSpace( VP laddr, INT len );#endifIMPORT INT CnvPhysicalAddr( VP laddr, INT len, VP *paddr );IMPORT ER ChkSpace( VP laddr, INT len, UINT mode, UINT env );IMPORT INT ChkSpaceTstr( TC *str, INT max, UINT mode, UINT env );IMPORT INT ChkSpaceBstr( UB *str, INT max, UINT mode, UINT env );IMPORT INT ChkSpaceLen( VP laddr, INT len, UINT mode, UINT env, INT lsid );IMPORT INT ReadMemSpace( VP laddr, VP buf, INT len, INT lsid );IMPORT INT WriteMemSpace( VP laddr, VP buf, INT len, INT lsid );IMPORT INT SetMemSpaceB( VP laddr, INT len, UB data, INT lsid );/* ALIGN_NO 0x100 */IMPORT ER MapMemory( VP paddr, INT len, UINT attr, VP *laddr );IMPORT ER UnmapMemory( VP laddr );/* ALIGN_NO 0x1000 */IMPORT ER MakeSpace( VP laddr, INT npage, INT lsid, UINT pte );IMPORT ER UnmakeSpace( VP laddr, INT npage, INT lsid );IMPORT ER ChangeSpace( VP laddr, INT npage, INT lsid, UINT pte );/* [END SYSCALLS] */#ifdef __cplusplus}#endif#endif /* __EXTENSION_SYS_SEGMENT_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -