From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v2 09/15] tools/libacpi: add callbacks to access XenStore Date: Mon, 20 Mar 2017 08:09:43 +0800 Message-ID: <20170320000949.24675-10-haozhong.zhang@intel.com> References: <20170320000949.24675-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320000949.24675-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Wei Liu , Andrew Cooper , Ian Jackson , Jan Beulich , Konrad Rzeszutek Wilk , Dan Williams List-Id: xen-devel@lists.xenproject.org bGliYWNwaSBuZWVkcyB0byBhY2Nlc3MgaW5mb3JtYXRpb24gcGxhY2VkIGluIFhlblN0b3JlIGlu IG9yZGVyIHRvCmxvYWQgQUNQSSBidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsLgoKU2lnbmVkLW9m Zi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KLS0tCkNjOiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJp eC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgoKQ2hhbmdlcyBpbiB2MjoK ICogRXh0cmFjdCB0aGUgY29tbW9uIHBhcnQgb2YgdGhlIGV4aXN0aW5nIHhlbnN0b3JlX3JlYWQo KSBhbmQgdGhlCiAgIG5ldyB4ZW5zdG9yZV9kaXJlY3RvcnkoKSBpbiB4ZW5idXMuYy4KLS0tCiB0 b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jICAgfCA1MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmggICB8 ICA5ICsrKysrKysKIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci94ZW5idXMuYyB8IDQ0ICsrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogdG9vbHMvbGliYWNwaS9saWJhY3BpLmggICAg ICAgICAgIHwgMTAgKysrKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX3g4Nl9hY3BpLmMgICAgICB8 IDI5ICsrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlv bnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxv YWRlci91dGlsLmMgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jCmluZGV4IGIyMzcy YTc1YmUuLmVjMGRlNzExYzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91 dGlsLmMKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYwpAQCAtODkzLDYgKzg5 Myw1MyBAQCBzdGF0aWMgdWludDhfdCBhY3BpX2xhcGljX2lkKHVuc2lnbmVkIGNwdSkKICAgICBy ZXR1cm4gTEFQSUNfSUQoY3B1KTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmFjcGlfeHNfcmVh ZChzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LCBjb25zdCBjaGFyICpwYXRoKQoreworICAgIHJldHVy biB4ZW5zdG9yZV9yZWFkKHBhdGgsIE5VTEwpOworfQorCitzdGF0aWMgaW50IGFjcGlfeHNfd3Jp dGUoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgICByZXR1cm4geGVuc3RvcmVf d3JpdGUocGF0aCwgdmFsdWUpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGNvdW50X3N0cmlu Z3MoY29uc3QgY2hhciAqc3RyaW5ncywgdW5zaWduZWQgaW50IGxlbikKK3sKKyAgICBjb25zdCBj aGFyICpwOworICAgIHVuc2lnbmVkIGludCBuOworCisgICAgZm9yICggcCA9IHN0cmluZ3MsIG4g PSAwOyBwIDwgc3RyaW5ncyArIGxlbjsgcCsrICkKKyAgICAgICAgaWYgKCAqcCA9PSAnXDAnICkK KyAgICAgICAgICAgIG4rKzsKKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgY2hhciAqKmFj cGlfeHNfZGlyZWN0b3J5KHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCAqbnVtKQorewor ICAgIGNvbnN0IGNoYXIgKnN0cmluZ3M7CisgICAgY2hhciAqcywgKnAsICoqcmV0OworICAgIHVu c2lnbmVkIGludCBsZW4sIG47CisKKyAgICBzdHJpbmdzID0geGVuc3RvcmVfZGlyZWN0b3J5KHBh dGgsICZsZW4sIE5VTEwpOworICAgIGlmICggIXN0cmluZ3MgKQorICAgICAgICByZXR1cm4gTlVM TDsKKworICAgIG4gPSBjb3VudF9zdHJpbmdzKHN0cmluZ3MsIGxlbik7CisgICAgcmV0ID0gY3R4 dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBuICogc2l6ZW9mKHApICsgbGVuLCAwKTsKKyAgICBpZiAo ICFyZXQgKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1jcHkoJnJldFtuXSwgc3RyaW5n cywgbGVuKTsKKworICAgIHMgPSAoY2hhciAqKSZyZXRbbl07CisgICAgZm9yICggcCA9IHMsICpu dW0gPSAwOyBwIDwgcyArIGxlbjsgcCArPSBzdHJsZW4ocCkgKyAxICkKKyAgICAgICAgcmV0Wygq bnVtKSsrXSA9IHA7CisKKyAgICByZXR1cm4gcmV0OworfQorCiB2b2lkIGh2bWxvYWRlcl9hY3Bp X2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwaHlzaWNhbCkKIHsKQEAgLTk3OSw2ICsx MDI2LDExIEBAIHZvaWQgaHZtbG9hZGVyX2FjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2Nv bmZpZyAqY29uZmlnLAogCiAgICAgY3R4dC5taW5fYWxsb2NfYnl0ZV9hbGlnbiA9IDE2OwogCisg ICAgY3R4dC54c19vcHMucmVhZCA9IGFjcGlfeHNfcmVhZDsKKyAgICBjdHh0LnhzX29wcy53cml0 ZSA9IGFjcGlfeHNfd3JpdGU7CisgICAgY3R4dC54c19vcHMuZGlyZWN0b3J5ID0gYWNwaV94c19k aXJlY3Rvcnk7CisgICAgY3R4dC54c19vcGFxdWUgPSBOVUxMOworCiAgICAgYWNwaV9idWlsZF90 YWJsZXMoJmN0eHQsIGNvbmZpZyk7CiAKICAgICBodm1fcGFyYW1fc2V0KEhWTV9QQVJBTV9WTV9H RU5FUkFUSU9OX0lEX0FERFIsIGNvbmZpZy0+dm1fZ2lkX2FkZHIpOwpkaWZmIC0tZ2l0IGEvdG9v bHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuaCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91 dGlsLmgKaW5kZXggNmE1MGRhZTFlYi4uYWMxMGE3MTA2YSAxMDA2NDQKLS0tIGEvdG9vbHMvZmly bXdhcmUvaHZtbG9hZGVyL3V0aWwuaAorKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRp bC5oCkBAIC0yMjUsNiArMjI1LDE1IEBAIGNvbnN0IGNoYXIgKnhlbnN0b3JlX3JlYWQoY29uc3Qg Y2hhciAqcGF0aCwgY29uc3QgY2hhciAqZGVmYXVsdF9yZXNwKTsKICAqLwogaW50IHhlbnN0b3Jl X3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIAorLyogUmVhZCBh IHhlbnN0b3JlIGRpcmVjdG9yeS4gUmV0dXJuIE5VTEwsIG9yIGEgbnVsLXRlcm1pbmF0ZWQgc3Ry aW5nCisgKiB3aGljaCBjb250YWlucyBhbGwgbmFtZXMgb2YgZGlyZWN0b3J5IGVudHJpZXMuIE5h bWVzIGFyZSBzZXBhcmF0ZWQKKyAqIGJ5ICdcMCcuIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgaW4g YSBzdGF0aWMgYnVmZmVyLCBzbyBvbmx5IHZhbGlkCisgKiB1bnRpbCB0aGUgbmV4dCB4ZW5zdG9y ZS94ZW5idXMgb3BlcmF0aW9uLiAgSWYgQGRlZmF1bHRfcmVzcCBpcworICogc3BlY2lmaWVkLCBp dCBpcyByZXR1cm5lZCBpbiBwcmVmZXJlbmNlIHRvIGEgTlVMTCBvciBlbXB0eSBzdHJpbmcKKyAq IHJlY2VpdmVkIGZyb20geGVuc3RvcmUuCisgKi8KK2NvbnN0IGNoYXIgKnhlbnN0b3JlX2RpcmVj dG9yeShjb25zdCBjaGFyICpwYXRoLCB1aW50MzJfdCAqbGVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlZmF1bHRfcmVzcCk7CiAKIC8qIEdldCBhIEhWTSBw YXJhbS4KICAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3hlbmJ1cy5j IGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3hlbmJ1cy5jCmluZGV4IDQ0ODE1N2RjYjAuLjhj YWQ3YWYwMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci94ZW5idXMuYwor KysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIveGVuYnVzLmMKQEAgLTI0NSwyNCArMjQ1LDE2 IEBAIHN0YXRpYyBpbnQgeGVuYnVzX3JlY3YodWludDMyX3QgKnJlcGx5X2xlbiwgY29uc3QgY2hh ciAqKnJlcGx5X2RhdGEsCiAgICAgcmV0dXJuIDA7CiB9CiAKLQotLyogUmVhZCBhIHhlbnN0b3Jl IGtleS4gIFJldHVybnMgYSBudWwtdGVybWluYXRlZCBzdHJpbmcgKGV2ZW4gaWYgdGhlIFhTCi0g KiBkYXRhIHdhc24ndCBudWwtdGVybWluYXRlZCkgb3IgTlVMTC4gIFRoZSByZXR1cm5lZCBzdHJp bmcgaXMgaW4gYQotICogc3RhdGljIGJ1ZmZlciwgc28gb25seSB2YWxpZCB1bnRpbCB0aGUgbmV4 dCB4ZW5zdG9yZS94ZW5idXMgb3BlcmF0aW9uLgotICogSWYgQGRlZmF1bHRfcmVzcCBpcyBzcGVj aWZpZWQsIGl0IGlzIHJldHVybmVkIGluIHByZWZlcmVuY2UgdG8gYSBOVUxMIG9yCi0gKiBlbXB0 eSBzdHJpbmcgcmVjZWl2ZWQgZnJvbSB4ZW5zdG9yZS4KLSAqLwotY29uc3QgY2hhciAqeGVuc3Rv cmVfcmVhZChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpkZWZhdWx0X3Jlc3ApCitzdGF0 aWMgY29uc3QgY2hhciAqeGVuc3RvcmVfcmVhZF9jb21tb24oY29uc3QgY2hhciAqcGF0aCwgdWlu dDMyX3QgKmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpkZWZhdWx0X3Jlc3AsIGJvb2wgaXNfZGlyKQogewotICAgIHVpbnQzMl90IGxlbiA9 IDAsIHR5cGUgPSAwOworICAgIHVpbnQzMl90IHR5cGUgPSAwLCBleHBlY3RlZF90eXBlID0gaXNf ZGlyID8gWFNfRElSRUNUT1JZIDogWFNfUkVBRDsKICAgICBjb25zdCBjaGFyICphbnN3ZXIgPSBO VUxMOwogCi0gICAgeGVuYnVzX3NlbmQoWFNfUkVBRCwKLSAgICAgICAgICAgICAgICBwYXRoLCBz dHJsZW4ocGF0aCksCi0gICAgICAgICAgICAgICAgIiIsIDEsIC8qIG51bCBzZXBhcmF0b3IgKi8K KyAgICB4ZW5idXNfc2VuZChleHBlY3RlZF90eXBlLCBwYXRoLCBzdHJsZW4ocGF0aCksICIiLCAx LCAvKiBudWwgc2VwYXJhdG9yICovCiAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CiAKLSAgICBp ZiAoIHhlbmJ1c19yZWN2KCZsZW4sICZhbnN3ZXIsICZ0eXBlKSB8fCAodHlwZSAhPSBYU19SRUFE KSApCisgICAgaWYgKCB4ZW5idXNfcmVjdihsZW4sICZhbnN3ZXIsICZ0eXBlKSB8fCB0eXBlICE9 IGV4cGVjdGVkX3R5cGUgKQogICAgICAgICBhbnN3ZXIgPSBOVUxMOwogCiAgICAgaWYgKCAoZGVm YXVsdF9yZXNwICE9IE5VTEwpICYmICgoYW5zd2VyID09IE5VTEwpIHx8ICgqYW5zd2VyID09ICdc MCcpKSApCkBAIC0yNzIsNiArMjY0LDMyIEBAIGNvbnN0IGNoYXIgKnhlbnN0b3JlX3JlYWQoY29u c3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqZGVmYXVsdF9yZXNwKQogICAgIHJldHVybiBhbnN3 ZXI7CiB9CiAKKy8qIFJlYWQgYSB4ZW5zdG9yZSBrZXkuICBSZXR1cm5zIGEgbnVsLXRlcm1pbmF0 ZWQgc3RyaW5nIChldmVuIGlmIHRoZSBYUworICogZGF0YSB3YXNuJ3QgbnVsLXRlcm1pbmF0ZWQp IG9yIE5VTEwuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGluIGEKKyAqIHN0YXRpYyBidWZmZXIs IHNvIG9ubHkgdmFsaWQgdW50aWwgdGhlIG5leHQgeGVuc3RvcmUveGVuYnVzIG9wZXJhdGlvbi4K KyAqIElmIEBkZWZhdWx0X3Jlc3AgaXMgc3BlY2lmaWVkLCBpdCBpcyByZXR1cm5lZCBpbiBwcmVm ZXJlbmNlIHRvIGEgTlVMTCBvcgorICogZW1wdHkgc3RyaW5nIHJlY2VpdmVkIGZyb20geGVuc3Rv cmUuCisgKi8KK2NvbnN0IGNoYXIgKnhlbnN0b3JlX3JlYWQoY29uc3QgY2hhciAqcGF0aCwgY29u c3QgY2hhciAqZGVmYXVsdF9yZXNwKQoreworICAgIHVpbnQzMl90IGxlbiA9IDA7CisKKyAgICBy ZXR1cm4geGVuc3RvcmVfcmVhZF9jb21tb24ocGF0aCwgJmxlbiwgZGVmYXVsdF9yZXNwLCBmYWxz ZSk7Cit9CisKKy8qIFJlYWQgYSB4ZW5zdG9yZSBkaXJlY3RvcnkuIFJldHVybiBOVUxMLCBvciBh IG51bC10ZXJtaW5hdGVkIHN0cmluZworICogd2hpY2ggY29udGFpbnMgYWxsIG5hbWVzIG9mIGRp cmVjdG9yeSBlbnRyaWVzLiBOYW1lcyBhcmUgc2VwYXJhdGVkCisgKiBieSAnXDAnLiBUaGUgcmV0 dXJuZWQgc3RyaW5nIGlzIGluIGEgc3RhdGljIGJ1ZmZlciwgc28gb25seSB2YWxpZAorICogdW50 aWwgdGhlIG5leHQgeGVuc3RvcmUveGVuYnVzIG9wZXJhdGlvbi4gIElmIEBkZWZhdWx0X3Jlc3Ag aXMKKyAqIHNwZWNpZmllZCwgaXQgaXMgcmV0dXJuZWQgaW4gcHJlZmVyZW5jZSB0byBhIE5VTEwg b3IgZW1wdHkgc3RyaW5nCisgKiByZWNlaXZlZCBmcm9tIHhlbnN0b3JlLgorICovCitjb25zdCBj aGFyICp4ZW5zdG9yZV9kaXJlY3RvcnkoY29uc3QgY2hhciAqcGF0aCwgdWludDMyX3QgKmxlbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZWZhdWx0X3Jlc3Ap Cit7CisgICAgcmV0dXJuIHhlbnN0b3JlX3JlYWRfY29tbW9uKHBhdGgsIGxlbiwgZGVmYXVsdF9y ZXNwLCB0cnVlKTsKK30KKwogLyogV3JpdGUgYSB4ZW5zdG9yZSBrZXkuICBAdmFsdWUgbXVzdCBi ZSBhIG51bC10ZXJtaW5hdGVkIHN0cmluZy4gUmV0dXJucwogICogemVybyBvbiBzdWNjZXNzIG9y IGEgeGVuc3RvcmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCmRpZmYgLS1naXQgYS90b29s cy9saWJhY3BpL2xpYmFjcGkuaCBiL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCmluZGV4IDQ4YWNm OTU4M2MuLjY0NWUwOTFmNjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCisr KyBiL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCkBAIC01NCw2ICs1NCwxNiBAQCBzdHJ1Y3QgYWNw aV9jdHh0IHsKICAgICB9IG1lbV9vcHM7CiAKICAgICB1aW50MzJfdCBtaW5fYWxsb2NfYnl0ZV9h bGlnbjsgLyogbWluaW11bSBhbGlnbm1lbnQgdXNlZCBieSBtZW1fb3BzLmFsbG9jICovCisKKyAg ICBzdHJ1Y3QgYWNwaV94c19vcHMgeworICAgICAgICBjb25zdCBjaGFyICooKnJlYWQpKHN0cnVj dCBhY3BpX2N0eHQgKmN0eHQsIGNvbnN0IGNoYXIgKnBhdGgpOworICAgICAgICBpbnQgKCp3cml0 ZSkoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKnBhdGgsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKyAgICAgICAgY2hhciAqKigqZGlyZWN0b3J5 KShzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCAqbnVtKTsKKyAgICB9IHhzX29wczsKKworICAg IHZvaWQgKnhzX29wYXF1ZTsKIH07CiAKIHN0cnVjdCBhY3BpX2NvbmZpZyB7CmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF94ODZfYWNwaS5jIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2X2Fj cGkuYwppbmRleCAyNjIyZTAzY2U2Li41OTFhNGY0NGZhIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF94ODZfYWNwaS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Nl9hY3BpLmMKQEAg LTkzLDYgKzkzLDI1IEBAIHN0YXRpYyB2b2lkIGFjcGlfbWVtX2ZyZWUoc3RydWN0IGFjcGlfY3R4 dCAqY3R4dCwKIHsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmFjcGlfeHNfcmVhZChzdHJ1Y3Qg YWNwaV9jdHh0ICpjdHh0LCBjb25zdCBjaGFyICpwYXRoKQoreworICAgIHJldHVybiBsaWJ4bF9f eHNfcmVhZCgobGlieGxfX2djICopY3R4dC0+eHNfb3BhcXVlLCBYQlRfTlVMTCwgcGF0aCk7Cit9 CisKK3N0YXRpYyBpbnQgYWNwaV94c193cml0ZShzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnZhbHVl KQoreworICAgIHJldHVybiBsaWJ4bF9feHNfd3JpdGVfY2hlY2tlZCgobGlieGxfX2djICopY3R4 dC0+eHNfb3BhcXVlLCBYQlRfTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGF0aCwgdmFsdWUpOworfQorCitzdGF0aWMgY2hhciAqKmFjcGlfeHNfZGlyZWN0b3J5KHN0 cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCAqbnVtKQoreworICAgIHJldHVybiBsaWJ4bF9f eHNfZGlyZWN0b3J5KChsaWJ4bF9fZ2MgKiljdHh0LT54c19vcGFxdWUsIFhCVF9OVUxMLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIG51bSk7Cit9CisKIHN0YXRpYyB1aW50 OF90IGFjcGlfbGFwaWNfaWQodW5zaWduZWQgY3B1KQogewogICAgIHJldHVybiBjcHUgKiAyOwpA QCAtMTk1LDYgKzIxNCwxNiBAQCBpbnQgbGlieGxfX2RvbV9sb2FkX2FjcGkobGlieGxfX2djICpn YywKIAogICAgIGxpYnhsX2N0eHQuYy5taW5fYWxsb2NfYnl0ZV9hbGlnbiA9IDE2OwogCisgICAg bGlieGxfY3R4dC5jLnhzX29wcy5yZWFkID0gYWNwaV94c19yZWFkOworICAgIGxpYnhsX2N0eHQu Yy54c19vcHMud3JpdGUgPSBhY3BpX3hzX3dyaXRlOworICAgIGxpYnhsX2N0eHQuYy54c19vcHMu ZGlyZWN0b3J5ID0gYWNwaV94c19kaXJlY3Rvcnk7CisgICAgbGlieGxfY3R4dC5jLnhzX29wYXF1 ZSA9IGdjOworCisgICAgbGlieGxfY3R4dC5jLnhzX29wcy5yZWFkID0gYWNwaV94c19yZWFkOwor ICAgIGxpYnhsX2N0eHQuYy54c19vcHMud3JpdGUgPSBhY3BpX3hzX3dyaXRlOworICAgIGxpYnhs X2N0eHQuYy54c19vcHMuZGlyZWN0b3J5ID0gYWNwaV94c19kaXJlY3Rvcnk7CisgICAgbGlieGxf Y3R4dC5jLnhzX29wYXF1ZSA9IGdjOworCiAgICAgcmMgPSBpbml0X2FjcGlfY29uZmlnKGdjLCBk b20sIGJfaW5mbywgJmNvbmZpZyk7CiAgICAgaWYgKHJjKSB7CiAgICAgICAgIExPRyhFUlJPUiwg ImluaXRfYWNwaV9jb25maWcgZmFpbGVkIChyYz0lZCkiLCByYyk7Ci0tIAoyLjEyLjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK