From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id x04nDXmBD2R4fw4AWB0awg (envelope-from ) for ; Mon, 13 Mar 2023 16:03:05 -0400 Received: by simark.ca (Postfix, from userid 112) id 2400B1E223; Mon, 13 Mar 2023 16:03:05 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=lists.lttng.org header.i=@lists.lttng.org header.a=rsa-sha256 header.s=default header.b=vTY3nq8l; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_HI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.lttng.org (lists.lttng.org [167.114.26.123]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9F84B1E110 for ; Mon, 13 Mar 2023 16:03:03 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.lttng.org; s=default; t=1678737783; bh=LiJz7dmF+TAcQ3hYGZw0xcibtz3NLs3BlaKHX3x6nK0=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=vTY3nq8l+LaGk7l2NVQ/uJuJyq8AFkaHFLxaPFKJzhX1D9hTMWUgjGCKlfsj8YcUt mZ2tdeg2QYNX1XUT88RS8LLLvVdmzBu+GCtm+L8ZmdZZE6I2mLOQFO2rxmWz3M6k9V r39yLk8UuBcnBUb/Y7JgrvTIVJFj3ySyox+KScCjhmn4E5VjsnAe4MaPh8A6AJU0A2 3Q5QR54Mmz6xkNIUHFfgb/i3a3VKyAQ7YUBL0lUURvUBQH6X03QHoG0WzDPRQtbFxh WCWpvGJtLVpGuLVE3qmM2XwK0pNlSF6X1H3ji3QFKXr4V9Bl7EmlPLhY/OHE0eoAmE xPGzpFETCbIpQ== Received: from lists-lttng01.efficios.com (localhost [IPv6:::1]) by lists.lttng.org (Postfix) with ESMTP id 4Pb6yt75W6z2BRG; Mon, 13 Mar 2023 16:03:02 -0400 (EDT) Received: from smtpout.efficios.com (smtpout.efficios.com [167.114.26.122]) by lists.lttng.org (Postfix) with ESMTPS id 4Pb6yq3JNgz2BRF for ; Mon, 13 Mar 2023 16:02:59 -0400 (EDT) Received: from [172.16.0.172] (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4Pb6yD417xzqb6; Mon, 13 Mar 2023 16:02:28 -0400 (EDT) Message-ID: <0aab344e-d1fe-09d4-a709-ccc2837e920a@efficios.com> Date: Mon, 13 Mar 2023 16:02:36 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: =?UTF-8?B?T25kxZllaiBTdXLDvQ==?= Cc: lttng-dev@lists.lttng.org, paulmck References: <09AA2241-0226-44B8-8363-32AEC813CBB4@sury.org> <3F64E9FA-5E54-4613-9D4B-E49053847CB3@sury.org> In-Reply-To: <3F64E9FA-5E54-4613-9D4B-E49053847CB3@sury.org> Subject: Re: [lttng-dev] urcu/rculist.h clarifications - for implementing LRU X-BeenThere: lttng-dev@lists.lttng.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: LTTng development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Mathieu Desnoyers via lttng-dev Reply-To: Mathieu Desnoyers Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" T24gMjAyMy0wMy0xMyAxMTozMCwgT25kxZllaiBTdXLDvSB3cm90ZToKPiBIaSBNYXR0aGlldSwK PiAKPiBJIHNwZW50IHNvbWUgbW9yZSB0aW1lIHdpdGggdGhlIHVzZXJzcGFjZS1yY3Ugb24gRnJp ZGF5IGFuZCBvdmVyIHdlZWtlbmQgYW5kCj4gbm93IEkgYW0gaW4gbXVjaCBiZXR0ZXIgcGxhY2Uu Cj4gCj4+IE9uIDEzLiAzLiAyMDIzLCBhdCAxNToyOSwgTWF0aGlldSBEZXNub3llcnMgPG1hdGhp ZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4gd3JvdGU6Cj4+Cj4+IE9uIDIwMjMtMDMtMTEgMDE6 MDQsIE9uZMWZZWogU3Vyw70gdmlhIGx0dG5nLWRldiB3cm90ZToKPj4+IEhleSwKPj4+IHNvLCB3 ZSBhcmUgaW50ZWdyYXRpbmcgdXNlcnNwYWNlLXJjdSB0byBCSU5EIDkgKHlheSEpIGFuZCBhcyBl eHBlcmltZW50LAo+Pj4gSSBhbSByZXdyaXRpbmcgdGhlIGludGVybmFsIGFkZHJlc3MgZGF0YWJh c2UgKGtlZXBzIHRoZSBpbmZyYXN0cnVjdHVyZQo+Pj4gaW5mb3JtYXRpb24gYWJvdXQgbmFtZXMg YW5kIGFkZHJlc3NlcykuCj4+Cj4+IFRoYXQncyBpbmRlZWQgdmVyeSBpbnRlcmVzdGluZyAhCj4g Cj4gVGhhbmtzIGZvciB0aGUgdXNlcnNwYWNlLXJjdSEgSXQgc2F2ZXMgYSBsb3Qgb2YgdGltZSAt IHdoaWxlIG15IGNvbGxlYWd1ZSBUb255IEZpbmNoCj4gYWxyZWFkeSB3cm90ZSBvdXIgaW50ZXJu YWwgUVNCUiBpbXBsZW1lbnRhdGlvbiBmcm9tIHNjcmF0Y2gsIGl0IHdvdWxkIGJlIHdhc3RlIG9m Cj4gdGltZSB0byB0cnkgdG8gcmVpbXBsZW1lbnQgdGhlIENEUyBwYXJ0IG9mIHRoZSBsaWJyYXJ5 Lgo+IAo+IFRoaXMgaXMgcGFydCBvZiBsYXJnZXIgd29yayB0byByZXBsYWNlIHRoZSBpbnRlcm5h bCBCSU5EIDkgZGF0YWJhc2UgdGhhdCdzIGN1cnJlbnRseQo+IGltcGxlbWVudGVkIGFzIHJ3bG9j a2VkIFJCVCB3aXRoIHFwdHJpZSwgaWYgeW91IGFyZSBpbnRlcmVzdGVkIFRvbnkgaGFzIGdvb2QK PiBzdW1tYXJ5IGhlcmU6IGh0dHBzOi8vZG90YXQuYXQvQC8yMDIzLTAyLTI4LXFwLWJpbmQuaHRt bAoKU3BlYWtpbmcgb2YgdHJpZXMsIEkgaGF2ZSBpbXBsZW1lbnRlZCBSQ1UgSnVkeSBhcnJheXMg aW4gbGlidXJjdSBmZWF0dXJlIGJyYW5jaGVzIGEKd2hpbGUgYmFjay4gVGhvc2UgbmV2ZXIgbWFk ZSBpdCB0byB0aGUgbGlidXJjdSBtYXN0ZXIgYnJhbmNoIGJlY2F1c2UgSSBoYWQgbm8gcmVhbC1s aWZlCnVzZSBmb3IgdGhvc2Ugc28gZmFyLCBhbmQgSSBkaWQgbm90IHdhbnQgdG8gZXhwb3NlIGEg cHVibGljIEFQSSB0aGF0IHdvdWxkIGJpdHJvdCB3aXRob3V0CnJlYWwtbGlmZSB1c2VyIGZlZWRi YWNrLgoKVGhlIGxvb2t1cHMgYW5kIG9yZGVyZWQgdHJhdmVyc2FscyAobmV4dC9wcmV2KSBhcmUg ZW50aXJlbHkgUkNVLCBhbmQgdXBkYXRlcyBhcmUKZWl0aGVyIHNpbmdsZS10aHJlYWRlZCwgb3Ig dXNlIGEgc3RyYXRlZ3kgd2hlcmUgbG9ja2luZyBpcyBkaXN0cmlidXRlZCB3aXRoaW4KdGhlIHRy aWUgc28gdXBkYXRlcyB0byBkYXRhIHNwYXRpYWxseSBkaXNjb250aW51b3VzIHdvdWxkIG5vdCBj b250ZW5kIHdpdGggZWFjaCBvdGhlci4KCk15IG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHN1cHBv cnRlZCBpbnRlZ2VyIGtleXMgYXMgd2VsbCBhcyB2YXJpYWJsZS1sZW5ndGggc3RyaW5nIGtleXMu CgpUaGUgYWR2YW50YWdlIG9mIEp1ZHkgYXJyYXlzIGlzIHRoYXQgaXQgbWluaW1pemVzIHRoZSBu dW1iZXIgb2YgY2FjaGUtbGluZXMgdG91Y2hlZApvbiBsb29rdXAgdHJhdmVyc2FsLiBMZXQgbWUg a25vdyBpZiB0aGlzIHdvdWxkIGJlIHVzZWZ1bCBmb3IgeW91ciB1c2UtY2FzZXMsIGFuZCBpZgpz byBJIGNhbiBwcm92aWRlIGxpbmtzIHRvIHByb3RvdHlwZSBicmFuY2hlcy4KClsuLi5dCgo+IAo+ Pj4gU28gdGhpcyBpcyBwYXJ0IHdpdGggdGhlIGhhc2h0YWJsZSBsb29rdXAgd2hpY2ggc2VlbXMg dG8gd29yayB3ZWxsOgo+Pj4gICAgICAgICAgcmN1X3JlYWRfbG9jaygpOwo+Pj4gICAgICAgICAg c3RydWN0IGNkc19sZmh0X2l0ZXIgaXRlcjsKPj4+ICAgICAgICAgIHN0cnVjdCBjZHNfbGZodF9u b2RlICpodF9ub2RlOwo+Pj4gICAgICAgICAgY2RzX2xmaHRfbG9va3VwKGFkYi0+bmFtZXNfaHQs IGhhc2h2YWwsIG5hbWVzX21hdGNoLCAma2V5LCAmaXRlcik7Cj4+PiAgICAgICAgICBodF9ub2Rl ID0gY2RzX2xmaHRfaXRlcl9nZXRfbm9kZSgmaXRlcik7Cj4+PiAgICAgICAgICBib29sIHVubGlu ayA9IGZhbHNlOwo+Pj4gICAgICAgICAgaWYgKGh0X25vZGUgPT0gTlVMTCkgewo+Pj4gICAgICAg ICAgICAgICAgICAvKiBBbGxvY2F0ZSBhIG5ldyBuYW1lIGFuZCBhZGQgaXQgdG8gdGhlIGhhc2gg dGFibGUuICovCj4+PiAgICAgICAgICAgICAgICAgIGFkYm5hbWUgPSBuZXdfYWRibmFtZShhZGIs IG5hbWUsIHN0YXJ0X2F0X3pvbmUpOwo+Pj4gICAgICAgICAgICAgICAgICBodF9ub2RlID0gY2Rz X2xmaHRfYWRkX3VuaXF1ZShhZGItPm5hbWVzX2h0LCBoYXNodmFsLAo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19tYXRjaCwgJmtleSwKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkYm5hbWUt Pmh0X25vZGUpOwo+Pj4gICAgICAgICAgICAgICAgICBpZiAoaHRfbm9kZSAhPSAmYWRibmFtZS0+ aHRfbm9kZSkgewo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElTQ19SX0VYSVNUUyAq Lwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfYWRibmFtZShhZGJuYW1lKTsK Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGJuYW1lID0gTlVMTDsKPj4+ICAgICAgICAg ICAgICAgICAgfQo+Pj4gICAgICAgICAgfQo+Pj4gICAgICAgICAgaWYgKGFkYm5hbWUgPT0gTlVM TCkgewo+Pj4gICAgICAgICAgICAgICAgICBJTlNJU1QoaHRfbm9kZSAhPSBOVUxMKTsKPj4+ICAg ICAgICAgICAgICAgICAgYWRibmFtZSA9IGNhYV9jb250YWluZXJfb2YoaHRfbm9kZSwgZG5zX2Fk Ym5hbWVfdCwgaHRfbm9kZSk7Cj4+PiAgICAgICAgICAgICAgICAgIHVubGluayA9IHRydWU7Cj4+ PiAgICAgICAgICB9Cj4+PiAgICAgICAgICBkbnNfYWRibmFtZV9yZWYoYWRibmFtZSk7Cj4+Cj4+ IFdoYXQgaXMgdGhpcyBkbnNfYWRibmFtZV9yZWYoKSBzdXBwb3NlZCB0byBkbyA/IEFuZCBpcyB0 aGVyZSBhIHJlZmVyZW5jZSB0byBhZGJuYW1lCj4+IHRoYXQgaXMgc3RpbGwgdXNlZCBhZnRlciBy Y3VfcmVhZF91bmxvY2soKSA/IFdoYXQgZ3VhcmFudGVlcyB0aGUgZXhpc3RlbmNlIG9mIHRoZQo+ PiBhZGJuYW1lIGFmdGVyIHJjdV9yZWFkX3VubG9jaygpID8KPiAKPiBUaGlzIGlzIHBhcnQgb2Yg dGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZyAtIHRoZXJlJ3MgYSBtYWNybyB0aGF0IGV4 cGVjdHMgYGlzY19yZWZjb3VudF90IHJlZmVyZW5jZXM7YAo+IG1lbWJlciBvbiB0aGUgc3RydWN0 IGFuZCBpdCBjcmVhdGVzIF9yZWYsIF91bnJlZiwgX2F0dGFjaCBhbmQgX2RldGFjaCBmdW5jdGlv bnMgZm9yIGVhY2ggc3RydWN0Lgo+IAo+IFRoZSBsYXN0IF9kZXRhY2gvX3VucmVmIGNhbGxzIGEg ZGVzdHJveSBmdW5jdGlvbi4KPiAKPj4+ICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOwo+Pj4g YW5kIGhlcmUncyB0aGUgcGFydCB3aGVyZSBMUlUgZ2V0cyB1cGRhdGVkOgo+Pj4gICAgICAgICAg TE9DSygmYWRibmFtZS0+bG9jayk7IC8qIE11c3QgYmUgdW5sb2NrZWQgYnkgdGhlIGNhbGxlciAq Lwo+Pgo+PiBJIHN1c3BlY3QgeW91IHVzZSBhIHNjaGVtZSB3aGVyZSB5b3UgaG9sZCB0aGUgUkNV IHJlYWQtc2lkZSB0byBwZXJmb3JtIHRoZSBsb29rdXAsIGFuZAo+PiB0aGVuIHlvdSB1c2UgdGhl IG9iamVjdCB3aXRoIGFuIGludGVybmFsIGxvY2sgaGVsZC4gQnV0IGV4cGVjdGluZyB0aGUgb2Jq ZWN0IHRvIHN0aWxsCj4+IGV4aXN0IGFmdGVyIHJjdSByZWFkIHVubG9jayBpcyBpbmNvcnJlY3Qs IHVubGVzcyBzb21lIG90aGVyIHJlZmVyZW5jZSBjb3VudGluZyBzY2hlbWUKPj4gaXMgdXNlZC4K PiAKPiBZZWFoLCBJIHdhcyB0cnlpbmcgdG8gbWluaW1pemUgdGhlIHNlY3Rpb25zIHdoZXJlIHdl IGhvbGQgdGhlIHJjdV9yZWFkIGxvY2tzLCBidXQgSSBnYXZlCj4gdXAgYW5kIG5vdyB0aGVyZSdz IHJjdV9yZWFkIGxvY2sgaGVsZCBmb3IgbG9uZ2VyIHBlcmlvZHMgb2YgdGltZS4KCldlJ3ZlIHVz ZWQgdGhhdCBraW5kIG9mIHNjaGVtZSBpbiBMVFRuZyBsdHRuZy1yZWxheWQsIHdoZXJlIHdlIHVz ZSBSQ1UgZm9yIHNob3J0LXRlcm0KZXhpc3RlbmNlIGd1YXJhbnRlZSwgYW5kIHJlZmVyZW5jZSBj b3VudGluZyBmb3IgbG9uZ2VyLXRlcm0gZXhpc3RlbmNlIGd1YXJhbnRlZS4gQW4KZXhhbXBsZSBj YW4gYmUgZm91bmQgaGVyZToKCmh0dHBzOi8vZ2l0aHViLmNvbS9sdHRuZy9sdHRuZy10b29scy9i bG9iL21hc3Rlci9zcmMvYmluL2x0dG5nLXJlbGF5ZC92aWV3ZXItc3RyZWFtLmNwcAoKdmlld2Vy X3N0cmVhbV9nZXRfYnlfaWQoKSBhdHRlbXB0cyBsb29rdXAgZnJvbSB0aGUgaGFzaCB0YWJsZSwg YW5kIHJlLXZhbGlkYXRlcyB0aGF0IHRoZQpvYmplY3QgZXhpc3RzIHdpdGggdmlld2VyX3N0cmVh bV9nZXQoKSwgd2hpY2ggY2hlY2tzIGlmIHRoZSByZWZjb3VudCBpcyBhbHJlYWR5IDAgYXMgaXQK dHJpZXMgdG8gaW5jcmVtZW50IGl0IHdpdGggdXJjdV9yZWZfZ2V0X3VubGVzc196ZXJvKCkuIElm IHplcm8sIGl0IGRvZXMgYXMgaWYgdGhlIG9iamVjdAp3YXMgbm90IGZvdW5kLiBJIHJlY29tbWVu ZCB0aGlzIGtpbmQgb2Ygc2NoZW1lIGlmIHlvdSBpbnRlbmQgdG8gdXNlIGJvdGggUkNVIGFuZCBy ZWZlcmVuY2UKY291bnRpbmcuCgpUaGVuIHlvdSBjYW4gcGxhY2UgYSBtdXRleCB3aXRoaW4gdGhl IG9iamVjdCwgYW5kIHVzZSB0aGF0IG11dGV4IHRvIHByb3ZpZGUgbXV0dWFsCmV4Y2x1c2lvbiBi ZXR3ZWVuIGNvbmN1cnJlbnQgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCB0aGF0IG5lZWQgdG8gYmUg c2VyaWFsaXplZC4KCkluIHRoZSBkZXN0cm95IGhhbmRsZXIgKGNhbGxlZCB3aGVuIHRoZSByZWZl cmVuY2UgY291bnQgcmVhY2hlcyAwKSwgeW91IHdpbGwgdHlwaWNhbGx5CndhbnQgdG8gdW5saW5r IHlvdXIgb2JqZWN0IGZyb20gdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIGhvbGRpbmcgcmVm ZXJlbmNlcyB0byBpdAooaGFzaCB0YWJsZXMsIGxpc3RzKSwgYW5kIHRoZW4gdXNlIGNhbGxfcmN1 KCkgdG8gaW52b2tlIHJlY2xhaW0gb2YgdGhlIG9iamVjdCBhZnRlciBhCmdyYWNlIHBlcmlvZC4K Cj4gCj4+PiAgICAgICAgICBpZiAoTkFNRV9ERUFEKGFkYm5hbWUpKSB7Cj4+PiAgICAgICAgICAg ICAgICAgIFVOTE9DSygmYWRibmFtZS0+bG9jayk7Cj4+PiAgICAgICAgICAgICAgICAgIGRuc19h ZGJuYW1lX2RldGFjaCgmYWRibmFtZSk7Cj4+PiAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47 Cj4+PiAgICAgICAgICB9Cj4+PiAgICAgICAgICBpZiAoYWRibmFtZS0+bGFzdF91c2VkICsgQURC X0NBQ0hFX01JTklNVU0gPD0gbGFzdF91cGRhdGUpIHsKPj4+ICAgICAgICAgICAgICAgICAgYWRi bmFtZS0+bGFzdF91c2VkID0gbm93Owo+Pj4gICAgICAgICAgICAgICAgICBMT0NLKCZhZGItPm5h bWVzX2xydV9sb2NrKTsKPj4+ICAgICAgICAgICAgICAgICAgaWYgKHVubGluaykgewo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGNkc19saXN0X2RlbF9yY3UoJmFkYm5hbWUtPmxpc3Rfbm9k ZSk7Cj4+PiAgICAgICAgICAgICAgICAgIH0KPj4KPj4gVGhpcyBsb29rcyBvZGQuIEkgZG9uJ3Qg c2VlIHRoZSBjb2RlIGltcGxlbWVudGluZyB0cmF2ZXJzYWwgb2YgdGhpcyBsaXN0LCBidXQKPj4g SSB3b3VsZCBleHBlY3QgYSBncmFjZSBwZXJpb2QgYmV0d2VlbiB1bmxpbmsgb2YgdGhlIG5vZGUg ZnJvbSBhIGxpc3QgYW5kIGluc2VydGlvbgo+PiBpbnRvIGFub3RoZXIgbGlzdCwgb3RoZXJ3aXNl IGlmIHRoZXJlIGFyZSBSQ1UgcmVhZGVycyB0cmF2ZXJzaW5nIHRoZSBsaXN0Cj4+IGNvbmN1cnJl bnRseSwgdGhleSBjYW4gb2JzZXJ2ZSBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuCj4gCj4gVGhhdCdz IHByb2JhYmx5IHRoZSBwYXJ0IEkgYW0gZ2V0dGluZyB3cm9uZy4gVGhpcyBhbGwgaXMgZmFpcmx5 IG5ldyB0byBtZSBhbmQgbXkgYnJhaW4KPiBpcyBzdGlsbCBhZGp1c3RpbmcgdG8gdGhlIG5ldyBw YXJhZGlnbXMuCgpPbmUgd2F5IHdvdWxkIGJlIHRvIGludm9rZSBzeW5jaHJvbml6ZV9yY3UoKSBi ZXR3ZWVuIGRlbF9yY3UgYW5kIGFkZF90YWlsX3JjdSwKYnV0IGl0IHdvdWxkIHByb2JhYmx5IGJl IHRvbyBjb3N0bHkgcGVyZm9ybWFuY2Utd2lzZS4KCkFub3RoZXIgd2F5IHRoYXQgd291bGQgYmUg YSBiZXR0ZXIgZml0IHRvIHRoZSBSQ1UgbWluZHNldCB3b3VsZCBiZSB0byBjcmVhdGUgYQpjb3B5 IG9mIHRoZSBhZGJuYW1lIG9iamVjdCwgYWRkIF90aGF0XyBvYmplY3QgdG8gdGhlIHRhaWwsIGFu ZCB1c2UgY2FsbF9yY3UKdG8gZnJlZSB0aGUgb2xkIG9iamVjdCB0aGF0IGhhcyBiZWVuIHJlbW92 ZWQuIFRoZXJlIGlzIG9mIGNvdXJzZSBleHRyYSBvdmVyaGVhZAphc3NvY2lhdGVkIHdpdGggdGhp cyBjb3B5LgoKPiAKPj4+ICAgICAgICAgICAgICAgICAgY2RzX2xpc3RfYWRkX3RhaWxfcmN1KCZh ZGJuYW1lLT5saXN0X25vZGUsICZhZGItPm5hbWVzX2xydSk7Cj4+PiAgICAgICAgICAgICAgICAg IFVOTE9DSygmYWRiLT5uYW1lc19scnVfbG9jayk7Cj4+PiAgICAgICAgICB9Cj4+PiBUaGUgTkFN RV9ERUFEIGdldHMgdXBkYXRlZCB1bmRlciB0aGUgYWRibmFtZS0+bG9jayBpbiBleHBpcmVfbmFt ZSgpOgo+Pj4gICAgICAgICAgaWYgKCFOQU1FX0RFQUQoYWRibmFtZSkpIHsKPj4+ICAgICAgICAg ICAgICAgICAgYWRibmFtZS0+ZmxhZ3MgfD0gTkFNRV9JU19ERUFEOwo+Pj4gICAgICAgICAgICAg ICAgICAvKiBSZW1vdmUgdGhlIGFkYm5hbWUgZnJvbSB0aGUgaGFzaHRhYmxlLi4uICovCj4+PiAg ICAgICAgICAgICAgICAgICh2b2lkKWNkc19sZmh0X2RlbChhZGItPm5hbWVzX2h0LCAmYWRibmFt ZS0+aHRfbm9kZSk7Cj4+Cj4+IEkgZG9uJ3QgaGF2ZSB0aGUgZnVsbCBjb250ZXh0IGhlcmUsIGJ1 dCBBRkFJUiBjZHNfbGZodF9kZWwoKSBhbGxvd3MgdHdvIHJlbW92YWxzCj4+IG9mIHRoZSBzYW1l IGh0X25vZGUgdG8gYmUgZG9uZSBjb25jdXJyZW50bHksIGFuZCBvbmx5IG9uZSB3aWxsIHN1Y2Nl ZWQgKHdoaWNoIGlzCj4+IHByb2JhYmx5IHdoYXQgaGFwcGVucyBoZXJlKS4gY2RzX2xpc3RfZGVs X3JjdSgpIGhvd2V2ZXIgZG9lcyBub3QgYWxsb3cgY29uY3VycmVudAo+PiByZW1vdmFscyBvZiBh IGxpc3Rfbm9kZS4gU28gaWYgeW91IHNvbWVob3cgZ2V0IHR3byBSQ1UgbG9va3VwcyB0byBmaW5k IHRoZSBzYW1lCj4+IG5vZGUgaW4gZXhwaXJlX25hbWUsIG9uZSB3aWxsIGxpa2VseSBkbyBhbiBl eHRyYSB1bmV4cGVjdGVkIGNkc19saXN0X2RlbF9yY3UoKS4KPiAKPiBBaCwgdGhhdCBtaWdodCBl eHBsYWluIHRoZSBiZWhhdmlvdXIuICBIb3dldmVyIHRoZSBjdXJyZW50IGJyYW5jaCBkb2Vzbid0 IG1hbmlmZXN0Cj4gdGhpcyBhbnltb3JlLgoKWW91IGNhbiB0aGVvcmV0aWNhbGx5IHRlc3QgZm9y IHN1Y2Nlc3MvZmFpbHVyZSByZXN1bHQgb2YgY2RzX2xmaHRfZGVsIHRvIHByZXZlbnQKZG9pbmcg dGhlIHByb2JsZW1hdGljIGxpc3RfZGVsX3JjdS4gQnV0IGJld2FyZSBvZiBkb3VibGUtZnJlZSBv ciB1c2UtYWZ0ZXItZnJlZSBpZgp5b3UgZW5kIHVwIHJlbHlpbmcgb24gc3VjY2VzcyBvZiBjZHNf bGZodF9kZWwgdG8gcHJldmVudCB0ZWFyaW5nIGRvd24gdGhlIHNhbWUKb2JqZWN0IHR3aWNlLgoK PiAKPj4+ICAgICAgICAgICAgICAgICAgLyogLi4uIGFuZCBMUlUgbGlzdCAqLwo+Pj4gICAgICAg ICAgICAgICAgICBMT0NLKCZhZGItPm5hbWVzX2xydV9sb2NrKTsKPj4+ICAgICAgICAgICAgICAg ICAgY2RzX2xpc3RfZGVsX3JjdSgmYWRibmFtZS0+bGlzdF9ub2RlKTsKPj4+ICAgICAgICAgICAg ICAgICAgVU5MT0NLKCZhZGItPm5hbWVzX2xydV9sb2NrKTsKPj4+ICAgICAgICAgIH0KPj4+IFNv LCBub3cgdGhlIHByb2JsZW0gaXMgdGhhdCBzb21ldGltZXMgSSBnZXQgYSBjcmFzaCB1bmRlciBs b2FkOgo+Pj4gKGdkYikgYnQKPj4+ICMwICAweDAwMDA3ZmFlODdhMzRjOTYgaW4gY2RzX2xpc3Rf ZGVsX3JjdSAoZWxlbT0weDdmYWUzN2U3ODg4MCkgYXQgL3Vzci9pbmNsdWRlL3g4Nl82NC1saW51 eC1nbnUvdXJjdS9yY3VsaXN0Lmg6NzEKPj4+ICMxICBnZXRfYXR0YWNoZWRfYW5kX2xvY2tlZF9u YW1lIChhZGI9YWRiQGVudHJ5PTB4N2ZhZTgzMDE0MmEwLCBuYW1lPW5hbWVAZW50cnk9MHg3ZmFl ODA0ZmM5YjAsIHN0YXJ0X2F0X3pvbmU9dHJ1ZSwgbm93PTxvcHRpbWl6ZWQgb3V0PikgYXQgYWRi LmM6MTQ0Ngo+Pj4gIzIgIDB4MDAwMDdmYWU4N2EzOTJiZiBpbiBkbnNfYWRiX2NyZWF0ZWZpbmQg KGFkYj0weDdmYWU4MzAxNDJhMCwgbG9vcD0weDdmYWU4NDJjM2EyMCwgY2I9Y2JAZW50cnk9MHg3 ZmFlODdiMjhkOWYgPGZjdHhfZmluZGRvbmU+LCBjYmFyZz0weDdmYWU3YzY3OTAwMCwgbmFtZT1u YW1lQGVudHJ5PTB4N2ZhZTgwNGZjOWIwLCBxbmFtZT0weDdmYWU3YzY3OTAxMCwgcXR5cGU9MSwg b3B0aW9ucz02Mywgbm93PTxvcHRpbWl6ZWQgb3V0PiwgdGFyZ2V0PTB4MCwgcG9ydD01MywgZGVw dGg9MSwgcWM9MHg3ZmFlN2M2NTEwNjAsIGZpbmRwPTB4N2ZhZTgwNGZjNjk4KSBhdCBhZGIuYzoy MTQ5Cj4+PiAoZ2RiKSBmcmFtZSAwCj4+PiAjMCAgMHgwMDAwN2ZhZTg3YTM0Yzk2IGluIGNkc19s aXN0X2RlbF9yY3UgKGVsZW09MHg3ZmFlMzdlNzg4ODApIGF0IC91c3IvaW5jbHVkZS94ODZfNjQt bGludXgtZ251L3VyY3UvcmN1bGlzdC5oOjcxCj4+PiA3MSBlbGVtLT5uZXh0LT5wcmV2ID0gZWxl bS0+cHJldjsKPj4+IChnZGIpIHByaW50IGVsZW0tPm5leHQKPj4+ICQxID0gKHN0cnVjdCBjZHNf bGlzdF9oZWFkICopIDB4MAo+Pj4gKGdkYikgcHJpbnQgZWxlbQo+Pj4gJDIgPSAoc3RydWN0IGNk c19saXN0X2hlYWQgKikgMHg3ZmFlMzdlNzg4ODAKPj4+IFNvLCBJIHN1c3BlY3QsIEkgYW0gZG9p bmcgc29tZXRoaW5nIHdyb25nIHdoZW4gdXBkYXRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSB0aGUg bmFtZSBpbiB0aGUgTFJVIGxpc3QuCj4+PiBUaGVyZSBhcmUgY291cGxlIG9mIHBsYWNlcyB3aGVy ZSB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIExSVSBsaXN0IChvdmVybWVtIGNsZWFuaW5nIGNhbiBr aWNrLWluLCB0aGUgdXNlciBpbml0aWF0ZWQgY2xlYW5pbmcgY2FuIHN0YXJ0LCBzaHV0ZG93biBj YW4gYmUgaGFwcGVuaW5nLi4uKQo+Pgo+PiBJdCBnZXRzIG1lIHRvIHdvbmRlciB3aGV0aGVyIHlv dSByZWFsbHkgbmVlZCBSQ1UgZm9yIHRoZSBMUlUgbGlzdCA/IEFyZSB0aG9zZSBsb29rdXBzCj4+ IHZlcnkgZnJlcXVlbnQgPyBBbmQgZG8gdGhleSB0eXBpY2FsbHkgZW5kIHVwIG5lZWRpbmcgdG8g Z3JhYiBhIGxvY2sgdG8gcHJvdGVjdCBhZ2FpbnN0Cj4+IGNvbmN1cnJlbnQgbGlzdCBtb2RpZmlj YXRpb25zID8KPiAKPiBUaGVzZSBhcmUgbG9va3VwcyB0aGF0IGhhcHBlbiBmcmVxdWVudGx5IHdo ZW4gdGhlIGNhY2hlIGlzIGNvbGQgLSBpdCBrZWVwcyB0aGUgZGVsZWdhdGlvbgo+IG1hcHBpbmcg KGUuZy4gKipuYW1lKiogaXMgc2VydmVyIGJ5ICoqbmFtZXNlcnZlcioqIChhZGJuYW1lKSB0aGF0 IGhhcyB0aGVzZSAqKklQIGFkZHJlc3NlcyoqCj4gKGFkYmVudHJpZXMpKS4KCk9LLgoKU28gdGhl IGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIExSVSwgQUZBSVUsIGFyZToKCi0gZnJlcXVlbnQgZW5x dWV1ZSAobW9zdCByZWNlbnQpLAotIGZyZXF1ZW50ICJwaWNrIiBpdGVtIHdpdGhpbiB0aGUgbGlz dCB0byByZS1lbnF1ZXVlIGl0IGFzIG1vc3QgcmVjZW50LAotIGZyZXF1ZW50IGRlcXVldWUgb2Yg dGhlIGxhc3QgTiBvbGRlc3QgaXRlbXMuCgpIb3dldmVyIEkgZG9uJ3Qgc2VlIHRoYXQgaXRlcmF0 aW9uIG9uIHRoZSBsaXN0IGlzIGluaGVyZW50bHkgbmVlZGVkLCBhdCBsZWFzdApub3QgZnJlcXVl bnRseSwgZXhjZXB0IGFzIG1lYW5zIHRvIGltcGxlbWVudCB0aGUgb3BlcmF0aW9ucyBhYm92ZSwg YW0gSSBjb3JyZWN0ID8KCj4gCj4gVGhlcmUgYXJlIHR3byBtb3JlIHBsYWNlcyBpbiB0aGUgcmVz b2x2ZXIgaG90IHBhdGggdGhhdCBhcmUgdXNpbmcgaGFzaHRhYmxlcyBub3cgd2hpY2ggSSBpbnRl bmQKPiB0byByZXBsYWNlIHdpdGggcmN1bGZoYXNoOgo+IAo+IDEuICJmaW5kcyIgKHRoaXMgaXMg Zm9yIGNvYWxlc2NpbmcgY2xpZW50IHJlcXVlc3RzLCBlLmcuIGlmIDEwMCBjbGllbnRzIGFza3Mg Zm9yIGdvb2dsZS5jb20sIHRoZSBzaG91bGQgYmUKPiAgICAgb25seSBvbmUgb3V0Z29pbmcgcXVl cnkpCj4gCj4gMi4gcmVzb2x2ZXIgY291bnRlciAtIHRoZXNlIGFyZSB1c2VkIGFzIGJhbmRhaWQg cHJvdGVjdGlvbiBhZ2FpbnN0IHJhbmRvbS1zdWJkb21haW4gYXR0YWNrcywgYnV0Cj4gICAgIHRo ZSBsb2dpYyBpcyBzaW1pbGFyIC0gbWFrZSBhIGxvb2t1cCBmb3IgcGFyZW50IGRvbWFpbiBhbmQg aWYgdGhlIGNvdW50ZXIgZXhjZWVkcyA8bGltaXQ+LCBkcm9wIHRoZQo+ICAgICBleHRyYSBxdWVy eS4KPiAKPiBUaGVzZSBmb3VyIGFyZSBpbiB0aGUgY29sZCBjYWNoZSByZXNvbHZlciBob3RwYXRo IGFuZCBhcmUvd2VyZSBvcmlnaW5hbGx5IHByb3RlY3RlZCBieSBSV0xPQ0sKPiAodXNpbmcgbm9u LWdsaWJjIFJXTE9DSyBoZWxwZWQgYSBiaXQsIGJ1dCBSQ1UgaXMgYmV0dGVyKS4KClllcywgcnds b2NrIGlzIGtub3duIHRvIGhhdmUgZGlmZmljdWx0eSBzY2FsaW5nIGNvbXBhcmVkIHRvIFJDVS4g OikKClRoYW5rcywKCk1hdGhpZXUKCi0tIApNYXRoaWV1IERlc25veWVycwpFZmZpY2lPUyBJbmMu Cmh0dHBzOi8vd3d3LmVmZmljaW9zLmNvbQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbHR0bmctZGV2IG1haWxpbmcgbGlzdApsdHRuZy1kZXZAbGlzdHMu bHR0bmcub3JnCmh0dHBzOi8vbGlzdHMubHR0bmcub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9sdHRuZy1kZXYK