5#define TABLE_SIZE 4192u
6#define TABLE_ELEMS 1024u
8#define SHADOW_TABLE_OFF(index) ((index) * 4u)
9#define SHADOW_TABLE_SIZE TABLE_SIZE
10#define MTIME_TABLE_OFF(index) (4192u + (index) * 4u)
11#define MTIME_TABLE_SIZE TABLE_SIZE
12#define MAGIC_OFF 8192u
13#define MAGIC_SIZE 128u
14#define CHUNK_PREFIX_OFF 8320u
15#define CHUNK_PREFIX_SIZE 31u
16#define CHUNK_EXTENSION_OFF 8351u
17#define CHUNK_EXTENSION_SIZE 11u
18#define SECTOR_SIZE_OFF 8364u
19#define FILE_LOCK_OFF 8368u
20#define FILE_SIZE_OFF 8372u
21#define CHECKPOINT_CRC_OFF 8376u
22#define SHADOWED_SECTORS_OFF 8380u
23#define LOCK_TABLE_OFF(index) (12288u + (index) * 4u)
24#define LOCK_TABLE_SIZE TABLE_SIZE
25#define CHECKPOINT_TABLE_OFF(index) (16384u + (index) * 4u)
26#define CHECKPOINT_TABLE_SIZE TABLE_SIZE
28void magic_set(
struct clod_rfmt *rfmt,
const char *magic) {
29 strncpy((
char*)rfmt->data + MAGIC_OFF, magic, MAGIC_SIZE);
30 ((
char*)rfmt->data)[MAGIC_OFF + MAGIC_SIZE - 1] =
'\0';
33void magic_get(
struct clod_rfmt *rfmt,
char magic[MAGIC_SIZE]) {
34 strncpy(magic, (
char*)rfmt->data + MAGIC_OFF, MAGIC_SIZE);
35 magic[MAGIC_SIZE - 1] =
'\0';
38void chunk_prefix_set(
struct clod_rfmt *rfmt,
const char *prefix) {
39 strncpy((
char*)rfmt->data + CHUNK_PREFIX_OFF, prefix, CHUNK_PREFIX_SIZE);
40 ((
char*)rfmt->data)[CHUNK_PREFIX_OFF + CHUNK_PREFIX_SIZE - 1] =
'\0';
43void chunk_prefix_get(
const struct clod_rfmt *rfmt,
char prefix[CHUNK_PREFIX_SIZE]) {
44 strncpy(prefix, (
char*)rfmt->data + CHUNK_PREFIX_OFF, CHUNK_PREFIX_SIZE);
45 prefix[CHUNK_PREFIX_SIZE - 1] =
'\0';
48void chunk_extension_set(
struct clod_rfmt *rfmt,
const char *extension) {
49 strncpy((
char*)rfmt->data + CHUNK_EXTENSION_OFF, extension, CHUNK_EXTENSION_SIZE);
50 ((
char*)rfmt->data)[CHUNK_EXTENSION_OFF + CHUNK_EXTENSION_SIZE - 1] =
'\0';
53void chunk_extension_get(
const struct clod_rfmt *rfmt,
char extension[CHUNK_EXTENSION_SIZE]) {
54 strncpy(extension, (
char*)rfmt->data + CHUNK_EXTENSION_OFF, CHUNK_EXTENSION_SIZE);
55 extension[CHUNK_EXTENSION_SIZE - 1] =
'\0';
58void sector_size_set(
struct clod_rfmt *rfmt, uint32_t sector_size) {
59 beu32_enc(rfmt->data + SECTOR_SIZE_OFF, sector_size);
62uint32_t sector_size_get(
const struct clod_rfmt *rfmt) {
63 return beu32_dec(rfmt->data + SECTOR_SIZE_OFF);