[patch] QNX-style scheduling v1.05 (oops)

Adam McKee (amckee@poboxes.com)
Fri, 1 Aug 1997 03:23:51 -0600 (CST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--12583424-2133113819-870427431=:676
Content-Type: TEXT/PLAIN; charset=US-ASCII

Sorry for the clutter... Shortly after sending v1.04 I noticed a slight
error that I thought I should correct right away.

D'oh!

-- Adam

--12583424-2133113819-870427431=:676
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="QNX-scheduler-2.0.31-pre2-5.patch.README"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970801032351.676B@titan.acua.org>
Content-Description:

ICAgICAgICAgICAgICAgICAgIFFOWC1zdHlsZSBTY2hlZHVsaW5nIHYxLjA1
IGZvciBMaW51eCAyLjANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnkNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBZGFtIE1jS2VlDQoNCg0KU3BlY2lhbCBub3RlOiBBIGdyZWF0IG1hbnkg
dGhhbmtzIHRvIFNjb3R0IFdhbGRlIDxzY290dEBzYXNrYXRvb24uY29tPiB3
aG8NCiAgICAgICAgICAgICAgZ2F2ZSBtZSBhY2Nlc3MgdG8gYSBkdWFsLVBd
Wy8yNjYgbWFjaGluZSBzbyBJIGNvdWxkIGdldCB0aGlzDQogICAgICAgICAg
ICAgIHBhdGNoIHdvcmtpbmcgd2l0aCBTTVAuICBZb3UgZGEgbWFuLCBTY290
dCENCiAgDQoNCklOVFJPRFVDVElPTg0KDQpUaGlzIHBhdGNoIHByb3ZpZGVz
IFFOWC1zdHlsZSBzY2hlZHVsaW5nIGZvciBMaW51eCAyLjAuICBUaGUgaW50
ZW50IGlzIHRvDQpwcm92aWRlIG1vcmUgZmxleGlibGUgYW5kIHBvd2VyZnVs
IHNjaGVkdWxpbmcsIGFuZCB0byBwcm92aWRlIGltcHJvdmVkDQppbnRlcmFj
dGl2ZSBwZXJmb3JtYW5jZSB1bmRlciBoZWF2eSBDUFUgbG9hZC4gIFRoaXMg
c2NoZWR1bGVyIGRvZXMgbm90IHByb3ZpZGUNCmluY3JlYXNlZCB0aHJvdWdo
cHV0IGhvd2V2ZXIuICBJbiBmYWN0LCB0aGVyZSBpcyBhIHZlcnkgc21hbGwg
cHJpY2UgdG8gcGF5IGluDQp0ZXJtcyBvZiB0aHJvdWdocHV0IGluIG9yZGVy
IHRvIGFjaGlldmUgdGhlIGFmb3JlbWVudGlvbmVkIGdvYWxzLiAgU28gdGhh
dCB5b3UNCmNhbiBhcHByZWNpYXRlIGV4YWN0bHkgd2hhdCB0aGUgcGF0Y2gg
ZG9lcywgSSB3aWxsIGdpdmUgYW4gKG92ZXJzaW1wbGlmaWVkKQ0KZXhwbGFu
YXRpb24gb2YgaG93IHNjaGVkdWxpbmcgaXMgbm9ybWFsbHkgZG9uZSB1bmRl
ciBMaW51eCAyLjAsIGZvbGxvd2VkIGJ5IGENCmRlc2NyaXB0aW9uIG9mIHRo
ZSBRTlggc2NoZWR1bGVyIChhcyBpbXBsZW1lbnRlZCkuICBJZiB5b3UgdXNl
IHRoaXMgcGF0Y2gsIHlvdQ0Kd2lsbCBuZWVkIHRvIHJlLXRoaW5rIGhvdyB5
b3UgcmUtbmljZSB0YXNrcywgc28gYSBicmllZiBkaXNjdXNzaW9uIG9mDQpy
ZS1uaWNpbmcgdGFza3MgaXMgZ2l2ZW4uDQoNCg0KTk9STUFMIFNDSEVEVUxJ
TkcgVU5ERVIgTElOVVggMi4wDQoNClRoZXJlIGlzIGEgc2luZ2xlIHJ1bi1x
dWV1ZS4gIEVhY2ggdGFzayBtYXkgYmUgYXNzaWduZWQgYSBwcmlvcml0eSBv
cg0KIm5pY2VuZXNzIiB3aGljaCB3aWxsIGRldGVybWluZSBob3cgbG9uZyBh
IHRpbWVzbGljZSBpdCBnZXRzLiAgRm9yIGV4YW1wbGUsIGlmDQp5b3UgZ2l2
ZSBhIHRhc2sgYSBuaWNlbmVzcyBvZiAtMjAsIHRoZSBrZXJuZWwgd2lsbCBu
b3QgZGlyZWN0bHkgdXNlIHRoZSAtMjAuDQpidXQgd2lsbCBpbnN0ZWFkIHVz
ZSB0aGlzIG51bWJlciB0byBkZXRlcm1pbmUgaG93IGxvbmcvb2Z0ZW4gdGhl
IHRhc2sgc2hvdWxkDQpiZSBhbGxvd2VkIHRvIHJ1bi4gIFRoZSAiY291bnRl
ciIgYXR0cmlidXRlIG9mIGVhY2ggdGFzayBkZXRlcm1pbmVzIGhvdyBtdWNo
DQp0aW1lIGl0IGhhcyBsZWZ0IGluIGl0cyB0aW1lc2xpY2UuICBBZnRlciBl
dmVyeSB0YXNrIG9uIHRoZSBydW4tcXVldWUgaGFzIHVzZWQNCnVwIGl0cyB0
aW1lc2xpY2UgKGNvdW50ZXIgPSAwKSwgdGhlIGNvdW50ZXIgZm9yIGVhY2gg
dGFzayBpcyByZXNldCB0byB0aGUNCm9yaWdpbmFsIHByaW9yaXR5LiAgVGhp
cyBzY2hlZHVsZXIgaGFzIHNvbWUgbmljZSBwcm9wZXJ0aWVzOg0KDQoJbyBJ
dCBvYmV5cyB0aGUgS0lTUyBwcmluY2lwbGUgKEtlZXAgSXQgU2ltcGxlLCBT
dHVwaWQhKS4gIFRoZXJlIGlzDQogICAgICAgICAgYWx3YXlzIGEgZGFuZ2Vy
IHRoYXQgdHJ5aW5nIHRvIGdldCAidG9vIGNsZXZlciIgd2lsbCBpbnRyb2R1
Y2UNCiAgICAgICAgICB1bmV4cGVjdGVkIHByb2JsZW1zLg0KDQoJbyBJdCBn
dWFyYW50ZWVzIHRoYXQgbm8gdGFzayB3aWxsIHN0YXJ2ZS4NCg0KCW8gSXQg
YWxsb3dzIHRoZSB1c2VyIHRvIGhhdmUgc29tZSBjb250cm9sIG92ZXIgdGhl
IHNjaGVkdWxpbmcuDQoNClNvbWUgZHJhd2JhY2tzOg0KDQoJbyBJbnRlcmFj
dGl2ZSBwZXJmb3JtYW5jZSB1bmRlciBoZWF2eSBDUFUgbG9hZCBpcyBub3Qg
Z29vZC4NCg0KCW8gTGltaXRlZCBjb250cm9sIG92ZXIgc2NoZWR1bGluZy4N
Cg0KDQpUSEUgUU5YIFNDSEVEVUxFUg0KDQpNeSB1bmRlcnN0YW5kaW5nIG9m
IHRoZSBRTlggc2NoZWR1bGVyIGlzIGJhc2VkIGVudGlyZWx5IG9uIGEgc2hv
cnQgYmx1cmIgSQ0KcmVhZCBhYm91dCBpdCwgc28gSSB3b3VsZCBub3QgYmUg
c3VycHJpc2VkIHRvIGZpbmQgdGhhdCB0aGUgZm9sbG93aW5nDQpkaXNjdXNz
aW9uIGNvbnRhaW5zIGVycm9ycyBhbmQvb3Igb21pc3Npb25zLiAgSG93ZXZl
ciwgcGxlYXNlIGRvIHJlYWQNCm9uLi4uIDotKQ0KDQpUaGVyZSBhcmUgMzIg
c2VwYXJhdGUgcnVuLXF1ZXVlcywgbnVtYmVyZWQgMC0zMS4gIFdoZW4gdGhl
IHNjaGVkdWxlciBpcw0KbG9va2luZyBmb3IgYSB0YXNrIHRvIHJ1biwgaXQg
d2lsbCBzZWxlY3QgYSB0YXNrIGZyb20gdGhlIGxvd2VzdC1udW1iZXJlZA0K
cnVuLXF1ZXVlIHRoYXQgaGFzIGEgcnVubmFibGUgdGFzayBvbiBpdC4gIFRo
aXMgbWVhbnMgdGhhdCwgZm9yIGV4YW1wbGUsIGENCnRhc2sgb24gcnVuLXF1
ZXVlIDEgd2lsbCAqbm90KiBydW4gdW50aWwgdGhlcmUgYXJlIG5vIHRhc2tz
IG9uIHJ1bi1xdWV1ZSAwDQp0aGF0IHdhbnQgdG8gcnVuLiAgVGhlIGluaXQg
dGFzayBoYXMgYSBtaW5pbXVtIHJ1bi1xdWV1ZSBvZiAxNS4gIE5ld2x5DQpj
cmVhdGVkIHRhc2tzIGluaGVyaXQgdGhlaXIgbWluaW11bSBydW4tcXVldWUg
ZnJvbSB0aGVpciBwYXJlbnQuDQoNClRocmVlIHNjaGVkdWxpbmcgcG9saWNp
ZXMgYXJlIHN1cHBvcnRlZDoNCg0KLS0tIEZJRk8NCg0KVGhlIHNlbGVjdGVk
IHRhc2sgd2lsbCBydW4gdW50aWw6DQoNCglvIGl0IGJsb2Nrcw0KCSAgLU9S
LQ0KCW8gYSB0YXNrIG9uIGEgbG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlIHdh
bnRzIHRvIHJ1bg0KDQotLS0gUm91bmQtUm9iaW4NCg0KVGhlIHNlbGVjdGVk
IHRhc2sgd2lsbCBydW4gdW50aWw6DQoNCglvIGl0IGJsb2Nrcw0KCSAgLU9S
LQ0KCW8gYSB0YXNrIG9uIGEgbG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlIHdh
bnRzIHRvIHJ1bg0KCSAgLU9SDQoJbyAyMDBtcyBoYXZlIHBhc3NlZA0KDQot
LS0gQWRhcHRpdmUNCg0KVGhpcyBpcyB0aGUgZGVmYXVsdCBwb2xpY3ksIGFu
ZCB0aGUgbW9zdCBpbnRlcmVzdGluZyBwb2xpY3kuICBBZGFwdGl2ZQ0Kc2No
ZWR1bGluZyBpcyBsaWtlIFJvdW5kLVJvYmluLCBidXQgaXQgYWxzbyB0cmll
cyB0byAiaW50ZWxsaWdlbnRseSIgbW92ZQ0KdGFza3MgYmV0d2VlbiBydW4t
cXVldWVzIGluIG9yZGVyIHRvIHByb3ZpZGUgZ29vZCBpbnRlcmFjdGl2ZSBy
ZXNwb25zZS4NCkhlcmUgYXJlIHRoZSBydWxlcyBmb3IgYWRhcHRpdmUgc2No
ZWR1bGluZzoNCg0KCW8gRWFjaCB0YXNrIGhhcyBhICdtaW5pbXVtIHJ1bi1x
dWV1ZScgYXR0cmlidXRlIHRoYXQgdGVsbHMgdGhlDQoJICBzY2hlZHVsZXIg
dGhlIGxvd2VzdC1udW1iZXJlZCBydW4tcXVldWUgdGhlIHRhc2sgY2FuIGJl
IG9uLg0KCSAgIk5vcm1hbCIgdGFza3MgaGF2ZSBtaW5pbXVtIHJ1bi1xdWV1
ZSA9IDE1Lg0KDQoJbyBXaGVuIGEgdGFzayBpcyBpbml0aWFsbHkgc3RhcnRl
ZCwgaXQgaW5oZXJpdHMgaXRzIGN1cnJlbnQgYW5kDQogICAgICAgICAgbWlu
aW11bSBydW4tcXVldWUgZnJvbSBpdHMgcGFyZW50Lg0KDQoJbyBJZiBhIHRh
c2sgYmxvY2tzIChkb2VzIG5vdCB1c2UgYWxsIG9mIGl0cyB0aW1lc2xpY2Up
LCBpdCB3aWxsDQoJICBiZSBwbGFjZWQgb24gaXRzIG1pbmltdW0gcnVuLXF1
ZXVlIHdoZW4gaXQgYmVjb21lcyBydW5uYWJsZSBhZ2Fpbi4NCg0KCW8gSWYg
YSB0YXNrIHVzZXMgdXAgYWxsIG9mIGl0cyB0aW1lc2xpY2UsIGFuZCB0aGVy
ZSBpcyBhdCBsZWFzdCBvbmUNCgkgIG90aGVyIHRhc2sgb24gdGhlIHNhbWUg
cnVuLXF1ZXVlIHRoYXQgd2FudHMgdG8gcnVuLCBpdHMgcnVuLXF1ZXVlDQoJ
ICB3aWxsIGJlIGluY3JlbWVudGVkICgiZGVtb3Rpb24iKS4NCg0KCW8gSWYg
YSB0YXNrIGhhcyBiZWVuIHN0YXJ2aW5nIGZvciBvbmUgc2Vjb25kLCBhbmQg
aXRzIGN1cnJlbnQgcnVuLXF1ZXVlDQoJICBpcyBncmVhdGVyIHRoYW4gaXRz
IG1pbmltdW0gcnVuLXF1ZXVlLCBpdHMgcnVuLXF1ZXVlIHdpbGwgYmUNCgkg
IGRlY3JlbWVudGVkICgicHJvbW90aW9uIikuDQoNClRoZSByZXN1bHQgb2Yg
YXBwbHlpbmcgdGhlc2UgcnVsZXMgaXMgdGhhdCB0YXNrcyB3aXRoIGhlYXZ5
IENQVSByZXF1aXJlbWVudHMNCndpbGwgdGVuZCB0byBtaWdyYXRlIHRvIGhp
Z2hlci1udW1iZXJlZCBydW4tcXVldWVzLCB3aGVyZWFzIHRhc2tzIHdpdGgg
bGlnaHQNCkNQVSByZXF1aXJlbWVudHMgd2lsbCB0ZW5kIHRvIHN0YXkgb24g
bG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlcy4gIFRoaXMgaXMNCipnb29kKiBm
b3IgaW50ZXJhY3RpdmUgcGVyZm9ybWFuY2UhDQoNCg0KUkUtTklDSU5HIE9G
IFRBU0tTIFdJVEggUU5YIFNDSEVEVUxJTkcNCg0KV2hlbiB5b3UgcmUtbmlj
ZSBhIHRhc2ssIHlvdSBhcmUgYWN0dWFsbHkgY2hhbmdpbmcgaXRzIG1pbmlt
dW0gcnVuLXF1ZXVlLiAgRm9yDQpleGFtcGxlLCBpZiB5b3UgZ2l2ZSB5b3Vy
IFgtc2VydmVyIGEgbmljZW5lc3Mgb2YgLTIwLCB5b3UgYXJlIGFjdHVhbGx5
IHNldHRpbmcNCml0cyBtaW5pbXVtIHJ1bi1xdWV1ZSB0byAwLiAgSWYgeW91
IGdpdmUgaXQgYSBuaWNlbmVzcyBvZiAyMCwgeW91IGFyZSBzZXR0aW5nDQpp
dHMgbWluaW11bSBydW4tcXVldWUgdG8gMzEuICBUaGUgcHJpb3JpdHkgb2Yg
YSB0YXNrIGlzIGl0cyAqY3VycmVudCoNCnJ1bi1xdWV1ZSAod2hpY2ggbWF5
IGJlIGxhcmdlciB0aGFuIGl0cyBtaW5pbXVtIHJ1bi1xdWV1ZSBpbiB0aGUg
Y2FzZSBvZiBhbg0KYWRhcHRpdmVseSBzY2hlZHVsZWQgdGFzaykuDQoNCllv
dSBtdXN0IHRha2UgY2FyZSB3aGVuIHJlLW5pY2luZyB0YXNrcy4gIFVubGlr
ZSB0aGUgbm9ybWFsIExpbnV4IHNjaGVkdWxlciwNCnRoZSBRTlggc2NoZWR1
bGVyIGRvZXMgbm90IGd1YXJhbnRlZSB0YXNrcyB3aWxsIG5vdCBzdGFydmUu
ICBXaGVuIHlvdSByZS1uaWNlDQphIHRhc2ssIHlvdSBtYXkgc2hvb3QgeW91
cnNlbGYgaW4gdGhlIGZvb3QgaW4gYSBjb3VwbGUgb2YgZGlmZmVyZW50IHdh
eXM6DQoNCglvIFRoZSB0YXNrIGhvZ3MgdGhlIENQVSwgYW5kIHN0YXJ2ZXMg
b3V0IG90aGVyIHRhc2tzIChpbiB0aGUgY2FzZSBvZg0KCSAgYSBuZWdhdGl2
ZSBuaWNlbmVzcykuDQoNCglvIFRoZSB0YXNrIGlzIHN0YXJ2ZWQgb3V0IGJ5
IGhpZ2hlci1wcmlvcml0eSB0YXNrcyAoaW4gdGhlIGNhc2Ugb2YgYQ0KCSAg
cG9zaXRpdmUgbmljZW5lc3MpLg0KDQpIZXJlIGFyZSBhIGZldyBnZW5lcmFs
IHRpcHMgZm9yIHJlLW5pY2luZyB0YXNrczoNCg0KCW8gT24gYSBtYWNoaW5l
IHdob3NlIHByaW1hcnkgZnVuY3Rpb24gaXMgd2ViLXNlcnZpbmcgb3IgbmV3
cy1zZXJ2aW5nLA0KCSAgeW91IG1heSB3YW50IHRvIGdpdmUgdGhlIGh0dHBk
IG9yIGlubmQgdGFzayBhIG5lZ2F0aXZlIG5pY2VuZXNzLg0KCSAgT3RoZXIg
dGFza3Mgd291bGQgdGhlbiBvbmx5IGJlIGFsbG93ZWQgdG8gY29uc3VtZSAi
bGVmdC1vdmVyIiBDUFUNCgkgIHRpbWUuDQoNCglvIEl0J3MgcHJvYmFibHkg
YSBnb29kIGlkZWEgdG8gZ2l2ZSB5b3VyIFgtc2VydmVyIGEgbmVnYXRpdmUg
bmljZW5lc3MuDQoJICBJbnRlcmFjdGl2ZSBwZXJmb3JtYW5jZSB3aWxsIGxp
a2VseSBiZW5lZml0IGZyb20gdGhpcy4NCg0KCW8gV2hlbiBzdGFydGluZyBh
IENQVS1pbnRlbnNpdmUgam9iIHRoYXQgbWF5IHRha2UgYXdoaWxlIHRvIGNv
bXBsZXRlLA0KCSAgeW91IG1heSB3YW50IHRvIGdpdmUgaXQgYSBwb3NpdGl2
ZSBuaWNlbmVzcyB0byBlbnN1cmUgdGhlIGFic29sdXRlDQoJICBtaW5pbXVt
IGltcGFjdCBvbiBpbnRlcmFjdGl2ZSBwZXJmb3JtYW5jZS4gIFdoZW4gY29t
cGlsaW5nIGEga2VybmVsLA0KCSAgeW91IG1pZ2h0IGRvICduaWNlIG1ha2Ug
emxpbG8nIC0tIHVzZXJzIG9mIHRoZSBzeXN0ZW0gd291bGQgcHJvYmFibHkN
CgkgIG5vdCBldmVuIG5vdGljZSBhbnkgc2xvd2Rvd24hDQoNCiAgICAgICAg
byBJdCdzIGFsbW9zdCBuZXZlciBhIGdvb2QgaWRlYSB0byBnaXZlIGEgdG90
YWxseSBDUFUtaW50ZW5zaXZlIHRhc2sNCiAgICAgICAgICBhIG5lZ2F0aXZl
IG5pY2VuZXNzLiAgRG9pbmcgdGhpcyB3aXRoIHRoZSBub3JtYWwgTGludXgg
c2NoZWR1bGVyDQogICAgICAgICAgY2FuIHJlc3VsdCBpbiBhIHNsdWdnaXNo
IHN5c3RlbSAtLSB3aXRoIHRoaXMgc2NoZWR1bGVyIGl0IGNhbiByZXN1bHQN
CiAgICAgICAgICBpbiBhbiAqdW51c2FibGUqIHN5c3RlbS4NCg0KSW4gZ2Vu
ZXJhbCwgZG9uJ3QgcmUtbmljZSBhIHRhc2sgdW5sZXNzIHlvdSB1bmRlcnN0
YW5kIGhvdyB0aGUgc2NoZWR1bGVyDQp3b3JrcywgYW5kIHlvdSBjYW4gcmVh
bGx5IGNvbnZpbmNlIHlvdXJzZWxmIHRoYXQgaXQncyBhIGdvb2QgaWRlYS4N
Cg0KDQpDT05DTFVTSU9ODQoNClBsZWFzZSBsZXQgbWUga25vdyBob3cgd2Vs
bCB0aGlzIHBhdGNoIHdvcmtzIGZvciB5b3UuICBBbHNvLCBpZiB5b3UgZmlu
ZCBteQ0KaW1wbGVtZW50YXRpb24gb2YgUU5YIHNjaGVkdWxpbmcgaXMgaW5j
b3JyZWN0IG9yIGluY29tcGxldGUsIEkgd291bGQgYmUgdmVyeQ0KZ2xhZCB0
byBoZWFyIGZyb20geW91Lg0KDQpIYXBweSB0YXNrLXN3aXRjaGluZyA6LSkN
Cg0KCS0tIEFkYW0gTWNLZWUJCTxhbWNrZWVAcG9ib3hlcy5jb20+DQo=
--12583424-2133113819-870427431=:676
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="QNX-scheduler-2.0.31-pre2-5.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970801032351.676C@titan.acua.org>
Content-Description:

LS0tIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYy5vcmlnCVRodSBKdWwgMzEgMTg6
NTU6NDcgMTk5Nw0KKysrIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYwlUaHUgSnVs
IDMxIDE4OjU1OjU3IDE5OTcNCkBAIC02ODIsMTIgKzY4MiwzNCBAQA0KIAll
bHNlDQogCQl0dHlfcGdycCA9IC0xOw0KIA0KLQkvKiBzY2FsZSBwcmlvcml0
eSBhbmQgbmljZSB2YWx1ZXMgZnJvbSB0aW1lc2xpY2VzIHRvIC0yMC4uMjAg
Ki8NCisJLyogc2NhbGUgcHJpb3JpdHkgYW5kIG5pY2UgdmFsdWVzIGZyb20g
cnVuLXF1ZXVlICMgdG8gLTIwLi4yMCAqLw0KIAkvKiB0byBtYWtlIGl0IGxv
b2sgbGlrZSBhICJub3JtYWwiIHVuaXggcHJpb3JpdHkvbmljZSB2YWx1ZSAg
Ki8NCi0JcHJpb3JpdHkgPSB0c2stPmNvdW50ZXI7DQotCXByaW9yaXR5ID0g
MjAgLSAocHJpb3JpdHkgKiAxMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVG
X1BSSU9SSVRZOw0KLQluaWNlID0gdHNrLT5wcmlvcml0eTsNCi0JbmljZSA9
IDIwIC0gKG5pY2UgKiAyMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVGX1BS
SU9SSVRZOw0KKwlwcmlvcml0eSA9IHRzay0+cnVuX3E7DQorCWlmIChwcmlv
cml0eSA8IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0eSAq
PSAxOTsNCisJCXByaW9yaXR5IC89IChERUZfUlVOX1FVRVVFIC0gMSk7DQor
CQlwcmlvcml0eSA9IC0yMCArIHByaW9yaXR5Ow0KKwl9IGVsc2UgaWYgKHBy
aW9yaXR5ID09IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0
eSA9IDA7DQorCX0gZWxzZSB7DQorCSAgICAgICAgcHJpb3JpdHkgLT0gKERF
Rl9SVU5fUVVFVUUgKyAxKTsNCisJCXByaW9yaXR5ICo9IDE5Ow0KKwkJcHJp
b3JpdHkgLz0gKE5SX1JVTl9RVUVVRVMgLSBERUZfUlVOX1FVRVVFIC0gMik7
DQorCQlwcmlvcml0eSArPSAxOw0KKwl9DQorCW5pY2UgPSB0c2stPnJ1bl9x
X21pbjsNCisJaWYgKG5pY2UgPCBERUZfUlVOX1FVRVVFKSB7DQorCSAgICAg
ICAgbmljZSAqPSAxOTsNCisJCW5pY2UgLz0gKERFRl9SVU5fUVVFVUUgLSAx
KTsNCisJCW5pY2UgPSAtMjAgKyBuaWNlOw0KKwl9IGVsc2UgaWYgKG5pY2Ug
PT0gREVGX1JVTl9RVUVVRSkgew0KKwkgICAgICAgIG5pY2UgPSAwOw0KKwl9
IGVsc2Ugew0KKwkgICAgICAgIG5pY2UgLT0gKERFRl9SVU5fUVVFVUUgKyAx
KTsNCisJCW5pY2UgKj0gMTk7DQorCQluaWNlIC89IChOUl9SVU5fUVVFVUVT
IC0gREVGX1JVTl9RVUVVRSAtIDIpOw0KKwkJbmljZSArPSAxOw0KKwl9DQog
DQogCXJldHVybiBzcHJpbnRmKGJ1ZmZlciwiJWQgKCVzKSAlYyAlZCAlZCAl
ZCAlZCAlZCAlbHUgJWx1IFwNCiAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsZCAl
bGQgJWxkICVsZCAlbGQgJWxkICVsdSAlbHUgJWxkICVsdSAlbHUgJWx1ICVs
dSAlbHUgXA0KLS0tIGxpbnV4L2tlcm5lbC9zeXMuYy5vcmlnCVRodSBKdWwg
MzEgMTg6NTU6NDcgMTk5Nw0KKysrIGxpbnV4L2tlcm5lbC9zeXMuYwlUaHUg
SnVsIDMxIDE4OjU1OjU3IDE5OTcNCkBAIC02NywyMyArNjcsMjUgQEANCiB7
DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsNCiAJaW50IGVycm9yID0gRVNS
Q0g7DQotCXVuc2lnbmVkIGludCBwcmlvcml0eTsNCisJdW5zaWduZWQgaW50
IHJ1bl9xOw0KIA0KIAlpZiAod2hpY2ggPiAyIHx8IHdoaWNoIDwgMCkNCiAJ
CXJldHVybiAtRUlOVkFMOw0KIA0KLQkvKiBub3JtYWxpemU6IGF2b2lkIHNp
Z25lZCBkaXZpc2lvbiAocm91bmRpbmcgcHJvYmxlbXMpICovDQotCXByaW9y
aXR5ID0gbmljZXZhbDsNCi0JaWYgKG5pY2V2YWwgPCAwKQ0KLQkJcHJpb3Jp
dHkgPSAtbmljZXZhbDsNCi0JaWYgKHByaW9yaXR5ID4gMjApDQotCQlwcmlv
cml0eSA9IDIwOw0KLQlwcmlvcml0eSA9IChwcmlvcml0eSAqIERFRl9QUklP
UklUWSArIDEwKSAvIDIwICsgREVGX1BSSU9SSVRZOw0KLQ0KLQlpZiAobmlj
ZXZhbCA+PSAwKSB7DQotCQlwcmlvcml0eSA9IDIqREVGX1BSSU9SSVRZIC0g
cHJpb3JpdHk7DQotCQlpZiAoIXByaW9yaXR5KQ0KLQkJCXByaW9yaXR5ID0g
MTsNCisJaWYgKG5pY2V2YWwgPCAtMjApIG5pY2V2YWwgPSAtMjA7DQorCWVs
c2UgaWYgKG5pY2V2YWwgPiAyMCkgbmljZXZhbCA9IDIwOw0KKwlpZiAobmlj
ZXZhbCA8IDApIHsNCisJICBydW5fcSA9IC1uaWNldmFsIC0gMTsNCisJICBy
dW5fcSAqPSAoREVGX1JVTl9RVUVVRSAtIDEpOw0KKwkgIHJ1bl9xIC89IDE5
OyANCisJICBydW5fcSA9IERFRl9SVU5fUVVFVUUgLSAxIC0gcnVuX3E7DQor
CX0gZWxzZSBpZiAoIW5pY2V2YWwpIHsNCisJICBydW5fcSA9IERFRl9SVU5f
UVVFVUU7DQorCX0gZWxzZSB7DQorCSAgcnVuX3EgPSBuaWNldmFsIC0gMTsN
CisJICBydW5fcSAqPSAoTlJfUlVOX1FVRVVFUyAtIERFRl9SVU5fUVVFVUUg
LSAyKTsNCisJICBydW5fcSAvPSAxOTsNCisJICBydW5fcSA9IERFRl9SVU5f
UVVFVUUgKyAxICsgcnVuX3E7DQogCX0NCiANCiAJZm9yX2VhY2hfdGFzayhw
KSB7DQpAQCAtOTYsMTAgKzk4LDEwIEBADQogCQl9DQogCQlpZiAoZXJyb3Ig
PT0gRVNSQ0gpDQogCQkJZXJyb3IgPSAwOw0KLQkJaWYgKHByaW9yaXR5ID4g
cC0+cHJpb3JpdHkgJiYgIXN1c2VyKCkpDQotCQkJZXJyb3IgPSBFQUNDRVM7
DQorCQlpZiAocnVuX3EgPCBwLT5ydW5fcV9taW4gJiYgIXN1c2VyKCkpDQor
CQkgICAgICAgIGVycm9yID0gRUFDQ0VTOw0KIAkJZWxzZQ0KLQkJCXAtPnBy
aW9yaXR5ID0gcHJpb3JpdHk7DQorCQkgICAgICAgIHAtPnJ1bl9xX3N3ID0g
cnVuX3E7DQogCX0NCiAJcmV0dXJuIC1lcnJvcjsNCiB9DQpAQCAtMTEyLDcg
KzExNCw3IEBADQogYXNtbGlua2FnZSBpbnQgc3lzX2dldHByaW9yaXR5KGlu
dCB3aGljaCwgaW50IHdobykNCiB7DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAq
cDsNCi0JbG9uZyBtYXhfcHJpbyA9IC1FU1JDSDsNCisJdW5zaWduZWQgaW50
IHJ1bl9xX21pbiA9IE5SX1JVTl9RVUVVRVM7DQogDQogCWlmICh3aGljaCA+
IDIgfHwgd2hpY2ggPCAwKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQpAQCAtMTIw
LDE0ICsxMjIsMjcgQEANCiAJZm9yX2VhY2hfdGFzayAocCkgew0KIAkJaWYg
KCFwcm9jX3NlbChwLCB3aGljaCwgd2hvKSkNCiAJCQljb250aW51ZTsNCi0J
CWlmIChwLT5wcmlvcml0eSA+IG1heF9wcmlvKQ0KLQkJCW1heF9wcmlvID0g
cC0+cHJpb3JpdHk7DQorCQlpZiAocC0+cnVuX3FfbWluIDwgcnVuX3FfbWlu
KQ0KKwkJCXJ1bl9xX21pbiA9IHAtPnJ1bl9xX21pbjsNCiAJfQ0KIA0KLQkv
KiBzY2FsZSB0aGUgcHJpb3JpdHkgZnJvbSB0aW1lc2xpY2UgdG8gMC4uNDAg
Ki8NCi0JaWYgKG1heF9wcmlvID4gMCkNCi0JCW1heF9wcmlvID0gKG1heF9w
cmlvICogMjAgKyBERUZfUFJJT1JJVFkvMikgLyBERUZfUFJJT1JJVFk7DQot
CXJldHVybiBtYXhfcHJpbzsNCisgICAgICAgIGlmIChydW5fcV9taW4gPT0g
TlJfUlVOX1FVRVVFUykNCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FU1JD
SDsNCisNCisJLyogc2NhbGUgdGhlIHJ1bl9xIHRvIDAuLjQwICovDQorCWlm
IChydW5fcV9taW4gPCBERUZfUlVOX1FVRVVFKSB7DQorCSAgICAgICAgcnVu
X3FfbWluICo9IDE5Ow0KKwkJcnVuX3FfbWluIC89IChERUZfUlVOX1FVRVVF
IC0gMSk7DQorCX0gZWxzZSBpZiAocnVuX3FfbWluID09IERFRl9SVU5fUVVF
VUUpIHsNCisJICAgICAgICBydW5fcV9taW4gPSAyMDsNCisJfSBlbHNlIHsN
CisJICAgICAgICBydW5fcV9taW4gLT0gKERFRl9SVU5fUVVFVUUgKyAxKTsN
CisJCXJ1bl9xX21pbiAqPSAxOTsNCisJCXJ1bl9xX21pbiAvPSAoTlJfUlVO
X1FVRVVFUyAtIERFRl9SVU5fUVVFVUUgLSAyKTsNCisJCXJ1bl9xX21pbiAr
PSAyMTsNCisJfQ0KKyAgICAgICAgcnVuX3FfbWluID0gNDAgLSBydW5fcV9t
aW47DQorCXJldHVybiBydW5fcV9taW47DQogfQ0KIA0KICNpZm5kZWYgX19h
bHBoYV9fDQotLS0gbGludXgva2VybmVsL3NjaGVkLmMub3JpZwlUaHUgSnVs
IDMxIDE4OjU1OjQ3IDE5OTcNCisrKyBsaW51eC9rZXJuZWwvc2NoZWQuYwlG
cmkgQXVnICAxIDAzOjE1OjMwIDE5OTcNCkBAIC03LDYgKzcsNyBAQA0KICAq
ICAxOTk2LTEyLTIzICBNb2RpZmllZCBieSBEYXZlIEdyb3RoZSB0byBmaXgg
YnVncyBpbiBzZW1hcGhvcmVzIGFuZA0KICAqICAgICAgICAgICAgICBtYWtl
IHNlbWFwaG9yZXMgU01QIHNhZmUNCiAgKiAgMTk5Ny0wMS0yOCAgTW9kaWZp
ZWQgYnkgRmlubiBBcm5lIEdhbmdzdGFkIHRvIG1ha2UgdGltZXJzIHNjYWxl
IGJldHRlci4NCisgKiAgMTk5Ny0wOC0wMSAgTW9kaWZpZWQgYnkgQWRhbSBN
Y0tlZSB0byB1c2UgbXVsdGktbGV2ZWwgZmVlZGJhY2sgc2NoZWR1bGluZy4N
CiAgKi8NCiANCiAvKg0KQEAgLTkyLDYgKzkzLDcgQEANCiBzdGF0aWMgc3Ry
dWN0IGZzX3N0cnVjdCBpbml0X2ZzID0gSU5JVF9GUzsNCiBzdGF0aWMgc3Ry
dWN0IGZpbGVzX3N0cnVjdCBpbml0X2ZpbGVzID0gSU5JVF9GSUxFUzsNCiBz
dGF0aWMgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgaW5pdF9zaWduYWxzID0gSU5J
VF9TSUdOQUxTOw0KK3N0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBydW5f
cVtOUl9SVU5fUVVFVUVTXTsNCiANCiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRf
bW0gPSBJTklUX01NOw0KIHN0cnVjdCB0YXNrX3N0cnVjdCBpbml0X3Rhc2sg
PSBJTklUX1RBU0s7DQpAQCAtMTA3LDYgKzEwOSw3IEBADQogDQogc3RhdGlj
IGlubGluZSB2b2lkIGFkZF90b19ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKiBwKQ0KIHsNCisgICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcV9o
ZWFkID0gcnVuX3FbcC0+cnVuX3FdOw0KICNpZmRlZiBfX1NNUF9fDQogCWlu
dCBjcHU9c21wX3Byb2Nlc3Nvcl9pZCgpOw0KICNlbmRpZgkNCkBAIC0xMTYs
MTIgKzExOSwyNCBAQA0KIAkJcmV0dXJuOw0KIAl9DQogI2VuZGlmDQotCWlm
IChwLT5jb3VudGVyID4gY3VycmVudC0+Y291bnRlciArIDMpDQorCWlmICgo
cC0+cnVuX3EgPCBjdXJyZW50LT5ydW5fcSkgfHwNCisJICAgICgocC0+cnVu
X3EgPT0gY3VycmVudC0+cnVuX3EpICYmDQorCSAgICAgKHAtPmNvdW50ZXIg
PiBjdXJyZW50LT5jb3VudGVyICsgMykpKQ0KIAkJbmVlZF9yZXNjaGVkID0g
MTsNCiAJbnJfcnVubmluZysrOw0KLQkocC0+cHJldl9ydW4gPSBpbml0X3Rh
c2sucHJldl9ydW4pLT5uZXh0X3J1biA9IHA7DQotCXAtPm5leHRfcnVuID0g
JmluaXRfdGFzazsNCi0JaW5pdF90YXNrLnByZXZfcnVuID0gcDsNCisNCisJ
aWYgKHFfaGVhZCA9PSBOVUxMKSB7DQorCSAgcnVuX3FbcC0+cnVuX3FdID0g
cDsNCisJICBwLT5wcmV2X3J1biA9IHA7DQorCSAgcC0+bmV4dF9ydW4gPSBw
Ow0KKwl9IGVsc2Ugew0KKwkgIHAtPnByZXZfcnVuID0gcV9oZWFkLT5wcmV2
X3J1bjsNCisJICBwLT5uZXh0X3J1biA9IHFfaGVhZDsNCisJICBxX2hlYWQt
PnByZXZfcnVuLT5uZXh0X3J1biA9IHA7DQorCSAgcV9oZWFkLT5wcmV2X3J1
biA9IHA7DQorCX0NCisJcC0+bGFzdF9ydW4gPSBqaWZmaWVzOw0KKw0KICNp
ZmRlZiBfX1NNUF9fDQogCS8qIHRoaXMgaXMgc2FmZSBvbmx5IGlmIGNhbGxl
ZCB3aXRoIGNsaSgpKi8NCiAJd2hpbGUoc2V0X2JpdCgzMSwmc21wX3Byb2Nl
c3NfYXZhaWxhYmxlKSkNCkBAIC0xNTQsOCArMTY5LDkgQEANCiANCiBzdGF0
aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tf
c3RydWN0ICogcCkNCiB7DQotCXN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCA9
IHAtPm5leHRfcnVuOw0KIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYgPSBw
LT5wcmV2X3J1bjsNCisJc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0ID0gcC0+
bmV4dF9ydW47DQorCXN0cnVjdCB0YXNrX3N0cnVjdCAqcV9oZWFkID0gcnVu
X3FbcC0+cnVuX3FdOw0KIA0KICNpZiAxCS8qIHNhbml0eSB0ZXN0cyAqLw0K
IAlpZiAoIW5leHQgfHwgIXByZXYpIHsNCkBAIC0xNzIsMjYgKzE4OCw1NCBA
QA0KIAkJcmV0dXJuOw0KIAl9DQogCW5yX3J1bm5pbmctLTsNCi0JbmV4dC0+
cHJldl9ydW4gPSBwcmV2Ow0KKw0KKwkvKiByZW1vdmUgbGlua3MgdG8gcCAq
Lw0KIAlwcmV2LT5uZXh0X3J1biA9IG5leHQ7DQotCXAtPm5leHRfcnVuID0g
TlVMTDsNCisJbmV4dC0+cHJldl9ydW4gPSBwcmV2Ow0KKwkvKiBzZXQgcCdz
IGxpbmtzICovDQogCXAtPnByZXZfcnVuID0gTlVMTDsNCisJcC0+bmV4dF9y
dW4gPSBOVUxMOw0KKyAgICAgICAJLyogaWYgcCB3YXMgdGhlIHFfaGVhZCwg
cmVzZXQgcV9oZWFkICovDQorCWlmIChwID09IHFfaGVhZCkgew0KKwkgICAg
ICAgIGlmIChuZXh0ID09IHApDQorCSAgICAgICAgICAgICAgICBydW5fcVtw
LT5ydW5fcV0gPSBOVUxMOw0KKwkJZWxzZQ0KKwkJICAgICAgICBydW5fcVtw
LT5ydW5fcV0gPSBuZXh0Ow0KKwl9DQorDQogfQ0KIA0KLXN0YXRpYyBpbmxp
bmUgdm9pZCBtb3ZlX2xhc3RfcnVucXVldWUoc3RydWN0IHRhc2tfc3RydWN0
ICogcCkNCitzdGF0aWMgaW5saW5lIHZvaWQgc3dpdGNoX3J1bnF1ZXVlcyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCB1bnNpZ25lZCBpbnQgbmV3X3J1bl9x
KQ0KIHsNCi0Jc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0ID0gcC0+bmV4dF9y
dW47DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiA9IHAtPnByZXZfcnVu
Ow0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQgPSBwLT5uZXh0X3J1bjsN
CisJc3RydWN0IHRhc2tfc3RydWN0ICpxX2hlYWQgPSBydW5fcVtwLT5ydW5f
cV07DQogDQotCS8qIHJlbW92ZSBmcm9tIGxpc3QgKi8NCi0JbmV4dC0+cHJl
dl9ydW4gPSBwcmV2Ow0KKwkvKiByZW1vdmUgbGlua3MgdG8gcCAqLw0KIAlw
cmV2LT5uZXh0X3J1biA9IG5leHQ7DQotCS8qIGFkZCBiYWNrIHRvIGxpc3Qg
Ki8NCi0JcC0+bmV4dF9ydW4gPSAmaW5pdF90YXNrOw0KLQlwcmV2ID0gaW5p
dF90YXNrLnByZXZfcnVuOw0KLQlpbml0X3Rhc2sucHJldl9ydW4gPSBwOw0K
LQlwLT5wcmV2X3J1biA9IHByZXY7DQotCXByZXYtPm5leHRfcnVuID0gcDsN
CisJbmV4dC0+cHJldl9ydW4gPSBwcmV2Ow0KKyAgICAgICAJLyogaWYgcCB3
YXMgdGhlIHFfaGVhZCwgcmVzZXQgcV9oZWFkICovDQorCWlmIChwID09IHFf
aGVhZCkgew0KKwkgICAgICAgIGlmIChuZXh0ID09IHApDQorCSAgICAgICAg
ICAgICAgICBydW5fcVtwLT5ydW5fcV0gPSBOVUxMOw0KKwkJZWxzZQ0KKwkJ
ICAgICAgICBydW5fcVtwLT5ydW5fcV0gPSBuZXh0Ow0KKwl9DQorDQorCXAt
PnJ1bl9xID0gbmV3X3J1bl9xOw0KKwlxX2hlYWQgPSBydW5fcVtwLT5ydW5f
cV07DQorCWlmIChxX2hlYWQgPT0gTlVMTCkgew0KKwkgIHJ1bl9xW3AtPnJ1
bl9xXSA9IHA7DQorCSAgcC0+cHJldl9ydW4gPSBwOw0KKwkgIHAtPm5leHRf
cnVuID0gcDsNCisJfSBlbHNlIHsNCisJICBwLT5wcmV2X3J1biA9IHFfaGVh
ZC0+cHJldl9ydW47DQorCSAgcC0+bmV4dF9ydW4gPSBxX2hlYWQ7DQorCSAg
cV9oZWFkLT5wcmV2X3J1bi0+bmV4dF9ydW4gPSBwOw0KKwkgIHFfaGVhZC0+
cHJldl9ydW4gPSBwOw0KKwl9DQorCXAtPmxhc3RfcnVuID0gamlmZmllczsN
CisJcC0+Y291bnRlciA9IERFRl9QUklPUklUWTsNCiB9DQogDQogLyoNCkBA
IC0yNTUsNyArMjk5LDcgQEANCiAJICogcnVucXVldWUgKHRha2luZyBwcmlv
cml0aWVzIHdpdGhpbiBwcm9jZXNzZXMNCiAJICogaW50byBhY2NvdW50KS4N
CiAJICovDQotCWlmIChwLT5wb2xpY3kgIT0gU0NIRURfT1RIRVIpDQorCWlm
IChwLT5wb2xpY3kgIT0gU0NIRURfQURBUFRJVkUpDQogCQlyZXR1cm4gMTAw
MCArIHAtPnJ0X3ByaW9yaXR5Ow0KIA0KIAkvKg0KQEAgLTI4NCwxMCArMzI4
LDggQEANCiB9DQogDQogLyoNCi0gKiAgJ3NjaGVkdWxlKCknIGlzIHRoZSBz
Y2hlZHVsZXIgZnVuY3Rpb24uIEl0J3MgYSB2ZXJ5IHNpbXBsZSBhbmQgbmlj
ZQ0KLSAqIHNjaGVkdWxlcjogaXQncyBub3QgcGVyZmVjdCwgYnV0IGNlcnRh
aW5seSB3b3JrcyBmb3IgbW9zdCB0aGluZ3MuDQotICoNCi0gKiBUaGUgZ290
byBpcyAiaW50ZXJlc3RpbmciLg0KKyAqICdzY2hlZHVsZSgpJyBpbXBsZW1l
bnRzIFFOWC1zdHlsZSBtdWx0aS1sZXZlbCBmZWVkYmFjayBzY2hlZHVsaW5n
Lg0KKyAqIEl0IGRvZXMgcnVuLXF1ZXVlIG1haW50ZW5hbmNlIGFuZCBzZWxl
Y3RzIGEgcHJvY2VzcyB0byBydW4uDQogICoNCiAgKiAgIE5PVEUhISAgVGFz
ayAwIGlzIHRoZSAnaWRsZScgdGFzaywgd2hpY2ggZ2V0cyBjYWxsZWQgd2hl
biBubyBvdGhlcg0KICAqIHRhc2tzIGNhbiBydW4uIEl0IGNhbiBub3QgYmUg
a2lsbGVkLCBhbmQgaXQgY2Fubm90IHNsZWVwLiBUaGUgJ3N0YXRlJw0KQEAg
LTI5NSw3ICszMzcsOCBAQA0KICAqLw0KIGFzbWxpbmthZ2Ugdm9pZCBzY2hl
ZHVsZSh2b2lkKQ0KIHsNCi0JaW50IGM7DQorICAgICAgICBzdGF0aWMgdW5z
aWduZWQgbG9uZyBuZXh0X21haW50ZW5hbmNlID0gMDsNCisJaW50IGMsIHEs
IHdlaWdodDsNCiAJc3RydWN0IHRhc2tfc3RydWN0ICogcDsNCiAJc3RydWN0
IHRhc2tfc3RydWN0ICogcHJldiwgKiBuZXh0Ow0KIAl1bnNpZ25lZCBsb25n
IHRpbWVvdXQgPSAwOw0KQEAgLTMxOSw4ICszNjIsOCBAQA0KIAljbGkoKTsN
CiAJLyogbW92ZSBhbiBleGhhdXN0ZWQgUlIgcHJvY2VzcyB0byBiZSBsYXN0
Li4gKi8NCiAJaWYgKCFwcmV2LT5jb3VudGVyICYmIHByZXYtPnBvbGljeSA9
PSBTQ0hFRF9SUikgew0KLQkJcHJldi0+Y291bnRlciA9IHByZXYtPnByaW9y
aXR5Ow0KLQkJbW92ZV9sYXN0X3J1bnF1ZXVlKHByZXYpOw0KKwkJcHJldi0+
Y291bnRlciA9IERFRl9QUklPUklUWTsNCisJCXJ1bl9xW3ByZXYtPnJ1bl9x
XSA9IHByZXYtPm5leHRfcnVuOw0KIAl9DQogCXN3aXRjaCAocHJldi0+c3Rh
dGUpIHsNCiAJCWNhc2UgVEFTS19JTlRFUlJVUFRJQkxFOg0KQEAgLTMzNiwx
MCArMzc5LDQxIEBADQogCQkJfQ0KIAkJZGVmYXVsdDoNCiAJCQlkZWxfZnJv
bV9ydW5xdWV1ZShwcmV2KTsNCisJCQlwcmV2LT5ydW5fcSA9IHByZXYtPnJ1
bl9xX21pbjsNCisJCQlwcmV2LT5jb3VudGVyID0gREVGX1BSSU9SSVRZOw0K
IAkJY2FzZSBUQVNLX1JVTk5JTkc6DQogCX0NCi0JcCA9IGluaXRfdGFzay5u
ZXh0X3J1bjsNCiAJc3RpKCk7DQorDQorCS8qDQorCSAqIFRha2UgY2FyZSBv
ZiByZS1uaWNlZCBwcm9jZXNzZXMsIHByb21vdGUgc3RhcnZpbmcgcHJvY2Vz
c2VzDQorCSAqLw0KKwlpZiAoamlmZmllcyA+PSBuZXh0X21haW50ZW5hbmNl
KSB7DQorCSAgICAgICAgZm9yX2VhY2hfdGFzayhwKSB7DQorCQkgICAgICAg
IGlmIChwLT5ydW5fcV9zdyA8IE5SX1JVTl9RVUVVRVMpIHsNCisJCQkgICAg
ICAgIGNsaSgpOw0KKwkJCQlpZiAocC0+bmV4dF9ydW4pIHsNCisJCQkJICAg
ICAgICBwLT5ydW5fcV9taW4gPSBwLT5ydW5fcV9zdzsNCisJCQkJICAgICAg
ICBpZiAocC0+cnVuX3EgIT0gcC0+cnVuX3Ffc3cpDQorCQkJCQkgICAgICAg
IHN3aXRjaF9ydW5xdWV1ZXMocCwgcC0+cnVuX3Ffc3cpOw0KKwkJCQl9IGVs
c2Ugew0KKwkJCQkJcC0+cnVuX3FfbWluID0gcC0+cnVuX3EgPSBwLT5ydW5f
cV9zdzsNCisJCQkJfQ0KKwkJCQlwLT5ydW5fcV9zdyA9IE5SX1JVTl9RVUVV
RVM7DQorCQkJCXN0aSgpOw0KKwkJICAgICAgICB9IGVsc2UgaWYgKHAtPm5l
eHRfcnVuICYmDQorCQkJCSAgIChqaWZmaWVzIC0gcC0+bGFzdF9ydW4gPj0g
SFopICYmDQorCQkJCSAgIChwLT5ydW5fcSA+IHAtPnJ1bl9xX21pbikgJiYN
CisJCQkJICAgcHJldi0+cGlkICYmDQorCQkJCSAgIChwcmV2LT5ydW5fcSA8
IHAtPnJ1bl9xKSkNCisJCQl7DQorCQkJICAgICAgICBjbGkoKTsNCisJCQkJ
c3dpdGNoX3J1bnF1ZXVlcyhwLCBwLT5ydW5fcSAtIDEpOw0KKwkJCQlzdGko
KTsNCisJCQl9DQorCQl9DQorCQluZXh0X21haW50ZW5hbmNlID0gamlmZmll
cyArICg1MDAqSFovMTAwMCk7DQorCX0NCiAJDQogI2lmZGVmIF9fU01QX18N
CiAJLyoNCkBAIC0zNTYsMjEgKzQzMCw0NyBAQA0KICAqIGludGVycnVwdHMg
YXJlIGVuYWJsZWQuIEhvd2V2ZXIsIHRoZXkgd2lsbCBiZSBwdXQgb24gZnJv
bnQgb2YgdGhlDQogICogbGlzdCwgc28gb3VyIGxpc3Qgc3RhcnRpbmcgYXQg
InAiIGlzIGVzc2VudGlhbGx5IGZpeGVkLg0KICAqLw0KLS8qIHRoaXMgaXMg
dGhlIHNjaGVkdWxlciBwcm9wZXI6ICovDQorICAgICAgICAvKiBwaWNrIGEg
cHJvY2VzcyAqLw0KIAljID0gLTEwMDA7DQogCW5leHQgPSBpZGxlX3Rhc2s7
DQotCXdoaWxlIChwICE9ICZpbml0X3Rhc2spIHsNCi0JCWludCB3ZWlnaHQg
PSBnb29kbmVzcyhwLCBwcmV2LCB0aGlzX2NwdSk7DQotCQlpZiAod2VpZ2h0
ID4gYykNCi0JCQljID0gd2VpZ2h0LCBuZXh0ID0gcDsNCi0JCXAgPSBwLT5u
ZXh0X3J1bjsNCisJZm9yIChxID0gMDsgcSA8IE5SX1JVTl9RVUVVRVM7IHEr
Kykgew0KKwkgICAgICAgIHAgPSBydW5fcVtxXTsNCisJCWlmICghcCkgY29u
dGludWU7DQorCQlkbyB7DQorCQkgICAgICAgIGlmIChwLT5waWQpIHsNCisJ
CSAgICAgICAgICAgICAgICB3ZWlnaHQgPSBnb29kbmVzcyhwLCBwcmV2LCB0
aGlzX2NwdSk7DQorCQkJCWlmICh3ZWlnaHQgPiBjKSB7DQorCQkJCSAgICAg
ICAgYyA9IHdlaWdodDsNCisJCQkJICAgICAgICBuZXh0ID0gcDsNCisJCQkJ
fQ0KKwkJCX0NCisJCQlwID0gcC0+bmV4dF9ydW47DQorCQl9IHdoaWxlIChw
ICE9IHJ1bl9xW3FdKTsNCisJCWlmICghYykgew0KKwkJICAgICAgICBwID0g
cnVuX3FbcV07DQorCQkJZG8gew0KKwkJCSAgICAgICAgcC0+Y291bnRlciA9
IERFRl9QUklPUklUWTsNCisJCQkJcCA9IHAtPm5leHRfcnVuOw0KKwkJCX0g
d2hpbGUgKHAgIT0gcnVuX3FbcV0pOw0KKwkJfQ0KKwkJaWYgKGMgPiAtMTAw
MCkgYnJlYWs7DQogCX0NCiANCi0JLyogaWYgYWxsIHJ1bm5hYmxlIHByb2Nl
c3NlcyBoYXZlICJjb3VudGVyID09IDAiLCByZS1jYWxjdWxhdGUgY291bnRl
cnMgKi8NCi0JaWYgKCFjKSB7DQotCQlmb3JfZWFjaF90YXNrKHApDQotCQkJ
cC0+Y291bnRlciA9IChwLT5jb3VudGVyID4+IDEpICsgcC0+cHJpb3JpdHk7
DQorCW5leHQtPmxhc3RfcnVuID0gamlmZmllczsNCisJLyogUG9zc2libHkg
ZGVtb3RlIHRoZSBwcmV2aW91cyB0YXNrICovDQorCWlmIChwcmV2LT5waWQg
JiYgbmV4dC0+cGlkICYmDQorCSAgICBwcmV2LT5uZXh0X3J1biAmJg0KKwkg
ICAgIXByZXYtPmNvdW50ZXIgJiYNCisJICAgIChuZXh0ICE9IHByZXYpICYm
DQorCSAgICAocSA9PSBwcmV2LT5ydW5fcSkgJiYNCisJICAgIChxIDwgTlJf
UlVOX1FVRVVFUyAtIDIpICYmDQorCSAgICAocHJldi0+cG9saWN5ID09IFND
SEVEX0FEQVBUSVZFKSkNCisJew0KKwkgICAgICAgIGNsaSgpOw0KKwkJc3dp
dGNoX3J1bnF1ZXVlcyhwcmV2LCBwcmV2LT5ydW5fcSArIDEpOw0KKwkJc3Rp
KCk7DQogCX0NCisNCiAjaWZkZWYgX19TTVBfXw0KIAkvKg0KIAkgKglBbGxv
Y2F0ZSBwcm9jZXNzIHRvIENQVQ0KQEAgLTExMzQsNyArMTIzNCw3IEBADQog
CQkJcC0+Y291bnRlciA9IDA7DQogCQkJbmVlZF9yZXNjaGVkID0gMTsNCiAJ
CX0NCi0JCWlmIChwLT5wcmlvcml0eSA8IERFRl9QUklPUklUWSkNCisJCWlm
IChwLT5ydW5fcSA+IERFRl9SVU5fUVVFVUUpDQogCQkJa3N0YXQuY3B1X25p
Y2UgKz0gdXNlcjsNCiAJCWVsc2UNCiAJCQlrc3RhdC5jcHVfdXNlciArPSB1
c2VyOw0KQEAgLTExNzAsNyArMTI3MCw3IEBADQogCQkJfQ0KIAkJCXVwZGF0
ZV9vbmVfcHJvY2VzcyhwLCB0aWNrcywgdXRpbWUsIHN0aW1lKTsNCiANCi0J
CQlpZiAocC0+cHJpb3JpdHkgPCBERUZfUFJJT1JJVFkpDQorCQkJaWYgKHAt
PnJ1bl9xID4gREVGX1JVTl9RVUVVRSkNCiAJCQkJa3N0YXQuY3B1X25pY2Ug
Kz0gdXRpbWU7DQogCQkJZWxzZQ0KIAkJCQlrc3RhdC5jcHVfdXNlciArPSB1
dGltZTsNCkBAIC0xMzgwLDE2ICsxNDgwLDE2IEBADQogCWlmIChwb2xpY3kg
PCAwKQ0KIAkJcG9saWN5ID0gcC0+cG9saWN5Ow0KIAllbHNlIGlmIChwb2xp
Y3kgIT0gU0NIRURfRklGTyAmJiBwb2xpY3kgIT0gU0NIRURfUlIgJiYNCi0J
CSBwb2xpY3kgIT0gU0NIRURfT1RIRVIpDQorCQkgcG9saWN5ICE9IFNDSEVE
X0FEQVBUSVZFKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogCQ0KIAkvKg0KIAkg
KiBWYWxpZCBwcmlvcml0aWVzIGZvciBTQ0hFRF9GSUZPIGFuZCBTQ0hFRF9S
UiBhcmUgMS4uOTksIHZhbGlkDQotCSAqIHByaW9yaXR5IGZvciBTQ0hFRF9P
VEhFUiBpcyAwLg0KKwkgKiBwcmlvcml0eSBmb3IgU0NIRURfQURBUFRJVkUg
aXMgMC4NCiAJICovDQogCWlmIChscC5zY2hlZF9wcmlvcml0eSA8IDAgfHwg
bHAuc2NoZWRfcHJpb3JpdHkgPiA5OSkNCiAJCXJldHVybiAtRUlOVkFMOw0K
LQlpZiAoKHBvbGljeSA9PSBTQ0hFRF9PVEhFUikgIT0gKGxwLnNjaGVkX3By
aW9yaXR5ID09IDApKQ0KKwlpZiAoKHBvbGljeSA9PSBTQ0hFRF9BREFQVElW
RSkgIT0gKGxwLnNjaGVkX3ByaW9yaXR5ID09IDApKQ0KIAkJcmV0dXJuIC1F
SU5WQUw7DQogDQogCWlmICgocG9saWN5ID09IFNDSEVEX0ZJRk8gfHwgcG9s
aWN5ID09IFNDSEVEX1JSKSAmJiAhc3VzZXIoKSkNCkBAIC0xNDAyLDcgKzE1
MDIsNyBAQA0KIAlwLT5ydF9wcmlvcml0eSA9IGxwLnNjaGVkX3ByaW9yaXR5
Ow0KIAljbGkoKTsNCiAJaWYgKHAtPm5leHRfcnVuKQ0KLQkJbW92ZV9sYXN0
X3J1bnF1ZXVlKHApOw0KKwkgICAgICAgIHJ1bl9xW3AtPnJ1bl9xXSA9IHAt
Pm5leHRfcnVuOw0KIAlzdGkoKTsNCiAJbmVlZF9yZXNjaGVkID0gMTsNCiAJ
cmV0dXJuIDA7DQpAQCAtMTQ2MCw3ICsxNTYwLDcgQEANCiB7DQogCWNsaSgp
Ow0KIAlpZiAoY3VycmVudC0+bmV4dF9ydW4pIHsNCi0JCW1vdmVfbGFzdF9y
dW5xdWV1ZShjdXJyZW50KTsgDQorCSAgICAgICAgcnVuX3FbY3VycmVudC0+
cnVuX3FdID0gY3VycmVudC0+bmV4dF9ydW47DQogCQljdXJyZW50LT5jb3Vu
dGVyID0gMDsNCiAJCW5lZWRfcmVzY2hlZCA9IDE7DQogCX0NCkBAIC0xNDc0
LDcgKzE1NzQsNyBAQA0KIAkgICAgICBjYXNlIFNDSEVEX0ZJRk86DQogCSAg
ICAgIGNhc2UgU0NIRURfUlI6DQogCQlyZXR1cm4gOTk7DQotCSAgICAgIGNh
c2UgU0NIRURfT1RIRVI6DQorCSAgICAgIGNhc2UgU0NIRURfQURBUFRJVkU6
DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KQEAgLTE0ODcsNyArMTU4Nyw3IEBA
DQogCSAgICAgIGNhc2UgU0NIRURfRklGTzoNCiAJICAgICAgY2FzZSBTQ0hF
RF9SUjoNCiAJCXJldHVybiAxOw0KLQkgICAgICBjYXNlIFNDSEVEX09USEVS
Og0KKwkgICAgICBjYXNlIFNDSEVEX0FEQVBUSVZFOg0KIAkJcmV0dXJuIDA7
DQogCX0NCiANCkBAIC0xNTU1LDcgKzE2NTUsNyBAQA0KIAkJcmV0dXJuIC1F
SU5WQUw7DQogDQogCWlmICh0LnR2X3NlYyA9PSAwICYmIHQudHZfbnNlYyA8
PSAyMDAwMDAwTCAmJg0KLQkgICAgY3VycmVudC0+cG9saWN5ICE9IFNDSEVE
X09USEVSKSB7DQorCSAgICBjdXJyZW50LT5wb2xpY3kgIT0gU0NIRURfQURB
UFRJVkUpIHsNCiAJCS8qDQogCQkgKiBTaG9ydCBkZWxheSByZXF1ZXN0cyB1
cCB0byAyIG1zIHdpbGwgYmUgaGFuZGxlZCB3aXRoDQogCQkgKiBoaWdoIHBy
ZWNpc2lvbiBieSBhIGJ1c3kgd2FpdCBmb3IgYWxsIHJlYWwtdGltZSBwcm9j
ZXNzZXMuDQpAQCAtMTY0NSw3ICsxNzQ1LDcgQEANCiAJICoJV2UgaGF2ZSB0
byBkbyBhIGxpdHRsZSBtYWdpYyB0byBnZXQgdGhlIGZpcnN0DQogCSAqCXBy
b2Nlc3MgcmlnaHQgaW4gU01QIG1vZGUuDQogCSAqLw0KLQlpbnQgY3B1PXNt
cF9wcm9jZXNzb3JfaWQoKTsNCisJaW50IGksIGNwdT1zbXBfcHJvY2Vzc29y
X2lkKCk7DQogI2lmbmRlZiBfX1NNUF9fCQ0KIAljdXJyZW50X3NldFtjcHVd
PSZpbml0X3Rhc2s7DQogI2Vsc2UNCkBAIC0xNjU2LDQgKzE3NTYsOSBAQA0K
IAlpbml0X2JoKFRJTUVSX0JILCB0aW1lcl9iaCk7DQogCWluaXRfYmgoVFFV
RVVFX0JILCB0cXVldWVfYmgpOw0KIAlpbml0X2JoKElNTUVESUFURV9CSCwg
aW1tZWRpYXRlX2JoKTsNCisNCisJZm9yIChpID0gMDsgaSA8IE5SX1JVTl9R
VUVVRVM7IGkrKykNCisJICAgICAgICBydW5fcVtpXSA9IE5VTEw7DQorCXJ1
bl9xW0RFRl9SVU5fUVVFVUVdID0gJmluaXRfdGFzazsNCisJcHJpbnRrKCJR
Tlgtc3R5bGUgc2NoZWR1bGluZyB2MS4wNSA8YW1ja2VlQHBvYm94ZXMuY29t
PlxuIik7DQogfQ0KLS0tIGxpbnV4L2tlcm5lbC9mb3JrLmMub3JpZwlUaHUg
SnVsIDMxIDE4OjU1OjQ3IDE5OTcNCisrKyBsaW51eC9rZXJuZWwvZm9yay5j
CVRodSBKdWwgMzEgMTg6NTU6NTcgMTk5Nw0KQEAgLTI2NCw2ICsyNjQsNyBA
QA0KIAlwLT5sb2NrX2RlcHRoID0gMTsNCiAjZW5kaWYNCiAJcC0+c3RhcnRf
dGltZSA9IGppZmZpZXM7DQorCXAtPnJ1bl9xX3N3ID0gTlJfUlVOX1FVRVVF
UzsNCiAJdGFza1tucl0gPSBwOw0KIAlTRVRfTElOS1MocCk7DQogCW5yX3Rh
c2tzKys7DQotLS0gbGludXgvbW0vdm1zY2FuLmMub3JpZwlUaHUgSnVsIDMx
IDE4OjU1OjQ3IDE5OTcNCisrKyBsaW51eC9tbS92bXNjYW4uYwlUaHUgSnVs
IDMxIDE4OjU1OjU3IDE5OTcNCkBAIC00NTAsNiArNDUwLDcgQEANCiAJY3Vy
cmVudC0+cHJpb3JpdHkgPSAzMjsgIC8qIEZpeG1lIC0tLSB3ZSBuZWVkIHRv
IHN0YW5kYXJkaXNlIG91cg0KIAkJCQkgICAgbmFtaW5ncyBmb3IgUE9TSVgu
NCByZWFsdGltZSBzY2hlZHVsaW5nDQogCQkJCSAgICBwcmlvcml0aWVzLiAg
Ki8NCisJY3VycmVudC0+cnVuX3Ffc3cgPSAwOw0KIA0KIAlpbml0X3N3YXBf
dGltZXIoKTsNCiAJDQotLS0gbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
Lm9yaWcJVGh1IEp1bCAzMSAxODo1NTo0OCAxOTk3DQorKysgbGludXgvaW5j
bHVkZS9saW51eC9zY2hlZC5oCVRodSBKdWwgMzEgMjI6MTE6MDIgMTk5Nw0K
QEAgLTg3LDEwICs4NywxMyBAQA0KICNkZWZpbmUgVEFTS19TVE9QUEVECQk0
DQogI2RlZmluZSBUQVNLX1NXQVBQSU5HCQk1DQogDQorI2RlZmluZSBOUl9S
VU5fUVVFVUVTCQkzMgkvKiB0aGUgc2NoZWR1bGVyIHVzZXMgMzIgcnVuLXF1
ZXVlcyAqLw0KKyNkZWZpbmUgREVGX1JVTl9RVUVVRQkJMTUJLyogZGVmYXVs
dCBydW4tcXVldWUgKi8NCisNCiAvKg0KICAqIFNjaGVkdWxpbmcgcG9saWNp
ZXMNCiAgKi8NCi0jZGVmaW5lIFNDSEVEX09USEVSCQkwDQorI2RlZmluZSBT
Q0hFRF9BREFQVElWRQkJMA0KICNkZWZpbmUgU0NIRURfRklGTwkJMQ0KICNk
ZWZpbmUgU0NIRURfUlIJCTINCiANCkBAIC0yNDQsNiArMjQ3LDkgQEANCiAJ
c3RydWN0IG1tX3N0cnVjdCAqbW07DQogLyogc2lnbmFsIGhhbmRsZXJzICov
DQogCXN0cnVjdCBzaWduYWxfc3RydWN0ICpzaWc7DQorLyogUU5YLXN0eWxl
IHNjaGVkdWxlciAqLw0KKyAgICAgICAgdW5zaWduZWQgbG9uZyBsYXN0X3J1
bjsNCisgICAgICAgIHVuc2lnbmVkIGludCBydW5fcSwgcnVuX3FfbWluLCBy
dW5fcV9zdzsNCiAjaWZkZWYgX19TTVBfXw0KIAlpbnQgcHJvY2Vzc29yOw0K
IAlpbnQgbGFzdF9wcm9jZXNzb3I7DQpAQCAtMjc1LDcgKzI4MSw3IEBADQog
ICovDQogI2RlZmluZSBfU1RLX0xJTQkoOCoxMDI0KjEwMjQpDQogDQotI2Rl
ZmluZSBERUZfUFJJT1JJVFkJKDIwKkhaLzEwMCkJLyogMjAwIG1zIHRpbWUg
c2xpY2VzICovDQorI2RlZmluZSBERUZfUFJJT1JJVFkJKDIwMCpIWi8xMDAw
KQkvKiAyMDAgbXMgdGltZSBzbGljZXMgKi8NCiANCiAvKg0KICAqICBJTklU
X1RBU0sgaXMgdXNlZCB0byBzZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUs
IHRvdWNoIGF0DQpAQCAtMjkzLDcgKzI5OSw3IEBADQogLyogc3VwcGwgZ3Jw
cyovIHtOT0dST1VQLH0sIFwNCiAvKiBwcm9jIGxpbmtzKi8gJmluaXRfdGFz
aywmaW5pdF90YXNrLE5VTEwsTlVMTCxOVUxMLE5VTEwsIFwNCiAvKiB1aWQg
ZXRjICovCTAsMCwwLDAsMCwwLDAsMCwgXA0KLS8qIHRpbWVvdXQgKi8JMCxT
Q0hFRF9PVEhFUiwwLDAsMCwwLDAsMCwwLCBcDQorLyogdGltZW91dCAqLwkw
LFNDSEVEX0FEQVBUSVZFLDAsMCwwLDAsMCwwLDAsIFwNCiAvKiB0aW1lciAq
Lwl7IE5VTEwsIE5VTEwsIDAsIDAsIGl0X3JlYWxfZm4gfSwgXA0KIC8qIHV0
aW1lICovCTAsMCwwLDAsMCwgXA0KIC8qIGZsdCAqLwkwLDAsMCwwLDAsMCwg
XA0KQEAgLTMwOSw2ICszMTUsNyBAQA0KIC8qIGZpbGVzICovCSZpbml0X2Zp
bGVzLCBcDQogLyogbW0gKi8JJmluaXRfbW0sIFwNCiAvKiBzaWduYWxzICov
CSZpbml0X3NpZ25hbHMsIFwNCisvKiBRTlggc2NoZWQgKi8gMCwgREVGX1JV
Tl9RVUVVRSwgREVGX1JVTl9RVUVVRSwgTlJfUlVOX1FVRVVFUyBcDQogfQ0K
IA0KIGV4dGVybiBzdHJ1Y3QgICBtbV9zdHJ1Y3QgaW5pdF9tbTsNCg==
--12583424-2133113819-870427431=:676--