更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_partition_utils.h 文件参考

浏览源代码.

结构体

struct  PartitionInfo
 分区信息 更多...
 

函数

INT32 GetPartitionInfo (struct PartitionInfo *partInfo)
 
const CHARGetDevNameOfPartition (const struct PartitionInfo *partInfo)
 
INT32 ResetDevNameofPartition (const struct PartitionInfo *partInfo)
 

函数说明

◆ GetDevNameOfPartition()

const CHAR * GetDevNameOfPartition ( const struct PartitionInfo partInfo)

在文件 los_partition_utils.c199 行定义.

200{
201 const CHAR *devName = NULL;
202
203 if (strcmp(partInfo->storageType, STORAGE_TYPE) == 0) {
204#if defined(LOSCFG_STORAGE_SPINOR)
205 INT32 ret = add_mtd_partition(FLASH_TYPE, partInfo->startAddr, partInfo->partSize, partInfo->partNum);
206 if (ret != LOS_OK) {
207 PRINT_ERR("Failed to add %s partition! error = %d\n", partInfo->partName, ret);
208 } else {
209 if (partInfo->devName != NULL) {
210 devName = partInfo->devName;
211 }
212 }
213#endif
214 } else {
215 PRINT_ERR("Failed to find %s dev type: %s\n", partInfo->partName, partInfo->storageType);
216 }
217
218 return devName;
219}
INT32 add_mtd_partition(const CHAR *type, UINT32 startAddr, UINT32 length, UINT32 partitionNum)
Add a partition.
signed int INT32
Definition: los_typedef.h:60
char CHAR
Definition: los_typedef.h:63
UINT32 partNum
分区编号
INT32 startAddr
开始地址
CHAR * devName
设备名称
const CHAR * partName
分区名称
INT32 partSize
分区大小
函数调用图:
这是这个函数的调用关系图:

◆ GetPartitionInfo()

INT32 GetPartitionInfo ( struct PartitionInfo partInfo)

在文件 los_partition_utils.c160 行定义.

161{
162 CHAR *args = NULL;
163 CHAR *argsBak = NULL;
164 CHAR *p = NULL;
165
166 if (GetPartitionBootArgs(partInfo->cmdlineArgName, &args) != LOS_OK) {
167 return LOS_NOK;
168 }
169 argsBak = args;
170
171 p = strsep(&args, " ");
172 while (p != NULL) {
173 if (MatchPartInfo(p, partInfo) != LOS_OK) {
174 goto ERROUT;
175 }
176 p = strsep(&args, " ");
177 }
178 if ((partInfo->fsType != NULL) && (partInfo->storageType != NULL)) {
179 free(argsBak);
180 return LOS_OK;
181 }
182 PRINT_ERR("Cannot find %s type\n", partInfo->partName);
183
184ERROUT:
185 PRINT_ERR("Invalid %s information!\n", partInfo->partName);
186 if (partInfo->storageType != NULL) {
187 free(partInfo->storageType);
188 partInfo->storageType = NULL;
189 }
190 if (partInfo->fsType != NULL) {
191 free(partInfo->fsType);
192 partInfo->fsType = NULL;
193 }
194 free(argsBak);
195
196 return LOS_NOK;
197}
STATIC INT32 MatchPartInfo(CHAR *p, struct PartitionInfo *partInfo)
STATIC INT32 GetPartitionBootArgs(const CHAR *argName, CHAR **args)
void free(void *ptr)
释放ptr所指向的内存空间
Definition: malloc.c:66
CHAR * fsType
文件系统类型
const CHAR * cmdlineArgName
命令行参数名称
函数调用图:
这是这个函数的调用关系图:

◆ ResetDevNameofPartition()

INT32 ResetDevNameofPartition ( const struct PartitionInfo partInfo)

在文件 los_partition_utils.c221 行定义.

222{
223 INT32 ret;
224#if defined(LOSCFG_STORAGE_SPINOR)
225 ret = delete_mtd_partition(partInfo->partNum, FLASH_TYPE);
226 if (ret != ENOERR) {
227 int err = get_errno();
228 PRINT_ERR("Failed to delete %s, errno %d: %s\n", partInfo->devName, err, strerror(err));
229 ret = LOS_NOK;
230 }
231#else
232 ret = LOS_NOK;
233#endif
234 return ret;
235}
INT32 delete_mtd_partition(UINT32 partitionNum, const CHAR *type)
Delete a partition.
函数调用图:
这是这个函数的调用关系图: