libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::RamFS::FileNode Class Reference

文件节点类,继承自 FsNode,表示文件 File node class, inheriting from FsNode, representing a file More...

#include <ramfs.hpp>

Inheritance diagram for LibXR::RamFS::FileNode:
[legend]
Collaboration diagram for LibXR::RamFS::FileNode:
[legend]

Public Member Functions

int Run (int argc, char **argv)
 运行可执行文件 Runs an executable file
 
template<typename DataType , SizeLimitMode LimitMode = SizeLimitMode::MORE>
const DataType & GetData ()
 获取文件数据 Retrieves file data
 

Data Fields

union { 
 
   void *   addr 
 读写地址 Read/Write address More...
 
   const void *   addr_const 
 只读地址 Read-only address More...
 
   int(*   exec )(void *raw, int argc, char **argv) 
 可执行文件指针 Executable function pointer More...
 
};  
 
union { 
 
   size_t   size 
 文件大小 File size More...
 
   void *   arg 
 可执行文件参数 Executable file argument More...
 
};  
 
FileType type
 文件类型 File type
 
- Data Fields inherited from LibXR::RamFS::FsNode
const char * name
 
FsNodeType type
 
Dirparent
 

Detailed Description

文件节点类,继承自 FsNode,表示文件 File node class, inheriting from FsNode, representing a file

Definition at line 85 of file ramfs.hpp.

Member Function Documentation

◆ GetData()

template<typename DataType , SizeLimitMode LimitMode = SizeLimitMode::MORE>
const DataType & LibXR::RamFS::FileNode::GetData ( )
inline

获取文件数据 Retrieves file data

Template Parameters
DataType数据类型 Data type
LimitMode大小限制模式 Size limit mode (默认:MORE)
Returns
const DataType& 数据引用 Reference to the data

Definition at line 121 of file ramfs.hpp.

122 {
125 {
126 return *reinterpret_cast<DataType *>(addr);
127 }
128 else if (type == FileType::READ_ONLY)
129 {
130 return *reinterpret_cast<const DataType *>(addr_const);
131 }
132 else
133 {
134 ASSERT(false);
135 const void *addr = nullptr;
136 return *reinterpret_cast<const DataType *>(addr);
137 }
138 }
static void SizeLimitCheck(size_t limit, size_t size)
在非调试模式下的占位大小检查函数(无实际作用)。 Dummy size limit check for non-debug builds.
void * addr
读写地址 Read/Write address
Definition ramfs.hpp:90
FileType type
文件类型 File type
Definition ramfs.hpp:102
const void * addr_const
只读地址 Read-only address
Definition ramfs.hpp:91
size_t size
文件大小 File size
Definition ramfs.hpp:98
@ READ_ONLY
只读 Read-only
@ READ_WRITE
读写 Read/Write

◆ Run()

int RamFS::FileNode::Run ( int argc,
char ** argv )

运行可执行文件 Runs an executable file

Parameters
argc参数数量 Number of arguments
argv参数列表 Argument list
Returns
int 执行结果 Execution result

Definition at line 14 of file ramfs.cpp.

15{
16 ASSERT(type == FileType::EXEC);
17 return exec(arg, argc, argv);
18}
int(* exec)(void *raw, int argc, char **argv)
可执行文件指针 Executable function pointer
Definition ramfs.hpp:92
void * arg
可执行文件参数 Executable file argument
Definition ramfs.hpp:99
@ EXEC
可执行 Executable

Field Documentation

◆ addr

void* LibXR::RamFS::FileNode::addr

读写地址 Read/Write address

Definition at line 90 of file ramfs.hpp.

◆ addr_const

const void* LibXR::RamFS::FileNode::addr_const

只读地址 Read-only address

Definition at line 91 of file ramfs.hpp.

◆ arg

void* LibXR::RamFS::FileNode::arg

可执行文件参数 Executable file argument

Definition at line 99 of file ramfs.hpp.

◆ exec

int(* LibXR::RamFS::FileNode::exec) (void *raw, int argc, char **argv)

可执行文件指针 Executable function pointer

Definition at line 92 of file ramfs.hpp.

◆ size

size_t LibXR::RamFS::FileNode::size

文件大小 File size

Definition at line 98 of file ramfs.hpp.

◆ type

FileType LibXR::RamFS::FileNode::type

文件类型 File type

Definition at line 102 of file ramfs.hpp.


The documentation for this class was generated from the following files: