Re: [PATCH 2.5.58] new NUMA scheduler: fix

Martin J. Bligh (mbligh@aracnet.com)
Wed, 15 Jan 2003 22:05:31 -0800


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-21741-1042697228-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I'm not keen on the way the minisched patch got reformatted. I changed
it into a seperate function, which I think is much cleaner by the time
you've added the third patch - no #ifdef CONFIG_NUMA in load_balance.

Rejigged patches attatched, no functional changes.

Anyway, I perf tested this, and it comes out more or less the same as
the tuned version I was poking at last night (ie best of the bunch).
Looks pretty good to me.

M.

PS. The fourth patch was so small, and touching the same stuff as 3
that I rolled it into the third one here. Seems like a universal
benefit ;-)
--=_courier-21741-1042697228-0001-2
Content-Type: application/octet-stream; name=numasched1
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=numasched1; size=1653

ZGlmZiAtdXJwTiAtWCAvaG9tZS9mbGV0Y2gvLmRpZmYuZXhjbHVkZSB2aXJnaW4va2VybmVsL3Nj
aGVkLmMgbnVtYXNjaGVkMS9rZXJuZWwvc2NoZWQuYwotLS0gdmlyZ2luL2tlcm5lbC9zY2hlZC5j
CU1vbiBKYW4gMTMgMjE6MDk6MjggMjAwMworKysgbnVtYXNjaGVkMS9rZXJuZWwvc2NoZWQuYwlX
ZWQgSmFuIDE1IDE5OjUyOjA3IDIwMDMKQEAgLTYyNCw2ICs2MjQsMjIgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGRvdWJsZV9ycV91bmxvY2socnVucQogCQlzcGluX3VubG9jaygmcnEyLT5sb2NrKTsK
IH0KIAorI2lmZGVmIENPTkZJR19OVU1BCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBj
cHVzX3RvX2JhbGFuY2UoaW50IHRoaXNfY3B1KQoreworCXJldHVybiBfX25vZGVfdG9fY3B1X21h
c2soX19jcHVfdG9fbm9kZSh0aGlzX2NwdSkpOworfQorCisjZWxzZSAvKiAhQ09ORklHX05VTUEg
Ki8KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNwdXNfdG9fYmFsYW5jZShpbnQgdGhp
c19jcHUpCit7CisJcmV0dXJuIGNwdV9vbmxpbmVfbWFwOworfQorCisjZW5kaWYgLyogQ09ORklH
X05VTUEgKi8KKwogI2lmIENPTkZJR19TTVAKIAogLyoKQEAgLTY1Miw5ICs2NjgsOSBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGludCBkb3VibGVfbG9ja19iCiB9CiAKIC8qCi0gKiBmaW5kX2J1
c2llc3RfcXVldWUgLSBmaW5kIHRoZSBidXNpZXN0IHJ1bnF1ZXVlLgorICogZmluZF9idXNpZXN0
X3F1ZXVlIC0gZmluZCB0aGUgYnVzaWVzdCBydW5xdWV1ZSBhbW9uZyB0aGUgY3B1cyBpbiBjcHVt
YXNrLgogICovCi1zdGF0aWMgaW5saW5lIHJ1bnF1ZXVlX3QgKmZpbmRfYnVzaWVzdF9xdWV1ZShy
dW5xdWV1ZV90ICp0aGlzX3JxLCBpbnQgdGhpc19jcHUsIGludCBpZGxlLCBpbnQgKmltYmFsYW5j
ZSkKK3N0YXRpYyBpbmxpbmUgcnVucXVldWVfdCAqZmluZF9idXNpZXN0X3F1ZXVlKHJ1bnF1ZXVl
X3QgKnRoaXNfcnEsIGludCB0aGlzX2NwdSwgaW50IGlkbGUsIGludCAqaW1iYWxhbmNlLCB1bnNp
Z25lZCBsb25nIGNwdW1hc2spCiB7CiAJaW50IG5yX3J1bm5pbmcsIGxvYWQsIG1heF9sb2FkLCBp
OwogCXJ1bnF1ZXVlX3QgKmJ1c2llc3QsICpycV9zcmM7CkBAIC02ODksNyArNzA1LDcgQEAgc3Rh
dGljIGlubGluZSBydW5xdWV1ZV90ICpmaW5kX2J1c2llc3RfcQogCWJ1c2llc3QgPSBOVUxMOwog
CW1heF9sb2FkID0gMTsKIAlmb3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgaSsrKSB7Ci0JCWlmICgh
Y3B1X29ubGluZShpKSkKKwkJaWYgKCEoKDFVTCA8PCBpKSAmIGNwdW1hc2spKQogCQkJY29udGlu
dWU7CiAKIAkJcnFfc3JjID0gY3B1X3JxKGkpOwpAQCAtNzY0LDcgKzc4MCw4IEBAIHN0YXRpYyB2
b2lkIGxvYWRfYmFsYW5jZShydW5xdWV1ZV90ICp0aGkKIAlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFk
LCAqY3VycjsKIAl0YXNrX3QgKnRtcDsKIAotCWJ1c2llc3QgPSBmaW5kX2J1c2llc3RfcXVldWUo
dGhpc19ycSwgdGhpc19jcHUsIGlkbGUsICZpbWJhbGFuY2UpOworCWJ1c2llc3QgPSBmaW5kX2J1
c2llc3RfcXVldWUodGhpc19ycSwgdGhpc19jcHUsIGlkbGUsICZpbWJhbGFuY2UsCisJCQkJCWNw
dXNfdG9fYmFsYW5jZSh0aGlzX2NwdSkpOwogCWlmICghYnVzaWVzdCkKIAkJZ290byBvdXQ7CiAK

--=_courier-21741-1042697228-0001-2
Content-Type: application/octet-stream; name=numasched2
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=numasched2; size=5907

ZGlmZiAtdXJwTiAtWCAvaG9tZS9mbGV0Y2gvLmRpZmYuZXhjbHVkZSBudW1hc2NoZWQxL2ZzL2V4
ZWMuYyBudW1hc2NoZWQyL2ZzL2V4ZWMuYwotLS0gbnVtYXNjaGVkMS9mcy9leGVjLmMJTW9uIEph
biAxMyAyMTowOToxMyAyMDAzCisrKyBudW1hc2NoZWQyL2ZzL2V4ZWMuYwlXZWQgSmFuIDE1IDE5
OjEwOjA0IDIwMDMKQEAgLTEwMzEsNiArMTAzMSw4IEBAIGludCBkb19leGVjdmUoY2hhciAqIGZp
bGVuYW1lLCBjaGFyICoqIGEKIAlpbnQgcmV0dmFsOwogCWludCBpOwogCisJc2NoZWRfYmFsYW5j
ZV9leGVjKCk7CisKIAlmaWxlID0gb3Blbl9leGVjKGZpbGVuYW1lKTsKIAogCXJldHZhbCA9IFBU
Ul9FUlIoZmlsZSk7CmRpZmYgLXVycE4gLVggL2hvbWUvZmxldGNoLy5kaWZmLmV4Y2x1ZGUgbnVt
YXNjaGVkMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggbnVtYXNjaGVkMi9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgKLS0tIG51bWFzY2hlZDEvaW5jbHVkZS9saW51eC9zY2hlZC5oCU1vbiBKYW4gMTMgMjE6
MDk6MjggMjAwMworKysgbnVtYXNjaGVkMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJV2VkIEphbiAx
NSAxOToxMDowNCAyMDAzCkBAIC00NDQsNiArNDQ0LDE0IEBAIGV4dGVybiB2b2lkIHNldF9jcHVz
X2FsbG93ZWQodGFza190ICpwLCAKICMgZGVmaW5lIHNldF9jcHVzX2FsbG93ZWQocCwgbmV3X21h
c2spIGRvIHsgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWZkZWYgQ09ORklHX05VTUEKK2V4dGVy
biB2b2lkIHNjaGVkX2JhbGFuY2VfZXhlYyh2b2lkKTsKK2V4dGVybiB2b2lkIG5vZGVfbnJfcnVu
bmluZ19pbml0KHZvaWQpOworI2Vsc2UKKyNkZWZpbmUgc2NoZWRfYmFsYW5jZV9leGVjKCkgICB7
fQorI2RlZmluZSBub2RlX25yX3J1bm5pbmdfaW5pdCgpIHt9CisjZW5kaWYKKwogZXh0ZXJuIHZv
aWQgc2V0X3VzZXJfbmljZSh0YXNrX3QgKnAsIGxvbmcgbmljZSk7CiBleHRlcm4gaW50IHRhc2tf
cHJpbyh0YXNrX3QgKnApOwogZXh0ZXJuIGludCB0YXNrX25pY2UodGFza190ICpwKTsKZGlmZiAt
dXJwTiAtWCAvaG9tZS9mbGV0Y2gvLmRpZmYuZXhjbHVkZSBudW1hc2NoZWQxL2luaXQvbWFpbi5j
IG51bWFzY2hlZDIvaW5pdC9tYWluLmMKLS0tIG51bWFzY2hlZDEvaW5pdC9tYWluLmMJVGh1IEph
biAgOSAxOToxNjoxNSAyMDAzCisrKyBudW1hc2NoZWQyL2luaXQvbWFpbi5jCVdlZCBKYW4gMTUg
MTk6MTA6MDQgMjAwMwpAQCAtNDk1LDYgKzQ5NSw3IEBAIHN0YXRpYyB2b2lkIGRvX3ByZV9zbXBf
aW5pdGNhbGxzKHZvaWQpCiAKIAltaWdyYXRpb25faW5pdCgpOwogI2VuZGlmCisJbm9kZV9ucl9y
dW5uaW5nX2luaXQoKTsKIAlzcGF3bl9rc29mdGlycWQoKTsKIH0KIApkaWZmIC11cnBOIC1YIC9o
b21lL2ZsZXRjaC8uZGlmZi5leGNsdWRlIG51bWFzY2hlZDEva2VybmVsL3NjaGVkLmMgbnVtYXNj
aGVkMi9rZXJuZWwvc2NoZWQuYwotLS0gbnVtYXNjaGVkMS9rZXJuZWwvc2NoZWQuYwlXZWQgSmFu
IDE1IDE5OjUyOjA3IDIwMDMKKysrIG51bWFzY2hlZDIva2VybmVsL3NjaGVkLmMJV2VkIEphbiAx
NSAxOTo1Njo0MiAyMDAzCkBAIC0xNTMsNyArMTUzLDkgQEAgc3RydWN0IHJ1bnF1ZXVlIHsKIAl0
YXNrX3QgKmN1cnIsICppZGxlOwogCXByaW9fYXJyYXlfdCAqYWN0aXZlLCAqZXhwaXJlZCwgYXJy
YXlzWzJdOwogCWludCBwcmV2X25yX3J1bm5pbmdbTlJfQ1BVU107Ci0KKyNpZmRlZiBDT05GSUdf
TlVNQQorCWF0b21pY190ICpub2RlX25yX3J1bm5pbmc7CisjZW5kaWYKIAl0YXNrX3QgKm1pZ3Jh
dGlvbl90aHJlYWQ7CiAJc3RydWN0IGxpc3RfaGVhZCBtaWdyYXRpb25fcXVldWU7CiAKQEAgLTE3
Nyw2ICsxNzksNDggQEAgc3RhdGljIHN0cnVjdCBydW5xdWV1ZSBydW5xdWV1ZXNbTlJfQ1BVUwog
IyBkZWZpbmUgdGFza19ydW5uaW5nKHJxLCBwKQkJKChycSktPmN1cnIgPT0gKHApKQogI2VuZGlm
CiAKKyNpZmRlZiBDT05GSUdfTlVNQQorCisvKgorICogS2VlcCB0cmFjayBvZiBydW5uaW5nIHRh
c2tzLgorICovCisKK3N0YXRpYyBhdG9taWNfdCBub2RlX25yX3J1bm5pbmdbTUFYX05VTU5PREVT
XSBfX19fY2FjaGVsaW5lX21heGFsaWduZWRfaW5fc21wID0KKwl7WzAgLi4uTUFYX05VTU5PREVT
LTFdID0gQVRPTUlDX0lOSVQoMCl9OworCitzdGF0aWMgaW5saW5lIHZvaWQgbnJfcnVubmluZ19p
bml0KHN0cnVjdCBydW5xdWV1ZSAqcnEpCit7CisJcnEtPm5vZGVfbnJfcnVubmluZyA9ICZub2Rl
X25yX3J1bm5pbmdbMF07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBucl9ydW5uaW5nX2luYyhy
dW5xdWV1ZV90ICpycSkKK3sKKwlhdG9taWNfaW5jKHJxLT5ub2RlX25yX3J1bm5pbmcpOworCXJx
LT5ucl9ydW5uaW5nKys7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBucl9ydW5uaW5nX2RlYyhy
dW5xdWV1ZV90ICpycSkKK3sKKwlhdG9taWNfZGVjKHJxLT5ub2RlX25yX3J1bm5pbmcpOworCXJx
LT5ucl9ydW5uaW5nLS07Cit9CisKK19faW5pdCB2b2lkIG5vZGVfbnJfcnVubmluZ19pbml0KHZv
aWQpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgaSsrKQorCQljcHVf
cnEoaSktPm5vZGVfbnJfcnVubmluZyA9ICZub2RlX25yX3J1bm5pbmdbX19jcHVfdG9fbm9kZShp
KV07Cit9CisKKyNlbHNlIC8qICFDT05GSUdfTlVNQSAqLworCisjIGRlZmluZSBucl9ydW5uaW5n
X2luaXQocnEpICAgZG8geyB9IHdoaWxlICgwKQorIyBkZWZpbmUgbnJfcnVubmluZ19pbmMocnEp
ICAgIGRvIHsgKHJxKS0+bnJfcnVubmluZysrOyB9IHdoaWxlICgwKQorIyBkZWZpbmUgbnJfcnVu
bmluZ19kZWMocnEpICAgIGRvIHsgKHJxKS0+bnJfcnVubmluZy0tOyB9IHdoaWxlICgwKQorCisj
ZW5kaWYgLyogQ09ORklHX05VTUEgKi8KKwogLyoKICAqIHRhc2tfcnFfbG9jayAtIGxvY2sgdGhl
IHJ1bnF1ZXVlIGEgZ2l2ZW4gdGFzayByZXNpZGVzIG9uIGFuZCBkaXNhYmxlCiAgKiBpbnRlcnJ1
cHRzLiAgTm90ZSB0aGUgb3JkZXJpbmc6IHdlIGNhbiBzYWZlbHkgbG9va3VwIHRoZSB0YXNrX3Jx
IHdpdGhvdXQKQEAgLTI5NCw3ICszMzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWN0aXZhdGVf
dGFzayh0YXNrX3QgCiAJCXAtPnByaW8gPSBlZmZlY3RpdmVfcHJpbyhwKTsKIAl9CiAJZW5xdWV1
ZV90YXNrKHAsIGFycmF5KTsKLQlycS0+bnJfcnVubmluZysrOworCW5yX3J1bm5pbmdfaW5jKHJx
KTsKIH0KIAogLyoKQEAgLTMwMiw3ICszNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWN0aXZh
dGVfdGFzayh0YXNrX3QgCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBkZWFjdGl2YXRlX3Rhc2so
c3RydWN0IHRhc2tfc3RydWN0ICpwLCBydW5xdWV1ZV90ICpycSkKIHsKLQlycS0+bnJfcnVubmlu
Zy0tOworCW5yX3J1bm5pbmdfZGVjKHJxKTsKIAlpZiAocC0+c3RhdGUgPT0gVEFTS19VTklOVEVS
UlVQVElCTEUpCiAJCXJxLT5ucl91bmludGVycnVwdGlibGUrKzsKIAlkZXF1ZXVlX3Rhc2socCwg
cC0+YXJyYXkpOwpAQCAtNjI0LDcgKzY2OCw3MiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl
X3JxX3VubG9jayhydW5xCiAJCXNwaW5fdW5sb2NrKCZycTItPmxvY2spOwogfQogCi0jaWZkZWYg
Q09ORklHX05VTUEKKyNpZiBDT05GSUdfTlVNQQorLyoKKyAqIElmIGRlc3RfY3B1IGlzIGFsbG93
ZWQgZm9yIHRoaXMgcHJvY2VzcywgbWlncmF0ZSB0aGUgdGFzayB0byBpdC4KKyAqIFRoaXMgaXMg
YWNjb21wbGlzaGVkIGJ5IGZvcmNpbmcgdGhlIGNwdV9hbGxvd2VkIG1hc2sgdG8gb25seQorICog
YWxsb3cgZGVzdF9jcHUsIHdoaWNoIHdpbGwgZm9yY2UgdGhlIGNwdSBvbnRvIGRlc3RfY3B1LiAg
VGhlbgorICogdGhlIGNwdV9hbGxvd2VkIG1hc2sgaXMgcmVzdG9yZWQuCisgKi8KK3N0YXRpYyB2
b2lkIHNjaGVkX21pZ3JhdGVfdGFzayh0YXNrX3QgKnAsIGludCBkZXN0X2NwdSkKK3sKKwl1bnNp
Z25lZCBsb25nIG9sZF9tYXNrOworCisJb2xkX21hc2sgPSBwLT5jcHVzX2FsbG93ZWQ7CisJaWYg
KCEob2xkX21hc2sgJiAoMVVMIDw8IGRlc3RfY3B1KSkpCisJCXJldHVybjsKKwkvKiBmb3JjZSB0
aGUgcHJvY2VzcyBvbnRvIHRoZSBzcGVjaWZpZWQgQ1BVICovCisJc2V0X2NwdXNfYWxsb3dlZChw
LCAxVUwgPDwgZGVzdF9jcHUpOworCisJLyogcmVzdG9yZSB0aGUgY3B1cyBhbGxvd2VkIG1hc2sg
Ki8KKwlzZXRfY3B1c19hbGxvd2VkKHAsIG9sZF9tYXNrKTsKK30KKworLyoKKyAqIEZpbmQgdGhl
IGxlYXN0IGxvYWRlZCBDUFUuICBTbGlnaHRseSBmYXZvciB0aGUgY3VycmVudCBDUFUgYnkKKyAq
IHNldHRpbmcgaXRzIHJ1bnF1ZXVlIGxlbmd0aCBhcyB0aGUgbWluaW11bSB0byBzdGFydC4KKyAq
Lworc3RhdGljIGludCBzY2hlZF9iZXN0X2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCit7CisJ
aW50IGksIG1pbmxvYWQsIGxvYWQsIGJlc3RfY3B1LCBub2RlID0gMDsKKwl1bnNpZ25lZCBsb25n
IGNwdW1hc2s7CisKKwliZXN0X2NwdSA9IHRhc2tfY3B1KHApOworCWlmIChjcHVfcnEoYmVzdF9j
cHUpLT5ucl9ydW5uaW5nIDw9IDIpCisJCXJldHVybiBiZXN0X2NwdTsKKworCW1pbmxvYWQgPSAx
MDAwMDAwMDsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtbm9kZXM7IGkrKykgeworCQlsb2FkID0gYXRv
bWljX3JlYWQoJm5vZGVfbnJfcnVubmluZ1tpXSk7CisJCWlmIChsb2FkIDwgbWlubG9hZCkgewor
CQkJbWlubG9hZCA9IGxvYWQ7CisJCQlub2RlID0gaTsKKwkJfQorCX0KKworCW1pbmxvYWQgPSAx
MDAwMDAwMDsKKwljcHVtYXNrID0gX19ub2RlX3RvX2NwdV9tYXNrKG5vZGUpOworCWZvciAoaSA9
IDA7IGkgPCBOUl9DUFVTOyArK2kpIHsKKwkJaWYgKCEoY3B1bWFzayAmICgxVUwgPDwgaSkpKQor
CQkJY29udGludWU7CisJCWlmIChjcHVfcnEoaSktPm5yX3J1bm5pbmcgPCBtaW5sb2FkKSB7CisJ
CQliZXN0X2NwdSA9IGk7CisJCQltaW5sb2FkID0gY3B1X3JxKGkpLT5ucl9ydW5uaW5nOworCQl9
CisJfQorCXJldHVybiBiZXN0X2NwdTsKK30KKwordm9pZCBzY2hlZF9iYWxhbmNlX2V4ZWModm9p
ZCkKK3sKKwlpbnQgbmV3X2NwdTsKKworCWlmIChudW1ub2RlcyA+IDEpIHsKKwkJbmV3X2NwdSA9
IHNjaGVkX2Jlc3RfY3B1KGN1cnJlbnQpOworCQlpZiAobmV3X2NwdSAhPSBzbXBfcHJvY2Vzc29y
X2lkKCkpCisJCQlzY2hlZF9taWdyYXRlX3Rhc2soY3VycmVudCwgbmV3X2NwdSk7CisJfQorfQog
CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY3B1c190b19iYWxhbmNlKGludCB0aGlzX2Nw
dSkKIHsKQEAgLTc1Miw5ICs4NjEsOSBAQCBvdXQ6CiBzdGF0aWMgaW5saW5lIHZvaWQgcHVsbF90
YXNrKHJ1bnF1ZXVlX3QgKnNyY19ycSwgcHJpb19hcnJheV90ICpzcmNfYXJyYXksIHRhc2tfdCAq
cCwgcnVucXVldWVfdCAqdGhpc19ycSwgaW50IHRoaXNfY3B1KQogewogCWRlcXVldWVfdGFzayhw
LCBzcmNfYXJyYXkpOwotCXNyY19ycS0+bnJfcnVubmluZy0tOworCW5yX3J1bm5pbmdfZGVjKHNy
Y19ycSk7CiAJc2V0X3Rhc2tfY3B1KHAsIHRoaXNfY3B1KTsKLQl0aGlzX3JxLT5ucl9ydW5uaW5n
Kys7CisJbnJfcnVubmluZ19pbmModGhpc19ycSk7CiAJZW5xdWV1ZV90YXNrKHAsIHRoaXNfcnEt
PmFjdGl2ZSk7CiAJLyoKIAkgKiBOb3RlIHRoYXQgaWRsZSB0aHJlYWRzIGhhdmUgYSBwcmlvIG9m
IE1BWF9QUklPLCBmb3IgdGhpcyB0ZXN0CkBAIC0yMjQ4LDYgKzIzNTcsNyBAQCB2b2lkIF9faW5p
dCBzY2hlZF9pbml0KHZvaWQpCiAJCXNwaW5fbG9ja19pbml0KCZycS0+bG9jayk7CiAJCUlOSVRf
TElTVF9IRUFEKCZycS0+bWlncmF0aW9uX3F1ZXVlKTsKIAkJYXRvbWljX3NldCgmcnEtPm5yX2lv
d2FpdCwgMCk7CisJCW5yX3J1bm5pbmdfaW5pdChycSk7CiAKIAkJZm9yIChqID0gMDsgaiA8IDI7
IGorKykgewogCQkJYXJyYXkgPSBycS0+YXJyYXlzICsgajsK

