From dev-return-6123-apmail-apr-dev-archive=apr.apache.org@apr.apache.org Sun Mar 31 20:42:28 2002 Return-Path: Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 78060 invoked by uid 500); 31 Mar 2002 20:42:28 -0000 Mailing-List: contact dev-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Delivered-To: mailing list dev@apr.apache.org Received: (qmail 78049 invoked from network); 31 Mar 2002 20:42:27 -0000 Date: Sun, 31 Mar 2002 15:37:40 -0500 (EST) From: Cliff Woolley X-X-Sender: root@deepthought.cs.virginia.edu To: Brian Pane cc: dev@apr.apache.org Subject: Re: [PATCH] another bucket allocator implementation In-Reply-To: <3CA761E8.6090401@pacbell.net> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1887379643-150287918-1017607060=:12329" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N 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. ---1887379643-150287918-1017607060=:12329 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 31 Mar 2002, Brian Pane wrote: > requests/second > --------------- > Test 2.0.34 2.0.34 + 2.0.34 + > file baseline Brian's patch Cliff's patch > 50k.shtml 654 667 686 > incl.shtml 1870 1992 2007 Sweet!! In both cases this is really great news. PS: I remembered at lunch that there was a buglet in apr_bucket_alloc_destroy() I'd forgotten to fix. Since list itself is allocated from list->allocator, we need to save a pointer to the allocator before we call apr_allocator_free() so that we will still have a valid pointer to pass to apr_allocator_destroy() afterward. Attached is a revised patch. --Cliff -------------------------------------------------------------- Cliff Woolley cliffwoolley@yahoo.com Charlottesville, VA ---1887379643-150287918-1017607060=:12329 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="bucket_alloc_3-2.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="bucket_alloc_3-2.patch" PyBjb25maWcubmljZS1wcmVmb3JrDQo/IGNvbmZpZy5uaWNlLXdvcmtlcg0K SW5kZXg6IGluY2x1ZGUvaHR0cF9jb3JlLmgNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClJDUyBmaWxlOiAvaG9tZS9jdnMvaHR0cGQtMi4wL2luY2x1ZGUv aHR0cF9jb3JlLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjY0DQpkaWZm IC11IC1kIC1yMS42NCBodHRwX2NvcmUuaA0KLS0tIGluY2x1ZGUvaHR0cF9j b3JlLmgJMjAgTWFyIDIwMDIgMDI6MDU6NDIgLTAwMDAJMS42NA0KKysrIGlu Y2x1ZGUvaHR0cF9jb3JlLmgJMzEgTWFyIDIwMDIgMjA6Mzg6NTggLTAwMDAN CkBAIC0xMjksOSArMTI5LDkgQEANCiAjZGVmaW5lIFNBVElTRllfQU5ZIDEN CiAjZGVmaW5lIFNBVElTRllfTk9TUEVDIDINCiANCi0vKiBNYWtlIHN1cmUg d2UgZG9uJ3Qgd3JpdGUgbGVzcyB0aGFuIDgxOTIgYnl0ZXMgYXQgYW55IG9u ZSB0aW1lLg0KKy8qIE1ha2Ugc3VyZSB3ZSBkb24ndCB3cml0ZSBsZXNzIHRo YW4gODAwMCBieXRlcyBhdCBhbnkgb25lIHRpbWUuDQogICovDQotI2RlZmlu ZSBBUF9NSU5fQllURVNfVE9fV1JJVEUgIDgxOTINCisjZGVmaW5lIEFQX01J Tl9CWVRFU19UT19XUklURSAgODAwMA0KIA0KIC8qKg0KICAqIFJldHJpZXZl IHRoZSB2YWx1ZSBvZiBPcHRpb25zIGZvciB0aGlzIHJlcXVlc3QNCkluZGV4 OiBzcmNsaWIvYXByL2luY2x1ZGUvYXByX2FsbG9jYXRvci5oDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzL2Fwci9pbmNs dWRlL2Fwcl9hbGxvY2F0b3IuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu Mg0KZGlmZiAtdSAtZCAtcjEuMiBhcHJfYWxsb2NhdG9yLmgNCi0tLSBzcmNs aWIvYXByL2luY2x1ZGUvYXByX2FsbG9jYXRvci5oCTE4IE1hciAyMDAyIDE2 OjI0OjU0IC0wMDAwCTEuMg0KKysrIHNyY2xpYi9hcHIvaW5jbHVkZS9hcHJf YWxsb2NhdG9yLmgJMzEgTWFyIDIwMDIgMjA6Mzg6NTggLTAwMDANCkBAIC04 NSw2ICs4NSwxNSBAQA0KIC8qKiB0aGUgc3RydWN0dXJlIHdoaWNoIGhvbGRz IGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGxvY2F0aW9uICovDQogdHlwZWRl ZiBzdHJ1Y3QgYXByX21lbW5vZGVfdCBhcHJfbWVtbm9kZV90Ow0KIA0KK3N0 cnVjdCBhcHJfbWVtbm9kZV90IHsNCisgICAgYXByX21lbW5vZGVfdCAqbmV4 dDsNCisgICAgYXByX3VpbnQzMl90ICAgaW5kZXg7DQorICAgIGNoYXIgICAg ICAgICAgKmZpcnN0X2F2YWlsOw0KKyAgICBjaGFyICAgICAgICAgICplbmRw Ow0KK307DQorDQorI2RlZmluZSBBUFJfTUVNTk9ERV9UX1NJWkUgQVBSX0FM SUdOX0RFRkFVTFQoc2l6ZW9mKGFwcl9tZW1ub2RlX3QpKQ0KKw0KIC8qKg0K ICAqIENyZWF0ZSBhIG5ldyBhbGxvY2F0b3INCiAgKiBAcGFyYW0gYWxsb2Nh dG9yIFRoZSBhbGxvY2F0b3Igd2UgaGF2ZSBqdXN0IGNyZWF0ZWQuDQpJbmRl eDogc3JjbGliL2Fwci9tZW1vcnkvdW5peC9hcHJfcG9vbHMuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2N2cy9hcHIvbWVt b3J5L3VuaXgvYXByX3Bvb2xzLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx LjE2NA0KZGlmZiAtdSAtZCAtcjEuMTY0IGFwcl9wb29scy5jDQotLS0gc3Jj bGliL2Fwci9tZW1vcnkvdW5peC9hcHJfcG9vbHMuYwkzMSBNYXIgMjAwMiAx MDoxMjoyMSAtMDAwMAkxLjE2NA0KKysrIHNyY2xpYi9hcHIvbWVtb3J5L3Vu aXgvYXByX3Bvb2xzLmMJMzEgTWFyIDIwMDIgMjA6Mzg6NTggLTAwMDANCkBA IC03NywxOSArNzcsNiBAQA0KIA0KIA0KIC8qDQotICogWFhYOiBNZW1vcnkg bm9kZSBzdHJ1Y3QsIG1vdmUgdG8gcHJpdmF0ZSBoZWFkZXIgZmlsZQ0KLSAq Lw0KLXN0cnVjdCBhcHJfbWVtbm9kZV90IHsNCi0gICAgYXByX21lbW5vZGVf dCAqbmV4dDsNCi0gICAgYXByX3VpbnQzMl90ICAgaW5kZXg7DQotICAgIGNo YXIgICAgICAgICAgKmZpcnN0X2F2YWlsOw0KLSAgICBjaGFyICAgICAgICAg ICplbmRwOw0KLX07DQotDQotI2RlZmluZSBTSVpFT0ZfTUVNTk9ERV9UIEFQ Ul9BTElHTl9ERUZBVUxUKHNpemVvZihhcHJfbWVtbm9kZV90KSkNCi0NCi0N Ci0vKg0KICAqIE1hZ2ljIG51bWJlcnMNCiAgKi8NCiANCkBAIC0xODksNyAr MTc2LDcgQEANCiAgICAgLyogUm91bmQgdXAgdGhlIGJsb2NrIHNpemUgdG8g dGhlIG5leHQgYm91bmRhcnksIGJ1dCBhbHdheXMNCiAgICAgICogYWxsb2Nh dGUgYXQgbGVhc3QgYSBjZXJ0YWluIHNpemUgKE1JTl9BTExPQykuDQogICAg ICAqLw0KLSAgICBzaXplID0gQVBSX0FMSUdOKHNpemUgKyBTSVpFT0ZfTUVN Tk9ERV9ULCBCT1VOREFSWV9TSVpFKTsNCisgICAgc2l6ZSA9IEFQUl9BTElH TihzaXplICsgQVBSX01FTU5PREVfVF9TSVpFLCBCT1VOREFSWV9TSVpFKTsN CiAgICAgaWYgKHNpemUgPCBNSU5fQUxMT0MpDQogICAgICAgICBzaXplID0g TUlOX0FMTE9DOw0KIA0KQEAgLTI0Nyw3ICsyMzQsNyBAQA0KICNlbmRpZiAv KiBBUFJfSEFTX1RIUkVBRFMgKi8NCiANCiAgICAgICAgICAgICBub2RlLT5u ZXh0ID0gTlVMTDsNCi0gICAgICAgICAgICBub2RlLT5maXJzdF9hdmFpbCA9 IChjaGFyICopbm9kZSArIFNJWkVPRl9NRU1OT0RFX1Q7DQorICAgICAgICAg ICAgbm9kZS0+Zmlyc3RfYXZhaWwgPSAoY2hhciAqKW5vZGUgKyBBUFJfTUVN Tk9ERV9UX1NJWkU7DQogDQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQog ICAgICAgICB9DQpAQCAtMjgzLDcgKzI3MCw3IEBADQogI2VuZGlmIC8qIEFQ Ul9IQVNfVEhSRUFEUyAqLw0KIA0KICAgICAgICAgICAgIG5vZGUtPm5leHQg PSBOVUxMOw0KLSAgICAgICAgICAgIG5vZGUtPmZpcnN0X2F2YWlsID0gKGNo YXIgKilub2RlICsgU0laRU9GX01FTU5PREVfVDsNCisgICAgICAgICAgICBu b2RlLT5maXJzdF9hdmFpbCA9IChjaGFyICopbm9kZSArIEFQUl9NRU1OT0RF X1RfU0laRTsNCiANCiAgICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAg ICAgIH0NCkBAIC0zMDIsNyArMjg5LDcgQEANCiANCiAgICAgbm9kZS0+bmV4 dCA9IE5VTEw7DQogICAgIG5vZGUtPmluZGV4ID0gaW5kZXg7DQotICAgIG5v ZGUtPmZpcnN0X2F2YWlsID0gKGNoYXIgKilub2RlICsgU0laRU9GX01FTU5P REVfVDsNCisgICAgbm9kZS0+Zmlyc3RfYXZhaWwgPSAoY2hhciAqKW5vZGUg KyBBUFJfTUVNTk9ERV9UX1NJWkU7DQogICAgIG5vZGUtPmVuZHAgPSAoY2hh ciAqKW5vZGUgKyBzaXplOw0KIA0KICAgICByZXR1cm4gbm9kZTsNCkBAIC03 MjEsNyArNzA4LDcgQEANCiAgICAgICAgIGFsbG9jYXRvciA9IHBhcmVudC0+ YWxsb2NhdG9yOw0KIA0KICAgICBpZiAoKG5vZGUgPSBhcHJfYWxsb2NhdG9y X2FsbG9jKGFsbG9jYXRvciwNCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNSU5fQUxMT0MgLSBTSVpFT0ZfTUVNTk9ERV9UKSkgPT0g TlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1JTl9BTExPQyAtIEFQUl9NRU1OT0RFX1RfU0laRSkpID09IE5VTEwpIHsN CiAgICAgICAgIGlmIChhYm9ydF9mbikNCiAgICAgICAgICAgICBhYm9ydF9m bihBUFJfRU5PTUVNKTsNCiANCkluZGV4OiBzcmNsaWIvYXByLXV0aWwvYnVj a2V0cy9hcHJfYnVja2V0c19hbGxvYy5jDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzL2Fwci11dGlsL2J1Y2tldHMvYXBy X2J1Y2tldHNfYWxsb2MuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0K ZGlmZiAtdSAtZCAtcjEuNCBhcHJfYnVja2V0c19hbGxvYy5jDQotLS0gc3Jj bGliL2Fwci11dGlsL2J1Y2tldHMvYXByX2J1Y2tldHNfYWxsb2MuYwkzMCBN YXIgMjAwMiAxMjo0MzowNyAtMDAwMAkxLjQNCisrKyBzcmNsaWIvYXByLXV0 aWwvYnVja2V0cy9hcHJfYnVja2V0c19hbGxvYy5jCTMxIE1hciAyMDAyIDIw OjM4OjU5IC0wMDAwDQpAQCAtNTIsMzIgKzUyLDEwMCBAQA0KICAqIDxodHRw Oi8vd3d3LmFwYWNoZS5vcmcvPi4NCiAgKi8NCiANCi0jaW5jbHVkZSA8c3Rk bGliLmg+DQogI2luY2x1ZGUgImFwcl9idWNrZXRzLmgiDQorI2luY2x1ZGUg ImFwcl9hbGxvY2F0b3IuaCINCiANCi0vKg0KLSAqIFhYWDogdGhpcyBmaWxl IHdpbGwgYmUgZmlsbGVkIGluIGxhdGVyDQotICovDQorI2RlZmluZSBBTExP Q19BTVQgKDgxOTIgLSBBUFJfTUVNTk9ERV9UX1NJWkUpDQorDQordHlwZWRl ZiBzdHJ1Y3Qgbm9kZV9oZWFkZXJfdCB7DQorICAgIGFwcl9zaXplX3Qgc2l6 ZTsNCisgICAgYXByX2J1Y2tldF9hbGxvY190ICphbGxvYzsNCisgICAgYXBy X21lbW5vZGVfdCAqbWVtbm9kZTsNCisgICAgc3RydWN0IG5vZGVfaGVhZGVy X3QgKm5leHQ7DQorfSBub2RlX2hlYWRlcl90Ow0KKw0KKyNkZWZpbmUgU0la RU9GX05PREVfSEVBREVSX1QgQVBSX0FMSUdOX0RFRkFVTFQoc2l6ZW9mKG5v ZGVfaGVhZGVyX3QpKQ0KIA0KKy8qKiBBIGxpc3Qgb2YgZnJlZSBtZW1vcnkg ZnJvbSB3aGljaCBuZXcgYnVja2V0cyBvciBwcml2YXRlIGJ1Y2tldA0KKyAq ICBzdHJ1Y3R1cmVzIGNhbiBiZSBhbGxvY2F0ZWQuDQorICovDQogc3RydWN0 IGFwcl9idWNrZXRfYWxsb2NfdCB7DQotICAgIGludCB4OyAvKiB0ZW1wb3Jh cnkuLi4gc29tZSBjb21waWxlcnMgdHJpZ2dlciBhbiBlcnJvciBvbiBlbXB0 eSBzdHJ1Y3R1cmUgZGVmcyAqLw0KKyAgICBhcHJfYWxsb2NhdG9yX3QgKmFs bG9jYXRvcjsNCisgICAgbm9kZV9oZWFkZXJfdCAqZnJlZWxpc3Q7DQorICAg IGFwcl9tZW1ub2RlX3QgKmJsb2NrczsNCiB9Ow0KIA0KIEFQVV9ERUNMQVJF KGFwcl9idWNrZXRfYWxsb2NfdCAqKSBhcHJfYnVja2V0X2FsbG9jX2NyZWF0 ZShhcHJfcG9vbF90ICpwKQ0KIHsNCi0gICAgcmV0dXJuIChhcHJfYnVja2V0 X2FsbG9jX3QgKikweEZFQ0NGRUNDOw0KKyAgICBhcHJfYWxsb2NhdG9yX3Qg KmFsbG9jYXRvcjsNCisgICAgYXByX2J1Y2tldF9hbGxvY190ICpsaXN0Ow0K KyAgICBhcHJfbWVtbm9kZV90ICpibG9jazsNCisNCisgICAgYXByX2FsbG9j YXRvcl9jcmVhdGUoJmFsbG9jYXRvcik7DQorICAgIGJsb2NrID0gYXByX2Fs bG9jYXRvcl9hbGxvYyhhbGxvY2F0b3IsIEFMTE9DX0FNVCk7DQorICAgIGxp c3QgPSAoYXByX2J1Y2tldF9hbGxvY190ICopYmxvY2stPmZpcnN0X2F2YWls Ow0KKyAgICBsaXN0LT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7DQorICAgIGxp c3QtPmZyZWVsaXN0ID0gTlVMTDsNCisgICAgbGlzdC0+YmxvY2tzID0gYmxv Y2s7DQorICAgIGJsb2NrLT5maXJzdF9hdmFpbCArPSBBUFJfQUxJR05fREVG QVVMVChzaXplb2YoKmxpc3QpKTsNCisgICAgcmV0dXJuIGxpc3Q7DQogfQ0K IA0KIEFQVV9ERUNMQVJFKHZvaWQpIGFwcl9idWNrZXRfYWxsb2NfZGVzdHJv eShhcHJfYnVja2V0X2FsbG9jX3QgKmxpc3QpDQogew0KKyAgICBhcHJfYWxs b2NhdG9yX3QgKmFsbG9jYXRvciA9IGxpc3QtPmFsbG9jYXRvcjsNCisNCisg ICAgYXByX2FsbG9jYXRvcl9mcmVlKGFsbG9jYXRvciwgbGlzdC0+YmxvY2tz KTsNCisgICAgYXByX2FsbG9jYXRvcl9kZXN0cm95KGFsbG9jYXRvcik7DQog fQ0KIA0KIEFQVV9ERUNMQVJFKHZvaWQgKikgYXByX2J1Y2tldF9hbGxvYyhh cHJfc2l6ZV90IHNpemUsIGFwcl9idWNrZXRfYWxsb2NfdCAqbGlzdCkNCiB7 DQotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7DQorICAgIG5vZGVfaGVhZGVy X3QgKm5vZGU7DQorICAgIGFwcl9tZW1ub2RlX3QgKmFjdGl2ZSA9IGxpc3Qt PmJsb2NrczsNCisgICAgY2hhciAqZW5kcDsNCisNCisgICAgc2l6ZSArPSBT SVpFT0ZfTk9ERV9IRUFERVJfVDsNCisgICAgaWYgKHNpemUgPD0gQVBSX0JV Q0tFVF9BTExPQ19TSVpFKSB7DQorICAgICAgICBpZiAobGlzdC0+ZnJlZWxp c3QpIHsNCisgICAgICAgICAgICBub2RlID0gbGlzdC0+ZnJlZWxpc3Q7DQor ICAgICAgICAgICAgbGlzdC0+ZnJlZWxpc3QgPSBub2RlLT5uZXh0Ow0KKyAg ICAgICAgfQ0KKyAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgZW5kcCA9 IGFjdGl2ZS0+Zmlyc3RfYXZhaWwgKyBBUFJfQlVDS0VUX0FMTE9DX1NJWkU7 DQorICAgICAgICAgICAgaWYgKGVuZHAgPj0gYWN0aXZlLT5lbmRwKSB7DQor ICAgICAgICAgICAgICAgIGxpc3QtPmJsb2NrcyA9IGFwcl9hbGxvY2F0b3Jf YWxsb2MobGlzdC0+YWxsb2NhdG9yLCBBTExPQ19BTVQpOw0KKyAgICAgICAg ICAgICAgICBsaXN0LT5ibG9ja3MtPm5leHQgPSBhY3RpdmU7DQorICAgICAg ICAgICAgICAgIGFjdGl2ZSA9IGxpc3QtPmJsb2NrczsNCisgICAgICAgICAg ICAgICAgZW5kcCA9IGFjdGl2ZS0+Zmlyc3RfYXZhaWwgKyBBUFJfQlVDS0VU X0FMTE9DX1NJWkU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG5v ZGUgPSAobm9kZV9oZWFkZXJfdCAqKWFjdGl2ZS0+Zmlyc3RfYXZhaWw7DQor ICAgICAgICAgICAgbm9kZS0+YWxsb2MgPSBsaXN0Ow0KKyAgICAgICAgICAg IG5vZGUtPm1lbW5vZGUgPSBhY3RpdmU7DQorICAgICAgICAgICAgbm9kZS0+ c2l6ZSA9IEFQUl9CVUNLRVRfQUxMT0NfU0laRTsNCisgICAgICAgICAgICBh Y3RpdmUtPmZpcnN0X2F2YWlsID0gZW5kcDsNCisgICAgICAgIH0NCisgICAg fQ0KKyAgICBlbHNlIHsNCisgICAgICAgIGFwcl9tZW1ub2RlX3QgKm1lbW5v ZGUgPSBhcHJfYWxsb2NhdG9yX2FsbG9jKGxpc3QtPmFsbG9jYXRvciwgc2l6 ZSk7DQorICAgICAgICBub2RlID0gKG5vZGVfaGVhZGVyX3QgKiltZW1ub2Rl LT5maXJzdF9hdmFpbDsNCisgICAgICAgIG5vZGUtPmFsbG9jID0gbGlzdDsN CisgICAgICAgIG5vZGUtPm1lbW5vZGUgPSBtZW1ub2RlOw0KKyAgICAgICAg bm9kZS0+c2l6ZSA9IHNpemU7DQorICAgIH0NCisgICAgcmV0dXJuICgoY2hh ciAqKW5vZGUpICsgU0laRU9GX05PREVfSEVBREVSX1Q7DQogfQ0KIA0KLUFQ VV9ERUNMQVJFKHZvaWQpIGFwcl9idWNrZXRfZnJlZSh2b2lkICpibG9jaykN CitBUFVfREVDTEFSRSh2b2lkKSBhcHJfYnVja2V0X2ZyZWUodm9pZCAqbWVt KQ0KIHsNCi0gICAgZnJlZShibG9jayk7DQorICAgIG5vZGVfaGVhZGVyX3Qg Km5vZGUgPSAobm9kZV9oZWFkZXJfdCAqKSgoY2hhciAqKW1lbSAtIFNJWkVP Rl9OT0RFX0hFQURFUl9UKTsNCisgICAgYXByX2J1Y2tldF9hbGxvY190ICps aXN0ID0gbm9kZS0+YWxsb2M7DQorDQorICAgIGlmIChub2RlLT5zaXplID09 IEFQUl9CVUNLRVRfQUxMT0NfU0laRSkgew0KKyAgICAgICAgbm9kZS0+bmV4 dCA9IGxpc3QtPmZyZWVsaXN0Ow0KKyAgICAgICAgbGlzdC0+ZnJlZWxpc3Qg PSBub2RlOw0KKyAgICB9DQorICAgIGVsc2Ugew0KKyAgICAgICAgYXByX2Fs bG9jYXRvcl9mcmVlKGxpc3QtPmFsbG9jYXRvciwgbm9kZS0+bWVtbm9kZSk7 DQorICAgIH0NCiB9DQpJbmRleDogc3JjbGliL2Fwci11dGlsL2luY2x1ZGUv YXByX2J1Y2tldHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC9ob21lL2N2cy9hcHItdXRpbC9pbmNsdWRlL2Fwcl9idWNrZXRzLmgs dg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEzMw0KZGlmZiAtdSAtZCAtcjEu MTMzIGFwcl9idWNrZXRzLmgNCi0tLSBzcmNsaWIvYXByLXV0aWwvaW5jbHVk ZS9hcHJfYnVja2V0cy5oCTI5IE1hciAyMDAyIDA4OjEyOjA4IC0wMDAwCTEu MTMzDQorKysgc3JjbGliL2Fwci11dGlsL2luY2x1ZGUvYXByX2J1Y2tldHMu aAkzMSBNYXIgMjAwMiAyMDozODo1OSAtMDAwMA0KQEAgLTg0LDggKzg0LDgg QEANCiAgKiBAeyANCiAgKi8NCiANCi0vKiogZGVmYXVsdCBidWNrZXQgYnVm ZmVyIHNpemUgKi8NCi0jZGVmaW5lIEFQUl9CVUNLRVRfQlVGRl9TSVpFIDgx OTINCisvKiogZGVmYXVsdCBidWNrZXQgYnVmZmVyIHNpemUgLSA4S0IgbWlu dXMgcm9vbSBmb3IgbWVtb3J5IGFsbG9jYXRvciBoZWFkZXJzICovDQorI2Rl ZmluZSBBUFJfQlVDS0VUX0JVRkZfU0laRSA4MDAwDQogDQogdHlwZWRlZiBl bnVtIHsNCiAgICAgQVBSX0JMT0NLX1JFQUQsICAgLyogYmxvY2sgdW50aWwg ZGF0YSBiZWNvbWVzIGF2YWlsYWJsZSAqLw0KQEAgLTYxMyw2ICs2MTMsMjgg QEANCiAgICAgICogIGJlIGNyZWF0ZWQgd2hpbGUgcmVhZGluZyBmcm9tIHRo aXMgZmlsZSBidWNrZXQgKi8NCiAgICAgYXByX3Bvb2xfdCAqcmVhZHBvb2w7 DQogfTsNCisNCit0eXBlZGVmIHVuaW9uIGFwcl9idWNrZXRfc3RydWN0cyBh cHJfYnVja2V0X3N0cnVjdHM7DQorLyoqDQorICogQSB1bmlvbiBvZiBhbGwg YnVja2V0IHN0cnVjdHVyZXMgc28gd2Uga25vdyB3aGF0DQorICogdGhlIG1h eCBzaXplIGlzLg0KKyAqLw0KK3VuaW9uIGFwcl9idWNrZXRfc3RydWN0cyB7 DQorICAgIGFwcl9idWNrZXQgICAgICBiOw0KKyAgICBhcHJfYnVja2V0X2hl YXAgaGVhcDsNCisgICAgYXByX2J1Y2tldF9wb29sIHBvb2w7DQorI2lmIEFQ Ul9IQVNfTU1BUA0KKyAgICBhcHJfYnVja2V0X21tYXAgbW1hcDsNCisjZW5k aWYNCisgICAgYXByX2J1Y2tldF9maWxlIGZpbGU7DQorfTsNCisNCisvKioN CisgKiBUaGUgYW1vdW50IHRoYXQgYXByX2J1Y2tldF9hbGxvYygpIHNob3Vs ZCBhbGxvY2F0ZSBpbiB0aGUgY29tbW9uIGNhc2UuDQorICogTm90ZTogdGhp cyBpcyB0d2ljZSBhcyBiaWcgYXMgYXByX2J1Y2tldF9zdHJ1Y3RzIHRvIGFs bG93IGJyZWF0aGluZw0KKyAqIHJvb20gZm9yIHRoaXJkLXBhcnR5IGJ1Y2tl dCB0eXBlcyBhbmQgdGhlIGJ1Y2tldCBhbGxvY2F0b3IuDQorICovDQorI2Rl ZmluZSBBUFJfQlVDS0VUX0FMTE9DX1NJWkUgIEFQUl9BTElHTl9ERUZBVUxU KDIqc2l6ZW9mKGFwcl9idWNrZXRfc3RydWN0cykpDQogDQogLyogICoqKioq ICBCdWNrZXQgQnJpZ2FkZSBGdW5jdGlvbnMgICoqKioqICAqLw0KIC8qKg0K ---1887379643-150287918-1017607060=:12329--