From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id CE1A1384D15E for ; Mon, 6 Jun 2022 22:21:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CE1A1384D15E Received: by mail-pl1-x62e.google.com with SMTP id o6so8169754plg.2 for ; Mon, 06 Jun 2022 15:21:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ImfP0qynIkqvHXgzMjE1SHvDoncwNYenp1nuzGbJFg0=; b=xAJeUzy59gMDxvJe9FZRQv+qSNqeD92oavPsyJrdR/nsx/COnd5f61scUEmFgnukFF 9biwHJ6It2cu1p61LlcJAvzW6gyLB3xNWDIVNIAPUg8OoDshCni5KcPPJhMe1sCHwwEl Ytvg/khwHvSy1fADwTdO6x5VRrKgNTNYIFvXYgOggshCLwbmXEOxSvyDZUdmFTRwaCHY FJwdmujl2+gh4Sa7DSrKNzJ513FatevZaNMLCNu36OwHDKU42OE8kPYCJPqpIakdkkrB XIFLP3w9a44BNnU5E8/2BYk1MQ5BRQ6abkUj7jP7CHYspjeL6zenGKI8RgdZy63qhG1l 7Edg== X-Gm-Message-State: AOAM53218vj/heKBbc8j+wUF1GmzejUzwtSamKP+c7cHU6D9moVQDZIH 2cCXN8HGNGT4Smh7GCmIR7m3KLDdj9LzDdsTxG2PsQ9EDoE= X-Google-Smtp-Source: ABdhPJw73qs4hfb6iNfCEPFiGp5YJ+vdtDNJDKhb4EqXXTfJRK+W4plmxEip9YCjYRy+BMuFdqbS6lXdCFLwOgJ7E1I= X-Received: by 2002:a17:902:7e89:b0:161:f196:b4b with SMTP id z9-20020a1709027e8900b00161f1960b4bmr26148822pla.40.1654554097525; Mon, 06 Jun 2022 15:21:37 -0700 (PDT) MIME-Version: 1.0 From: Ahmed Sayed Mousse Date: Tue, 7 Jun 2022 00:21:25 +0200 Message-ID: Subject: [patch] libgompd: Add thread handles To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000003eedc905e0cee58d" X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jun 2022 22:21:41 -0000 --0000000000003eedc905e0cee58d Content-Type: text/plain; charset="UTF-8" This patch is the initial implementation of OpenMP-API specs book section 20.5.5 with title "Thread Handles" libgomp/ChangeLog 2022-05-06 Ahmed Sayed * Makefile.am (libgompd_la_SOURCES): Add ompd-threads.c. * Makefile.in: Regenerate. * ompd-support.h ( gompd_thread_initial_tls_bias ): New Variable. * ompd-support.c ( gompd_thread_initial_tls_bias ): New Variable. ( gompd_load ): ( gompd_thread_initial_tls_bias ): Initialized with &gomp_tls_data - pthread_self (). * ompd-threads.c: New. --0000000000003eedc905e0cee58d Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l43aofgd0 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0gYi9saWJnb21wL01ha2VmaWxlLmFtCmlu ZGV4IDZkOTEzYTkzZTdmLi4yM2Y1YmVkZTFiZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmls ZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxlLmFtCkBAIC05NCw3ICs5NCw3IEBAIGxpYmdvbXBf bGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52LmMg ZXJyb3IuYyBcCiAJcHJpb3JpdHlfcXVldWUuYyBhZmZpbml0eS1mbXQuYyB0ZWFtcy5jIGFsbG9j YXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0LmMgb21wZC1zdXBwb3J0LmMK Ci1saWJnb21wZF9sYV9TT1VSQ0VTID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWlj di5jCitsaWJnb21wZF9sYV9TT1VSQ0VTID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBk LWljdi5jIG9tcGQtdGhyZWFkcy5jCgogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3BsdWdpbi9NYWtl ZnJhZy5hbQoKZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01ha2Vm aWxlLmluCmluZGV4IDQwZjg5NmI1ZjAzLi43YWNkY2JmMzFkNSAxMDA2NDQKLS0tIGEvbGliZ29t cC9NYWtlZmlsZS5pbgorKysgYi9saWJnb21wL01ha2VmaWxlLmluCkBAIC0yMzMsNyArMjMzLDgg QEAgYW1fbGliZ29tcF9sYV9PQkpFQ1RTID0gYWxsb2MubG8gYXRvbWljLmxvIGJhcnJpZXIubG8g Y3JpdGljYWwubG8gXAogCWFmZmluaXR5LWZtdC5sbyB0ZWFtcy5sbyBhbGxvY2F0b3IubG8gb2Fj Yy1wcm9maWxpbmcubG8gXAogCW9hY2MtdGFyZ2V0LmxvIG9tcGQtc3VwcG9ydC5sbyAkKGFtX19v YmplY3RzXzEpCiBsaWJnb21wX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdvbXBfbGFfT0JKRUNUUykK LWFtX2xpYmdvbXBkX2xhX09CSkVDVFMgPSBvbXBkLWluaXQubG8gb21wZC1oZWxwZXIubG8gb21w ZC1pY3YubG8KK2FtX2xpYmdvbXBkX2xhX09CSkVDVFMgPSBvbXBkLWluaXQubG8gb21wZC1oZWxw ZXIubG8gb21wZC1pY3YubG8gXAorCW9tcGQtdGhyZWFkcy5sbwogbGliZ29tcGRfbGFfT0JKRUNU UyA9ICQoYW1fbGliZ29tcGRfbGFfT0JKRUNUUykKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkAp CiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKQEAgLTU4Myw3ICs1ODQsNyBA QCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNh bC5jIGVudi5jIFwKIAlvYWNjLWFzeW5jLmMgb2FjYy1wbHVnaW4uYyBvYWNjLWN1ZGEuYyBwcmlv cml0eV9xdWV1ZS5jIFwKIAlhZmZpbml0eS1mbXQuYyB0ZWFtcy5jIGFsbG9jYXRvci5jIG9hY2Mt cHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0LmMgb21wZC1zdXBwb3J0LmMgJChhbV9fYXBwZW5k XzcpCi1saWJnb21wZF9sYV9TT1VSQ0VTID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBk LWljdi5jCitsaWJnb21wZF9sYV9TT1VSQ0VTID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBv bXBkLWljdi5jIG9tcGQtdGhyZWFkcy5jCgogIyBOdmlkaWEgUFRYIE9wZW5BQ0MgcGx1Z2luLgog QFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X3ZlcnNpb25faW5mbyA9IC12 ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCkBAIC04MDEsNiArODAyLDcgQEAgZGlzdGNs ZWFuLWNvbXBpbGU6CiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERF UERJUikvb21wZC1pY3YuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAg QGFtX19xdW90ZUAuLyQoREVQRElSKS9vbXBkLWluaXQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9U UlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vbXBkLXN1cHBvcnQuUGxv QGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQ RElSKS9vbXBkLXRocmVhZHMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVk ZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vcmRlcmVkLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBf VFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFyYWxsZWwuUGxvQGFt X19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElS KS9wcmlvcml0eV9xdWV1ZS5QbG9AYW1fX3F1b3RlQApkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBk LXN1cHBvcnQuYyBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmMKaW5kZXggZDhhNzE3NGIyZjMuLmM3 ZGEzZWY5OGE2IDEwMDY0NAotLS0gYS9saWJnb21wL29tcGQtc3VwcG9ydC5jCisrKyBiL2xpYmdv bXAvb21wZC1zdXBwb3J0LmMKQEAgLTM2LDYgKzM2LDEwIEBACiBjb25zdCBjaGFyICoqb21wZF9k bGxfbG9jYXRpb25zID0gTlVMTDsKIF9fVUlOVDY0X1RZUEVfXyBnb21wZF9zdGF0ZTsKCisjaWYg KGRlZmluZWQgSEFWRV9UTFMgfHwgZGVmaW5lZCBVU0VfRU1VVExTKQorX19VSU5UNjRfVFlQRV9f IGdvbXBkX3RocmVhZF9pbml0aWFsX3Rsc19iaWFzOworI2VuZGlmCisKIHZvaWQKIGdvbXBkX2xv YWQgKHZvaWQpCiB7CkBAIC02MSw3ICs2NSwxMSBAQCBnb21wZF9sb2FkICh2b2lkKQogICAgICAg PSAoX19VSU5UNjRfVFlQRV9fKSAmICgoKHN0cnVjdCBnb21wX3RocmVhZCAqKSBOVUxMKS0+aGFu ZGxlKTsKICAgICBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc2l6ZW9mX2dvbXBfdGhyZWFkX2hhbmRs ZQogICAgICAgPSBzaXplb2YgKCgoc3RydWN0IGdvbXBfdGhyZWFkICopIE5VTEwpLT5oYW5kbGUp OworICAjZWxpZiAoZGVmaW5lZCBIQVZFX1RMUyB8fCBkZWZpbmVkIFVTRV9FTVVUTFMpCisgICAg Z29tcGRfdGhyZWFkX2luaXRpYWxfdGxzX2JpYXMgPSAoX19VSU5UNjRfVFlQRV9fKSBcCisgICAg CQkJCSAgICAgKCZnb21wX3Rsc19kYXRhIC0gcHRocmVhZF9zZWxmICgpKTsKICAgI2VuZGlmCisK ICAgZ29tcF9kZWJ1ZyAoMiwgIk9NUCBPTVBEIGFjdGl2ZVxuIik7CiAgIHN0YXRpYyBjb25zdCBj aGFyICpvbXBkX2RsbF9sb2NhdGlvbnNfYXJyYXlbMl0KICAgICA9IHsibGliZ29tcGQiIFNPTkFN RV9TVUZGSVggKDEpICwgTlVMTH07CmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtc3VwcG9ydC5o IGIvbGliZ29tcC9vbXBkLXN1cHBvcnQuaAppbmRleCAzOWQ1NTE2MTEzMi4uMmRkODhhZjJkNzMg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgKKysrIGIvbGliZ29tcC9vbXBkLXN1 cHBvcnQuaApAQCAtNjksNiArNjksMTAgQEAKIHZvaWQgZ29tcGRfbG9hZCAodm9pZCk7CiBleHRl cm4gX19VSU5UNjRfVFlQRV9fIGdvbXBkX3N0YXRlOwoKKyNpZiAoZGVmaW5lZCBIQVZFX1RMUyB8 fCBkZWZpbmVkIFVTRV9FTVVUTFMpCitleHRlcm4gX19VSU5UNjRfVFlQRV9fIGdvbXBkX3RocmVh ZF9pbml0aWFsX3Rsc19iaWFzOworI2VuZGlmCisKICNkZWZpbmUgT01QRF9FTkFCTEVEIDB4MQoK ICNkZWZpbmUgR09NUERfRk9SRUFDSF9BQ0NFU1MoZ29tcGRfYWNjZXNzKSBcCmRpZmYgLS1naXQg YS9saWJnb21wL29tcGQtc3VwcG9ydC5oLmdjaCBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmguZ2No Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZTk4ZjcwOTFjMApCaW5h cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmguZ2NoIGRpZmZl cgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLXRocmVhZHMuYyBiL2xpYmdvbXAvb21wZC10aHJl YWRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJjMzcwZTFhZjlj Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXRocmVhZHMuYwpAQCAtMCwwICsxLDMx MCBAQAorLyogQ29weXJpZ2h0IChDKSBUaGUgR05VIFRvb2xjaGFpbiBBdXRob3JzLgorICAgQ29u dHJpYnV0ZWQgYnkgQWhtZWQgU2F5ZWQgPGFobWVkc2F5ZWRtb3Vzc2VAZ21haWwuY29tPi4KKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vz c2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisKKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChh dCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBMaWJnb21wIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4K KworICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0 aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2 ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisKKy8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25z IGRlZmluZWQgaW4KKyAgIFNlY3Rpb24gNS41IFRocmVhZEhhbmRsZXMuICovCisKKworI2luY2x1 ZGUgIm9tcGQtaGVscGVyLmgiCisKK29tcGRfcmNfdAorb21wZF9nZXRfdGhyZWFkX2luX3BhcmFs bGVsIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICpwYXJhbGxlbF9oYW5kbGUsIGludAorCQkJICAg ICB0aHJlYWRfbnVtLCBvbXBkX3RocmVhZF9oYW5kbGVfdCAqKnRocmVhZF9oYW5kbGUpCit7CisK KyAgaWYgKHBhcmFsbGVsX2hhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxl X2hhbmRsZTsKKyAgaWYgKHBhcmFsbGVsX2hhbmRsZS0+YWggPT0gTlVMTCkKKyAgICByZXR1cm4g b21wZF9yY19zdGFsZV9oYW5kbGU7CisKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAq Y29udGV4dCA9IHBhcmFsbGVsX2hhbmRsZS0+YWgtPmNvbnRleHQ7CisgIG9tcGRfcmNfdCByZXQ7 CisKKyAgaWYgKCFjb250ZXh0KQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKwor ICBpZiAoIWNhbGxiYWNrcykKKyAgICByZXR1cm4gb21wZF9yY19jYWxsYmFja19lcnJvcjsKKwor ICBvbXBkX3dvcmRfdCB0ZWFtX3NpemVfdmFyOworICByZXQgPSBvbXBkX2dldF9pY3ZfZnJvbV9z Y29wZSAoKHZvaWQgKikgcGFyYWxsZWxfaGFuZGxlLCBvbXBkX3Njb3BlX3BhcmFsbGVsLAorCQkJ CSBnb21wZF9pY3ZfdGVhbV9zaXplX3ZhciwgJnRlYW1fc2l6ZV92YXIpOworICBpZiAocmV0ICE9 IG9tcGRfcmNfb2spCisgICAgcmV0dXJuIHJldDsKKyAgaWYgKHRocmVhZF9udW0gPCAwIHx8IHRo cmVhZF9udW0gPj0gdGVhbV9zaXplX3ZhcikKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7 CisKKyAgb21wZF9zaXplX3QgdGVtcF9vZmZzZXQsIGZpZWxkX29mZnNldDsKKyAgb21wZF9hZGRy ZXNzX3QgdGVtcF9zeW1ib2xfYWRkciwgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BF Q0lGSUVELCAwfTsKKworICBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9ICJnb21wZF9hY2Nlc3Nf Z29tcF90aHJlYWRfcG9vbF90aHJlYWRzIjsKKyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRk cl9sb29rdXAgKGNvbnRleHQsIE5VTEwsIHN5bWJvbF9uYW1lLCAmc3ltYm9sX2FkZHIsCisJICAJ CQkgICAgICAgTlVMTCk7CisgIHJldCA9IGNhbGxiYWNrcy0+cmVhZF9tZW1vcnkgKGNvbnRleHQs IE5VTEwsICZzeW1ib2xfYWRkciwKKwkgIAkJCXRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25n LCAmdGVtcF9vZmZzZXQpOworCisgIHJldCA9IGNhbGxiYWNrcy0+ZGV2aWNlX3RvX2hvc3QgKGNv bnRleHQsICZ0ZW1wX29mZnNldCwKKwkJCQkgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xvbmdfbG9u ZywgMSwKKwkJCQkgICAmZmllbGRfb2Zmc2V0KTsKKyAgaWYgKHJldCAhPSBvbXBkX3JjX29rKQor ICAgIHJldHVybiByZXQ7CisKKyAgc3ltYm9sX2FkZHIuYWRkcmVzcyArPSBmaWVsZF9vZmZzZXQ7 CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX21lbW9yeSAoY29udGV4dCwgTlVMTCwgJnN5bWJv bF9hZGRyLAorCQkJCXRhcmdldF9zaXplcy5zaXplb2ZfcG9pbnRlciwKKwkJCQkmdGVtcF9zeW1i b2xfYWRkci5hZGRyZXNzKTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAoY29u dGV4dCwgJnRlbXBfc3ltYm9sX2FkZHIuYWRkcmVzcywKKwkJCQkgICB0YXJnZXRfc2l6ZXMuc2l6 ZW9mX3BvaW50ZXIsIDEsCisJCQkJICAgJnN5bWJvbF9hZGRyLmFkZHJlc3MpOworCisgIGlmIChy ZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIHN5bWJvbF9hZGRyLmFkZHJl c3MgKz0gdGhyZWFkX251bSAqIHRhcmdldF9zaXplcy5zaXplb2ZfcG9pbnRlcjsKKworICByZXQg PSBjYWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCBOVUxMLCAmc3ltYm9sX2FkZHIsCisJ ICAJCQl0YXJnZXRfc2l6ZXMuc2l6ZW9mX3BvaW50ZXIsCisJCQkJJnRlbXBfc3ltYm9sX2FkZHIu YWRkcmVzcyk7CisgIHJldCA9IGNhbGxiYWNrcy0+ZGV2aWNlX3RvX2hvc3QgKGNvbnRleHQsICZ0 ZW1wX3N5bWJvbF9hZGRyLmFkZHJlc3MsCisJCQkJICAgdGFyZ2V0X3NpemVzLnNpemVvZl9wb2lu dGVyLCAxLAorCQkJCSAgICZzeW1ib2xfYWRkci5hZGRyZXNzKTsKKworICBpZiAocmV0ICE9IG9t cGRfcmNfb2spCisgICAgcmV0dXJuIHJldDsKKworICByZXQgPSBjYWxsYmFja3MtPmFsbG9jX21l bW9yeSAoc2l6ZW9mIChvbXBkX3RocmVhZF9oYW5kbGVfdCksCisgIAkJCQkgKHZvaWQgKiopIHRo cmVhZF9oYW5kbGUpOworCisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0 OworCisgIGlmIChzeW1ib2xfYWRkci5hZGRyZXNzID09IDApCisgICAgcmV0dXJuIG9tcGRfcmNf dW5zdXBwb3J0ZWQ7CisKKyAgKCp0aHJlYWRfaGFuZGxlKS0+dGggPSBzeW1ib2xfYWRkcjsKKyAg KCp0aHJlYWRfaGFuZGxlKS0+YWggPSBwYXJhbGxlbF9oYW5kbGUtPmFoOworICByZXR1cm4gcmV0 OworfQorCisvKiBUaGUgb21wZF9nZXRfdGhyZWFkX2hhbmRsZSBmdW5jdGlvbiB0aGF0IG1hcHMg YSBuYXRpdmUgdGhyZWFkIHRvIGFuCisgICBPTVBEIHRocmVhZCBoYW5kbGUuICAqLworCitvbXBk X3JjX3QKK29tcGRfZ2V0X3RocmVhZF9oYW5kbGUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVf dCAqaGFuZGxlLAorCQkJb21wZF90aHJlYWRfaWRfdCBraW5kLCBvbXBkX3NpemVfdCBzaXplb2Zf dGhyZWFkX2lkLAorCQkJY29uc3Qgdm9pZCAqdGhyZWFkX2lkLAorCQkJb21wZF90aHJlYWRfaGFu ZGxlX3QgKip0aHJlYWRfaGFuZGxlKQoreworICBpZiAoIWhhbmRsZSkKKyAgICByZXR1cm4gb21w ZF9yY19zdGFsZV9oYW5kbGU7CisKKyAgaWYgKGtpbmQgIT0gT01QRF9USFJFQURfSURfUFRIUkVB RCkKKyAgICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKKworICBvbXBkX2FkZHJlc3Nfc3Bh Y2VfY29udGV4dF90ICpjb250ZXh0ID0gaGFuZGxlLT5jb250ZXh0OworICBvbXBkX3RocmVhZF9j b250ZXh0X3QgKnRjb250ZXh0OworICBvbXBkX3JjX3QgcmV0OworCisgIGlmICghY29udGV4dCkK KyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5n ZXRfdGhyZWFkX2NvbnRleHRfZm9yX3RocmVhZF9pZCAoY29udGV4dCwga2luZCwKKwkgIAkJCQkJ ICAgICBzaXplb2ZfdGhyZWFkX2lkLAorCQkJCQkJICAgICB0aHJlYWRfaWQsICZ0Y29udGV4dCk7 CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIG9tcGRfc2l6 ZV90IHRlbXBfc3ltYm9sX3NpemUsIHN5bWJvbF9zaXplOworICBvbXBkX2FkZHJlc3NfdCB0ZW1w X3N5bWJvbF9hZGRyLCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9 OworCisgIGNvbnN0IGNoYXIgKnN5bWJvbF9uYW1lID0gImdvbXBkX3NpemVvZl9nb21wX3RocmVh ZCI7CisgIHJldCA9IGNhbGxiYWNrcy0+c3ltYm9sX2FkZHJfbG9va3VwKGNvbnRleHQsIE5VTEws IHN5bWJvbF9uYW1lLCAmc3ltYm9sX2FkZHIsCisJICAJCQkgICAgICBOVUxMKTsKKyAgcmV0ID0g Y2FsbGJhY2tzLT5yZWFkX21lbW9yeShjb250ZXh0LCBOVUxMLCAmc3ltYm9sX2FkZHIsCisJICAJ CSAgICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xvbmdfbG9uZywKKwkJCSAgICAgICAmdGVtcF9z eW1ib2xfc2l6ZSk7CisgIHJldCA9IGNhbGxiYWNrcy0+ZGV2aWNlX3RvX2hvc3QoY29udGV4dCwg JnRlbXBfc3ltYm9sX3NpemUsCisJICAJCQkgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25n LCAxLAorCQkJCSAgJnN5bWJvbF9zaXplKTsKKyAgaWYgKHJldCAhPSBvbXBkX3JjX29rKQorICAg IHJldHVybiByZXQ7CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGNv bnRleHQsIHRjb250ZXh0LCJnb21wX3Rsc19kYXRhIiwKKwkJCQkgICAgICAgJnN5bWJvbF9hZGRy LCBOVUxMKTsKKworICAvKiBpZiBsaWJnb21wIGlzIG9mZmxvYWRpbmcgb3IgdXNpbmcgcHRocmVh ZF9rZXlfdCB0aGVuIGxvb2t1cCBjYW4ndAorICAgICBmaW5kIHRoZSBzeW1ib2wgImdvbXBfdGxz X2RhdGEiLiAqLworICBpZiAocmV0ID09IG9tcGRfcmNfZXJyb3IpCisgICAgcmV0dXJuIG9tcGRf cmNfdW5zdXBwb3J0ZWQ7CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX21lbW9yeSAoY29udGV4 dCwgdGNvbnRleHQsICZzeW1ib2xfYWRkciwgc3ltYm9sX3NpemUsCisJICAJCQkmdGVtcF9zeW1i b2xfYWRkci5hZGRyZXNzKTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAoY29u dGV4dCwgJnRlbXBfc3ltYm9sX2FkZHIuYWRkcmVzcywKKyAgCQkJCSAgIHN5bWJvbF9zaXplLCAx LCAmc3ltYm9sX2FkZHIuYWRkcmVzcyk7CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICBy ZXR1cm4gcmV0OworCisgIHJldCA9IGNhbGxiYWNrcy0+YWxsb2NfbWVtb3J5IChzaXplb2Yob21w ZF90aHJlYWRfaGFuZGxlX3QpLCAodm9pZCAqKikKKyAgCQkJCSAodGhyZWFkX2hhbmRsZSkpOwor CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgICgqdGhyZWFk X2hhbmRsZSktPmFoID0gaGFuZGxlOworICAoKnRocmVhZF9oYW5kbGUpLT50aCA9IHN5bWJvbF9h ZGRyOworICAoKnRocmVhZF9oYW5kbGUpLT50aHJlYWRfY29udGV4dCA9IHRjb250ZXh0OworICBy ZXR1cm4gcmV0OworfQorCisKK29tcGRfcmNfdAorb21wZF9yZWxfdGhyZWFkX2hhbmRsZSAob21w ZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGUpCit7CisgIGlmICh0aHJlYWRfaGFuZGxl ID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworCisgIG9tcGRfcmNf dCByZXQ7CisgIHJldCA9IGNhbGxiYWNrcy0+ZnJlZV9tZW1vcnkgKCh2b2lkICopIHRocmVhZF9o YW5kbGUpOworICBpZiAocmV0ICE9IG9tcGRfcmNfb2spCisgIHJldHVybiByZXQ7CisKKyAgcmV0 dXJuIG9tcGRfcmNfb2s7Cit9CisKKworLyogcmV0dXJuIC0xLCAwIG9yIDEgZm9yIHRocmVhZF9o YW5kbGVfMSA8LCA9PSBvciA+IHRocmVhZF9oYW5kbGVfMi4gKi8KK29tcGRfcmNfdAorb21wZF90 aHJlYWRfaGFuZGxlX2NvbXBhcmUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxl XzEsCisJCQkgICAgb21wZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGVfMiwKKwkJCSAg ICBpbnQJKmNtcF92YWx1ZSApCit7CisKKyAgaWYgKHRocmVhZF9oYW5kbGVfMSA9PSBOVUxMKQor ICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKHRocmVhZF9oYW5kbGVfMiA9 PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGNtcF92YWx1 ZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKHRocmVhZF9o YW5kbGVfMS0+YWgtPmtpbmQgIT0gdGhyZWFkX2hhbmRsZV8yLT5haC0+a2luZCkKKyAgICByZXR1 cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgICpjbXBfdmFsdWUgPSB0aHJlYWRfaGFuZGxlXzEtPnRo LmFkZHJlc3MgLSB0aHJlYWRfaGFuZGxlXzItPnRoLmFkZHJlc3M7CisKKyAgcmV0dXJuIG9tcGRf cmNfb2s7Cit9CisKKworb21wZF9yY190CitvbXBkX2dldF90aHJlYWRfaWQgKG9tcGRfdGhyZWFk X2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlLCBvbXBkX3RocmVhZF9pZF90IGtpbmQsCisJCSAgICBv bXBkX3NpemVfdCBzaXplb2ZfdGhyZWFkX2lkLCB2b2lkICp0aHJlYWRfaWQpCit7CisgIGlmIChr aW5kICE9IE9NUERfVEhSRUFEX0lEX1BUSFJFQUQpCisgICAgcmV0dXJuIG9tcGRfcmNfdW5zdXBw b3J0ZWQ7CisgIGlmICh0aHJlYWRfaWQgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19iYWRf aW5wdXQ7CisgIGlmICghdGhyZWFkX2hhbmRsZSB8fCAhdGhyZWFkX2hhbmRsZS0+YWgpCisgICAg cmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworCisgIG9tcGRfYWRkcmVzc19zcGFjZV9jb250 ZXh0X3QgKmNvbnRleHQgPSB0aHJlYWRfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgaWYgKGNvbnRl eHQgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisKKyAgb21wZF9y Y190IHJldDsKKyAgb21wZF9hZGRyZXNzX3QgdGFkZHIgPSB0aHJlYWRfaGFuZGxlLT50aDsKKyAg b21wZF9hZGRyZXNzX3QgdGVtcF9zeW1ib2xfYWRkciwgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdN RU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgb21wZF9zaXplX3QgdGVtcF9zeW1ib2xfc2l6ZSwgc3lt Ym9sX3NpemU7CisgIG9tcGRfc2l6ZV90IHRlbXBfb2Zmc2V0LCBvZmZzZXQ7CisKKworICBjaGFy ICpzeW1ib2xfbmFtZSA9ICJnb21wZF9zaXplb2ZfZ29tcF90aHJlYWRfaGFuZGxlIjsKKyAgcmV0 ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGNvbnRleHQsIE5VTEwsIHN5bWJvbF9u YW1lLCAmc3ltYm9sX2FkZHIsCisJICAJCQkgICAgICAgTlVMTCk7CisgIC8qIElmIHN5bWJvbCBp c24ndCBmb3VuZCB3ZSBjaGVjayBmb3IgdGhlIG9wdGltaXplZCB2ZXJzaW9uLiAqLworICBpZiAo cmV0ID09IG9tcGRfcmNfZXJyb3IpCisgICAgZ290byB0cnlfYmlhczsKKyAgcmV0ID0gY2FsbGJh Y2tzLT5yZWFkX21lbW9yeSAoY29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLAorCSAgCQkJdGFy Z2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsCisJCQkJJnRlbXBfc3ltYm9sX3NpemUpOworICBy ZXQgPSBjYWxsYmFja3MtPmRldmljZV90b19ob3N0IChjb250ZXh0LCAmdGVtcF9zeW1ib2xfc2l6 ZSwKKwkgIAkJCSAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCAxLAorCQkJCSAgICZz eW1ib2xfc2l6ZSk7CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0Owor ICBpZiAoc2l6ZW9mX3RocmVhZF9pZCAhPSBzeW1ib2xfc2l6ZSkKKyAgICByZXR1cm4gb21wZF9y Y19iYWRfaW5wdXQ7CisKKyAgc3ltYm9sX25hbWUgPSAiZ29tcGRfYWNjZXNzX2dvbXBfdGhyZWFk X2hhbmRsZSI7CisgIHJldCA9IGNhbGxiYWNrcy0+c3ltYm9sX2FkZHJfbG9va3VwIChjb250ZXh0 LCBOVUxMLCBzeW1ib2xfbmFtZSwgJnN5bWJvbF9hZGRyLAorCSAgCQkJICAgICAgIE5VTEwpOwor ICByZXQgPSBjYWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCBOVUxMLCAmc3ltYm9sX2Fk ZHIsIHN5bWJvbF9zaXplLAorCSAgCQkJJnRlbXBfb2Zmc2V0KTsKKyAgcmV0ID0gY2FsbGJhY2tz LT5kZXZpY2VfdG9faG9zdCAoY29udGV4dCwgJnRlbXBfb2Zmc2V0LCBzeW1ib2xfc2l6ZSwgMSwK KwkgIAkJCSAgICZvZmZzZXQpOworCisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1 cm4gcmV0OworCisgIHRhZGRyLmFkZHJlc3MgKz0gb2Zmc2V0OworICByZXQgPSBjYWxsYmFja3Mt PnJlYWRfbWVtb3J5IChjb250ZXh0LCBOVUxMLCAmdGFkZHIsCisJCQkJdGFyZ2V0X3NpemVzLnNp emVvZl9sb25nX2xvbmcsIHRocmVhZF9pZCk7CisgIHJldHVybiByZXQ7CisKK3RyeV9iaWFzOgor ICBzeW1ib2xfbmFtZSA9ICJnb21wZF90aHJlYWRfaW5pdGlhbF90bHNfYmlhcyI7CisgIHJldCA9 IGNhbGxiYWNrcy0+c3ltYm9sX2FkZHJfbG9va3VwIChjb250ZXh0LCBOVUxMLCBzeW1ib2xfbmFt ZSwgJnN5bWJvbF9hZGRyLAorCSAgCQkJICAgICAgIE5VTEwpOworICBpZiAocmV0ID09IG9tcGRf cmNfZXJyb3IpCisgICAgcmV0dXJuIG9tcGRfcmNfdW5zdXBwb3J0ZWQ7CisKKyAgcmV0ID0gY2Fs bGJhY2tzLT5yZWFkX21lbW9yeSAoY29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLAorCQkJCXRh cmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCAmdGVtcF9vZmZzZXQpOworICByZXQgPSBjYWxs YmFja3MtPmRldmljZV90b19ob3N0IChjb250ZXh0LCAmdGVtcF9vZmZzZXQsCisJCQkJICAgdGFy Z2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEsICZvZmZzZXQpOworCisgIGlmIChyZXQgIT0g b21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIHJldCA9IGNhbGxiYWNrcy0+c3ltYm9s X2FkZHJfbG9va3VwIChjb250ZXh0LCBOVUxMLCJnb21wX3Rsc19kYXRhIiwKKwkJCQkgICAgICAg JnN5bWJvbF9hZGRyLCBOVUxMKTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAo Y29udGV4dCwgJnRlbXBfc3ltYm9sX2FkZHIuYWRkcmVzcywKKwkJCQkgICB0YXJnZXRfc2l6ZXMu c2l6ZW9mX2xvbmdfbG9uZywgMSwKKwkJCQkgICAmc3ltYm9sX2FkZHIuYWRkcmVzcyk7CisgIGlm IChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIHRhZGRyLmFkZHJlc3Mg PSBzeW1ib2xfYWRkci5hZGRyZXNzICsgb2Zmc2V0OworICByZXQgPSBjYWxsYmFja3MtPnJlYWRf bWVtb3J5IChjb250ZXh0LCBOVUxMLCAmdGFkZHIsCisJCQkJdGFyZ2V0X3NpemVzLnNpemVvZl9s b25nX2xvbmcsIHRocmVhZF9pZCk7CisgIHJldHVybiByZXQ7Cit9CisKKworLyogT01QRCBkb2Vz bid0IHN1cHBvcnQgR1BVcyBmb3Igbm93LiAqLworb21wZF9yY190IG9tcGRfZ2V0X2RldmljZV9m cm9tX3RocmVhZCAob21wZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGUsCisJCQkJICAg ICAgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKmRldmljZSkKK3sKKyAgaWYgKHRocmVh ZF9oYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisgIHJl dHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworfQo= --0000000000003eedc905e0cee58d--