Initial exploration of B-trees, but ran into issues composing with rbyds
The original idea was weighted B-trees composed out of weighted rbyds, with the two weight systems being independent. Descent down the B-tree uses the same technique in the current metadata data-structure of searching for which branch to take during fetch, basically getting the search for free (well, on top of the already required O(m) fetch operation). But this is fundamentally flawed. While file names provide an absolute reference for finding matches, weights are relative references. So we don't have enough information to do weight-based lookup during fetch. This smells just like the relative-vs-absolute key issues that led to rbyd vs rbd trees in the first place... One option is to do rbyd traversals at each B-tree node to build the necessary information to figure out the weights. But with rbyd traversals taking O(m log m), this makes B-tree lookups O(log n * m log m), and B-tree traversals a messy O(n log n * m log m), which is acceptable, but disapointing for what will likely be the most common operation in the filesystem. But the rbyd trees _are_ already weighted. A better solution might be to go back and rethink the seperation of B-tree weights and rbyd ids. Unfortunately, with only 16-bits available for rbyd ids, this would likely require a rewrite of how rbyd tags are encoded...
This commit is contained in:
@@ -455,24 +455,26 @@ typedef uint32_t lfsr_tag_t;
|
|||||||
typedef int32_t lfsr_stag_t;
|
typedef int32_t lfsr_stag_t;
|
||||||
|
|
||||||
enum lfsr_tag_type {
|
enum lfsr_tag_type {
|
||||||
LFSR_TAG_MK = 0x0800,
|
LFSR_TAG_MK = 0x0800,
|
||||||
LFSR_TAG_RM = 0x0801,
|
LFSR_TAG_RM = 0x0801,
|
||||||
LFSR_TAG_MKREG = 0x0800,
|
LFSR_TAG_MKREG = 0x0800,
|
||||||
LFSR_TAG_MKDIR = 0x0808,
|
LFSR_TAG_MKDIR = 0x0808,
|
||||||
|
LFSR_TAG_MKBRANCH = 0x0ff8,
|
||||||
|
|
||||||
LFSR_TAG_UATTR = 0x1000,
|
LFSR_TAG_UATTR = 0x1000,
|
||||||
LFSR_TAG_RMUATTR = 0x1001,
|
LFSR_TAG_RMUATTR = 0x1001,
|
||||||
|
LFSR_TAG_BTREE = 0x2010,
|
||||||
|
|
||||||
LFSR_TAG_CRC = 0x0002,
|
LFSR_TAG_CRC = 0x0002,
|
||||||
LFSR_TAG_CRC0 = 0x0002,
|
LFSR_TAG_CRC0 = 0x0002,
|
||||||
LFSR_TAG_CRC1 = 0x0003,
|
LFSR_TAG_CRC1 = 0x0003,
|
||||||
LFSR_TAG_FCRC = 0x000a,
|
LFSR_TAG_FCRC = 0x000a,
|
||||||
|
|
||||||
LFSR_TAG_ALT = 0x0004,
|
LFSR_TAG_ALT = 0x0004,
|
||||||
LFSR_TAG_ALTBLT = 0x0004,
|
LFSR_TAG_ALTBLT = 0x0004,
|
||||||
LFSR_TAG_ALTRLT = 0x0005,
|
LFSR_TAG_ALTRLT = 0x0005,
|
||||||
LFSR_TAG_ALTBGT = 0x0006,
|
LFSR_TAG_ALTBGT = 0x0006,
|
||||||
LFSR_TAG_ALTRGT = 0x0007,
|
LFSR_TAG_ALTRGT = 0x0007,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LFSR_TAG_(type, id) \
|
#define LFSR_TAG_(type, id) \
|
||||||
@@ -517,10 +519,10 @@ enum lfsr_tag_type {
|
|||||||
// LFS_TYPE1_ALT = 0x0004,
|
// LFS_TYPE1_ALT = 0x0004,
|
||||||
//};
|
//};
|
||||||
|
|
||||||
enum lfsr_tag_pat {
|
//enum lfsr_tag_pat {
|
||||||
LFS_PAT_GET = 0x0000,
|
// LFS_PAT_GET = 0x0000,
|
||||||
LFS_PAT_FIND = 0x0001,
|
// LFS_PAT_FIND = 0x0001,
|
||||||
};
|
//};
|
||||||
|
|
||||||
//#define LFS_ALT_B false
|
//#define LFS_ALT_B false
|
||||||
//#define LFS_ALT_R true
|
//#define LFS_ALT_R true
|
||||||
@@ -582,6 +584,26 @@ static inline bool lfsr_tag_isrm(lfsr_tag_t tag) {
|
|||||||
return tag & 0x1;
|
return tag & 0x1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint8_t lfsr_tag_pat(lfsr_tag_t tag) {
|
||||||
|
// note that this is only for driver bookkeeping and never
|
||||||
|
// exists on disk
|
||||||
|
return tag & 0x4;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool lfsr_tag_isfound(lfsr_tag_t tag) {
|
||||||
|
// note that this is only for driver bookkeeping and never
|
||||||
|
// exists on disk
|
||||||
|
return tag & 0x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline lfsr_tag_t lfsr_tag_mkfound(lfsr_tag_t tag) {
|
||||||
|
return tag | 0x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline lfsr_tag_t lfsr_tag_mknotfound(lfsr_tag_t tag) {
|
||||||
|
return tag & ~0x2;
|
||||||
|
}
|
||||||
|
|
||||||
static inline uint16_t lfsr_tag_suptype(lfsr_tag_t tag) {
|
static inline uint16_t lfsr_tag_suptype(lfsr_tag_t tag) {
|
||||||
return tag & 0x7807;
|
return tag & 0x7807;
|
||||||
}
|
}
|
||||||
@@ -723,41 +745,67 @@ struct lfsr_attr {
|
|||||||
// NULL, 0, next})
|
// NULL, 0, next})
|
||||||
|
|
||||||
|
|
||||||
// operations on pattern lists
|
|
||||||
struct lfsr_pat {
|
// patterns we can look for during fetch
|
||||||
lfsr_tag_t tag;
|
enum lfsr_tag_pat {
|
||||||
union {
|
LFSR_PAT_LEB128 = 0x0000,
|
||||||
struct {
|
LFSR_PAT_NAME = 0x0004,
|
||||||
void *buffer;
|
|
||||||
lfs_size_t size;
|
|
||||||
} get;
|
|
||||||
struct {
|
|
||||||
const void *buffer;
|
|
||||||
lfs_size_t size;
|
|
||||||
} find;
|
|
||||||
} u;
|
|
||||||
struct lfsr_pat *next;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LFS_MKRGETPAT_(tag, buffer, size, next) \
|
struct lfsr_pat {
|
||||||
(&(struct lfsr_pat){ \
|
// set the lower bits of predicted with the pattern type
|
||||||
.tag = LFS_PAT_GET | (tag), \
|
lfsr_tag_t predicted;
|
||||||
.u.get.buffer = buffer, \
|
|
||||||
.u.get.size = size, \
|
|
||||||
.next = next})
|
|
||||||
|
|
||||||
#define LFS_MKRGETPAT(type1, type2, buffer, size, next) \
|
// the result will be placed in found, if the tag is not found,
|
||||||
LFS_MKRGET_(LFS_MKRTAG(type1, type2, 0), buffer, size, next)
|
// the id will at least contain where you should insert
|
||||||
|
lfsr_tag_t found;
|
||||||
|
|
||||||
#define LFS_MKRFINDPAT_(tag, buffer, size, next) \
|
// what to search for
|
||||||
(&(struct lfsr_pat){ \
|
union {
|
||||||
.tag = LFS_PAT_FIND | (tag), \
|
uint32_t leb128;
|
||||||
.u.find.buffer = buffer, \
|
struct {
|
||||||
.u.find.size = size, \
|
const char *name;
|
||||||
.next = next})
|
lfs_size_t size;
|
||||||
|
} name;
|
||||||
|
} u;
|
||||||
|
};
|
||||||
|
|
||||||
#define LFS_MKRFINDPAT(type1, type2, buffer, size, next) \
|
|
||||||
LFS_MKRFIND_(LFS_MKRTAG(type1, type2, 0), buffer, size, next)
|
//// operations on pattern lists
|
||||||
|
//struct lfsr_pat {
|
||||||
|
// lfsr_tag_t tag;
|
||||||
|
// union {
|
||||||
|
// struct {
|
||||||
|
// void *buffer;
|
||||||
|
// lfs_size_t size;
|
||||||
|
// } get;
|
||||||
|
// struct {
|
||||||
|
// const void *buffer;
|
||||||
|
// lfs_size_t size;
|
||||||
|
// } find;
|
||||||
|
// } u;
|
||||||
|
// struct lfsr_pat *next;
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//#define LFS_MKRGETPAT_(tag, buffer, size, next)
|
||||||
|
// (&(struct lfsr_pat){
|
||||||
|
// .tag = LFS_PAT_GET | (tag),
|
||||||
|
// .u.get.buffer = buffer,
|
||||||
|
// .u.get.size = size,
|
||||||
|
// .next = next})
|
||||||
|
//
|
||||||
|
//#define LFS_MKRGETPAT(type1, type2, buffer, size, next)
|
||||||
|
// LFS_MKRGET_(LFS_MKRTAG(type1, type2, 0), buffer, size, next)
|
||||||
|
//
|
||||||
|
//#define LFS_MKRFINDPAT_(tag, buffer, size, next)
|
||||||
|
// (&(struct lfsr_pat){
|
||||||
|
// .tag = LFS_PAT_FIND | (tag),
|
||||||
|
// .u.find.buffer = buffer,
|
||||||
|
// .u.find.size = size,
|
||||||
|
// .next = next})
|
||||||
|
//
|
||||||
|
//#define LFS_MKRFINDPAT(type1, type2, buffer, size, next)
|
||||||
|
// LFS_MKRFIND_(LFS_MKRTAG(type1, type2, 0), buffer, size, next)
|
||||||
|
|
||||||
|
|
||||||
// operations on global state
|
// operations on global state
|
||||||
@@ -827,15 +875,20 @@ static void lfs_fcrc_tole32(struct lfs_fcrc *fcrc) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// fcrc on-disk encoding
|
||||||
struct lfsr_fcrc {
|
struct lfsr_fcrc {
|
||||||
uint32_t crc;
|
uint32_t crc;
|
||||||
lfs_size_t size;
|
lfs_size_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
static lfs_ssize_t lfsr_fcrc_todisk(struct lfsr_fcrc *fcrc) {
|
#define LFSR_FCRC_DSIZE 8
|
||||||
lfs_tole32_(fcrc->crc, &fcrc->crc);
|
|
||||||
|
|
||||||
lfs_ssize_t delta = lfs_toleb128(fcrc->size, (uint8_t*)&fcrc->size, 4);
|
static lfs_ssize_t lfsr_fcrc_todisk(
|
||||||
|
const struct lfsr_fcrc *fcrc,
|
||||||
|
uint8_t buf[static LFSR_FCRC_DSIZE]) {
|
||||||
|
lfs_tole32_(fcrc->crc, &buf[0]);
|
||||||
|
|
||||||
|
lfs_ssize_t delta = lfs_toleb128(fcrc->size, &buf[4], 4);
|
||||||
if (delta < 0) {
|
if (delta < 0) {
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
@@ -843,10 +896,12 @@ static lfs_ssize_t lfsr_fcrc_todisk(struct lfsr_fcrc *fcrc) {
|
|||||||
return sizeof(uint32_t) + delta;
|
return sizeof(uint32_t) + delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lfs_ssize_t lfsr_fcrc_fromdisk(struct lfsr_fcrc *fcrc) {
|
static lfs_ssize_t lfsr_fcrc_fromdisk(
|
||||||
fcrc->crc = lfs_fromle32_(&fcrc->crc);
|
struct lfsr_fcrc *fcrc,
|
||||||
|
const uint8_t buf[static LFSR_FCRC_DSIZE]) {
|
||||||
|
fcrc->crc = lfs_fromle32_(&buf[0]);
|
||||||
|
|
||||||
lfs_ssize_t delta = lfs_fromleb128(&fcrc->size, (uint8_t*)&fcrc->size, 4);
|
lfs_ssize_t delta = lfs_fromleb128(&fcrc->size, &buf[4], 4);
|
||||||
if (delta < 0) {
|
if (delta < 0) {
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
@@ -854,6 +909,59 @@ static lfs_ssize_t lfsr_fcrc_fromdisk(struct lfsr_fcrc *fcrc) {
|
|||||||
return sizeof(uint32_t) + delta;
|
return sizeof(uint32_t) + delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// btree on-disk encoding
|
||||||
|
#define LFSR_BTREE_DSIZE 14
|
||||||
|
|
||||||
|
static lfs_ssize_t lfsr_btree_todisk(
|
||||||
|
const lfsr_btree_t *btree,
|
||||||
|
uint8_t buf[static LFSR_BTREE_DSIZE]) {
|
||||||
|
lfs_ssize_t delta = 0;
|
||||||
|
lfs_ssize_t delta_ = lfs_toleb128(btree->block, &buf[delta], 5);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
delta_ = lfs_toleb128(btree->limit, &buf[delta], 4);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
delta_ = lfs_toleb128(btree->weight, &buf[delta], 5);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lfs_ssize_t lfsr_btree_fromdisk(
|
||||||
|
lfsr_btree_t *btree,
|
||||||
|
const uint8_t buf[static LFSR_BTREE_DSIZE]) {
|
||||||
|
lfs_ssize_t delta = 0;
|
||||||
|
lfs_ssize_t delta_ = lfs_fromleb128(&btree->block, &buf[delta], 5);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
delta_ = lfs_fromleb128(&btree->limit, &buf[delta], 4);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
delta_ = lfs_fromleb128(&btree->weight, &buf[delta], 5);
|
||||||
|
if (delta_ < 0) {
|
||||||
|
return delta_;
|
||||||
|
}
|
||||||
|
delta += delta_;
|
||||||
|
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
// other endianness operations
|
// other endianness operations
|
||||||
static void lfs_ctz_fromle32(struct lfs_ctz *ctz) {
|
static void lfs_ctz_fromle32(struct lfs_ctz *ctz) {
|
||||||
ctz->head = lfs_fromle32(ctz->head);
|
ctz->head = lfs_fromle32(ctz->head);
|
||||||
@@ -1109,21 +1217,19 @@ static lfs_ssize_t lfsr_rbyd_readtag(lfs_t *lfs,
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
static lfsr_stag_t lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||||
lfs_block_t block,
|
lfs_block_t block, lfs_size_t limit,
|
||||||
struct lfsr_pat *patterns) {
|
struct lfsr_pat *pattern) {
|
||||||
// TODO this
|
// clear any previous state in pattern
|
||||||
// first mark patterns as invalid until we find matches
|
if (pattern) {
|
||||||
for (struct lfsr_pat *pattern = patterns;
|
pattern->predicted &= 0x1;
|
||||||
pattern;
|
pattern->found = 0;
|
||||||
pattern = pattern->next) {
|
|
||||||
pattern->tag = lfsr_tag_mkinvalid(pattern->tag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// read the revision count and get the crc started
|
// read the revision count and get the crc started
|
||||||
uint32_t rev;
|
uint32_t rev;
|
||||||
int err = lfs_bd_read(lfs,
|
int err = lfs_bd_read(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit,
|
||||||
block, 0, &rev, sizeof(uint32_t));
|
block, 0, &rev, sizeof(uint32_t));
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -1153,7 +1259,7 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
lfsr_tag_t tag;
|
lfsr_tag_t tag;
|
||||||
lfs_size_t size;
|
lfs_size_t size;
|
||||||
lfs_ssize_t delta = lfsr_rbyd_readtag(lfs,
|
lfs_ssize_t delta = lfsr_rbyd_readtag(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit-off,
|
||||||
block, off, &tag, &size, &crc);
|
block, off, &tag, &size, &crc);
|
||||||
if (delta < 0) {
|
if (delta < 0) {
|
||||||
if (delta == LFS_ERR_INVAL
|
if (delta == LFS_ERR_INVAL
|
||||||
@@ -1182,7 +1288,7 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
wastrunk = false;
|
wastrunk = false;
|
||||||
|
|
||||||
// tag goes out of range?
|
// tag goes out of range?
|
||||||
if (off + size > lfs->cfg->block_size) {
|
if (off + size > limit) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1193,7 +1299,7 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
|
|
||||||
// crc the entry first, hopefully leaving it in the cache
|
// crc the entry first, hopefully leaving it in the cache
|
||||||
err = lfs_bd_crc32c(lfs,
|
err = lfs_bd_crc32c(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit-off,
|
||||||
block, off, size, &crc);
|
block, off, size, &crc);
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
@@ -1218,10 +1324,10 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
count -= 1;
|
count -= 1;
|
||||||
// found an fcrc? save for later
|
// found an fcrc? save for later
|
||||||
} else if (lfsr_tag_xsuptype(tag) == LFSR_TAG_FCRC) {
|
} else if (lfsr_tag_xsuptype(tag) == LFSR_TAG_FCRC) {
|
||||||
|
uint8_t fbuf[LFSR_FCRC_DSIZE];
|
||||||
err = lfs_bd_read(lfs,
|
err = lfs_bd_read(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit-off,
|
||||||
block, off, &fcrc,
|
block, off, fbuf, lfs_min(size, LFSR_FCRC_DSIZE));
|
||||||
lfs_min(size, sizeof(struct lfsr_fcrc)));
|
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
break;
|
break;
|
||||||
@@ -1229,17 +1335,63 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfs_ssize_t delta = lfsr_fcrc_fromdisk(&fcrc);
|
lfs_ssize_t delta = lfsr_fcrc_fromdisk(&fcrc, fbuf);
|
||||||
if (delta < 0) {
|
if (delta < 0) {
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
hasfcrc = true;
|
hasfcrc = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test if pattern matches?
|
||||||
|
if (pattern && lfsr_tag_suptype(tag) == LFSR_TAG_MK) {
|
||||||
|
int cmp;
|
||||||
|
if (lfsr_tag_pat(pattern->predicted) == LFSR_PAT_LEB128) {
|
||||||
|
uint8_t buf[5];
|
||||||
|
err = lfs_bd_read(lfs,
|
||||||
|
NULL, &lfs->rcache, limit-off,
|
||||||
|
block, off, buf, lfs_min(size, 5));
|
||||||
|
if (err) {
|
||||||
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t found;
|
||||||
|
lfs_ssize_t delta = lfs_fromleb128(&found, buf, 5);
|
||||||
|
if (delta < 0) {
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp = pattern->u.leb128 - found;
|
||||||
|
} else if (lfsr_tag_pat(pattern->predicted) == LFSR_PAT_NAME) {
|
||||||
|
// TODO handle names
|
||||||
|
LFS_ASSERT(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// note this already handles the shifting of ids
|
||||||
|
if (cmp == 0) {
|
||||||
|
pattern->predicted = lfsr_tag_mkfound(
|
||||||
|
tag | lfsr_tag_pat(pattern->predicted));
|
||||||
|
} else if (cmp < 0) {
|
||||||
|
pattern->predicted += 0x8000;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (pattern && lfsr_tag_suptype(tag) == LFSR_TAG_RM) {
|
||||||
|
// update any found tags
|
||||||
|
if (lfsr_tag_id(tag) == lfsr_tag_id(pattern->predicted)) {
|
||||||
|
pattern->predicted = lfsr_tag_mknotfound(
|
||||||
|
pattern->predicted);
|
||||||
|
} else if (lfsr_tag_id(tag) < lfsr_tag_id(pattern->predicted)) {
|
||||||
|
pattern->predicted -= 0x8000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// is an end-of-commit crc
|
// is an end-of-commit crc
|
||||||
} else {
|
} else {
|
||||||
uint32_t crc_ = 0;
|
uint32_t crc_ = 0;
|
||||||
err = lfs_bd_read(lfs,
|
err = lfs_bd_read(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit-off,
|
||||||
block, off, &crc_, sizeof(uint32_t));
|
block, off, &crc_, sizeof(uint32_t));
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
@@ -1265,6 +1417,10 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
rbyd->off = off + size;
|
rbyd->off = off + size;
|
||||||
rbyd->crc = crc;
|
rbyd->crc = crc;
|
||||||
rbyd->count = count;
|
rbyd->count = count;
|
||||||
|
|
||||||
|
if (pattern) {
|
||||||
|
pattern->found = pattern->predicted;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
off += size;
|
off += size;
|
||||||
@@ -1281,9 +1437,11 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
// check for an fcrc matching the next prog's erased state, if
|
// check for an fcrc matching the next prog's erased state, if
|
||||||
// this failed most likely a previous prog was interrupted, we
|
// this failed most likely a previous prog was interrupted, we
|
||||||
// need a new erase
|
// need a new erase
|
||||||
|
//
|
||||||
|
// note this does go beyond limit
|
||||||
uint32_t fcrc_ = 0;
|
uint32_t fcrc_ = 0;
|
||||||
int err = lfs_bd_crc32c(lfs,
|
int err = lfs_bd_crc32c(lfs,
|
||||||
NULL, &lfs->rcache, lfs->cfg->block_size,
|
NULL, &lfs->rcache, limit-lfs_min(off, limit),
|
||||||
rbyd->block, rbyd->off, fcrc.size, &fcrc_);
|
rbyd->block, rbyd->off, fcrc.size, &fcrc_);
|
||||||
if (err && err != LFS_ERR_CORRUPT) {
|
if (err && err != LFS_ERR_CORRUPT) {
|
||||||
return err;
|
return err;
|
||||||
@@ -1293,7 +1451,16 @@ static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
rbyd->erased = (fcrc_ == fcrc.crc);
|
rbyd->erased = (fcrc_ == fcrc.crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
if (pattern) {
|
||||||
|
LFS_ASSERT(lfsr_tag_isvalid(pattern->found));
|
||||||
|
if (lfsr_tag_isfound(pattern->found)) {
|
||||||
|
return pattern->found;
|
||||||
|
} else {
|
||||||
|
return LFS_ERR_NOENT;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static lfsr_stag_t lfsr_rbyd_lookup(lfs_t *lfs, const lfsr_rbyd_t *rbyd,
|
static lfsr_stag_t lfsr_rbyd_lookup(lfs_t *lfs, const lfsr_rbyd_t *rbyd,
|
||||||
@@ -1617,7 +1784,7 @@ static int lfsr_rbyd_append(lfs_t *lfs, lfsr_rbyd_t *rbyd_,
|
|||||||
while (true) {
|
while (true) {
|
||||||
// do we need to flip bounds?
|
// do we need to flip bounds?
|
||||||
if (diverged
|
if (diverged
|
||||||
&& !(upper_tag_ & 0x2)
|
&& !lfsr_tag_isfound(upper_tag_)
|
||||||
&& (!p_alts[0] || lfsr_tag_isblack(p_alts[0]))) {
|
&& (!p_alts[0] || lfsr_tag_isblack(p_alts[0]))) {
|
||||||
lfs_swap(&lower_tag_, &upper_tag_);
|
lfs_swap(&lower_tag_, &upper_tag_);
|
||||||
lfs_swap(&lower_branch, &upper_branch);
|
lfs_swap(&lower_branch, &upper_branch);
|
||||||
@@ -1805,12 +1972,12 @@ static int lfsr_rbyd_append(lfs_t *lfs, lfsr_rbyd_t *rbyd_,
|
|||||||
// found end of tree?
|
// found end of tree?
|
||||||
} else {
|
} else {
|
||||||
// update the tag id, marking as found
|
// update the tag id, marking as found
|
||||||
lower_tag_ = LFSR_TAG_(
|
lower_tag_ = lfsr_tag_mkfound(LFSR_TAG_(
|
||||||
lfsr_tag_type(alt) | 0x2,
|
lfsr_tag_type(alt),
|
||||||
lfsr_tag_id(lower_upper-1));
|
lfsr_tag_id(lower_upper-1)));
|
||||||
|
|
||||||
// if we diverged, we also need to find the other bound
|
// if we diverged, we also need to find the other bound
|
||||||
if (diverged && !(upper_tag_ & 0x2)) {
|
if (diverged && !lfsr_tag_isfound(upper_tag_)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1937,7 +2104,10 @@ leaf:;
|
|||||||
|
|
||||||
int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||||
const struct lfsr_attr *attrs) {
|
const struct lfsr_attr *attrs) {
|
||||||
LFS_ASSERT(rbyd->erased);
|
// we can't make progress if we're not erased
|
||||||
|
if (!rbyd->erased) {
|
||||||
|
return LFS_ERR_RANGE;
|
||||||
|
}
|
||||||
|
|
||||||
// mark as unerased in case we fail
|
// mark as unerased in case we fail
|
||||||
rbyd->erased = false;
|
rbyd->erased = false;
|
||||||
@@ -2014,7 +2184,8 @@ int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfs_size_t fcrc_delta = lfsr_fcrc_todisk(&fcrc);
|
uint8_t fbuf[LFSR_FCRC_DSIZE];
|
||||||
|
lfs_size_t fcrc_delta = lfsr_fcrc_todisk(&fcrc, fbuf);
|
||||||
err = lfsr_rbyd_progtag(lfs, &rbyd_,
|
err = lfsr_rbyd_progtag(lfs, &rbyd_,
|
||||||
LFSR_TAG(FCRC, -1), fcrc_delta, &rbyd_.crc);
|
LFSR_TAG(FCRC, -1), fcrc_delta, &rbyd_.crc);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -2022,7 +2193,7 @@ int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = lfsr_rbyd_prog(lfs, &rbyd_,
|
err = lfsr_rbyd_prog(lfs, &rbyd_,
|
||||||
&fcrc, fcrc_delta, &rbyd_.crc);
|
fbuf, fcrc_delta, &rbyd_.crc);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2091,6 +2262,121 @@ int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Rbyd B-Tree operations ///
|
||||||
|
|
||||||
|
static int lfsr_btree_alloc(lfs_t *lfs, lfsr_btree_t *btree,
|
||||||
|
lfs_size_t weight, const struct lfsr_attr *attrs) {
|
||||||
|
// create an rbyd block to act as the root of the tree
|
||||||
|
//
|
||||||
|
// note that for littlefs this should really only be called
|
||||||
|
// when we have at least two entries, otherwise a smaller representation
|
||||||
|
// should be used
|
||||||
|
lfs_block_t block;
|
||||||
|
int err = lfs_alloc(lfs, &block);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read revision count so we make sure to change the contents of the block,
|
||||||
|
// this is important if erase is a noop
|
||||||
|
uint32_t rev;
|
||||||
|
err = lfs_bd_read(lfs,
|
||||||
|
NULL, &lfs->rcache, 0,
|
||||||
|
block, 0, &rev, sizeof(uint32_t));
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
// go ahead and erase the block
|
||||||
|
err = lfs_bd_erase(lfs, block);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
// write the new root of our tree
|
||||||
|
lfsr_rbyd_t rbyd = {
|
||||||
|
.block = block,
|
||||||
|
.trunk = 0,
|
||||||
|
.off = 0,
|
||||||
|
.rev = rev + 1,
|
||||||
|
.crc = 0,
|
||||||
|
.count = 0,
|
||||||
|
.erased = true
|
||||||
|
};
|
||||||
|
|
||||||
|
err = lfsr_rbyd_commit(lfs, &rbyd, attrs);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
btree->block = block;
|
||||||
|
btree->limit = rbyd.off;
|
||||||
|
btree->weight = weight;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lfsr_stag_t lfsr_btree_lookup(lfs_t *lfs, const lfsr_btree_t *btree,
|
||||||
|
lfsr_rbyd_t *rbyd, struct lfsr_pat *pattern) {
|
||||||
|
// most of the work here is done by lfsr_rbyd_fetch, we just descend
|
||||||
|
// down the tree until it fails
|
||||||
|
lfsr_btree_t branch = *btree;
|
||||||
|
while (true) {
|
||||||
|
lfsr_stag_t tag = lfsr_rbyd_fetch(lfs, rbyd,
|
||||||
|
branch.block, branch.limit,
|
||||||
|
pattern);
|
||||||
|
if (tag < 0 && tag != LFS_ERR_NOENT) {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
// found?
|
||||||
|
if (tag != LFS_ERR_NOENT && lfsr_tag_type(tag) != LFSR_TAG_MKBRANCH) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO do we?
|
||||||
|
// TODO also can the pattern found on ENOENT be formed better for this?
|
||||||
|
//
|
||||||
|
// we always find ids <= our pattern, so if it's not found we descend
|
||||||
|
// down the left branch, but we need to make sure this is actually a
|
||||||
|
// btree branch
|
||||||
|
if (tag == LFS_ERR_NOENT) {
|
||||||
|
tag = lfsr_rbyd_lookup(lfs, rbyd,
|
||||||
|
LFSR_TAG(MK, lfsr_tag_id(pattern->found)
|
||||||
|
- lfs_min(1, lfsr_tag_id(pattern->found))),
|
||||||
|
NULL, NULL);
|
||||||
|
if (tag < 0) {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lfsr_tag_type(tag) != LFSR_TAG_MKBRANCH) {
|
||||||
|
return LFS_ERR_NOENT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// continue search down tree
|
||||||
|
uint8_t bbuf[LFSR_BTREE_DSIZE];
|
||||||
|
lfs_ssize_t delta = lfsr_rbyd_get(lfs, rbyd,
|
||||||
|
LFSR_TAG(BTREE, lfsr_tag_id(tag)),
|
||||||
|
bbuf, LFSR_BTREE_DSIZE);
|
||||||
|
if (delta < 0) {
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
delta = lfsr_btree_fromdisk(&branch, bbuf);
|
||||||
|
if (delta < 0) {
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int lfsr_btree_insert(lfs_t *lfs, lfsr_btree_t *btree,
|
||||||
|
lfsr_rbyd_t *rbyd, const struct lfsr_attr *attrs) {
|
||||||
|
// TODO
|
||||||
|
LFS_ASSERT(false);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Metadata pair operations ///
|
/// Metadata pair operations ///
|
||||||
|
|
||||||
//static int lfsr_mdir_fetch(lfs_t *lfs, lfsr_mdir_t mdir,
|
//static int lfsr_mdir_fetch(lfs_t *lfs, lfsr_mdir_t mdir,
|
||||||
|
|||||||
@@ -339,6 +339,12 @@ typedef struct lfsr_rbyd {
|
|||||||
bool erased;
|
bool erased;
|
||||||
} lfsr_rbyd_t;
|
} lfsr_rbyd_t;
|
||||||
|
|
||||||
|
typedef struct lfsr_btree {
|
||||||
|
lfs_block_t block;
|
||||||
|
lfs_size_t limit;
|
||||||
|
lfs_size_t weight;
|
||||||
|
} lfsr_btree_t;
|
||||||
|
|
||||||
typedef struct lfs_mdir {
|
typedef struct lfs_mdir {
|
||||||
lfs_block_t pair[2];
|
lfs_block_t pair[2];
|
||||||
uint32_t rev;
|
uint32_t rev;
|
||||||
|
|||||||
+118
-112
@@ -25,14 +25,14 @@ code = '''
|
|||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, NULL) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, NULL) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
|
|
||||||
// commit with one attribute
|
// commit with one attribute
|
||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
|
|
||||||
// commit with two attributes
|
// commit with two attributes
|
||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
@@ -40,7 +40,7 @@ code = '''
|
|||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
'''
|
'''
|
||||||
|
|
||||||
[cases.test_rbyd_multi_commit]
|
[cases.test_rbyd_multi_commit]
|
||||||
@@ -65,14 +65,14 @@ code = '''
|
|||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, NULL) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, NULL) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
|
|
||||||
// commit with one attribute
|
// commit with one attribute
|
||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
|
|
||||||
// commit with two attributes
|
// commit with two attributes
|
||||||
rbyd = init_rbyd;
|
rbyd = init_rbyd;
|
||||||
@@ -81,7 +81,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
'''
|
'''
|
||||||
|
|
||||||
[cases.test_rbyd_commit_fetch_commit]
|
[cases.test_rbyd_commit_fetch_commit]
|
||||||
@@ -107,12 +107,12 @@ code = '''
|
|||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
|
|
||||||
// commit with the second attribute
|
// commit with the second attribute
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)) => 0;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# [cases.test_rbyd_fetchmatch]
|
# [cases.test_rbyd_fetchmatch]
|
||||||
@@ -147,7 +147,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -182,7 +182,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -219,7 +219,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -255,7 +255,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -290,7 +290,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -327,7 +327,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
||||||
@@ -363,7 +363,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
@@ -379,7 +379,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -401,7 +401,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), buffer, 4)
|
||||||
@@ -446,7 +446,7 @@ code = '''
|
|||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
||||||
assert(tag == LFS_ERR_NOENT);
|
assert(tag == LFS_ERR_NOENT);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, 0, &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, 0, &off, &size);
|
||||||
assert(tag == LFSR_TAG2(UATTR, 1, -1));
|
assert(tag == LFSR_TAG2(UATTR, 1, -1));
|
||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
||||||
@@ -493,7 +493,7 @@ code = '''
|
|||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
||||||
assert(tag == LFS_ERR_NOENT);
|
assert(tag == LFS_ERR_NOENT);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, 0, &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, 0, &off, &size);
|
||||||
assert(tag == LFSR_TAG2(UATTR, 1, -1));
|
assert(tag == LFSR_TAG2(UATTR, 1, -1));
|
||||||
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
tag = lfsr_rbyd_lookup(&lfs, &rbyd, lfsr_tag_next(tag), &off, &size);
|
||||||
@@ -531,7 +531,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4,
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -547,7 +547,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -584,7 +584,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -601,7 +601,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -640,7 +640,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -661,7 +661,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -704,7 +704,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -726,7 +726,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -748,7 +748,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -770,7 +770,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -814,7 +814,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -840,7 +840,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -866,7 +866,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -892,7 +892,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -938,7 +938,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4,
|
||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -964,7 +964,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -990,7 +990,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1016,7 +1016,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1065,7 +1065,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1094,7 +1094,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1121,7 +1121,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1148,7 +1148,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1199,7 +1199,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
LFSR_ATTR2(UATTR, 4, -1, "\xdd\xdd\xdd\xdd", 4,
|
||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1232,7 +1232,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 3, -1, "\xcc\xcc\xcc\xcc", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1263,7 +1263,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1294,7 +1294,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL)))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1348,7 +1348,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1382,7 +1382,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1416,7 +1416,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1472,7 +1472,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
LFSR_ATTR2(UATTR, 5, -1, "\xee\xee\xee\xee", 4,
|
||||||
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1508,7 +1508,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4,
|
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4,
|
||||||
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 2, -1, "\xbb\xbb\xbb\xbb", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1544,7 +1544,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4,
|
LFSR_ATTR2(UATTR, 6, -1, "\xff\xff\xff\xff", 4,
|
||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))))) => 0;
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa", 4, NULL))))))) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1616,7 +1616,7 @@ code = '''
|
|||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
for (unsigned j = 0; j < N; j++) {
|
for (unsigned j = 0; j < N; j++) {
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
||||||
@@ -1712,7 +1712,7 @@ code = '''
|
|||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
for (unsigned j = 0; j < N; j++) {
|
for (unsigned j = 0; j < N; j++) {
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
||||||
@@ -1808,7 +1808,7 @@ code = '''
|
|||||||
|
|
||||||
// check that we can still lookup all the tags
|
// check that we can still lookup all the tags
|
||||||
prng = 42;
|
prng = 42;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
for (lfs_size_t i = 0; i < count; i++) {
|
for (lfs_size_t i = 0; i < count; i++) {
|
||||||
uint8_t x
|
uint8_t x
|
||||||
= (ORDER == 0) ? (uint8_t)i
|
= (ORDER == 0) ? (uint8_t)i
|
||||||
@@ -1856,7 +1856,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1878,7 +1878,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 2, -1);
|
=> LFSR_TAG2(UATTR, 2, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1902,7 +1902,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 3, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -1985,7 +1985,8 @@ code = '''
|
|||||||
lfsr_rbyd_commit(&lfs, &rbyd,
|
lfsr_rbyd_commit(&lfs, &rbyd,
|
||||||
LFSR_ATTR2(RMUATTR, j+1, -1, NULL, 0, NULL)) => 0;
|
LFSR_ATTR2(RMUATTR, j+1, -1, NULL, 0, NULL)) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N; k++) {
|
for (unsigned k = 0; k < N; k++) {
|
||||||
lfsr_stag_t tag = lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_stag_t tag = lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, k+1, -1), &off, &size);
|
LFSR_TAG2(UATTR, k+1, -1), &off, &size);
|
||||||
@@ -2115,7 +2116,7 @@ code = '''
|
|||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
// one last fetch to make sure nothing was broken
|
// one last fetch to make sure nothing was broken
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 2, -1);
|
=> LFSR_TAG2(UATTR, 2, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -2257,7 +2258,7 @@ code = '''
|
|||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
// one last fetch to make sure nothing was broken
|
// one last fetch to make sure nothing was broken
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 2, -1);
|
=> LFSR_TAG2(UATTR, 2, -1);
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -2303,7 +2304,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -2324,7 +2325,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -2345,7 +2346,7 @@ code = '''
|
|||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
lfsr_rbyd_lookup(&lfs, &rbyd, LFSR_TAG2(UATTR, 2, -1), &off, &size)
|
||||||
@@ -2426,7 +2427,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check that all tags are now removed
|
// check that all tags are now removed
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
for (unsigned j = 0; j < N; j++) {
|
for (unsigned j = 0; j < N; j++) {
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
LFSR_TAG2(UATTR, j+1, -1), &off, &size)
|
||||||
@@ -2438,7 +2439,7 @@ code = '''
|
|||||||
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa\xaa\xaa", 6,
|
LFSR_ATTR2(UATTR, 1, -1, "\xaa\xaa\xaa\xaa\xaa\xaa", 6,
|
||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
LFSR_TAG2(UATTR, 1, -1), &off, &size)
|
||||||
=> LFSR_TAG2(UATTR, 1, -1);
|
=> LFSR_TAG2(UATTR, 1, -1);
|
||||||
@@ -2566,7 +2567,8 @@ code = '''
|
|||||||
"\xaa\xaa\xaa\xaa\xaa\xaa", 6,
|
"\xaa\xaa\xaa\xaa\xaa\xaa", 6,
|
||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N; k++) {
|
for (unsigned k = 0; k < N; k++) {
|
||||||
lfsr_stag_t tag = lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_stag_t tag = lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG2(UATTR, k+1, -1), &off, &size);
|
LFSR_TAG2(UATTR, k+1, -1), &off, &size);
|
||||||
@@ -2654,7 +2656,7 @@ code = '''
|
|||||||
=> 4;
|
=> 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -2673,7 +2675,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2693,7 +2695,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2716,7 +2718,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2741,7 +2743,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2766,7 +2768,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2806,7 +2808,7 @@ code = '''
|
|||||||
=> 4;
|
=> 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -2826,7 +2828,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2847,7 +2849,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
assert(memcmp(buffer, "\xbb\xbb\xbb\xbb", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2872,7 +2874,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2899,7 +2901,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -2926,7 +2928,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
assert(memcmp(buffer, "\xcc\xcc\xcc\xcc", 4) == 0);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 3);
|
assert(rbyd.count == 3);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4) => 4;
|
||||||
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
assert(memcmp(buffer, "\xaa\xaa\xaa\xaa", 4) == 0);
|
||||||
@@ -3008,7 +3010,7 @@ code = '''
|
|||||||
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
lfs_bd_erase(&lfs, rbyd.block) => 0;
|
||||||
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
lfsr_rbyd_commit(&lfs, &rbyd, attrs) => 0;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == N);
|
assert(rbyd.count == N);
|
||||||
for (unsigned j = 0; j < N; j++) {
|
for (unsigned j = 0; j < N; j++) {
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
@@ -3120,7 +3122,7 @@ code = '''
|
|||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == N);
|
assert(rbyd.count == N);
|
||||||
for (unsigned j = 0; j < N; j++) {
|
for (unsigned j = 0; j < N; j++) {
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
@@ -3224,7 +3226,7 @@ code = '''
|
|||||||
// check that we can at least lookup all the tags
|
// check that we can at least lookup all the tags
|
||||||
lfs_off_t off;
|
lfs_off_t off;
|
||||||
lfs_size_t size;
|
lfs_size_t size;
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
for (uint16_t x = 0; x < rbyd.count; x++) {
|
for (uint16_t x = 0; x < rbyd.count; x++) {
|
||||||
lfsr_rbyd_lookup(&lfs, &rbyd,
|
lfsr_rbyd_lookup(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, x), &off, &size)
|
LFSR_TAG(MKREG, x), &off, &size)
|
||||||
@@ -3270,7 +3272,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3294,7 +3296,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3322,7 +3324,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3353,7 +3355,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3384,7 +3386,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3438,7 +3440,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3474,7 +3476,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 1), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 1), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3518,7 +3520,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3568,7 +3570,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3618,7 +3620,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG2(UATTR, 1, 2), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 2);
|
assert(rbyd.count == 2);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> 4;
|
=> 4;
|
||||||
@@ -3729,7 +3731,8 @@ code = '''
|
|||||||
LFSR_ATTR(RM, j, NULL, 0, NULL)) => 0;
|
LFSR_ATTR(RM, j, NULL, 0, NULL)) => 0;
|
||||||
assert(rbyd.count == N-1);
|
assert(rbyd.count == N-1);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N-1; k++) {
|
for (unsigned k = 0; k < N-1; k++) {
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, k), buffer, 4) => 4;
|
LFSR_TAG(MKREG, k), buffer, 4) => 4;
|
||||||
@@ -3880,7 +3883,8 @@ code = '''
|
|||||||
LFSR_ATTR(RM, j, NULL, 0, NULL)) => 0;
|
LFSR_ATTR(RM, j, NULL, 0, NULL)) => 0;
|
||||||
assert(rbyd.count == N-1);
|
assert(rbyd.count == N-1);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N-1; k++) {
|
for (unsigned k = 0; k < N-1; k++) {
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, k), buffer, 4) => 4;
|
LFSR_TAG(MKREG, k), buffer, 4) => 4;
|
||||||
@@ -3974,7 +3978,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -3993,7 +3997,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4012,7 +4016,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4033,7 +4037,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4054,7 +4058,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4092,7 +4096,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4113,7 +4117,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4134,7 +4138,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4158,7 +4162,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4182,7 +4186,7 @@ code = '''
|
|||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
lfsr_rbyd_get(&lfs, &rbyd, LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
=> LFS_ERR_NOENT;
|
=> LFS_ERR_NOENT;
|
||||||
@@ -4283,7 +4287,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check that all tags are now removed
|
// check that all tags are now removed
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, 0), buffer, 4)
|
LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
@@ -4295,7 +4299,7 @@ code = '''
|
|||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, 0), buffer, 6)
|
LFSR_TAG(MKREG, 0), buffer, 6)
|
||||||
@@ -4442,7 +4446,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check that all tags are now removed
|
// check that all tags are now removed
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 0);
|
assert(rbyd.count == 0);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, 0), buffer, 4)
|
LFSR_TAG(MKREG, 0), buffer, 4)
|
||||||
@@ -4459,7 +4463,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, cfg->block_size, NULL) => 0;
|
||||||
assert(rbyd.count == 1);
|
assert(rbyd.count == 1);
|
||||||
lfsr_rbyd_get(&lfs, &rbyd,
|
lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, 0), buffer, 6)
|
LFSR_TAG(MKREG, 0), buffer, 6)
|
||||||
@@ -4614,7 +4618,8 @@ code = '''
|
|||||||
NULL)) => 0;
|
NULL)) => 0;
|
||||||
assert(rbyd.count == N);
|
assert(rbyd.count == N);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N; k++) {
|
for (unsigned k = 0; k < N; k++) {
|
||||||
lfs_ssize_t size = lfsr_rbyd_get(&lfs, &rbyd,
|
lfs_ssize_t size = lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, k), buffer, 6);
|
LFSR_TAG(MKREG, k), buffer, 6);
|
||||||
@@ -4787,7 +4792,8 @@ code = '''
|
|||||||
}
|
}
|
||||||
assert(rbyd.count == N);
|
assert(rbyd.count == N);
|
||||||
|
|
||||||
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block, NULL) => 0;
|
lfsr_rbyd_fetch(&lfs, &rbyd, rbyd.block,
|
||||||
|
cfg->block_size, NULL) => 0;
|
||||||
for (unsigned k = 0; k < N; k++) {
|
for (unsigned k = 0; k < N; k++) {
|
||||||
lfs_ssize_t size = lfsr_rbyd_get(&lfs, &rbyd,
|
lfs_ssize_t size = lfsr_rbyd_get(&lfs, &rbyd,
|
||||||
LFSR_TAG(MKREG, k), buffer, 6);
|
LFSR_TAG(MKREG, k), buffer, 6);
|
||||||
|
|||||||
Reference in New Issue
Block a user