From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 15/28] xsplice: Add .xsplice.hooks functions and test-case Date: Thu, 24 Mar 2016 16:00:27 -0400 Message-ID: <1458849640-22588-16-git-send-email-konrad.wilk@oracle.com> References: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ajBRT-0007Ki-3s for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 20:01:15 +0000 In-Reply-To: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgaG9v ayBmdW5jdGlvbnMgd2hpY2ggcnVuIGR1cmluZyBwYXRjaCBhcHBseSBhbmQgcGF0Y2ggcmV2ZXJ0 LgpIb29rIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB4c3BsaWNlIHBheWxvYWRzIHRvIG1hbmlwdWxh dGUgZGF0YSBzdHJ1Y3R1cmVzCmR1cmluZyBwYXRjaGluZywgZXRjLgoKQWxzbyBhZGQgbWFjcm9z IHRvIGJlIHVzZWQgYnkgcGF5bG9hZHMgZm9yIGV4Y2x1ZGluZyBmdW5jdGlvbnMgb3IKc2VjdGlv bnMgZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBhIHBhdGNoLgoKRnVydGhlcm1vcmUgaW5jbHVkZSBh IHRlc3QtY2FzZSBmb3IgaXQuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5s YWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4u b3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnYyOiBTdHlsZSBndWlkZSBjaGFuZ2VzCnYz OiBJbmNsdWRlIHRoZSB0ZXN0LWNhc2UgLSBhbmQgYWxzbyByZS1vcmRlciB0aGlzIHBhdGNoCi0t LQogZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24gICAgICAgICAgfCAyMSArKysrKysrKysrKysr CiB4ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYyB8IDE1ICsrKysrKysrKysKIHhl bi9jb21tb24veHNwbGljZS5jICAgICAgICAgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysr KysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX3BhdGNoLmggICAgIHwgNTkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX3BhdGNo LmgKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MveHNwbGljZS5tYXJrZG93biBiL2RvY3MvbWlzYy94 c3BsaWNlLm1hcmtkb3duCmluZGV4IGE0OThhNjEuLmJlOWNkNzEgMTAwNjQ0Ci0tLSBhL2RvY3Mv bWlzYy94c3BsaWNlLm1hcmtkb3duCisrKyBiL2RvY3MvbWlzYy94c3BsaWNlLm1hcmtkb3duCkBA IC0yODUsNiArMjg1LDEyIEBAIGxpa2Ugd2hhdCB0aGUgTGludXgga2VybmVsIG1vZHVsZSBsb2Fk ZXIgZG9lcy4KIAogVGhlIHBheWxvYWQgY29udGFpbnMgYSBzZWN0aW9uICh4c3BsaWNlX3BhdGNo X2Z1bmMpIHdpdGggYW4gYXJyYXkgb2Ygc3RydWN0dXJlcwogZGVzY3JpYmluZyB0aGUgZnVuY3Rp b25zIHRvIGJlIHBhdGNoZWQ6CitJdCBvcHRpb25hbGx5IG1heSBjb250YWluIHRoZSBhZGRyZXNz IG9mIGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgcmlnaHQgYmVmb3JlCitiZWluZyBhcHBsaWVkIGFu ZCBhZnRlciBiZWluZyByZXZlcnRlZDoKKworICogYC54c3BsaWNlLmhvb2tzLmxvYWRgIC0gYW4g YXJyYXkgb2YgZnVuY3Rpb24gcG9pbnRlcnMuCisgKiBgLnhzcGxpY2UuaG9va3MudW5sb2FkYCAt IGFuIGFycmF5IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLgorCiAKIDxwcmU+CiBzdHJ1Y3QgeHNwbGlj ZV9wYXRjaF9mdW5jIHsgIApAQCAtMzYyLDYgKzM2OCwyMSBAQCBzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jIHhzcGxpY2VfaGVsbG9fd29ybGQgPSB7CiAKIENvZGUgbXVzdCBiZSBjb21waWxlZCB3 aXRoIC1mUElDLgogCisKKyMjIyAueHNwbGljZS5ob29rcy5sb2FkIGFuZCAueHNwbGljZS5ob29r cy51bmxvYWQKKworVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHBv aW50ZXJzIHRvIGJlIGV4ZWN1dGVkCitiZWZvcmUgcGF5bG9hZCBpcyBiZWluZyBhcHBsaWVkICgu eHNwbGljZS5mdW5jcykgb3IgYWZ0ZXIgcmV2ZXJ0aW5nCit0aGUgcGF5bG9hZC4KKworRWFjaCBl bnRyeSBpbiB0aGlzIGFycmF5IGlzIGVpZ2h0IGJ5dGVzLgorCitUaGUgdHlwZSBkZWZpbml0aW9u IG9mIHRoZSBmdW5jdGlvbiBhcmUgYXMgZm9sbG93OgorCis8cHJlPgordHlwZWRlZiB2b2lkICgq eHNwbGljZV9sb2FkY2FsbF90KSh2b2lkKTsgIAordHlwZWRlZiB2b2lkICgqeHNwbGljZV91bmxv YWRjYWxsX3QpKHZvaWQpOyAgIAorPC9wcmU+CiAjIyBIeXBlcmNhbGxzCiAKIFdlIHdpbGwgZW1w bG95IHRoZSBzdWIgb3BlcmF0aW9ucyBvZiB0aGUgc3lzdGVtIG1hbmFnZW1lbnQgaHlwZXJjYWxs IChzeXNjdGwpLgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxk LmMgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYwppbmRleCAyNDNlYjNmLi5k MmIzY2MyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYwor KysgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYwpAQCAtNSw4ICs1LDEwIEBA CiAKICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5j bHVkZSA8eGVuL3hzcGxpY2VfcGF0Y2guaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogI2lu Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHhlbi9saWIuaD4KIAogc3RhdGljIGNoYXIgeGVu X2hlbGxvX3dvcmxkX25hbWVbXSA9ICJ4ZW5faGVsbG9fd29ybGQiOwogZXh0ZXJuIGNvbnN0IGNo YXIgKnhlbl9oZWxsb193b3JsZCh2b2lkKTsKQEAgLTE0LDYgKzE2LDE5IEBAIGV4dGVybiBjb25z dCBjaGFyICp4ZW5faGVsbG9fd29ybGQodm9pZCk7CiAvKiBFeHRlcm5hbCBzeW1ib2wuICovCiBl eHRlcm4gY29uc3QgY2hhciAqeGVuX2V4dHJhX3ZlcnNpb24odm9pZCk7CiAKK3ZvaWQgYXBwbHlf aG9vayh2b2lkKQoreworICAgIHByaW50ayhLRVJOX0RFQlVHICJIb29rIGV4ZWN1dGluZy5cbiIp OworfQorCit2b2lkIHJldmVydF9ob29rKHZvaWQpCit7CisgICAgcHJpbnRrKEtFUk5fREVCVUcg Ikhvb2sgdW5sb2FkZWQuXG4iKTsKK30KKworWFNQTElDRV9MT0FEX0hPT0soYXBwbHlfaG9vayk7 CitYU1BMSUNFX1VOTE9BRF9IT09LKHJldmVydF9ob29rKTsKKwogc3RydWN0IHhzcGxpY2VfcGF0 Y2hfZnVuYyBfX3NlY3Rpb24oIi54c3BsaWNlLmZ1bmNzIikgeHNwbGljZV94ZW5faGVsbG9fd29y bGQgPSB7CiAgICAgLm5hbWUgPSB4ZW5faGVsbG9fd29ybGRfbmFtZSwKICAgICAubmV3X2FkZHIg PSAodW5zaWduZWQgbG9uZykoeGVuX2hlbGxvX3dvcmxkKSwKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggNWU3NzM2MC4uMDNiMzJl NCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1vbi94c3Bs aWNlLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUg PHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisjaW5jbHVkZSA8 eGVuL3hzcGxpY2VfcGF0Y2guaD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgogI2luY2x1ZGUg PGFzbS9ubWkuaD4KQEAgLTYyLDYgKzYzLDEwIEBAIHN0cnVjdCBwYXlsb2FkIHsKICAgICBzdHJ1 Y3QgeHNwbGljZV9zeW1ib2wgKnN5bXRhYjsgICAgICAgLyogQWxsIHN5bWJvbHMuICovCiAgICAg Y2hhciAqc3RydGFiOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gLnN0cnRh Yi4gKi8KICAgICB1bnNpZ25lZCBpbnQgbnN5bXM7ICAgICAgICAgICAgICAgICAgLyogTnIgb2Yg ZW50cmllcyBpbiAuc3RydGFiIGFuZCBzeW1ib2xzLiAqLworICAgIHhzcGxpY2VfbG9hZGNhbGxf dCAqbG9hZF9mdW5jczsgICAgICAvKiBUaGUgYXJyYXkgb2YgZnVuY3MgdG8gY2FsbCBhZnRlciAq LworICAgIHhzcGxpY2VfdW5sb2FkY2FsbF90ICp1bmxvYWRfZnVuY3M7ICAvKiBsb2FkIGFuZCB1 bmxvYWQgb2YgdGhlIHBheWxvYWQuICovCisgICAgdW5zaWduZWQgaW50IG5fbG9hZF9mdW5jczsg ICAgICAgICAgIC8qIE5yIG9mIHRoZSBmdW5jcyB0byBsb2FkIGFuZCBleGVjdXRlLiAqLworICAg IHVuc2lnbmVkIGludCBuX3VubG9hZF9mdW5jczsgICAgICAgICAvKiBOciBvZiBmdW5jcyB0byBj YWxsIGR1cnVuZyB1bmxvYWQuICovCiAgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0la RV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBAIC00OTksNiArNTA0LDI4IEBAIHN0YXRp YyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgICAgICB9 CiAgICAgfQogCisgICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCAiLnhzcGxp Y2UuaG9va3MubG9hZCIpOworICAgIGlmICggc2VjICkKKyAgICB7CisgICAgICAgIGlmICggIXNl Yy0+c2VjLT5zaF9zaXplIHx8CisgICAgICAgICAgICAgKHNlYy0+c2VjLT5zaF9zaXplICUgc2l6 ZW9mICgqcGF5bG9hZC0+bG9hZF9mdW5jcykpICkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworCisgICAgICAgIHBheWxvYWQtPmxvYWRfZnVuY3MgPSAoeHNwbGljZV9sb2FkY2FsbF90ICop c2VjLT5sb2FkX2FkZHI7CisgICAgICAgIHBheWxvYWQtPm5fbG9hZF9mdW5jcyA9IHNlYy0+c2Vj LT5zaF9zaXplIC8gKHNpemVvZiAqcGF5bG9hZC0+bG9hZF9mdW5jcyk7CisgICAgfQorCisgICAg c2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCAiLnhzcGxpY2UuaG9va3MudW5sb2Fk Iik7CisgICAgaWYgKCBzZWMgKQorICAgIHsKKyAgICAgICAgaWYgKCAhc2VjLT5zZWMtPnNoX3Np emUgfHwKKyAgICAgICAgICAgICAoc2VjLT5zZWMtPnNoX3NpemUgJSBzaXplb2YgKCpwYXlsb2Fk LT51bmxvYWRfZnVuY3MpKSApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAg ICBwYXlsb2FkLT51bmxvYWRfZnVuY3MgPSAoeHNwbGljZV91bmxvYWRjYWxsX3QgKilzZWMtPmxv YWRfYWRkcjsKKyAgICAgICAgcGF5bG9hZC0+bl91bmxvYWRfZnVuY3MgPSBzZWMtPnNlYy0+c2hf c2l6ZSAvIChzaXplb2YgKnBheWxvYWQtPnVubG9hZF9mdW5jcyk7CisgICAgfQorCiAgICAgLyog U2V0dXAgdGhlIHZpcnR1YWwgcmVnaW9uIHdpdGggcHJvcGVyIGRhdGEuICovCiAgICAgcmVnaW9u ID0gJnBheWxvYWQtPnJlZ2lvbjsKIApAQCAtODUxLDYgKzg3OCwxMSBAQCBzdGF0aWMgaW50IGFw cGx5X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCiAKICAgICBhcmNoX3hzcGxpY2VfcGF0 Y2hpbmdfbGVhdmUoKTsKIAorICAgIHNwaW5fZGVidWdfZGlzYWJsZSgpOworICAgIGZvciAoIGkg PSAwOyBpIDwgZGF0YS0+bl9sb2FkX2Z1bmNzOyBpKysgKQorICAgICAgICBkYXRhLT5sb2FkX2Z1 bmNzW2ldKCk7CisgICAgc3Bpbl9kZWJ1Z19lbmFibGUoKTsKKwogICAgIGxpc3RfYWRkX3RhaWwo JmRhdGEtPmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7CiAgICAgcmVnaXN0ZXJfdmlydHVh bF9yZWdpb24oJmRhdGEtPnJlZ2lvbik7CiAKQEAgLTg3NCw2ICs5MDYsMTEgQEAgc3RhdGljIGlu dCByZXZlcnRfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKIAogICAgIGFyY2hfeHNwbGlj ZV9wYXRjaGluZ19sZWF2ZSgpOwogCisgICAgc3Bpbl9kZWJ1Z19kaXNhYmxlKCk7CisgICAgZm9y ICggaSA9IDA7IGkgPCBkYXRhLT5uX3VubG9hZF9mdW5jczsgaSsrICkKKyAgICAgICAgZGF0YS0+ dW5sb2FkX2Z1bmNzW2ldKCk7CisgICAgc3Bpbl9kZWJ1Z19lbmFibGUoKTsKKwogICAgIGxpc3Rf ZGVsX2luaXQoJmRhdGEtPmFwcGxpZWRfbGlzdCk7CiAgICAgdW5yZWdpc3Rlcl92aXJ0dWFsX3Jl Z2lvbigmZGF0YS0+cmVnaW9uKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2VfcGF0Y2guaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX3BhdGNoLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkM2Y3NgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9p bmNsdWRlL3hlbi94c3BsaWNlX3BhdGNoLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICovCisKKyNpZm5kZWYgX19Y RU5fWFNQTElDRV9QQVRDSF9IX18KKyNkZWZpbmUgX19YRU5fWFNQTElDRV9QQVRDSF9IX18KKwor LyoKKyAqIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIHRvIGJlIHVzZWQgaW4gcGF0Y2hl cy4gVGhleSBhcmUgdGFrZW4KKyAqIGZyb20ga3BhdGNoLgorICovCit0eXBlZGVmIHZvaWQgKCp4 c3BsaWNlX2xvYWRjYWxsX3QpKHZvaWQpOwordHlwZWRlZiB2b2lkICgqeHNwbGljZV91bmxvYWRj YWxsX3QpKHZvaWQpOworCisvKiBUaGlzIGRlZmluaXRpb24gaXMgdGFrZW4gZnJvbSBMaW51eC4g Ki8KKyNkZWZpbmUgX19VTklRVUVfSUQocHJlZml4KSBfX1BBU1RFKF9fUEFTVEUoX19VTklRVUVf SURfLCBwcmVmaXgpLCBfX0NPVU5URVJfXykKKy8qCisgKiBYU1BMSUNFX0lHTk9SRV9TRUNUSU9O IG1hY3JvCisgKgorICogVGhpcyBtYWNybyBpcyBmb3IgaWdub3Jpbmcgc2VjdGlvbnMgdGhhdCBt YXkgY2hhbmdlIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAqIGFub3RoZXIgY2hhbmdlIG9yIG1pZ2h0 IGJlIGEgbm9uLWJ1bmRsYWJsZSBzZWN0aW9uOyB0aGF0IGlzIG9uZSB0aGF0IGRvZXMKKyAqIG5v dCBob25vciAtZmZ1bmN0aW9uLXNlY3Rpb24gYW5kIGNyZWF0ZSBhIG9uZS10by1vbmUgcmVsYXRp b24gZnJvbSBmdW5jdGlvbgorICogc3ltYm9sIHRvIHNlY3Rpb24uCisgKi8KKyNkZWZpbmUgWFNQ TElDRV9JR05PUkVfU0VDVElPTihfc2VjKSBcCisJY2hhciAqX19VTklRVUVfSUQoeHNwbGljZV9p Z25vcmVfc2VjdGlvbl8pIF9fc2VjdGlvbigiLnhzcGxpY2UuaWdub3JlLnNlY3Rpb25zIikgPSBf c2VjOworCisvKgorICogWFNQTElDRV9JR05PUkVfRlVOQ1RJT04gbWFjcm8KKyAqCisgKiBUaGlz IG1hY3JvIGlzIGZvciBpZ25vcmluZyBmdW5jdGlvbnMgdGhhdCBtYXkgY2hhbmdlIGFzIGEgc2lk ZSBlZmZlY3Qgb2YgYQorICogY2hhbmdlIGluIGFub3RoZXIgZnVuY3Rpb24uCisgKi8KKyNkZWZp bmUgWFNQTElDRV9JR05PUkVfRlVOQ1RJT04oX2ZuKSBcCisJdm9pZCAqX194c3BsaWNlX2lnbm9y ZV9mdW5jXyMjX2ZuIF9fc2VjdGlvbigiLnhzcGxpY2UuaWdub3JlLmZ1bmN0aW9ucyIpID0gX2Zu OworCisvKgorICogWFNQTElDRV9MT0FEX0hPT0sgbWFjcm8KKyAqCisgKiBEZWNsYXJlcyBhIGZ1 bmN0aW9uIHBvaW50ZXIgdG8gYmUgYWxsb2NhdGVkIGluIGEgbmV3CisgKiAueHNwbGljZS5ob29r LmxvYWQgc2VjdGlvbi4gIFRoaXMgeHNwbGljZV9sb2FkX2RhdGEgc3ltYm9sIGlzIGxhdGVyCisg KiBzdHJpcHBlZCBieSBjcmVhdGUtZGlmZi1vYmplY3Qgc28gdGhhdCBpdCBjYW4gYmUgZGVjbGFy ZWQgaW4gbXVsdGlwbGUKKyAqIG9iamVjdHMgdGhhdCBhcmUgbGF0ZXIgbGlua2VkIHRvZ2V0aGVy LCBhdm9pZGluZyBnbG9iYWwgc3ltYm9sCisgKiBjb2xsaXNpb24uICBTaW5jZSBtdWx0aXBsZSBo b29rcyBjYW4gYmUgcmVnaXN0ZXJlZCwgdGhlCisgKiAueHNwbGljZS5ob29rLmxvYWQgc2VjdGlv biBpcyBhIHRhYmxlIG9mIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUKKyAqIGV4ZWN1dGVkIGluIHNl cmllcyBieSB0aGUgeHNwbGljZSBpbmZyYXN0cnVjdHVyZSBhdCBwYXRjaCBsb2FkIHRpbWUuCisg Ki8KKyNkZWZpbmUgWFNQTElDRV9MT0FEX0hPT0soX2ZuKSBcCisJeHNwbGljZV9sb2FkY2FsbF90 IF9fYXR0cmlidXRlX18oKHdlYWspKSB4c3BsaWNlX2xvYWRfZGF0YSBfX3NlY3Rpb24oIi54c3Bs aWNlLmhvb2tzLmxvYWQiKSA9IF9mbjsKKworLyoKKyAqIFhTUExJQ0VfVU5MT0FEX0hPT0sgbWFj cm8KKyAqCisgKiBTYW1lIGFzIExPQUQgaG9vayB3aXRoIHMvbG9hZC91bmxvYWQvCisgKi8KKyNk ZWZpbmUgWFNQTElDRV9VTkxPQURfSE9PSyhfZm4pIFwKKwl4c3BsaWNlX3VubG9hZGNhbGxfdCBf X2F0dHJpYnV0ZV9fKCh3ZWFrKSkgeHNwbGljZV91bmxvYWRfZGF0YSBfX3NlY3Rpb24oIi54c3Bs aWNlLmhvb2tzLnVubG9hZCIpID0gX2ZuOworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9QQVRD SF9IX18gKi8KLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK