#ifndef _VM_H_ #define _VM_H_ #include "typedef.h" #include "ioctl.h" #define IOCTL_SET_VM_INFO _IOW('V', 1, u8) #define IOCTL_GET_VM_INFO _IOW('V', 2, u8) /* --------------------------------------------------------------------------*/ /** * @brief VM Struct */ /* ----------------------------------------------------------------------------*/ typedef u16 vm_hdl; struct vm_table { u16 index; u16 value_byte; int value; //cache value which value_byte <= 4 }; /* --------------------------------------------------------------------------*/ /** * @brief VM Error Code */ /* ----------------------------------------------------------------------------*/ typedef enum _vm_err { VM_ERR_NONE = 0, VM_INDEX_ERR = -0x100, VM_INDEX_EXIST, //0xFF VM_DATA_LEN_ERR, //0xFE VM_READ_NO_INDEX, //0xFD VM_READ_DATA_ERR, //0xFC VM_WRITE_OVERFLOW, //0xFB VM_NOT_INIT, VM_INIT_ALREADY, VM_DEFRAG_ERR, VM_ERR_INIT, VM_ERR_PROTECT, VM_RAM_NOT_INIT, //vm_ram_storage_enable宏没有开启,没有初始化成功 VM_RAM_MALLOC_ERR, // 申请内存失败 VM_RAM2FLASH_WRITE_ERR, //ram的内容写到flash有错误,可能是ram的内容大于flash空间 VM_RAM_FLUSH_NONE //没有配置项可以写到flash } VM_ERR; struct vm_manage_id { vm_hdl id; }; #define VM_MANAGE_ID_REG(name, hdl) \ const struct vm_manage_id vm_##name \ SEC_USED(.vm_manage_id_text) = {hdl}; extern struct vm_manage_id vm_reg_id_begin[]; extern struct vm_manage_id vm_reg_id_end[]; #define list_for_each_vm_id(h) \ for (h=vm_reg_id_begin; h