54 lines
1.5 KiB
C
54 lines
1.5 KiB
C
#ifndef _VM_H_
|
|
#define _VM_H_
|
|
|
|
#include "ioctl.h"
|
|
#ifdef CONFIG_CHRDEV
|
|
#include "device/device.h"
|
|
#endif
|
|
#include "syscfg/syscfg_id.h"
|
|
|
|
typedef u16 vm_hdl;
|
|
|
|
extern int vm_open(vm_hdl index);
|
|
|
|
extern CFG_ERR vm_close(vm_hdl hdl);
|
|
|
|
/*格式化VM_区域*/
|
|
extern CFG_ERR vm_eraser(void);
|
|
|
|
/*
|
|
每次上电初始化VM系统,
|
|
need_defrag_when_write_full: 当vm区域写满时是否需要整理碎片
|
|
*/
|
|
extern CFG_ERR vm_init(void *dev_hdl, u32 vm_addr, u32 vm_len, u8 vm_mode);
|
|
|
|
/******
|
|
**增加vm 索引务必要递增
|
|
**变长度读写,如果结构体成员顺序变换/成员增删等原因,有一定风险,请自行评估.
|
|
*/
|
|
|
|
//若vm数据区没有空间存储,则返回VM_WRITE_OVERFLOW, 其他情况返回VM_ERR_NONE
|
|
extern int vm_write(vm_hdl hdl, u8 *data_buf, u16 len);
|
|
|
|
//若vm内部存储数据长度大于 参数data_len, 则读出data_len长度的数据并 返回 data_len;
|
|
//若vm内部存储数据长度小于 参数data_len, 则读出 vm内部存储数据长度 的数据并 返回 vm内部存储数据长度;
|
|
//若vm内部存储数据长度与参数data_len长度相符, 则返回VM_ERR_NONE
|
|
//若vm内部从没有存储过 hdl代表的 索引, 则返回 VM_READ_NO_INDEX
|
|
extern int vm_read(vm_hdl hdl, u8 *data_buf, u16 len);
|
|
|
|
/*手动整理碎片*/
|
|
extern CFG_ERR vm_defrag(void);
|
|
|
|
/*侦查 vm 区域 使用情况, 返回使用的百分比*/
|
|
/*extern CFG_ERR vm_status(VM_STRUCT *vm_str_p);*/
|
|
|
|
extern const struct DEV_IO *dev_reg_vm(void *parm);
|
|
|
|
bool sfc_erase_zone(u32 addr, u32 len);
|
|
|
|
#endif //_VM_H_
|
|
|
|
|
|
|
|
|