| /* |
| * 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 */ |