--0016368332f0cd96a4049d23b052
Content-Type: multipart/alternative; boundary=0016368332f0cd969a049d23b050
--0016368332f0cd969a049d23b050
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Here is diff. I cam across the error:
In function (for each function in iostat.c)
multiple declaration (of the the functions)
I think everything is good enough.
Still if someone can figure it out and tell me.
- Pratyush.
On Fri, Feb 25, 2011 at 11:21 AM, Pratyush Kshirsagar <
pratyush.kshirsagar@gmail.com> wrote:
> Hello,
> I am porting the iostat from FreeBSD.
> I have problem with the function devstat_compute_statistics()
> Here is how its used in FreeBSD ans I tried the compute_stats() in
> dragonfly but still need this equivalent to be correct
> So, please give me the correct usage of compute_stats similar to
> devstat_compute_statistics in the FreeBSD, here it is:
>
> if (devstat_compute_statistics <http://fxr.googlebit.com/ident?i=
=3Ddevstat_compute_statistics>(&cur <http://fxr.googlebit.com/ident?i=3Dcur=
>.dinfo <http://fxr.googlebit.com/ident?i=3Ddinfo>->devices <http://fxr.goo=
glebit.com/ident?i=3Ddevices>[di <http://fxr.googlebit.com/ident?i=3Ddi>],
> &last <http://fxr.googlebit.com/ident?i=3Dlast>.dinfo <http:=
//fxr.googlebit.com/ident?i=3Ddinfo>->devices <http://fxr.googlebit.com/ide=
nt?i=3Ddevices>[di <http://fxr.googlebit.com/ident?i=3Ddi>], busy_seconds,
> DSM_KB_PER_TRANSFER, &kb_per_transfer,
> DSM_TRANSFERS_PER_SECOND, &transfers_per_second,
> DSM_MB_PER_SECOND, &mb_per_second, DSM_NONE) !=3D 0)
> errx <http://fxr.googlebit.com/ident?i=3Derrx>(1, *"%s"*=
, devstat_errbuf <http://fxr.googlebit.com/ident?i=3Ddevstat_errbuf>);
>
>
> Also, is it OK if we call getnumdevs() without any arguments (its similar=
to freebsd devstat_getdevs()).
>
> The FreeBSD uses:
>
> switch (devstat_getdevs <http://fxr.googlebit.com/ident?i=3Ddevstat_getde=
vs>(NULL <http://fxr.googlebit.com/ident?i=3DNULL>, &cur <http://fxr.google=
bit.com/ident?i=3Dcur>)) {
> case -1:
> errx <http://fxr.googlebit.com/ident?i=3Derrx>(1, *"%s"*,=
devstat_errbuf <http://fxr.googlebit.com/ident?i=3Ddevstat_errbuf>);
> break;
> case 1:
> cmdiostat <http://fxr.googlebit.com/ident?i=3Dcmdiostat>=
(*"refresh"*, NULL <http://fxr.googlebit.com/ident?i=3DNULL>);
> break;
> default:
> break;
> }
>
>
> I am still trying to remove some warnings and error. Will mail you if nee=
d more help.
>
>
> pratyush.kshirsagar (@ gmail.com)
>
>
>
--0016368332f0cd969a049d23b050
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Here is diff. I cam across the error:=A0<div>In function (for each function=
in iostat.c)</div><div>multiple declaration (of the the functions)</div><d=
iv><br></div><div>I =A0think everything is good enough.</div><div>Still if =
someone can figure it out and tell me.</div>
<div><br></div><div>- Pratyush.<br><br><div class=3D"gmail_quote">On Fri, F=
eb 25, 2011 at 11:21 AM, Pratyush Kshirsagar <span dir=3D"ltr"><<a href=
=3D"mailto:pratyush.kshirsagar@gmail.com">pratyush.kshirsagar@gmail.com</a>=
></span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex;">Hello,<div>I am porting the iostat from Fre=
eBSD.</div><div>I have problem with the function devstat_compute_statistics=
()</div>
<div>Here is how its used in FreeBSD ans I tried the compute_stats() in dra=
gonfly but still need this equivalent to be correct</div>
<div>So, please give me the correct usage of compute_stats similar to devst=
at_compute_statistics in=A0the FreeBSD, here it is:</div><div><span style=
=3D"font-family:'Times New Roman'"><pre> if (<a href=3D"http=
://fxr.googlebit.com/ident?i=3Ddevstat_compute_statistics" target=3D"_blank=
">devstat_compute_statistics</a>(&<a href=3D"http://fxr.googlebit.com/i=
dent?i=3Dcur" target=3D"_blank">cur</a>.<a href=3D"http://fxr.googlebit.com=
/ident?i=3Ddinfo" target=3D"_blank">dinfo</a>-><a href=3D"http://fxr.goo=
glebit.com/ident?i=3Ddevices" target=3D"_blank">devices</a>[<a href=3D"http=
://fxr.googlebit.com/ident?i=3Ddi" target=3D"_blank">di</a>],
&<a href=3D"http://fxr.googlebit.com/ident?i=3Dlast" targe=
t=3D"_blank">last</a>.<a href=3D"http://fxr.googlebit.com/ident?i=3Ddinfo" =
target=3D"_blank">dinfo</a>-><a href=3D"http://fxr.googlebit.com/ident?i=
=3Ddevices" target=3D"_blank">devices</a>[<a href=3D"http://fxr.googlebit.c=
om/ident?i=3Ddi" target=3D"_blank">di</a>], busy_seconds,
DSM_KB_PER_TRANSFER, &kb_per_transfer,
DSM_TRANSFERS_PER_SECOND, &transfers_per_second,
DSM_MB_PER_SECOND, &mb_per_second, DSM_NONE) !=3D 0)
<a href=3D"http://fxr.googlebit.com/ident?i=3Derrx" target=
=3D"_blank">errx</a>(1, <i>"%s"</i>, <a href=3D"http://fxr.google=
bit.com/ident?i=3Ddevstat_errbuf" target=3D"_blank">devstat_errbuf</a>);</p=
re><pre>
<br></pre><pre>Also, is it OK if we call getnumdevs() without any arguments=
(its similar to freebsd devstat_getdevs()).</pre>
<pre>The FreeBSD uses:</pre><pre><span style=3D"font-family:'Times New =
Roman';white-space:normal"><pre>switch (<a href=3D"http://fxr.googlebit=
..com/ident?i=3Ddevstat_getdevs" target=3D"_blank">devstat_getdevs</a>(<a hr=
ef=3D"http://fxr.googlebit.com/ident?i=3DNULL" target=3D"_blank">NULL</a>, =
&<a href=3D"http://fxr.googlebit.com/ident?i=3Dcur" target=3D"_blank">c=
ur</a>)) {
case -1:
<a href=3D"http://fxr.googlebit.com/ident?i=3Derrx" target=
=3D"_blank">errx</a>(1, <i>"%s"</i>, <a href=3D"http://fxr.google=
bit.com/ident?i=3Ddevstat_errbuf" target=3D"_blank">devstat_errbuf</a>);
break;
case 1:
<a href=3D"http://fxr.googlebit.com/ident?i=3Dcmdiostat" t=
arget=3D"_blank">cmdiostat</a>(<i>"refresh"</i>, <a href=3D"http:=
//fxr.googlebit.com/ident?i=3DNULL" target=3D"_blank">NULL</a>);
break;
default:
break;
}</pre><pre><br></pre><pre>I am still trying to remove some warnings and e=
rror. Will mail you if need more help.</pre><pre><br></pre><pre>pratyush.ks=
hirsagar (@ <a href=3D"http://gmail.com" target=3D"_blank">gmail.com</a>)</=
pre>
<pre><br></pre>
</span></pre></span></div>
</blockquote></div><br></div>
--0016368332f0cd969a049d23b050--
--0016368332f0cd96a4049d23b052
Content-Type: application/octet-stream; name=iostat_diff
Content-Disposition: attachment; filename=iostat_diff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gklqggtc0
ZGlmZiAtLWdpdCBhL2xpYi9saWJkZXZzdGF0L2RldnN0YXQuaCBiL2xpYi9saWJkZXZzdGF0L2Rl
dnN0YXQuaAppbmRleCA0NDQ3NTk3Li4yZmZmMDQ4IDEwMDY0NAotLS0gYS9saWIvbGliZGV2c3Rh
dC9kZXZzdGF0LmgKKysrIGIvbGliL2xpYmRldnN0YXQvZGV2c3RhdC5oCkBAIC0zMyw3ICszMyw3
IEBACiAjZGVmaW5lIF9ERVZTVEFUX0gKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KICNpbmNsdWRl
IDxzeXMvZGV2aWNlc3RhdC5oPgotCisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjZGVmaW5l
IERFVlNUQVRfRVJSQlVGX1NJWkUgIDIwNDggLyogc2l6ZSBvZiB0aGUgZGV2c3RhdCBsaWJyYXJ5
IGVycm9yIHN0cmluZyAqLwogCiBleHRlcm4gY2hhciBkZXZzdGF0X2VycmJ1ZltdOwpAQCAtNzQs
NyArNzQsMTEgQEAgc3RydWN0IGRldmluZm8gewogfTsKIAogc3RydWN0IHN0YXRpbmZvIHsKKwls
b25nIGNwX3RpbWVbQ1BVU1RBVEVTXTsKKwlsb25nIHRrX25pbjsKKwlsb25nIHRrX25vdXQ7CiAJ
c3RydWN0IGRldmluZm8JKmRpbmZvOworCWxvbmcgZG91YmxlIHNuYXBfdGltZTsKIAlzdHJ1Y3Qg
dGltZXZhbAlidXN5X3RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9zeXMvY29uZmlnL0dFTkVSSUMg
Yi9zeXMvY29uZmlnL0dFTkVSSUMKaW5kZXggZTExNzc0MS4uNmJhZmZmMCAxMDA2NDQKLS0tIGEv
c3lzL2NvbmZpZy9HRU5FUklDCisrKyBiL3N5cy9jb25maWcvR0VORVJJQwpAQCAtNTQsNiArNTQs
OCBAQCBvcHRpb25zIAlBSERfUkVHX1BSRVRUWV9QUklOVAkjIFByaW50IHJlZ2lzdGVyIGJpdGZp
ZWxkcyBpbiBkZWJ1ZwogCQkJCQkjIG91dHB1dC4gIEFkZHMgfjIxNWsgdG8gZHJpdmVyLgogb3B0
aW9ucwkJRFNDSEVEX0ZRICAgICAgICAgICAgICAgIyBGYWlyLXF1ZXVpbmcgZGlzayBzY2hlZHVs
ZXIKIAorb3B0aW9ucwkJVkVTQQorb3B0aW9ucwkJU0NfUElYRUxfTU9ERQogIyBBTFRRCiBvcHRp
b25zICAgICAgICAgQUxUUSAgICAgICAgICAgICNhbHRlcm5hdGUgcXVldWVpbmcKIG9wdGlvbnMg
ICAgICAgICBBTFRRX0NCUSAgICAgICAgI2NsYXNzIGJhc2VkIHF1ZXVlaW5nCmRpZmYgLS1naXQg
YS9zeXMvc3lzL3Jlc291cmNlLmggYi9zeXMvc3lzL3Jlc291cmNlLmgKaW5kZXggZjFiYzQ2Yy4u
YmIxMzUzNiAxMDA2NDQKLS0tIGEvc3lzL3N5cy9yZXNvdXJjZS5oCisrKyBiL3N5cy9zeXMvcmVz
b3VyY2UuaApAQCAtMTQyLDYgKzE0MiwxMyBAQCBzdHJ1Y3QgbG9hZGF2ZyB7CiAJbG9uZwlmc2Nh
bGU7CiB9OwogCisjZGVmaW5lIENQX1VTRVIgMAorI2RlZmluZSBDUF9OSUNFIDEKKyNkZWZpbmUg
Q1BfU1lTIDIKKyNkZWZpbmUgQ1BfSU5UUiAzCisjZGVmaW5lIENQX0lETEUgNAorI2RlZmluZSBD
UFVTVEFURVMgNQorCiAjaWZkZWYgX0tFUk5FTAogZXh0ZXJuIHN0cnVjdCBsb2FkYXZnIGF2ZXJ1
bm5hYmxlOwogCmRpZmYgLS1naXQgYS91c3IuYmluL3N5c3RhdC9NYWtlZmlsZSBiL3Vzci5iaW4v
c3lzdGF0L01ha2VmaWxlCmluZGV4IDJkOGQxZjcuLjgyMmUzZDYgMTAwNjQ0Ci0tLSBhL3Vzci5i
aW4vc3lzdGF0L01ha2VmaWxlCisrKyBiL3Vzci5iaW4vc3lzdGF0L01ha2VmaWxlCkBAIC04LDcg
KzgsNyBAQCBDRkxBR1MrPS1ESU5FVDYgLUkkey5DVVJESVJ9Ly4uLy4uL3N5cwogU1JDUz0JY21k
cy5jIGNtZHRhYi5jIGNvbnZ0YmwuYyBkZXZzLmMgZmV0Y2guYyBpZmNtZHMuYyBpZnN0YXQuYyBp
b3N0YXQuYyBcCiAJa2V5Ym9hcmQuYyBtYWluLmMgbWJ1ZnMuYyBuZXRjbWRzLmMgbmV0c3RhdC5j
IHBpZ3MuYyBzZW5zb3JzLmMgc3dhcC5jIFwKIAlpY21wLmMgbW9kZS5jIGlwLmMgdGNwLmMgdm1z
dGF0LmMgaXA2LmMgaWNtcDYuYyB2bW1ldGVyLmMgc3ltYm9scy5jIFwKLQl1dG1wZW50cnkuYwor
CXV0bXBlbnRyeS5jIGlvc3RhdC5jCiBEUEFERD0JJHtMSUJDVVJTRVN9ICR7TElCVEVSTUNBUH0g
JHtMSUJNfSAke0xJQktWTX0gJHtMSUJERVZTVEFUfSAke0xJQktJTkZPfQogTERBREQ9CS1sY3Vy
c2VzIC1sdGVybWNhcCAtbG0gLWxrdm0gLWxkZXZzdGF0IC1sa2luZm8KIEJJTkdSUD0Ja21lbQpk
aWZmIC0tZ2l0IGEvdXNyLmJpbi9zeXN0YXQvaW9zdGF0LmMgYi91c3IuYmluL3N5c3RhdC9pb3N0
YXQuYwppbmRleCAxY2RmNmVmLi5lZDZlZGMzIDEwMDY0NAotLS0gYS91c3IuYmluL3N5c3RhdC9p
b3N0YXQuYworKysgYi91c3IuYmluL3N5c3RhdC9pb3N0YXQuYwpAQCAtMjQsMTEgKzI0LDYgQEAK
ICAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKICAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICAqIFNVQ0ggREFNQUdFLgot
ICoKLSAqICRGcmVlQlNEOiBzcmMvdXNyLmJpbi9zeXN0YXQvaW9zdGF0LmMsdiAxLjkuMi4xIDIw
MDAvMDcvMDIgMTA6MDM6MTcgcHMgRXhwICQKLSAqICREcmFnb25GbHk6IHNyYy91c3IuYmluL3N5
c3RhdC9pb3N0YXQuYyx2IDEuNyAyMDA4LzExLzEwIDA0OjU5OjQ1IHN3aWxkbmVyIEV4cCAkCi0g
KgotICogQCgjKWlvc3RhdC5jCTguMSAoQmVya2VsZXkpIDYvNi85MwogICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAxOTgwLCAxOTkyLCAxOTkzCkBAIC02MywyMiArNTgsMzUgQEAKICAqIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbmNsdWRlIDxzeXMvdXNlci5oPgorI2luY2x1ZGUgPHN5cy9jZGVm
cy5oPgorLyoKKyBfX0ZCU0RJRCgiJEZyZWVCU0Q6IHNyYy91c3IuYmluL3N5c3RhdC9pb3N0YXQu
Yyx2IDEuMjUuMi4xLjYuMSAyMDEwLzEyLzIxIDE3OjA5OjI1IGtlbnNtaXRoIEV4cCAkIik7CisK
KyovCisKKyNpZmRlZiBsaW50CitzdGF0aWMgY29uc3QgY2hhciBzY2NzaWRbXSA9ICJAKCMpaW9z
dGF0LmMJOC4xIChCZXJrZWxleSkgNi82LzkzIjsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o
PgogCi0jaW5jbHVkZSA8ZXJyLmg+CiAjaW5jbHVkZSA8ZGV2c3RhdC5oPgotI2luY2x1ZGUgPGtp
bmZvLmg+CisjaW5jbHVkZSA8ZXJyLmg+CisjaW5jbHVkZSA8bmxpc3QuaD4KICNpbmNsdWRlIDxw
YXRocy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5j
bHVkZSAic3lzdGF0LmgiCiAjaW5jbHVkZSAiZXh0ZXJuLmgiCiAjaW5jbHVkZSAiZGV2cy5oIgog
CiBzdHJ1Y3Qgc3RhdGluZm8gY3VyLCBsYXN0Owotc3RhdGljIHN0cnVjdCBraW5mb19jcHV0aW1l
IGNwX3RpbWUsIG9sZF9jcF90aW1lOwogCiBzdGF0aWMgIGludCBsaW5lc3BlcnJlZ2lvbjsKK3N0
YXRpYyAgZG91YmxlIGV0aW1lOwogc3RhdGljICBpbnQgbnVtYmVycyA9IDA7CQkvKiBkZWZhdWx0
IGRpc3BsYXkgYmFyIGdyYXBocyAqLwogc3RhdGljICBpbnQga2JwdCA9IDA7CQkJLyogZGVmYXVs
dCBtcy9zZWVrIHNob3duICovCiAKQEAgLTg2LDEyICs5NCwxMiBAQCBzdGF0aWMgaW50IGJhcmxh
YmVscyhpbnQpOwogc3RhdGljIHZvaWQgaGlzdG9ncmFtKGxvbmcgZG91YmxlLCBpbnQsIGRvdWJs
ZSk7CiBzdGF0aWMgaW50IG51bWxhYmVscyhpbnQpOwogc3RhdGljIGludCBkZXZzdGF0cyhpbnQs
IGludCwgaW50KTsKLXN0YXRpYyB2b2lkIHN0YXQxKGludCwgdWludDY0X3QsIHVpbnQ2NF90KTsK
K3N0YXRpYyB2b2lkIHN0YXQxKGludCwgaW50KTsKIAogV0lORE9XICoKIG9wZW5pb3N0YXQodm9p
ZCkKIHsKLQlyZXR1cm4gKHN1YndpbihzdGRzY3IsIExJTkVTLTEtNSwgMCwgNSwgMCkpOworCXJl
dHVybiAoc3Vid2luKHN0ZHNjciwgTElORVMtMy0xLCAwLCBNQUlOV0lOX1JPVywgMCkpOwogfQog
CiB2b2lkCkBAIC0xMTQsNyArMTIyLDcgQEAgaW5pdGlvc3RhdCh2b2lkKQogCWxhc3QuZGluZm8g
PSAoc3RydWN0IGRldmluZm8gKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBkZXZpbmZvKSk7CiAJYnpl
cm8oY3VyLmRpbmZvLCBzaXplb2Yoc3RydWN0IGRldmluZm8pKTsKIAliemVybyhsYXN0LmRpbmZv
LCBzaXplb2Yoc3RydWN0IGRldmluZm8pKTsKLQkKKwogCS8qCiAJICogVGhpcyB2YWx1ZSBmb3Ig
bWF4c2hvd2RldnMgKDEwMCkgaXMgYm9ndXMuICBJJ20gbm90IHN1cmUgZXhhY3RseQogCSAqIGhv
dyB0byBjYWxjdWxhdGUgaXQsIHRob3VnaC4KQEAgLTEyOSwxNCArMTM3LDE5IEBAIHZvaWQKIGZl
dGNoaW9zdGF0KHZvaWQpCiB7CiAJc3RydWN0IGRldmluZm8gKnRtcF9kaW5mbzsKKwlzaXplX3Qg
bGVuOwogCi0JaWYgKGtpbmZvX2dldF9zY2hlZF9jcHV0aW1lKCZjcF90aW1lKSkKLQkJZXJyKDEs
ICJraW5mb19nZXRfc2NoZWRfY3B1dGltZSIpOworCWxlbiA9IHNpemVvZihjdXIuY3BfdGltZSk7
CisJaWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lIiwgJmN1ci5jcF90aW1lLCAmbGVuLCBO
VUxMLCAwKQorCSAgICB8fCBsZW4gIT0gc2l6ZW9mKGN1ci5jcF90aW1lKSkgeworCQlwZXJyb3Io
Imtlcm4uY3BfdGltZSIpOworCQlleGl0ICgxKTsKKwl9CiAJdG1wX2RpbmZvID0gbGFzdC5kaW5m
bzsKIAlsYXN0LmRpbmZvID0gY3VyLmRpbmZvOwogCWN1ci5kaW5mbyA9IHRtcF9kaW5mbzsKLSAg
ICAgICAgIAotCWxhc3QuYnVzeV90aW1lID0gY3VyLmJ1c3lfdGltZTsKKworCWxhc3Quc25hcF90
aW1lID0gY3VyLnNuYXBfdGltZTsKIAogCS8qCiAJICogSGVyZSB3aGF0IHdlIHdhbnQgdG8gZG8g
aXMgcmVmcmVzaCBvdXIgZGV2aWNlIHN0YXRzLgpAQCAtMTQ1LDcgKzE1OCw3IEBAIGZldGNoaW9z
dGF0KHZvaWQpCiAJICogdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGFnYWluLCBpbiBjYXNlIGEgZGV2
aWNlIHRoYXQgd2UKIAkgKiB3ZXJlIHByZXZpb3VzbHkgZGlzcGxheWluZyBoYXMgZ29uZSBhd2F5
LgogCSAqLwotCXN3aXRjaCAoZ2V0ZGV2cygmY3VyKSkgeworCXN3aXRjaCAoZ2V0bnVtZGV2cygp
KSB7CiAJY2FzZSAtMToKIAkJZXJyeCgxLCAiJXMiLCBkZXZzdGF0X2VycmJ1Zik7CiAJCWJyZWFr
OwpAQCAtMTcwLDcgKzE4Myw3IEBAIGxhYmVsaW9zdGF0KHZvaWQpCiAJcm93ID0gMDsKIAl3bW92
ZSh3bmQsIHJvdywgMCk7IHdjbHJ0b2JvdCh3bmQpOwogCW12d2FkZHN0cih3bmQsIHJvdysrLCBJ
TlNFVCwKLQkgICAgIi8wICAgLzEwICAvMjAgIC8zMCAgLzQwICAvNTAgIC82MCAgLzcwICAvODAg
IC85MCAgLzEwMCIpOworCSAgICAiLzAlICAvMTAgIC8yMCAgLzMwICAvNDAgIC81MCAgLzYwICAv
NzAgIC84MCAgLzkwICAvMTAwIik7CiAJbXZ3YWRkc3RyKHduZCwgcm93KyssIDAsICJjcHUgIHVz
ZXJ8Iik7CiAJbXZ3YWRkc3RyKHduZCwgcm93KyssIDAsICIgICAgIG5pY2V8Iik7CiAJbXZ3YWRk
c3RyKHduZCwgcm93KyssIDAsICIgICBzeXN0ZW18Iik7CkBAIC0yMzAsNyArMjQzLDcgQEAgYmFy
bGFiZWxzKGludCByb3cpCiAJY2hhciB0bXBzdHJbMTBdOwogCiAJbXZ3YWRkc3RyKHduZCwgcm93
KyssIElOU0VULAotCSAgICAiLzAgICAvMTAgIC8yMCAgLzMwICAvNDAgIC81MCAgLzYwICAvNzAg
IC84MCAgLzkwICAvMTAwIik7CisJICAgICIvMCUgIC8xMCAgLzIwICAvMzAgIC80MCAgLzUwICAv
NjAgIC83MCAgLzgwICAvOTAgIC8xMDAiKTsKIAlsaW5lc3BlcnJlZ2lvbiA9IDIgKyBrYnB0Owog
CWZvciAoaSA9IDA7IGkgPCBudW1fZGV2aWNlczsgaSsrKQogCQlpZiAoZGV2X3NlbGVjdFtpXS5z
ZWxlY3RlZCkgewpAQCAtMjM4LDcgKzI1MSw3IEBAIGJhcmxhYmVscyhpbnQgcm93KQogCQkJCWJy
ZWFrOwogCQkJc3ByaW50Zih0bXBzdHIsICIlcyVkIiwgZGV2X3NlbGVjdFtpXS5kZXZpY2VfbmFt
ZSwKIAkJCQlkZXZfc2VsZWN0W2ldLnVuaXRfbnVtYmVyKTsKLQkJCW12d3ByaW50dyh3bmQsIHJv
dysrLCAwLCAiJS01LjVzIE1CL3N8IiwgCisJCQltdndwcmludHcod25kLCByb3crKywgMCwgIiUt
NS41cyBNQi9zfCIsCiAJCQkJICB0bXBzdHIpOwogCQkJbXZ3YWRkc3RyKHduZCwgcm93KyssIDAs
ICIgICAgICB0cHN8Iik7CiAJCQlpZiAoa2JwdCkKQEAgLTI1MSwyNSArMjY0LDIxIEBAIGJhcmxh
YmVscyhpbnQgcm93KQogdm9pZAogc2hvd2lvc3RhdCh2b2lkKQogeworCWxvbmcgdDsKIAlpbnQg
aSwgcm93LCBfY29sOwotCXN0cnVjdCBraW5mb19jcHV0aW1lIGRpZmZfY3BfdGltZTsKLQl1aW50
NjRfdCBjcF90b3RhbDsKLQotCWRpZmZfY3BfdGltZS5jcF91c2VyID0gY3BfdGltZS5jcF91c2Vy
IC0gb2xkX2NwX3RpbWUuY3BfdXNlcjsKLQlkaWZmX2NwX3RpbWUuY3BfbmljZSA9IGNwX3RpbWUu
Y3BfbmljZSAtIG9sZF9jcF90aW1lLmNwX25pY2U7Ci0JZGlmZl9jcF90aW1lLmNwX3N5cyA9IGNw
X3RpbWUuY3Bfc3lzIC0gb2xkX2NwX3RpbWUuY3Bfc3lzOwotCWRpZmZfY3BfdGltZS5jcF9pbnRy
ID0gY3BfdGltZS5jcF9pbnRyIC0gb2xkX2NwX3RpbWUuY3BfaW50cjsKLQlkaWZmX2NwX3RpbWUu
Y3BfaWRsZSA9IGNwX3RpbWUuY3BfaWRsZSAtIG9sZF9jcF90aW1lLmNwX2lkbGU7Ci0Jb2xkX2Nw
X3RpbWUgPSBjcF90aW1lOwogCisjZGVmaW5lIFgoZmxkKQl0ID0gY3VyLmZsZFtpXTsgY3VyLmZs
ZFtpXSAtPSBsYXN0LmZsZFtpXTsgbGFzdC5mbGRbaV0gPSB0CisJZXRpbWUgPSAwOworCWZvcihp
ID0gMDsgaSA8IENQVVNUQVRFUzsgaSsrKSB7CisJCVgoY3BfdGltZSk7CisJCWV0aW1lICs9IGN1
ci5jcF90aW1lW2ldOworCX0KKwlpZiAoZXRpbWUgPT0gMC4wKQorCQlldGltZSA9IDEuMDsKKwll
dGltZSAvPSBoZXJ0ejsKIAlyb3cgPSAxOwotCWNwX3RvdGFsID0gZGlmZl9jcF90aW1lLmNwX3Vz
ZXIgKyBkaWZmX2NwX3RpbWUuY3BfbmljZSArCi0JICAgIGRpZmZfY3BfdGltZS5jcF9zeXMgKyBk
aWZmX2NwX3RpbWUuY3BfaW50ciArIGRpZmZfY3BfdGltZS5jcF9pZGxlOwotCXN0YXQxKHJvdysr
LCBkaWZmX2NwX3RpbWUuY3BfdXNlciwgY3BfdG90YWwpOwotCXN0YXQxKHJvdysrLCBkaWZmX2Nw
X3RpbWUuY3BfbmljZSwgY3BfdG90YWwpOwotCXN0YXQxKHJvdysrLCBkaWZmX2NwX3RpbWUuY3Bf
c3lzLCAgY3BfdG90YWwpOwotCXN0YXQxKHJvdysrLCBkaWZmX2NwX3RpbWUuY3BfaW50ciwgY3Bf
dG90YWwpOwotCXN0YXQxKHJvdysrLCBkaWZmX2NwX3RpbWUuY3BfaWRsZSwgY3BfdG90YWwpOwor
CWZvciAoaSA9IDA7IGkgPCBDUFVTVEFURVM7IGkrKykKKwkJc3RhdDEocm93KyssIGkpOwogCWlm
ICghbnVtYmVycykgewogCQlyb3cgKz0gMjsKIAkJZm9yIChpID0gMDsgaSA8IG51bV9kZXZpY2Vz
OyBpKyspCkBAIC0zMDgsMTUgKzMxNywxOCBAQCBkZXZzdGF0cyhpbnQgcm93LCBpbnQgX2NvbCwg
aW50IGRuKQogCWxvbmcgZG91YmxlIGtiX3Blcl90cmFuc2ZlciwgbWJfcGVyX3NlY29uZDsKIAls
b25nIGRvdWJsZSBidXN5X3NlY29uZHM7CiAJaW50IGRpOwotCQorCiAJZGkgPSBkZXZfc2VsZWN0
W2RuXS5wb3NpdGlvbjsKIAotCWJ1c3lfc2Vjb25kcyA9IGNvbXB1dGVfZXRpbWUoY3VyLmJ1c3lf
dGltZSwgbGFzdC5idXN5X3RpbWUpOworCWJ1c3lfc2Vjb25kcyA9IGN1ci5zbmFwX3RpbWUgLSBs
YXN0LnNuYXBfdGltZTsKIAotCWlmIChjb21wdXRlX3N0YXRzKCZjdXIuZGluZm8tPmRldmljZXNb
ZGldLCAmbGFzdC5kaW5mby0+ZGV2aWNlc1tkaV0sCi0JCQkgIGJ1c3lfc2Vjb25kcywgTlVMTCwg
TlVMTCwgTlVMTCwKLQkJCSAgJmtiX3Blcl90cmFuc2ZlciwgJnRyYW5zZmVyc19wZXJfc2Vjb25k
LAotCQkJICAmbWJfcGVyX3NlY29uZCwgTlVMTCwgTlVMTCkgIT0gMCkKKwlpZiAoY29tcHV0ZV9z
dGF0cygmY3VyLmRpbmZvLT5kZXZpY2VzW2RpXSwKKwkgICAgJmxhc3QuZGluZm8tPmRldmljZXNb
ZGldLCBidXN5X3NlY29uZHMsCisJICAgIE5VTEwsIE5VTEwsCisJICAgIE5VTEwsIE5VTEwsIAor
CSAgICAma2JfcGVyX3RyYW5zZmVyLAorCSAgICAmdHJhbnNmZXJzX3Blcl9zZWNvbmQsCisJICAg
ICZtYl9wZXJfc2Vjb25kLCBOVUxMKSAhPSAwKQogCQllcnJ4KDEsICIlcyIsIGRldnN0YXRfZXJy
YnVmKTsKIAogCWlmIChudW1iZXJzKSB7CkBAIC0zMzksMTcgKzM1MSwxOSBAQCBkZXZzdGF0cyhp
bnQgcm93LCBpbnQgX2NvbCwgaW50IGRuKQogfQogCiBzdGF0aWMgdm9pZAotc3RhdDEoaW50IHJv
dywgdWludDY0X3QgZGlmZmVyZW5jZSwgdWludDY0X3QgdG90YWwpCitzdGF0MShpbnQgcm93LCBp
bnQgbykKIHsKKwlpbnQgaTsKIAlkb3VibGUgZHRpbWU7CiAKLQlpZiAodG90YWwgPiAwKQotCQlk
dGltZSA9IDEwMC4wICogZGlmZmVyZW5jZSAvIHRvdGFsOwotCWVsc2UKLQkJZHRpbWUgPSAwOwor
CWR0aW1lID0gMC4wOworCWZvciAoaSA9IDA7IGkgPCBDUFVTVEFURVM7IGkrKykKKwkJZHRpbWUg
Kz0gY3VyLmNwX3RpbWVbaV07CisJaWYgKGR0aW1lID09IDAuMCkKKwkJZHRpbWUgPSAxLjA7CiAJ
d21vdmUod25kLCByb3csIElOU0VUKTsKICNkZWZpbmUgQ1BVU0NBTEUJMC41Ci0JaGlzdG9ncmFt
KGR0aW1lLCA1MCwgQ1BVU0NBTEUpOworCWhpc3RvZ3JhbSgxMDAuMCAqIGN1ci5jcF90aW1lW29d
IC8gZHRpbWUsIDUwLCBDUFVTQ0FMRSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zNTksOCArMzcz
LDYgQEAgaGlzdG9ncmFtKGxvbmcgZG91YmxlIHZhbCwgaW50IGNvbHdpZHRoLCBkb3VibGUgc2Nh
bGUpCiAJaW50IGs7CiAJaW50IHYgPSAoaW50KSh2YWwgKiBzY2FsZSkgKyAwLjU7CiAKLQlpZiAo
dmFsIDw9IDApCi0JCXYgPSAwOwogCWsgPSBNSU4odiwgY29sd2lkdGgpOwogCWlmICh2ID4gY29s
d2lkdGgpIHsKIAkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiU1LjJMZiIsIHZhbCk7CmRp
ZmYgLS1naXQgYS91c3IuYmluL3N5c3RhdC9zeXN0YXQuaCBiL3Vzci5iaW4vc3lzdGF0L3N5c3Rh
dC5oCmluZGV4IDk2NWNhMzkuLjc0NGM4NTEgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vc3lzdGF0L3N5
c3RhdC5oCisrKyBiL3Vzci5iaW4vc3lzdGF0L3N5c3RhdC5oCkBAIC01Niw2ICs1Niw4IEBAIHN0
cnVjdCAgY21kdGFiIHsKICNkZWZpbmUJVENQCTB4MQogI2RlZmluZQlVRFAJMHgyCiAKKyNkZWZp
bmUgTUFJTldJTl9ST1cgMworCiAjZGVmaW5lIEtSRUFEKGFkZHIsIGJ1ZiwgbGVuKSAga3ZtX2Nr
cmVhZCgoYWRkciksIChidWYpLCAobGVuKSkKICNkZWZpbmUgTlZBTChpbmR4KSAgbmFtZWxpc3Rb
KGluZHgpXS5uX3ZhbHVlCiAjZGVmaW5lIE5QVFIoaW5keCkgICh2b2lkICopTlZBTCgoaW5keCkp
Cg==
--0016368332f0cd96a4049d23b052--