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:
Collaboration diagram for LibXR::RamFS::FileNode:

Public Member Functions

int Run (int argc, char **argv)
 运行可执行文件 Runs an executable file
 
template<typename DataType , SizeLimitMode LimitMode = SizeLimitMode::MORE>
const DataTypeGetData ()
 获取文件数据 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 charname
 
FsNodeType type
 
Dirparent
 

Detailed Description

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

Definition at line 93 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 133 of file ramfs.hpp.

134 {
135 LibXR::Assert::SizeLimitCheck<LimitMode>(sizeof(DataType), size);
137 {
138 return *reinterpret_cast<DataType *>(addr);
139 }
140 else if (type == FileType::READ_ONLY)
141 {
142 return *reinterpret_cast<const DataType *>(addr_const);
143 }
144 else
145 {
146 ASSERT(false);
147 const void *addr = nullptr;
148 return *reinterpret_cast<const DataType *>(addr);
149 }
150 }
void * addr
读写地址 Read/Write address
Definition ramfs.hpp:98
FileType type
文件类型 File type
Definition ramfs.hpp:110
const void * addr_const
只读地址 Read-only address
Definition ramfs.hpp:99
size_t size
文件大小 File size
Definition ramfs.hpp:106
@ READ_ONLY
只读 Read-only
@ READ_WRITE
读写 Read/Write
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值

◆ Run()

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

运行可执行文件 Runs an executable file

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

Definition at line 119 of file ramfs.hpp.

120 {
121 ASSERT(type == FileType::EXEC);
122 return exec(arg, argc, argv);
123 }
int(* exec)(void *raw, int argc, char **argv)
可执行文件指针 Executable function pointer
Definition ramfs.hpp:100
void * arg
可执行文件参数 Executable file argument
Definition ramfs.hpp:107
@ EXEC
可执行 Executable

Field Documentation

◆ addr

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

读写地址 Read/Write address

Definition at line 98 of file ramfs.hpp.

◆ addr_const

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

只读地址 Read-only address

Definition at line 99 of file ramfs.hpp.

◆ arg

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

可执行文件参数 Executable file argument

Definition at line 107 of file ramfs.hpp.

◆ exec

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

可执行文件指针 Executable function pointer

Definition at line 100 of file ramfs.hpp.

◆ size

size_t LibXR::RamFS::FileNode::size

文件大小 File size

Definition at line 106 of file ramfs.hpp.

◆ type

FileType LibXR::RamFS::FileNode::type

文件类型 File type

Definition at line 110 of file ramfs.hpp.


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