| /* | |
| * Flash-based transactional key-value store | |
| * | |
| * Copyright (C) 2010 Google, Inc. | |
| */ | |
| #ifndef _FLASH_TS_H | |
| #define _FLASH_TS_H | |
| #include <fs.h> | |
| #include <linux/kernel.h> | |
| #include <linux/compat.h> | |
| #define DRV_NAME "fts" | |
| #define DRV_VERSION "0.999" | |
| #define CONFIG_FLASH_TS_PARTITION "fts" | |
| /* Keep in sync with 'struct flash_ts' */ | |
| #define FLASH_TS_HDR_SIZE (4 * sizeof(u32)) | |
| #define FLASH_TS_MAX_SIZE (16 * 1024) | |
| #define FLASH_TS_MAX_DATA_SIZE (FLASH_TS_MAX_SIZE - FLASH_TS_HDR_SIZE) | |
| #define FLASH_TS_MAGIC 0x53542a46 | |
| /* Physical flash layout */ | |
| struct flash_ts { | |
| u32 magic; /* "F*TS" */ | |
| u32 crc; /* doesn't include magic and crc fields */ | |
| u32 len; /* real size of data */ | |
| u32 version; /* generation counter, must be positive */ | |
| /* data format is very similar to Unix environment: | |
| * key1=value1\0key2=value2\0\0 | |
| */ | |
| char data[FLASH_TS_MAX_DATA_SIZE]; | |
| }; | |
| int flash_ts_init(void); | |
| void flash_ts_get(const char *key, char *value, unsigned int size); | |
| int flash_ts_set(const char *key, const char *value); | |
| #endif /* _FLASH_TS_H */ |