From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 5/6] xen/bitmap: Drop all bitmap_scn{, list}printf() infrastructure Date: Thu, 6 Sep 2018 13:08:15 +0100 Message-ID: <1536235696-31359-6-git-send-email-andrew.cooper3@citrix.com> References: <1536235696-31359-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1536235696-31359-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Julien Grall , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QWxsIGNhbGxlcnMgaGF2ZSBiZWVuIGNvbnZlcmVkIHRvIHVzaW5nICUqcGJbbF0uICBJbiB0aGUg dW5saWtlbHkgY2FzZSB0aGF0CmZ1dHVyZSBjb2RlIHdhbnRzIHRvIHJldGFpbiB0aGlzIGZ1bmN0 aW9uYWx5LCBpdCBjYW4gYmUgcmVwbGljYXRlZCBpbiBhIG1vcmUKY29udmVuaWVudCBmYXNob24g d2l0aCBzbnByaW50ZigpLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+ CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8 cm9nZXIucGF1QGNpdHJpeC5jb20+CkNDOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+CkNDOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDQzog R2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgotLS0KIHhlbi9jb21t b24vYml0bWFwLmMgICAgICAgIHwgMTA1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL2JpdG1hcC5oICAgfCAgIDYgLS0tCiB4ZW4v aW5jbHVkZS94ZW4vY3B1bWFzay5oICB8ICAxOCAtLS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL25v ZGVtYXNrLmggfCAgMzQgLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE2MyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2JpdG1hcC5jIGIveGVuL2NvbW1vbi9i aXRtYXAuYwppbmRleCBmNDk4ZWU2Li4zNGRlMzg3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2Jp dG1hcC5jCisrKyBiL3hlbi9jb21tb24vYml0bWFwLmMKQEAgLTMwMCwxMTEgKzMwMCw2IEBAIGlu dCBfX2JpdG1hcF93ZWlnaHQoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwLCBpbnQgYml0cykK ICNlbmRpZgogRVhQT1JUX1NZTUJPTChfX2JpdG1hcF93ZWlnaHQpOwogCi0vKgotICogQml0bWFw IHByaW50aW5nICYgcGFyc2luZyBmdW5jdGlvbnM6IGZpcnN0IHZlcnNpb24gYnkgQmlsbCBJcndp biwKLSAqIHNlY29uZCB2ZXJzaW9uIGJ5IFBhdWwgSmFja3NvbiwgdGhpcmQgYnkgSm9lIEtvcnR5 LgotICovCi0KLSNkZWZpbmUgQ0hVTktTWgkJCQkzMgotI2RlZmluZSBuYml0c190b19ob2xkX3Zh bHVlKHZhbCkJZmxzKHZhbCkKLSNkZWZpbmUgcm91bmR1cF9wb3dlcjIodmFsLG1vZHVsdXMpCSgo KHZhbCkgKyAobW9kdWx1cykgLSAxKSAmIH4oKG1vZHVsdXMpIC0gMSkpCi0jZGVmaW5lIHVuaGV4 KGMpCQkJKGlzZGlnaXQoYykgPyAoYyAtICcwJykgOiAodG91cHBlcihjKSAtICdBJyArIDEwKSkK LSNkZWZpbmUgQkFTRURFQyAxMAkJLyogZmFuY2llciBjcHVzZXQgbGlzdHMgaW5wdXQgaW4gZGVj aW1hbCAqLwotCi0vKioKLSAqIGJpdG1hcF9zY25wcmludGYgLSBjb252ZXJ0IGJpdG1hcCB0byBh biBBU0NJSSBoZXggc3RyaW5nLgotICogQGJ1ZjogYnl0ZSBidWZmZXIgaW50byB3aGljaCBzdHJp bmcgaXMgcGxhY2VkCi0gKiBAYnVmbGVuOiByZXNlcnZlZCBzaXplIG9mIEBidWYsIGluIGJ5dGVz Ci0gKiBAbWFza3A6IHBvaW50ZXIgdG8gYml0bWFwIHRvIGNvbnZlcnQKLSAqIEBubWFza2JpdHM6 IHNpemUgb2YgYml0bWFwLCBpbiBiaXRzCi0gKgotICogRXhhY3RseSBAbm1hc2tiaXRzIGJpdHMg YXJlIGRpc3BsYXllZC4gIEhleCBkaWdpdHMgYXJlIGdyb3VwZWQgaW50bwotICogY29tbWEtc2Vw YXJhdGVkIHNldHMgb2YgZWlnaHQgZGlnaXRzIHBlciBzZXQuCi0gKi8KLWludCBiaXRtYXBfc2Nu cHJpbnRmKGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGJ1ZmxlbiwKLQljb25zdCB1bnNpZ25lZCBs b25nICptYXNrcCwgaW50IG5tYXNrYml0cykKLXsKLQlpbnQgaSwgd29yZCwgYml0LCBsZW4gPSAw OwotCXVuc2lnbmVkIGxvbmcgdmFsOwotCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwotCWludCBjaHVu a3N6OwotCXUzMiBjaHVua21hc2s7Ci0KLQljaHVua3N6ID0gbm1hc2tiaXRzICYgKENIVU5LU1og LSAxKTsKLQlpZiAoY2h1bmtzeiA9PSAwKQotCQljaHVua3N6ID0gQ0hVTktTWjsKLQotCWkgPSBy b3VuZHVwX3Bvd2VyMihubWFza2JpdHMsIENIVU5LU1opIC0gQ0hVTktTWjsKLQlmb3IgKDsgaSA+ PSAwOyBpIC09IENIVU5LU1opIHsKLQkJY2h1bmttYXNrID0gKCgxVUxMIDw8IGNodW5rc3opIC0g MSk7Ci0JCXdvcmQgPSBpIC8gQklUU19QRVJfTE9ORzsKLQkJYml0ID0gaSAlIEJJVFNfUEVSX0xP Tkc7Ci0JCXZhbCA9IChtYXNrcFt3b3JkXSA+PiBiaXQpICYgY2h1bmttYXNrOwotCQlsZW4gKz0g c2NucHJpbnRmKGJ1ZitsZW4sIGJ1Zmxlbi1sZW4sICIlcyUwKmx4Iiwgc2VwLAotCQkJKGNodW5r c3orMykvNCwgdmFsKTsKLQkJY2h1bmtzeiA9IENIVU5LU1o7Ci0JCXNlcCA9ICIsIjsKLQl9Ci0J cmV0dXJuIGxlbjsKLX0KLUVYUE9SVF9TWU1CT0woYml0bWFwX3NjbnByaW50Zik7Ci0KLS8qCi0g KiBic2NubF9lbWl0KGJ1ZiwgYnVmbGVuLCByYm90LCBydG9wLCBicCkKLSAqCi0gKiBIZWxwZXIg cm91dGluZSBmb3IgYml0bWFwX3Njbmxpc3RwcmludGYoKS4gIFdyaXRlIGRlY2ltYWwgbnVtYmVy Ci0gKiBvciByYW5nZSB0byBidWYsIHN1cHByZXNzaW5nIG91dHB1dCBwYXN0IGJ1ZitidWZsZW4s IHdpdGggb3B0aW9uYWwKLSAqIGNvbW1hLXByZWZpeC4gIFJldHVybiBsZW4gb2Ygd2hhdCB3b3Vs ZCBiZSB3cml0dGVuIHRvIGJ1ZiwgaWYgaXQKLSAqIGFsbCBmaXQuCi0gKi8KLXN0YXRpYyBpbmxp bmUgaW50IGJzY25sX2VtaXQoY2hhciAqYnVmLCBpbnQgYnVmbGVuLCBpbnQgcmJvdCwgaW50IHJ0 b3AsIGludCBsZW4pCi17Ci0JaWYgKGxlbiA+IDApCi0JCWxlbiArPSBzY25wcmludGYoYnVmICsg bGVuLCBidWZsZW4gLSBsZW4sICIsIik7Ci0JaWYgKHJib3QgPT0gcnRvcCkKLQkJbGVuICs9IHNj bnByaW50ZihidWYgKyBsZW4sIGJ1ZmxlbiAtIGxlbiwgIiVkIiwgcmJvdCk7Ci0JZWxzZQotCQls ZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmbGVuIC0gbGVuLCAiJWQtJWQiLCByYm90LCBy dG9wKTsKLQlyZXR1cm4gbGVuOwotfQotCi0vKioKLSAqIGJpdG1hcF9zY25saXN0cHJpbnRmIC0g Y29udmVydCBiaXRtYXAgdG8gbGlzdCBmb3JtYXQgQVNDSUkgc3RyaW5nCi0gKiBAYnVmOiBieXRl IGJ1ZmZlciBpbnRvIHdoaWNoIHN0cmluZyBpcyBwbGFjZWQKLSAqIEBidWZsZW46IHJlc2VydmVk IHNpemUgb2YgQGJ1ZiwgaW4gYnl0ZXMKLSAqIEBtYXNrcDogcG9pbnRlciB0byBiaXRtYXAgdG8g Y29udmVydAotICogQG5tYXNrYml0czogc2l6ZSBvZiBiaXRtYXAsIGluIGJpdHMKLSAqCi0gKiBP dXRwdXQgZm9ybWF0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZGVjaW1hbCBudW1iZXJz IGFuZAotICogcmFuZ2VzLiAgQ29uc2VjdXRpdmVseSBzZXQgYml0cyBhcmUgc2hvd24gYXMgdHdv IGh5cGhlbi1zZXBhcmF0ZWQKLSAqIGRlY2ltYWwgbnVtYmVycywgdGhlIHNtYWxsZXN0IGFuZCBs YXJnZXN0IGJpdCBudW1iZXJzIHNldCBpbgotICogdGhlIHJhbmdlLiAgT3V0cHV0IGZvcm1hdCBp cyBjb21wYXRpYmxlIHdpdGggdGhlIGZvcm1hdAotICogYWNjZXB0ZWQgYXMgaW5wdXQgYnkgYml0 bWFwX3BhcnNlbGlzdCgpLgotICoKLSAqIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBv ZiBjaGFyYWN0ZXJzIHdoaWNoIHdlcmUgb3V0cHV0LAotICogZXhjbHVkaW5nIHRoZSB0cmFpbGlu ZyAnXDAnLgotICovCi1pbnQgYml0bWFwX3Njbmxpc3RwcmludGYoY2hhciAqYnVmLCB1bnNpZ25l ZCBpbnQgYnVmbGVuLAotCWNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hc2twLCBpbnQgbm1hc2tiaXRz KQotewotCWludCBsZW4gPSAwOwotCS8qIGN1cnJlbnQgYml0IGlzICdjdXInLCBtb3N0IHJlY2Vu dGx5IHNlZW4gcmFuZ2UgaXMgW3Jib3QsIHJ0b3BdICovCi0JaW50IGN1ciwgcmJvdCwgcnRvcDsK LQotCXJib3QgPSBjdXIgPSBmaW5kX2ZpcnN0X2JpdChtYXNrcCwgbm1hc2tiaXRzKTsKLQl3aGls ZSAoY3VyIDwgbm1hc2tiaXRzKSB7Ci0JCXJ0b3AgPSBjdXI7Ci0JCWN1ciA9IGZpbmRfbmV4dF9i aXQobWFza3AsIG5tYXNrYml0cywgY3VyKzEpOwotCQlpZiAoY3VyID49IG5tYXNrYml0cyB8fCBj dXIgPiBydG9wICsgMSkgewotCQkJbGVuID0gYnNjbmxfZW1pdChidWYsIGJ1ZmxlbiwgcmJvdCwg cnRvcCwgbGVuKTsKLQkJCXJib3QgPSBjdXI7Ci0JCX0KLQl9Ci0JaWYgKCFsZW4gJiYgYnVmbGVu KQotCQkqYnVmID0gMDsKLQlyZXR1cm4gbGVuOwotfQotRVhQT1JUX1NZTUJPTChiaXRtYXBfc2Nu bGlzdHByaW50Zik7CiAKIC8qKgogICoJYml0bWFwX2ZpbmRfZnJlZV9yZWdpb24gLSBmaW5kIGEg Y29udGlndW91cyBhbGlnbmVkIG1lbSByZWdpb24KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9iaXRtYXAuaCBiL3hlbi9pbmNsdWRlL3hlbi9iaXRtYXAuaAppbmRleCBlMmEzNjg2Li5mZTNj NzIwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vYml0bWFwLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL2JpdG1hcC5oCkBAIC00MCw4ICs0MCw2IEBACiAgKiBiaXRtYXBfd2VpZ2h0KHNyYywg bmJpdHMpCQkJSGFtbWluZyBXZWlnaHQ6IG51bWJlciBzZXQgYml0cwogICogYml0bWFwX3NoaWZ0 X3JpZ2h0KGRzdCwgc3JjLCBuLCBuYml0cykJKmRzdCA9ICpzcmMgPj4gbgogICogYml0bWFwX3No aWZ0X2xlZnQoZHN0LCBzcmMsIG4sIG5iaXRzKQkqZHN0ID0gKnNyYyA8PCBuCi0gKiBiaXRtYXBf c2NucHJpbnRmKGJ1ZiwgbGVuLCBzcmMsIG5iaXRzKQlQcmludCBiaXRtYXAgc3JjIHRvIGJ1Zgot ICogYml0bWFwX3Njbmxpc3RwcmludGYoYnVmLCBsZW4sIHNyYywgbmJpdHMpCVByaW50IGJpdG1h cCBzcmMgYXMgbGlzdCB0byBidWYKICAqLwogCiAvKgpAQCAtOTQsMTAgKzkyLDYgQEAgZXh0ZXJu IGludCBfX2JpdG1hcF9zdWJzZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMSwKIAkJCWNv bnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIGludCBiaXRzKTsKIGV4dGVybiBpbnQgX19iaXRt YXBfd2VpZ2h0KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgaW50IGJpdHMpOwogCi1leHRl cm4gaW50IGJpdG1hcF9zY25wcmludGYoY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuLAotCQkJ Y29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCBpbnQgbmJpdHMpOwotZXh0ZXJuIGludCBiaXRtYXBf c2NubGlzdHByaW50ZihjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4sCi0JCQljb25zdCB1bnNp Z25lZCBsb25nICpzcmMsIGludCBuYml0cyk7CiBleHRlcm4gaW50IGJpdG1hcF9maW5kX2ZyZWVf cmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgaW50IGJpdHMsIGludCBvcmRlcik7CiBleHRl cm4gdm9pZCBiaXRtYXBfcmVsZWFzZV9yZWdpb24odW5zaWduZWQgbG9uZyAqYml0bWFwLCBpbnQg cG9zLCBpbnQgb3JkZXIpOwogZXh0ZXJuIGludCBiaXRtYXBfYWxsb2NhdGVfcmVnaW9uKHVuc2ln bmVkIGxvbmcgKmJpdG1hcCwgaW50IHBvcywgaW50IG9yZGVyKTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9jcHVtYXNrLmggYi94ZW4vaW5jbHVkZS94ZW4vY3B1bWFzay5oCmluZGV4IDQ3 MzFhNjMuLmI0Y2M5MmEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9jcHVtYXNrLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2NwdW1hc2suaApAQCAtOCw5ICs4LDYgQEAKICAqIFNlZSBkZXRh aWxlZCBjb21tZW50cyBpbiB0aGUgZmlsZSB4ZW4vYml0bWFwLmggZGVzY3JpYmluZyB0aGUKICAq IGRhdGEgdHlwZSBvbiB3aGljaCB0aGVzZSBjcHVtYXNrcyBhcmUgYmFzZWQuCiAgKgotICogRm9y IGRldGFpbHMgb2YgY3B1bWFza19zY25wcmludGYoKSBhbmQgY3B1bGlzdF9zY25wcmludGYoKSwK LSAqIHNlZSBiaXRtYXBfc2NucHJpbnRmKCkgYW5kIGJpdG1hcF9zY25saXN0cHJpbnRmKCkgaW4g bGliL2JpdG1hcC5jLgotICoKICAqIFRoZSBhdmFpbGFibGUgY3B1bWFzayBvcGVyYXRpb25zIGFy ZToKICAqCiAgKiB2b2lkIGNwdW1hc2tfc2V0X2NwdShjcHUsIG1hc2spCXR1cm4gb24gYml0ICdj cHUnIGluIG1hc2sKQEAgLTQ2LDkgKzQzLDYgQEAKICAqIGNvbnN0IGNwdW1hc2tfdCAqY3B1bWFz a19vZihjcHUpCVJldHVybiBjcHVtYXNrIHdpdGggYml0ICdjcHUnIHNldAogICogdW5zaWduZWQg bG9uZyAqY3B1bWFza19iaXRzKG1hc2spCUFycmF5IG9mIHVuc2lnbmVkIGxvbmcncyBpbiBtYXNr CiAgKgotICogaW50IGNwdW1hc2tfc2NucHJpbnRmKGJ1ZiwgbGVuLCBtYXNrKSBGb3JtYXQgY3B1 bWFzayBmb3IgcHJpbnRpbmcKLSAqIGludCBjcHVsaXN0X3NjbnByaW50ZihidWYsIGxlbiwgbWFz aykgRm9ybWF0IGNwdW1hc2sgYXMgbGlzdCBmb3IgcHJpbnRpbmcKLSAqCiAgKiBmb3JfZWFjaF9j cHUoY3B1LCBtYXNrKQkJZm9yLWxvb3AgY3B1IG92ZXIgbWFzawogICoKICAqIGludCBudW1fb25s aW5lX2NwdXMoKQkJTnVtYmVyIG9mIG9ubGluZSBDUFVzCkBAIC0zMTIsMTggKzMwNiw2IEBAIHN0 YXRpYyBpbmxpbmUgY29uc3QgY3B1bWFza190ICpjcHVtYXNrX29mKHVuc2lnbmVkIGludCBjcHUp CiAKICNkZWZpbmUgY3B1bWFza19iaXRzKG1hc2twKSAoKG1hc2twKS0+Yml0cykKIAotc3RhdGlj IGlubGluZSBpbnQgY3B1bWFza19zY25wcmludGYoY2hhciAqYnVmLCBpbnQgbGVuLAotCQkJCSAg ICBjb25zdCBjcHVtYXNrX3QgKnNyY3ApCi17Ci0JcmV0dXJuIGJpdG1hcF9zY25wcmludGYoYnVm LCBsZW4sIHNyY3AtPmJpdHMsIG5yX2NwdV9pZHMpOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBj cHVsaXN0X3NjbnByaW50ZihjaGFyICpidWYsIGludCBsZW4sCi0JCQkJICAgIGNvbnN0IGNwdW1h c2tfdCAqc3JjcCkKLXsKLQlyZXR1cm4gYml0bWFwX3Njbmxpc3RwcmludGYoYnVmLCBsZW4sIHNy Y3AtPmJpdHMsIG5yX2NwdV9pZHMpOwotfQotCiAvKgogICogY3B1bWFza192YXJfdDogc3RydWN0 IGNwdW1hc2sgZm9yIHN0YWNrIHVzYWdlLgogICoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9ub2RlbWFzay5oIGIveGVuL2luY2x1ZGUveGVuL25vZGVtYXNrLmgKaW5kZXggMmE5MGRjMS4u ZTI4NzM5OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL25vZGVtYXNrLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL25vZGVtYXNrLmgKQEAgLTgsMTAgKzgsNiBAQAogICogU2VlIGRldGFpbGVk IGNvbW1lbnRzIGluIHRoZSBmaWxlIGxpbnV4L2JpdG1hcC5oIGRlc2NyaWJpbmcgdGhlCiAgKiBk YXRhIHR5cGUgb24gd2hpY2ggdGhlc2Ugbm9kZW1hc2tzIGFyZSBiYXNlZC4KICAqCi0gKiBGb3Ig ZGV0YWlscyBvZiBub2RlbWFza19zY25wcmludGYoKSwgbm9kZWxpc3Rfc2NucGludGYoKSBhbmQK LSAqIG5vZGVtYXNrX3BhcnNlKCksIHNlZSBiaXRtYXBfc2NucHJpbnRmKCkgYW5kIGJpdG1hcF9w YXJzZSgpCi0gKiBpbiBsaWIvYml0bWFwLmMuCi0gKgogICogVGhlIGF2YWlsYWJsZSBub2RlbWFz ayBvcGVyYXRpb25zIGFyZToKICAqCiAgKiB2b2lkIG5vZGVfc2V0KG5vZGUsIG1hc2spCQl0dXJu IG9uIGJpdCAnbm9kZScgaW4gbWFzawpAQCAtNTAsMTAgKzQ2LDYgQEAKICAqIE5PREVfTUFTS19O T05FCQkJSW5pdGlhbGl6ZXIgLSBubyBiaXRzIHNldAogICogdW5zaWduZWQgbG9uZyAqbm9kZXNf YWRkcihtYXNrKQlBcnJheSBvZiB1bnNpZ25lZCBsb25nJ3MgaW4gbWFzawogICoKLSAqIGludCBu b2RlbWFza19zY25wcmludGYoYnVmLCBsZW4sIG1hc2spIEZvcm1hdCBub2RlbWFzayBmb3IgcHJp bnRpbmcKLSAqIGludCBub2RlbGlzdF9zY25wcmludGYoYnVmLCBsZW4sIG1hc2spIEZvcm1hdCBu b2RlbWFzayBhcyBhIGxpc3QgZm9yIHByaW50aW5nCi0gKiBpbnQgbm9kZW1hc2tfcGFyc2UodWJ1 ZiwgdWxlbiwgbWFzaykJUGFyc2UgYXNjaWkgc3RyaW5nIGFzIG5vZGVtYXNrCi0gKgogICogZm9y X2VhY2hfbm9kZV9tYXNrKG5vZGUsIG1hc2spCWZvci1sb29wIG5vZGUgb3ZlciBtYXNrCiAgKgog ICogaW50IG51bV9vbmxpbmVfbm9kZXMoKQkJTnVtYmVyIG9mIG9ubGluZSBOb2RlcwpAQCAtMjk0 LDMyICsyODYsNiBAQCBzdGF0aWMgaW5saW5lIGludCBfX2N5Y2xlX25vZGUoaW50IG4sIGNvbnN0 IG5vZGVtYXNrX3QgKm1hc2twLCBpbnQgbmJpdHMpCiAKICNkZWZpbmUgbm9kZXNfYWRkcihzcmMp ICgoc3JjKS5iaXRzKQogCi0jZGVmaW5lIG5vZGVsaXN0X3NjbnByaW50ZihidWYsIGxlbiwgc3Jj KSBcCi0JCQlfX25vZGVsaXN0X3NjbnByaW50ZigoYnVmKSwgKGxlbiksIChzcmMpLCBNQVhfTlVN Tk9ERVMpCi1zdGF0aWMgaW5saW5lIGludCBfX25vZGVsaXN0X3NjbnByaW50ZihjaGFyICpidWYs IGludCBsZW4sCi0JCQkJCWNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuYml0cykKLXsKLQly ZXR1cm4gYml0bWFwX3Njbmxpc3RwcmludGYoYnVmLCBsZW4sIHNyY3AtPmJpdHMsIG5iaXRzKTsK LX0KLQotI2lmIDAKLSNkZWZpbmUgbm9kZW1hc2tfc2NucHJpbnRmKGJ1ZiwgbGVuLCBzcmMpIFwK LQkJCV9fbm9kZW1hc2tfc2NucHJpbnRmKChidWYpLCAobGVuKSwgJihzcmMpLCBNQVhfTlVNTk9E RVMpCi1zdGF0aWMgaW5saW5lIGludCBfX25vZGVtYXNrX3NjbnByaW50ZihjaGFyICpidWYsIGlu dCBsZW4sCi0JCQkJCWNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuYml0cykKLXsKLQlyZXR1 cm4gYml0bWFwX3NjbnByaW50ZihidWYsIGxlbiwgc3JjcC0+Yml0cywgbmJpdHMpOwotfQotCi0j ZGVmaW5lIG5vZGVtYXNrX3BhcnNlKHVidWYsIHVsZW4sIGRzdCkgXAotCQkJX19ub2RlbWFza19w YXJzZSgodWJ1ZiksICh1bGVuKSwgJihkc3QpLCBNQVhfTlVNTk9ERVMpCi1zdGF0aWMgaW5saW5l IGludCBfX25vZGVtYXNrX3BhcnNlKGNvbnN0IGNoYXIgX191c2VyICpidWYsIGludCBsZW4sCi0J CQkJCW5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKLXsKLQlyZXR1cm4gYml0bWFwX3BhcnNl KGJ1ZiwgbGVuLCBkc3RwLT5iaXRzLCBuYml0cyk7Ci19Ci0jZW5kaWYKLQogI2lmIE1BWF9OVU1O T0RFUyA+IDEKICNkZWZpbmUgZm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsIG1hc2spCQkJXAogCWZv ciAoKG5vZGUpID0gZmlyc3Rfbm9kZShtYXNrKTsJCQlcCi0tIAoyLjEuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=