Removed revision count from lfsr_rbyd_t
Now we read the revision count on-demand, trading off some extra reads for a smaller lfsr_rbyd_t struct. I believe this is worth it because: 1. We're created a lot of lfsr_rbyd_t structs as a part of the relatively complicated mdir/btree commit logic in order to safely fallback on errors. 2. We don't really need the revision count for our Cow btrees, so we only need to read the revision count on mdir fetch (which we were already reading too many times), on mdir compact, and on rbyd fetch as a part of checksum calculation. This really only adds a O(1) cost when we are compacting, which is rather small. Current measurements: code: 8980 -> 9036 (+0.6%) stack: 1024 -> 1000 (-2.3%) Though note this is currently without any mdir/btree commit code being dragged in.
This commit is contained in:
@@ -1585,8 +1585,8 @@ static bool lfsr_rbyd_isfetched(const lfsr_rbyd_t *rbyd) {
|
||||
|
||||
|
||||
// allocate an rbyd block
|
||||
static int lfsr_rbyd_alloc(lfs_t *lfs, lfsr_rbyd_t *rbyd, uint32_t rev) {
|
||||
*rbyd = (lfsr_rbyd_t){.rev=rev, .weight=0, .trunk=0, .off=0, .crc=0};
|
||||
static int lfsr_rbyd_alloc(lfs_t *lfs, lfsr_rbyd_t *rbyd) {
|
||||
*rbyd = (lfsr_rbyd_t){.weight=0, .trunk=0, .off=0, .crc=0};
|
||||
int err = lfs_alloc(lfs, &rbyd->block);
|
||||
if (err) {
|
||||
return err;
|
||||
@@ -1602,20 +1602,16 @@ static int lfsr_rbyd_alloc(lfs_t *lfs, lfsr_rbyd_t *rbyd, uint32_t rev) {
|
||||
|
||||
static int lfsr_rbyd_fetch(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||
lfs_block_t block, lfs_size_t trunk) {
|
||||
// read the revision count and get the crc started
|
||||
uint32_t rev;
|
||||
// checksum the revision count to get the crc started
|
||||
uint32_t crc = 0;
|
||||
int err = lfsr_bd_readcsum(lfs, block, 0, lfs->cfg->block_size,
|
||||
&rev, sizeof(uint32_t),
|
||||
&crc);
|
||||
int err = lfsr_bd_csum(lfs, block, 0, lfs->cfg->block_size,
|
||||
sizeof(uint32_t), &crc);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
rev = lfs_fromle32_(&rev);
|
||||
|
||||
rbyd->block = block;
|
||||
rbyd->off = 0;
|
||||
rbyd->rev = rev;
|
||||
|
||||
// temporary state until we validate a crc
|
||||
lfs_off_t off = sizeof(uint32_t);
|
||||
@@ -1904,6 +1900,33 @@ static lfs_ssize_t lfsr_rbyd_get(lfs_t *lfs, const lfsr_rbyd_t *rbyd,
|
||||
}
|
||||
|
||||
|
||||
// append a revision count
|
||||
//
|
||||
// this is optional, if not called revision count defaults to 0 (for btrees)
|
||||
static int lfsr_rbyd_appendrev(lfs_t *lfs, lfsr_rbyd_t *rbyd, uint32_t rev) {
|
||||
// should only be called before any tags are written
|
||||
LFS_ASSERT(rbyd->off == 0);
|
||||
|
||||
// revision count stored as le32, we don't use a leb128 encoding as we
|
||||
// intentionally allow the revision count to overflow
|
||||
uint8_t buf[sizeof(uint32_t)];
|
||||
lfs_tole32_(rev, &buf);
|
||||
int err = lfsr_bd_prog(lfs, rbyd->block, rbyd->off,
|
||||
&buf, sizeof(uint32_t), &rbyd->crc);
|
||||
if (err) {
|
||||
goto failed;
|
||||
}
|
||||
rbyd->off += sizeof(uint32_t);
|
||||
|
||||
return 0;
|
||||
|
||||
failed:
|
||||
// if we fail mark the rbyd as unerased and release the pcache
|
||||
lfs_cache_zero(lfs, &lfs->pcache);
|
||||
rbyd->off = lfs->cfg->block_size;
|
||||
return err;
|
||||
}
|
||||
|
||||
// helper functions for managing the 3-element fifo used in lfsr_rbyd_append
|
||||
static int lfsr_rbyd_p_flush(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||
lfsr_tag_t p_alts[static 3],
|
||||
@@ -2033,16 +2056,12 @@ static int lfsr_rbyd_append(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
// make sure every rbyd starts with its revision count
|
||||
// make sure every rbyd starts with a revision count
|
||||
if (rbyd->off == 0) {
|
||||
uint8_t buf[sizeof(uint32_t)];
|
||||
lfs_tole32_(rbyd->rev, &buf);
|
||||
err = lfsr_bd_prog(lfs, rbyd->block, rbyd->off,
|
||||
&buf, sizeof(uint32_t), &rbyd->crc);
|
||||
err = lfsr_rbyd_appendrev(lfs, rbyd, 0);
|
||||
if (err) {
|
||||
goto failed;
|
||||
}
|
||||
rbyd->off += sizeof(uint32_t);
|
||||
}
|
||||
|
||||
// figure out the range of tags we're operating on
|
||||
@@ -2593,19 +2612,16 @@ static int lfsr_rbyd_commit(lfs_t *lfs, lfsr_rbyd_t *rbyd,
|
||||
goto failed;
|
||||
}
|
||||
|
||||
// setup commit state
|
||||
// setup commit state, use a separate rbyd so we have a fallback in
|
||||
// case of error
|
||||
lfsr_rbyd_t rbyd_ = *rbyd;
|
||||
|
||||
// make sure every rbyd starts with its revision count
|
||||
if (rbyd_.off == 0) {
|
||||
uint8_t buf[sizeof(uint32_t)];
|
||||
lfs_tole32_(rbyd_.rev, &buf);
|
||||
err = lfsr_bd_prog(lfs, rbyd_.block, rbyd_.off,
|
||||
&buf, sizeof(uint32_t), &rbyd_.crc);
|
||||
err = lfsr_rbyd_appendrev(lfs, &rbyd_, 0);
|
||||
if (err) {
|
||||
goto failed;
|
||||
}
|
||||
rbyd_.off += sizeof(uint32_t);
|
||||
}
|
||||
|
||||
// append each tag to the tree
|
||||
@@ -3598,9 +3614,8 @@ static int lfsr_btree_commit(lfs_t *lfs,
|
||||
goto split;
|
||||
}
|
||||
|
||||
// TODO were we doing something funky with rev?
|
||||
// allocate a new rbyd
|
||||
err = lfsr_rbyd_alloc(lfs, &rbyd_, rbyd->rev+1);
|
||||
err = lfsr_rbyd_alloc(lfs, &rbyd_);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -3692,16 +3707,15 @@ static int lfsr_btree_commit(lfs_t *lfs,
|
||||
return split_id;
|
||||
}
|
||||
|
||||
// TODO were we doing something funky with rev?
|
||||
// allocate a new rbyd
|
||||
err = lfsr_rbyd_alloc(lfs, &rbyd_, rbyd->rev+1);
|
||||
err = lfsr_rbyd_alloc(lfs, &rbyd_);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// allocate a sibling
|
||||
lfsr_rbyd_t sibling;
|
||||
err = lfsr_rbyd_alloc(lfs, &sibling, rbyd->rev+1);
|
||||
err = lfsr_rbyd_alloc(lfs, &sibling);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -3787,7 +3801,7 @@ static int lfsr_btree_commit(lfs_t *lfs,
|
||||
|
||||
// no parent? introduce a new trunk
|
||||
if (pid == -1) {
|
||||
int err = lfsr_rbyd_alloc(lfs, &parent, 1);
|
||||
int err = lfsr_rbyd_alloc(lfs, &parent);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -4067,7 +4081,7 @@ static int lfsr_btree_push(lfs_t *lfs, lfsr_btree_t *btree,
|
||||
// inlined btree, need to expand into an rbyd
|
||||
} else if (lfsr_btree_isinlined(btree)) {
|
||||
lfsr_rbyd_t rbyd;
|
||||
int err = lfsr_rbyd_alloc(lfs, &rbyd, 1);
|
||||
int err = lfsr_rbyd_alloc(lfs, &rbyd);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -4307,7 +4321,7 @@ static int lfsr_btree_split(lfs_t *lfs, lfsr_btree_t *btree,
|
||||
// inlined btree, need to expand into an rbyd
|
||||
if (lfsr_btree_isinlined(btree)) {
|
||||
lfsr_rbyd_t rbyd;
|
||||
int err = lfsr_rbyd_alloc(lfs, &rbyd, 1);
|
||||
int err = lfsr_rbyd_alloc(lfs, &rbyd);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -4670,7 +4684,6 @@ static int lfsr_mdir_alloc(lfs_t *lfs, lfsr_mdir_t *mdir, lfs_ssize_t mid) {
|
||||
// mark mdir as needing compaction
|
||||
mdir->rbyd.off = lfs->cfg->block_size;
|
||||
mdir->rbyd.trunk = 0;
|
||||
mdir->rbyd.rev = rev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4829,27 +4842,50 @@ static int lfsr_mdir_compact_(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
const lfsr_mdir_t *source,
|
||||
const lfsr_attr_t *attr1s, lfs_size_t attr1_count,
|
||||
const lfsr_attr_t *attr2s, lfs_size_t attr2_count) {
|
||||
// TODO different indicator?
|
||||
// note mid indicates some special cases:
|
||||
// - mid = manchor => never alloc (mroot anchor)
|
||||
// - mid = wl => only alloc if mdir is tired (wear-leveling)
|
||||
// - otherwise => always alloc, use this mid (new mdir)
|
||||
if (mid != LFSR_MID_MANCHOR && (mid != LFSR_MID_WL || (
|
||||
lfs->cfg->block_cycles > 0
|
||||
&& (mdir->rbyd.rev+1) % lfs->cfg->block_cycles == 0))) {
|
||||
// allocate a new mdir for relocation
|
||||
int err = lfsr_mdir_alloc(lfs, mdir,
|
||||
(mid != LFSR_MID_WL ? mid : mdir->mid));
|
||||
if (err) {
|
||||
uint32_t rev;
|
||||
if (mid != LFSR_MID_MANCHOR) {
|
||||
// first thing we need to do is read our current revision count
|
||||
int err = lfsr_bd_read(lfs, source->rbyd.block, 0, sizeof(uint32_t),
|
||||
&rev, sizeof(uint32_t));
|
||||
if (err && err != LFS_ERR_CORRUPT) {
|
||||
return err;
|
||||
}
|
||||
// note we allow corrupt errors here, as long as they are consistent
|
||||
rev = (err != LFS_ERR_CORRUPT ? lfs_fromle32_(&rev) : 0);
|
||||
|
||||
// decide if we need to relocate
|
||||
if (mid != LFSR_MID_WL || (
|
||||
lfs->cfg->block_cycles > 0
|
||||
// TODO rev things
|
||||
&& (rev + 1) % lfs->cfg->block_cycles == 0)) {
|
||||
// allocate a new mdir for relocation
|
||||
err = lfsr_mdir_alloc(lfs, mdir,
|
||||
(mid != LFSR_MID_WL ? mid : mdir->mid));
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// read the new revision count
|
||||
//
|
||||
// we use whatever is on-disk to avoid needing to rewrite the
|
||||
// redund block
|
||||
err = lfsr_bd_read(lfs, mdir->rbyd.block, 0, sizeof(uint32_t),
|
||||
&rev, sizeof(uint32_t));
|
||||
if (err && err != LFS_ERR_CORRUPT) {
|
||||
return err;
|
||||
}
|
||||
// note we allow corrupt errors here, as long as they are consistent
|
||||
rev = (err != LFS_ERR_CORRUPT ? lfs_fromle32_(&rev) : 0);
|
||||
}
|
||||
}
|
||||
|
||||
// swap our rbyds
|
||||
lfs_swap32(&mdir->rbyd.block, &mdir->other_block);
|
||||
// update our revision count
|
||||
// TODO rev things
|
||||
mdir->rbyd.rev += 1;
|
||||
mdir->rbyd.off = 0;
|
||||
mdir->rbyd.trunk = 0;
|
||||
mdir->rbyd.weight = 0;
|
||||
@@ -4861,6 +4897,13 @@ static int lfsr_mdir_compact_(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
return err;
|
||||
}
|
||||
|
||||
// increment our revision count and write it to our rbyd
|
||||
// TODO rev things
|
||||
err = lfsr_rbyd_appendrev(lfs, &mdir->rbyd, rev + 1);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// copy over attrs
|
||||
err = lfsr_rbyd_compact(lfs, &mdir->rbyd, start_id, end_id, false,
|
||||
&source->rbyd);
|
||||
@@ -4891,7 +4934,7 @@ static int lfsr_mdir_compact_(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
|
||||
// drop commit if weight goes to zero
|
||||
if (mdir->mid >= 0 && mdir->rbyd.weight == 0) {
|
||||
lfs_cache_drop(lfs, &lfs->pcache);
|
||||
lfs_cache_zero(lfs, &lfs->pcache);
|
||||
|
||||
// finalize commit
|
||||
} else {
|
||||
@@ -4921,7 +4964,7 @@ static int lfsr_mdir_commit_(lfs_t *lfs, lfsr_mdir_t *mdir,
|
||||
|
||||
// drop commit if weight goes to zero
|
||||
if (mdir_.mid >= 0 && mdir_.rbyd.weight == 0) {
|
||||
lfs_cache_drop(lfs, &lfs->pcache);
|
||||
lfs_cache_zero(lfs, &lfs->pcache);
|
||||
|
||||
// finalize commit
|
||||
} else {
|
||||
@@ -6151,16 +6194,21 @@ static int lfsr_formatinited(lfs_t *lfs) {
|
||||
return d;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
for (uint32_t i = 0; i < 2; i++) {
|
||||
// write superblock to both rbyds in the root mroot to hopefully
|
||||
// avoid mounting an older filesystem on disk
|
||||
lfsr_rbyd_t rbyd = {.block=i, .rev=i-1, .off=0, .trunk=0};
|
||||
lfsr_rbyd_t rbyd = {.block=i, .off=0, .trunk=0};
|
||||
|
||||
int err = lfsr_bd_erase(lfs, rbyd.block);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
err = lfsr_rbyd_appendrev(lfs, &rbyd, (uint32_t)i - 1);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
err = lfsr_rbyd_commit(lfs, &rbyd, LFSR_ATTRS(
|
||||
LFSR_ATTR(-1, SUPERMAGIC, 0, "littlefs", 8),
|
||||
LFSR_ATTR(-1, SUPERCONFIG, 0, buf, d)));
|
||||
|
||||
@@ -340,7 +340,6 @@ typedef struct lfsr_rbyd {
|
||||
// off=block_size => rbyd not erased/needs compaction
|
||||
lfs_off_t off;
|
||||
lfs_off_t trunk;
|
||||
uint32_t rev;
|
||||
uint32_t crc;
|
||||
} lfsr_rbyd_t;
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -59,7 +58,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -98,7 +96,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -132,7 +129,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -255,7 +251,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -380,7 +375,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -472,7 +466,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -566,7 +559,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -630,7 +622,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -696,7 +687,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -776,7 +766,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -920,7 +909,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -1092,7 +1080,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -1264,7 +1251,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -1444,7 +1430,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -1652,7 +1637,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -1819,7 +1803,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2007,7 +1990,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2099,7 +2081,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2181,7 +2162,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2271,7 +2251,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2367,7 +2346,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2440,7 +2418,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2512,7 +2489,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2623,7 +2599,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2686,7 +2661,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2799,7 +2773,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -2950,7 +2923,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3045,7 +3017,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3195,7 +3166,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3431,7 +3401,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3520,7 +3489,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3647,7 +3615,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3783,7 +3750,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -3931,7 +3897,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4093,7 +4058,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4196,7 +4160,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4290,7 +4253,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4397,7 +4359,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4510,7 +4471,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4603,7 +4563,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4691,7 +4650,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4760,7 +4718,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -4995,7 +4952,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5257,7 +5213,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5372,7 +5327,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5477,7 +5431,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5644,7 +5597,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5822,7 +5774,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -5933,7 +5884,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6043,7 +5993,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6172,7 +6121,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6367,7 +6315,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6492,7 +6439,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6584,7 +6530,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6724,7 +6669,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -6881,7 +6825,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7008,7 +6951,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7255,7 +7197,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7410,7 +7351,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7601,7 +7541,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7726,7 +7665,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7865,7 +7803,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -7980,7 +7917,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8114,7 +8050,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8257,7 +8192,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8418,7 +8352,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8553,7 +8486,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8791,7 +8723,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8901,7 +8832,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -8988,7 +8918,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -9074,7 +9003,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -9747,7 +9675,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10004,7 +9931,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10116,7 +10042,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10238,7 +10163,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10365,7 +10289,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10501,7 +10424,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10650,7 +10572,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10777,7 +10698,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -10913,7 +10833,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11061,7 +10980,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11215,7 +11133,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11395,7 +11312,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11578,7 +11494,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11802,7 +11717,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -11890,7 +11804,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12028,7 +11941,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12168,7 +12080,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12257,7 +12168,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12403,7 +12313,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12551,7 +12460,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12638,7 +12546,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
@@ -12778,7 +12685,6 @@ code = '''
|
||||
|
||||
lfsr_rbyd_t init_rbyd = {
|
||||
.block = 0,
|
||||
.rev = 1,
|
||||
.off = 0,
|
||||
.crc = 0,
|
||||
.trunk = 0,
|
||||
|
||||
Reference in New Issue
Block a user