Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Oct 2012 18:07:07 +0300
From:      Boris Astardzhiev <boris.astardzhiev@gmail.com>
To:        freebsd-fs@freebsd.org
Cc:        stanislav_galabov@smartcom.bg
Subject:   CRC32 feature in FreeBSD's boot loader
Message-ID:  <CAP=KkTx9x0WbTMUbxHKaGhnCj0vLWOSw15tD27KFbVdc6shefA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--bcaec553ffc03546c104cb14e079
Content-Type: text/plain; charset=ISO-8859-1

Hello,

I'm not sure that this is the right mailing list but I couldn't find a
dedicated one.
I would like to contribute a new feature for the FreeBSD boot loader - a
command that
calculates the CRC32 of a specified file name. It uses libz's CRC32
implementation.

While attempting to make libstand's nandfs to work adequately I've
experienced NAND flash
page/block misreadings from U-Boot's API side. Therefore I was in a need of
a tool that could
prove that a file had been read correctly in this very stage of the FreeBSD
boot process.
So here it is.

In addition to the CRC calculation the size of the stipulated file is
printed as well.

Any comments will be appreciated.

Greetings,
Boris Astardzhiev / Smartcom Bulgaria AD

--bcaec553ffc03546c104cb14e079
Content-Type: application/octet-stream; name="loader-crc32.diff"
Content-Disposition: attachment; filename="loader-crc32.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7t4ky6b2