--=_courier-21741-1042697228-0001-2
Content-Type: application/octet-stream; name=numasched3
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=numasched3; size=4620

ZGlmZiAtdXJwTiAtWCAvaG9tZS9mbGV0Y2gvLmRpZmYuZXhjbHVkZSBudW1hc2NoZWQyL2luY2x1
ZGUvYXNtLWdlbmVyaWMvdG9wb2xvZ3kuaCBudW1hc2NoZWQzL2luY2x1ZGUvYXNtLWdlbmVyaWMv
dG9wb2xvZ3kuaAotLS0gbnVtYXNjaGVkMi9pbmNsdWRlL2FzbS1nZW5lcmljL3RvcG9sb2d5LmgJ
U3VuIE5vdiAxNyAyMDoyOToyMiAyMDAyCisrKyBudW1hc2NoZWQzL2luY2x1ZGUvYXNtLWdlbmVy
aWMvdG9wb2xvZ3kuaAlXZWQgSmFuIDE1IDE5OjI2OjAxIDIwMDMKQEAgLTQ4LDQgKzQ4LDkgQEAK
ICNkZWZpbmUgX19ub2RlX3RvX21lbWJsayhub2RlKQkJKDApCiAjZW5kaWYKIAorLyogQ3Jvc3Mt
bm9kZSBsb2FkIGJhbGFuY2luZyBpbnRlcnZhbC4gKi8KKyNpZm5kZWYgTk9ERV9CQUxBTkNFX1JB
VEUKKyNkZWZpbmUgTk9ERV9CQUxBTkNFX1JBVEUgMTAKKyNlbmRpZgorCiAjZW5kaWYgLyogX0FT
TV9HRU5FUklDX1RPUE9MT0dZX0ggKi8KZGlmZiAtdXJwTiAtWCAvaG9tZS9mbGV0Y2gvLmRpZmYu
ZXhjbHVkZSBudW1hc2NoZWQyL2luY2x1ZGUvYXNtLWkzODYvdG9wb2xvZ3kuaCBudW1hc2NoZWQz
L2luY2x1ZGUvYXNtLWkzODYvdG9wb2xvZ3kuaAotLS0gbnVtYXNjaGVkMi9pbmNsdWRlL2FzbS1p
Mzg2L3RvcG9sb2d5LmgJVGh1IEphbiAgOSAxOToxNjoxMSAyMDAzCisrKyBudW1hc2NoZWQzL2lu
Y2x1ZGUvYXNtLWkzODYvdG9wb2xvZ3kuaAlXZWQgSmFuIDE1IDE5OjI2OjAxIDIwMDMKQEAgLTYx
LDYgKzYxLDkgQEAgc3RhdGljIGlubGluZSBpbnQgX19ub2RlX3RvX2ZpcnN0X2NwdShpbgogLyog
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBNZW1CbGsgb24gTm9kZSAnbm9kZScgKi8K
ICNkZWZpbmUgX19ub2RlX3RvX21lbWJsayhub2RlKSAobm9kZSkKIAorLyogQ3Jvc3Mtbm9kZSBs
b2FkIGJhbGFuY2luZyBpbnRlcnZhbC4gKi8KKyNkZWZpbmUgTk9ERV9CQUxBTkNFX1JBVEUgMTAw
CisKICNlbHNlIC8qICFDT05GSUdfTlVNQSAqLwogLyoKICAqIE90aGVyIGkzODYgcGxhdGZvcm1z
IHNob3VsZCBkZWZpbmUgdGhlaXIgb3duIHZlcnNpb24gb2YgdGhlIApkaWZmIC11cnBOIC1YIC9o
b21lL2ZsZXRjaC8uZGlmZi5leGNsdWRlIG51bWFzY2hlZDIvaW5jbHVkZS9hc20taWE2NC90b3Bv
bG9neS5oIG51bWFzY2hlZDMvaW5jbHVkZS9hc20taWE2NC90b3BvbG9neS5oCi0tLSBudW1hc2No
ZWQyL2luY2x1ZGUvYXNtLWlhNjQvdG9wb2xvZ3kuaAlTdW4gTm92IDE3IDIwOjI5OjIwIDIwMDIK
KysrIG51bWFzY2hlZDMvaW5jbHVkZS9hc20taWE2NC90b3BvbG9neS5oCVdlZCBKYW4gMTUgMTk6
MjY6MDEgMjAwMwpAQCAtNjAsNCArNjAsNyBAQAogICovCiAjZGVmaW5lIF9fbm9kZV90b19tZW1i
bGsobm9kZSkgKG5vZGUpCiAKKy8qIENyb3NzLW5vZGUgbG9hZCBiYWxhbmNpbmcgaW50ZXJ2YWwu
ICovCisjZGVmaW5lIE5PREVfQkFMQU5DRV9SQVRFIDEwCisKICNlbmRpZiAvKiBfQVNNX0lBNjRf
VE9QT0xPR1lfSCAqLwpkaWZmIC11cnBOIC1YIC9ob21lL2ZsZXRjaC8uZGlmZi5leGNsdWRlIG51
bWFzY2hlZDIvaW5jbHVkZS9hc20tcHBjNjQvdG9wb2xvZ3kuaCBudW1hc2NoZWQzL2luY2x1ZGUv
YXNtLXBwYzY0L3RvcG9sb2d5LmgKLS0tIG51bWFzY2hlZDIvaW5jbHVkZS9hc20tcHBjNjQvdG9w
b2xvZ3kuaAlUaHUgSmFuICA5IDE5OjE2OjEyIDIwMDMKKysrIG51bWFzY2hlZDMvaW5jbHVkZS9h
c20tcHBjNjQvdG9wb2xvZ3kuaAlXZWQgSmFuIDE1IDE5OjI2OjAxIDIwMDMKQEAgLTQ2LDYgKzQ2
LDkgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fbm9kZV90b19jcAogCXJldHVybiBt
YXNrOwogfQogCisvKiBDcm9zcy1ub2RlIGxvYWQgYmFsYW5jaW5nIGludGVydmFsLiAqLworI2Rl
ZmluZSBOT0RFX0JBTEFOQ0VfUkFURSAxMAorCiAjZWxzZSAvKiAhQ09ORklHX05VTUEgKi8KIAog
I2RlZmluZSBfX2NwdV90b19ub2RlKGNwdSkJCSgwKQpkaWZmIC11cnBOIC1YIC9ob21lL2ZsZXRj
aC8uZGlmZi5leGNsdWRlIG51bWFzY2hlZDIva2VybmVsL3NjaGVkLmMgbnVtYXNjaGVkMy9rZXJu
ZWwvc2NoZWQuYwotLS0gbnVtYXNjaGVkMi9rZXJuZWwvc2NoZWQuYwlXZWQgSmFuIDE1IDE5OjU2
OjQyIDIwMDMKKysrIG51bWFzY2hlZDMva2VybmVsL3NjaGVkLmMJV2VkIEphbiAxNSAyMDowMTox
MiAyMDAzCkBAIC02Nyw2ICs2Nyw3IEBACiAjZGVmaW5lIElOVEVSQUNUSVZFX0RFTFRBCTIKICNk
ZWZpbmUgTUFYX1NMRUVQX0FWRwkJKDIqSFopCiAjZGVmaW5lIFNUQVJWQVRJT05fTElNSVQJKDIq
SFopCisjZGVmaW5lIE5PREVfVEhSRVNIT0xEICAgICAgICAgIDEyNQogCiAvKgogICogSWYgYSB0
YXNrIGlzICdpbnRlcmFjdGl2ZScgdGhlbiB3ZSByZWluc2VydCBpdCBpbiB0aGUgYWN0aXZlCkBA
IC0xNTUsNiArMTU2LDggQEAgc3RydWN0IHJ1bnF1ZXVlIHsKIAlpbnQgcHJldl9ucl9ydW5uaW5n
W05SX0NQVVNdOwogI2lmZGVmIENPTkZJR19OVU1BCiAJYXRvbWljX3QgKm5vZGVfbnJfcnVubmlu
ZzsKKwl1bnNpZ25lZCBpbnQgbnJfYmFsYW5jZWQ7CisJaW50IHByZXZfbm9kZV9sb2FkW01BWF9O
VU1OT0RFU107CiAjZW5kaWYKIAl0YXNrX3QgKm1pZ3JhdGlvbl90aHJlYWQ7CiAJc3RydWN0IGxp
c3RfaGVhZCBtaWdyYXRpb25fcXVldWU7CkBAIC03MzUsMTQgKzczOCw1MiBAQCB2b2lkIHNjaGVk
X2JhbGFuY2VfZXhlYyh2b2lkKQogCX0KIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n
IGNwdXNfdG9fYmFsYW5jZShpbnQgdGhpc19jcHUpCisvKgorICogRmluZCB0aGUgYnVzaWVzdCBu
b2RlLiBBbGwgcHJldmlvdXMgbm9kZSBsb2FkcyBjb250cmlidXRlIHdpdGggYSAKKyAqIGdlb21l
dHJpY2FsbHkgZGVjY2F5aW5nIHdlaWdodCB0byB0aGUgbG9hZCBtZWFzdXJlOgorICogICAgICBs
b2FkX3t0fSA9IGxvYWRfe3QtMX0vMiArIG5yX25vZGVfcnVubmluZ197dH0KKyAqIFRoaXMgd2F5
IHN1ZGRlbiBsb2FkIHBlYWtzIGFyZSBmbGF0dGVuZWQgb3V0IGEgYml0LgorICovCitzdGF0aWMg
aW50IGZpbmRfYnVzaWVzdF9ub2RlKGludCB0aGlzX25vZGUpCit7CisJaW50IGksIG5vZGUgPSAt
MSwgbG9hZCwgdGhpc19sb2FkLCBtYXhsb2FkOworCQorCXRoaXNfbG9hZCA9IG1heGxvYWQgPSAo
dGhpc19ycSgpLT5wcmV2X25vZGVfbG9hZFt0aGlzX25vZGVdID4+IDEpCisJCSsgYXRvbWljX3Jl
YWQoJm5vZGVfbnJfcnVubmluZ1t0aGlzX25vZGVdKTsKKwl0aGlzX3JxKCktPnByZXZfbm9kZV9s
b2FkW3RoaXNfbm9kZV0gPSB0aGlzX2xvYWQ7CisJZm9yIChpID0gMDsgaSA8IG51bW5vZGVzOyBp
KyspIHsKKwkJaWYgKGkgPT0gdGhpc19ub2RlKQorCQkJY29udGludWU7CisJCWxvYWQgPSAodGhp
c19ycSgpLT5wcmV2X25vZGVfbG9hZFtpXSA+PiAxKQorCQkJKyBhdG9taWNfcmVhZCgmbm9kZV9u
cl9ydW5uaW5nW2ldKTsKKwkJdGhpc19ycSgpLT5wcmV2X25vZGVfbG9hZFtpXSA9IGxvYWQ7CisJ
CWlmIChsb2FkID4gbWF4bG9hZCAmJiAoMTAwKmxvYWQgPiBOT0RFX1RIUkVTSE9MRCp0aGlzX2xv
YWQpKSB7CisJCQltYXhsb2FkID0gbG9hZDsKKwkJCW5vZGUgPSBpOworCQl9CisJfQorCXJldHVy
biBub2RlOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY3B1c190b19iYWxhbmNl
KGludCB0aGlzX2NwdSwgcnVucXVldWVfdCAqdGhpc19ycSkKIHsKLQlyZXR1cm4gX19ub2RlX3Rv
X2NwdV9tYXNrKF9fY3B1X3RvX25vZGUodGhpc19jcHUpKTsKKwlpbnQgdGhpc19ub2RlID0gX19j
cHVfdG9fbm9kZSh0aGlzX2NwdSk7CisJLyoKKwkgKiBBdm9pZCByZWJhbGFuY2luZyBiZXR3ZWVu
IG5vZGVzIHRvbyBvZnRlbi4KKwkgKiBXZSByZWJhbGFuY2UgZ2xvYmFsbHkgb25jZSBldmVyeSBO
T0RFX0JBTEFOQ0VfUkFURSBsb2FkIGJhbGFuY2VzLgorCSAqLworCWlmICgrKyh0aGlzX3JxLT5u
cl9iYWxhbmNlZCkgPT0gTk9ERV9CQUxBTkNFX1JBVEUpIHsKKwkJaW50IG5vZGUgPSBmaW5kX2J1
c2llc3Rfbm9kZSh0aGlzX25vZGUpOworCQl0aGlzX3JxLT5ucl9iYWxhbmNlZCA9IDA7CisJCWlm
IChub2RlID49IDApCisJCQlyZXR1cm4gKF9fbm9kZV90b19jcHVfbWFzayhub2RlKSB8ICgxVUwg
PDwgdGhpc19jcHUpKTsKKwl9CisJcmV0dXJuIF9fbm9kZV90b19jcHVfbWFzayh0aGlzX25vZGUp
OwogfQogCiAjZWxzZSAvKiAhQ09ORklHX05VTUEgKi8KIAotc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBsb25nIGNwdXNfdG9fYmFsYW5jZShpbnQgdGhpc19jcHUpCitzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGxvbmcgY3B1c190b19iYWxhbmNlKGludCB0aGlzX2NwdSwgcnVucXVldWVfdCAqdGhpc19y
cSkKIHsKIAlyZXR1cm4gY3B1X29ubGluZV9tYXA7CiB9CkBAIC04OTAsNyArOTMxLDcgQEAgc3Rh
dGljIHZvaWQgbG9hZF9iYWxhbmNlKHJ1bnF1ZXVlX3QgKnRoaQogCXRhc2tfdCAqdG1wOwogCiAJ
YnVzaWVzdCA9IGZpbmRfYnVzaWVzdF9xdWV1ZSh0aGlzX3JxLCB0aGlzX2NwdSwgaWRsZSwgJmlt
YmFsYW5jZSwKLQkJCQkJY3B1c190b19iYWxhbmNlKHRoaXNfY3B1KSk7CisJCQkJCWNwdXNfdG9f
YmFsYW5jZSh0aGlzX2NwdSwgdGhpc19ycSkpOwogCWlmICghYnVzaWVzdCkKIAkJZ290byBvdXQ7
CiAK

--=_courier-21741-1042697228-0001-2--