32#include <sys/statfs.h>
36#ifdef LOSCFG_SHELL_CMD_DEBUG
42#ifdef LOSCFG_KERNEL_VM
58 LOS_DL_LIST_FOR_EACH_ENTRY(space, aspaceList,
LosVmSpace, node) {
66 (VOID)
LosBufPrintf(seqBuf,
"\r\n PID aspace name base size pages \n");
67 (VOID)
LosBufPrintf(seqBuf,
" ---- ------ ---- ---- ----- ----\n");
68 (VOID)
LosBufPrintf(seqBuf,
" %-4d %#010x %-10.10s %#010x %#010x %d\n",
71 "\r\n\t region name base size mmu_flags pages pg/ref\n");
73 "\t ------ ---- ---- ---- --------- ----- -----\n");
75 RB_SCAN_SAFE(&space->
regionRbTree, pstRbNode, pstRbNodeNext)
79 if (flagsStr == NULL) {
82 (VOID)
LosBufPrintf(seqBuf,
"\t %#010x %-19.19s %#010x %#010x %-15.15s %4d %4d\n",
84 region->
range.
size, flagsStr, regionPages, pssPages);
87 RB_SCAN_SAFE_END(&space->
regionRbTree, pstRbNode, pstRbNodeNext)
110 PRINT_ERR(
"create /proc/vmm error!\n");
UINT32 LOS_MemFree(VOID *pool, VOID *ptr)
释放从指定动态内存中申请的内存
UINT8 * m_aucSysMem0
异常交互动态内存池地址的起始地址,当不支持异常交互特性时,m_aucSysMem0等于m_aucSysMem1。
int LosBufPrintf(struct SeqBuf *seqBuf, const char *fmt,...)
支持可变参数 写 buf
LosProcessCB * OsGetPIDByAspace(LosVmSpace *space)
通过虚拟空间获取进程实体
UINT32 OsCountRegionPages(LosVmSpace *space, LosVmMapRegion *region, UINT32 *pssPages)
统计虚拟空间中某个线性区的页数
CHAR * OsArchFlagsToStr(const UINT32 archFlags)
const CHAR * OsGetRegionNameOrFilePath(LosVmMapRegion *region)
INT32 OsRegionOverlapCheck(LosVmSpace *space, LosVmMapRegion *region)
UINT32 OsCountAspacePages(LosVmSpace *space)
统计虚拟空间的总页数
STATIC INLINE STATUS_T LOS_MuxAcquire(LosMux *m)
STATIC INLINE STATUS_T LOS_MuxRelease(LosMux *m)
LosMux * OsGVmSpaceMuxGet(VOID)
LOS_DL_LIST * LOS_GetVmSpaceList(VOID)
获取进程空间链表指针 g_vmSpaceList中挂的是进程空间 g_kVmSpace, g_vMallocSpace,所有用户进程的空间(独有一个进程空间)
struct ProcDirEntry * CreateProcEntry(const char *name, mode_t mode, struct ProcDirEntry *parent)
create a proc node
proc 目录/文件项, @notethinking 直接叫 ProcEntry不香吗 ? 操作 /proc的 真正结构体
const struct ProcFileOperations * procFileOps
驱动程序,每个 /proc 下目录的驱动程序都不一样
真正最后能操作pro file的接口,proc本质是个内存文件系统, vfs - > ProcFileOperations
ssize_t(* write)(struct ProcFile *pf, const char *buf, size_t count, loff_t *ppos)
CHAR processName[OS_PCB_NAME_LEN]
虚拟空间,每个进程都有一个属于自己的虚拟内存地址空间
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 void
STATIC VOID OsVmDumpSeqSpaces(struct SeqBuf *seqBuf)
static int VmmProcFill(struct SeqBuf *m, void *v)
.read 接口的现实
static const struct ProcFileOperations VMM_PROC_FOPS
实现 操作proc file 接口,也可理解为驱动程序不同