ZGlmZiAtLWdpdCBhL2xpYi9saWJzdGFuZC9NYWtlZmlsZSBiL2xpYi9saWJzdGFuZC9NYWtlZmls
ZQppbmRleCBhMjZjNTFkLi4wOTVmOTYyIDEwMDY0NAotLS0gYS9saWIvbGlic3RhbmQvTWFrZWZp
bGUKKysrIGIvbGliL2xpYnN0YW5kL01ha2VmaWxlCkBAIC0zOSw5ICszOSw5IEBAIENGTEFHUys9
CS1tc29mdC1mbG9hdCAtRF9TVEFOREFMT05FCiAuZW5kaWYKIAogIyBzdGFuZGFsb25lIGNvbXBv
bmVudHMgYW5kIHN0dWZmIHdlIGhhdmUgbW9kaWZpZWQgbG9jYWxseQotU1JDUys9CXp1dGlsLmgg
X19tYWluLmMgYXNzZXJ0LmMgYmNkLmMgYnN3YXAuYyBlbnZpcm9ubWVudC5jIGdldG9wdC5jIGdl
dHMuYyBcCi0JZ2xvYmFscy5jIHBhZ2VyLmMgcHJpbnRmLmMgc3RyZHVwLmMgc3RyZXJyb3IuYyBz
dHJ0b2wuYyByYW5kb20uYyBcCi0Jc2Jyay5jIHR3aWRkbGUuYyB6YWxsb2MuYyB6YWxsb2NfbWFs
bG9jLmMKK1NSQ1MrPQl6dXRpbC5oIF9fbWFpbi5jIGFzc2VydC5jIGJjZC5jIGJzd2FwLmMgY3Jj
LmMgZW52aXJvbm1lbnQuYyBnZXRvcHQuYyBcCisJZ2V0cy5jIGdsb2JhbHMuYyBwYWdlci5jIHBy
aW50Zi5jIHN0cmR1cC5jIHN0cmVycm9yLmMgc3RydG9sLmMgXAorCXJhbmRvbS5jIHNicmsuYyB0
d2lkZGxlLmMgemFsbG9jLmMgemFsbG9jX21hbGxvYy5jCiAKICMgcHJpdmF0ZSAocHJ1bmVkKSB2
ZXJzaW9ucyBvZiBsaWJjIHN0cmluZyBmdW5jdGlvbnMKIFNSQ1MrPQlzdHJjYXNlY21wLmMKZGlm
ZiAtLWdpdCBhL2xpYi9saWJzdGFuZC9jcmMuYyBiL2xpYi9saWJzdGFuZC9jcmMuYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzFkMzkwCi0tLSAvZGV2L251bGwKKysrIGIv
bGliL2xpYnN0YW5kL2NyYy5jCkBAIC0wLDAgKzEsMTI1IEBACisvKi0KKyAqIENvcHlyaWdodCAo
YykgMjAxMiBCb3JpcyBBc3RhcmR6aGlldiAvIFNtYXJ0Y29tIEJ1bGdhcmlhIEFECisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBTaW1wbGUgQ1JDIGNhbGN1bGF0aW9uIG9mIGEg
ZmlsZS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisjaW5jbHVkZSAic3RhbmQuaCIK
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICIuLi9saWJ6L3psaWIuaCIKKworLyoKKyAq
IERpc3BsYXkgY2hlY2tzdW0uCisgKi8KKworaW50CitjcmMzMl9maWxlKGNvbnN0IGNoYXIgKmZu
YW1lKQoreworCXVuc2lnbmVkIGxvbmcgCWNyYyA9IDBVTDsKKwljaGFyIAkJYnVmWzgwXTsKKwlz
aXplX3QgCQlieXRlczsKKwlpbnQJCWZkOworCWludAkJcmVzOworCW9mZl90IAkJZW5kX29mZjsK
KwlzdHJ1Y3QJc3RhdCAJc3Q7CisKKwlyZXMgPSAwOworCWZkID0gb3BlbihmbmFtZSwgT19SRE9O
TFkpOworCWlmIChmZCA9PSAtMSkgeworCQlwcmludGYoImNhbid0IG9wZW4gJyVzJzogJXNcbiIs
IGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlyZXMgPSAtMTsKKwkJcmV0dXJuIChyZXMpOwor
CX0KKwkKKwkvKgorCSAqIENoZWNrIGlmIGl0IGlzIGEgcmVndWxhciBmaWxlLgorCSAqLworCW1l
bXNldCgmc3QsIDAsIHNpemVvZihzdCkpOworCWlmIChmc3RhdChmZCwgJnN0KSA9PSAtMSkgewor
CQlwcmludGYoImNhbid0IGdldCBzdGF0aXN0aWNzIG9mICclcyc6ICVzXG4iLCBmbmFtZSwKKwkJ
ICAgIHN0cmVycm9yKGVycm5vKSk7CisJCWNsb3NlKGZkKTsKKwkJcmVzID0gLTE7CisJCXJldHVy
biAocmVzKTsKKwl9CisKKwlpZiAoIShTX0lTUkVHKHN0LnN0X21vZGUpKSkgeworCQlwcmludGYo
IiclcycgaXMgbm90IGEgcmVndWxhciBmaWxlXG4iLCBmbmFtZSk7CisJCWNsb3NlKGZkKTsKKwkJ
cmVzID0gLTE7CisJCXJldHVybiAocmVzKTsKKwl9CisKKwkvKiAKKwkgKiBHcmFiIGZpbGUgc2l6
ZS4gCisJICovCQorCWVuZF9vZmYgPSBsc2VlayhmZCwgMCwgU0VFS19FTkQpOworCWlmIChlbmRf
b2ZmID09IC0xKSB7CisJCXByaW50ZigiY2FuJ3QgZ2V0IGVuZCBvZiAnJXMnOiAlc1xuIiwgZm5h
bWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWNsb3NlKGZkKTsKKwkJcmVzID0gLTE7CisJCXJldHVy
biAocmVzKTsKKwl9CisJCisJaWYgKGxzZWVrKGZkLCAwLCBTRUVLX1NFVCkgPT0gLTEpIHsKKwkJ
cHJpbnRmKCJjYW4ndCBzZXQgb2Zmc2V0IHRvICclcyc6ICVzXG4iLCBmbmFtZSwKKwkJICAgIHN0
cmVycm9yKGVycm5vKSk7CisJCWNsb3NlKGZkKTsKKwkJcmVzID0gLTE7CisJCXJldHVybiAocmVz
KTsKKwl9CisKKwkvKiAKKwkgKiBDYWxjdWxhdGUgY2hlY2tzdW0uCisJICovCisJY3JjID0gY3Jj
MzIoY3JjLCAwLCAwKTsKKwlmb3IgKDs7KSB7CisJCWJ5dGVzID0gcmVhZChmZCwgYnVmLCBzaXpl
b2YoYnVmKSk7CisJCWlmIChieXRlcyA8IDApIHsKKwkJCXJlcyA9IC0xOworCQkJYnJlYWs7CisJ
CX0KKworCQlpZiAoIWJ5dGVzKQorCQkJYnJlYWs7CisKKwkJY3JjID0gY3JjMzIoY3JjLCBidWYs
IGJ5dGVzKTsKKwl9CisKKwlpZiAoIXJlcykgeworCQlwcmludGYoImZpbGU6ICAgJXNcbiIsIGZu
YW1lKTsKKwkJcHJpbnRmKCJcdCBzaXplOiAlbGx1XG4iLCBlbmRfb2ZmKTsKKwkJcHJpbnRmKCJc
dGNyYzMyOiAweCUwOGx4XG4iLCBjcmMpOworCX0gZWxzZQorCQlwcmludGYoImNhbid0IGNhbGN1
bGF0ZSBjcmMzMiBvZiAnJXMnXG4iLCBmbmFtZSk7CisKKwljbG9zZShmZCk7CisKKwlyZXR1cm4g
KHJlcyk7Cit9CisKZGlmZiAtLWdpdCBhL2xpYi9saWJzdGFuZC9zdGFuZC5oIGIvbGliL2xpYnN0
YW5kL3N0YW5kLmgKaW5kZXggMjBiNzE3ZS4uMTE5YzY5NiAxMDA2NDQKLS0tIGEvbGliL2xpYnN0
YW5kL3N0YW5kLmgKKysrIGIvbGliL2xpYnN0YW5kL3N0YW5kLmgKQEAgLTI2Nyw2ICsyNjcsOSBA
QCBleHRlcm4gY2hhcgkqb3B0YXJnOwkJCS8qIGdldG9wdCgzKSBleHRlcm5hbCB2YXJpYWJsZXMg
Ki8KIGV4dGVybiBpbnQJb3B0aW5kLCBvcHRlcnIsIG9wdG9wdCwgb3B0cmVzZXQ7CiBleHRlcm4g
aW50CWdldG9wdChpbnQsIGNoYXIgKiBjb25zdCBbXSwgY29uc3QgY2hhciAqKTsKIAorLyogY3Jj
LmMgKi8KK2V4dGVybiBpbnQJY3JjMzJfZmlsZShjb25zdCBjaGFyICpmbmFtZSk7CisKIC8qIHBh
Z2VyLmMgKi8KIGV4dGVybiB2b2lkCXBhZ2VyX29wZW4odm9pZCk7CiBleHRlcm4gdm9pZAlwYWdl
cl9jbG9zZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3N5cy9ib290L2NvbW1vbi9jb21tYW5kcy5jIGIv
c3lzL2Jvb3QvY29tbW9uL2NvbW1hbmRzLmMKaW5kZXggYjRmZTExOC4uZmJiZWM2NiAxMDA2NDQK
LS0tIGEvc3lzL2Jvb3QvY29tbW9uL2NvbW1hbmRzLmMKKysrIGIvc3lzL2Jvb3QvY29tbW9uL2Nv
bW1hbmRzLmMKQEAgLTQ5NiwzICs0OTYsMjAgQEAgY29tbWFuZF9sc2RldihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogICAgIHJldHVybihDTURfT0spOwogfQogCisvKgorICogQ2FsY3VsYXRlIENS
QzMyIG9mIGEgZmlsZS4KKyAqLworQ09NTUFORF9TRVQoY3JjMzIsICJjcmMzMiIsICJjYWxjdWxh
dGUgY3JjMzIgb2YgYSBmaWxlIiwgY29tbWFuZF9jcmMzMik7CisKK3N0YXRpYyBpbnQKK2NvbW1h
bmRfY3JjMzIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgaSwgcmVzOworCisg
ICAgcmVzID0gMDsKKyAgICBmb3IgKGkgPSAxOyAoaSA8IGFyZ2MpICYmICFyZXM7IGkrKykKKyAg
ICAJcmVzIHw9IGNyYzMyX2ZpbGUoYXJndltpXSk7CisKKyAgICByZXR1cm4gKCFyZXMgPyAoQ01E
X09LKSA6IChDTURfRVJST1IpKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3lzL2Jvb3QvY29tbW9uL2xv
YWRlci44IGIvc3lzL2Jvb3QvY29tbW9uL2xvYWRlci44CmluZGV4IDI1ZDIyNzAuLjk1Y2M0N2Ig
MTAwNjQ0Ci0tLSBhL3N5cy9ib290L2NvbW1vbi9sb2FkZXIuOAorKysgYi9zeXMvYm9vdC9jb21t
b24vbG9hZGVyLjgKQEAgLTE3NCw2ICsxNzQsOCBAQCBUaGUgYmVoYXZpb3Igb2YgdGhpcyBidWls
dGluIGlzIGNoYW5nZWQgaWYKIC5YciBsb2FkZXIuNHRoIDgKIGlzIGxvYWRlZC4KIC5QcAorLkl0
IEljIGNyYzMyCitDYWxjdWxhdGUgQ1JDMzIgb2YgYSBzcGVjaWZpZWQgZmlsZS4KIC5JdCBJYyBl
Y2hvIFhvCiAuT3AgRmwgbgogLk9wIEFxIG1lc3NhZ2UK
--bcaec553ffc03546c104cb14e079--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP=KkTx9x0WbTMUbxHKaGhnCj0vLWOSw15tD27KFbVdc6shefA>