From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH RFC 04/23] libxc: add support for FreeBSD Date: Wed, 16 Apr 2014 16:13:13 +0200 Message-ID: <1397657612-57277-5-git-send-email-roger.pau@citrix.com> References: <1397657612-57277-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WaQbQ-0006Zg-7I for xen-devel@lists.xenproject.org; Wed, 16 Apr 2014 14:14:16 +0000 In-Reply-To: <1397657612-57277-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWRkIHRoZSBGcmVlQlNEIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcml2Y21kIGFuZCBldnRjaG4g ZGV2aWNlcwppbnRlcmZhY2UuCgpUaGUgZXZ0Y2huIGRldmljZSBpbnRlcmZhY2UgaXMgdGhlIHNh bWUgYXMgdGhlIExpbnV4IG9uZSwgd2hpbGUgdGhlCnByaXZjbWQgbWFwIGludGVyZmFjZSBpcyBz aW1wbGlmaWVkIGJlY2F1c2UgRnJlZUJTRCBvbmx5IHN1cHBvcnRzCklPQ1RMX1BSSVZDTURfTU1B UEJBVENILgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJp eC5jb20+CkNjOiBJYW4gSmFja3NvbiA8SWFuLkphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IElh biBDYW1wYmVsbCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+Ci0tLQogdG9vbHMvbGlieGMvTWFr ZWZpbGUgICAgICAgICAgIHwgICAgMSArCiB0b29scy9saWJ4Yy94Y19mcmVlYnNkLmMgICAgICAg fCAgIDcyICsrKysrKysKIHRvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYyB8ICA0MDUgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0 NzggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29s cy9saWJ4Yy94Y19mcmVlYnNkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJ4Yy94Y19m cmVlYnNkX29zZGVwLmMKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9NYWtlZmlsZSBiL3Rvb2xz L2xpYnhjL01ha2VmaWxlCmluZGV4IDJjY2EyYjIuLjdmOWI2NzIgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhjL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCkBAIC0zNiw2ICszNiw3 IEBAIENUUkxfU1JDUy15ICAgICAgICs9IHh0bF9jb3JlLmMKIENUUkxfU1JDUy15ICAgICAgICs9 IHh0bF9sb2dnZXJfc3RkaW8uYwogQ1RSTF9TUkNTLSQoQ09ORklHX1g4NikgKz0geGNfcGFnZXRh Yi5jCiBDVFJMX1NSQ1MtJChDT05GSUdfTGludXgpICs9IHhjX2xpbnV4LmMgeGNfbGludXhfb3Nk ZXAuYworQ1RSTF9TUkNTLSQoQ09ORklHX0ZyZWVCU0QpICs9IHhjX2ZyZWVic2QuYyB4Y19mcmVl YnNkX29zZGVwLmMKIENUUkxfU1JDUy0kKENPTkZJR19TdW5PUykgKz0geGNfc29sYXJpcy5jCiBD VFJMX1NSQ1MtJChDT05GSUdfTmV0QlNEKSArPSB4Y19uZXRic2QuYwogQ1RSTF9TUkNTLSQoQ09O RklHX01pbmlPUykgKz0geGNfbWluaW9zLmMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2Zy ZWVic2QuYyBiL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi44ZDE2OWY0Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGMveGNf ZnJlZWJzZC5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg KiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKKworLyogT3B0aW9u YWxseSBmbHVzaCBmaWxlIHRvIGRpc2sgYW5kIGRpc2NhcmQgcGFnZSBjYWNoZSAqLwordm9pZCBk aXNjYXJkX2ZpbGVfY2FjaGUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBmZCwgaW50IGZsdXNoKSAK K3sKKyAgICBvZmZfdCBjdXIgPSAwOworICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworCisg ICAgaWYgKCBmbHVzaCAmJiAoZnN5bmMoZmQpIDwgMCkgKQorICAgICAgICBnb3RvIG91dDsKKwor ICAgIC8qIAorICAgICAqIENhbGN1bGF0ZSBsYXN0IHBhZ2UgYm91bmRhcnkgb2YgYW1vdW50IHdy aXR0ZW4gc28gZmFyIAorICAgICAqIHVubGVzcyB3ZSBhcmUgZmx1c2hpbmcgaW4gd2hpY2ggY2Fz ZSBlbnRpcmUgY2FjaGUKKyAgICAgKiBpcyBkaXNjYXJkZWQuCisgICAgICovCisgICAgaWYgKCAh Zmx1c2ggKQorICAgIHsKKyAgICAgICAgaWYgKCAoY3VyID0gbHNlZWsoZmQsIDAsIFNFRUtfQ1VS KSkgPT0gKG9mZl90KS0xICkKKyAgICAgICAgICAgIGN1ciA9IDA7CisgICAgICAgIGN1ciAmPSB+ KFhDX1BBR0VfU0laRS0xKTsKKyAgICB9CisKKyAgICAvKiBEaXNjYXJkIGZyb20gdGhlIGJ1ZmZl ciBjYWNoZS4gKi8KKyAgICBpZiAoIHBvc2l4X2ZhZHZpc2UoZmQsIDAsIGN1ciwgUE9TSVhfRkFE Vl9ET05UTkVFRCkgPCAwICkKKyAgICAgICAgZ290byBvdXQ7CisKKyBvdXQ6CisgICAgZXJybm8g PSBzYXZlZF9lcnJubzsKK30KKwordm9pZCAqeGNfbWVtYWxpZ24oeGNfaW50ZXJmYWNlICp4Y2gs IHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQoreworICAgIGludCByZXQ7CisgICAgdm9p ZCAqcHRyOworCisgICAgcmV0ID0gcG9zaXhfbWVtYWxpZ24oJnB0ciwgYWxpZ25tZW50LCBzaXpl KTsKKyAgICBpZiAoIHJldCAhPSAwIHx8ICFwdHIgKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgIHJldHVybiBwdHI7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdp ZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5jIGIvdG9vbHMvbGlieGMveGNfZnJlZWJz ZF9vc2RlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MWQzYmYKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4Yy94Y19mcmVlYnNkX29zZGVwLmMKQEAgLTAsMCAr MSw0MDUgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IDIwMDYg U3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBz dWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgKgorICogeGNfZ250dGFiIGZ1bmN0aW9uczoKKyAq IENvcHlyaWdodCAoYykgMjAwNy0yMDA4LCBEIEcgTXVycmF5IDxEZXJlay5NdXJyYXlAY2wuY2Ft LmFjLnVrPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSA8ZXJy bm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisj aW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUg PHhlbi9tZW1vcnkuaD4KKyNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgorCisjaW5jbHVkZSAi eGVuY3RybC5oIgorI2luY2x1ZGUgInhlbmN0cmxvc2RlcC5oIgorCisjZGVmaW5lIFBSSVZDTURf REVWICAgICAiL2Rldi94ZW4vcHJpdmNtZCIKKyNkZWZpbmUgRVZUQ0hOX0RFViAgICAgICIvZGV2 L3hlbi9ldnRjaG4iCisKKyNkZWZpbmUgUEVSUk9SKF9tLCBfYS4uLikgeGNfb3NkZXBfbG9nKHhj aCxYVExfRVJST1IsWENfSU5URVJOQUxfRVJST1IsX20gXAorICAgICAgICAgICAgICAgICAgIiAo JWQgPSAlcykiLCAjIyBfYSAsIGVycm5vLCB4Y19zdHJlcnJvcih4Y2gsIGVycm5vKSkKKworLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZjbWQgZGV2aWNlIGludGVyZmFjZSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB4Y19vc2RlcF9oYW5kbGUgZnJlZWJzZF9wcml2 Y21kX29wZW4oeGNfaW50ZXJmYWNlICp4Y2gpCit7CisgICAgaW50IGZsYWdzLCBzYXZlZF9lcnJu bzsKKyAgICBpbnQgZmQgPSBvcGVuKFBSSVZDTURfREVWLCBPX1JEV1IpOworCisgICAgaWYgKCBm ZCA9PSAtMSApCisgICAgeworICAgICAgICBQRVJST1IoIkNvdWxkIG5vdCBvYnRhaW4gaGFuZGxl IG9uIHByaXZpbGVnZWQgY29tbWFuZCBpbnRlcmZhY2UgIgorICAgICAgICAgICAgICAgUFJJVkNN RF9ERVYpOworICAgICAgICByZXR1cm4gWENfT1NERVBfT1BFTl9FUlJPUjsKKyAgICB9CisKKyAg ICAvKgorICAgICAqIEFsdGhvdWdoIHdlIHJldHVybiB0aGUgZmlsZSBoYW5kbGUgYXMgdGhlICd4 YyBoYW5kbGUnIHRoZSBBUEkKKyAgICAgKiBkb2VzIG5vdCBzcGVjaWZ5IC8gZ3VhcmVudGVlIHRo YXQgdGhpcyBpbnRlZ2VyIGlzIGluIGZhY3QKKyAgICAgKiBhIGZpbGUgaGFuZGxlLiBUaHVzIHdl IG11c3QgdGFrZSByZXNwb25zaWJsaXR5IHRvIGVuc3VyZQorICAgICAqIGl0IGRvZXNuJ3QgcHJv cGFnYXRlIChpZSBsZWFrKSBvdXRzaWRlIHRoZSBwcm9jZXNzLgorICAgICAqLworICAgIGlmICgg KGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkQpKSA8IDAgKQorICAgIHsKKyAgICAgICAgUEVSUk9S KCJDb3VsZCBub3QgZ2V0IGZpbGUgaGFuZGxlIGZsYWdzIik7CisgICAgICAgIGdvdG8gZXJyb3I7 CisgICAgfQorCisgICAgZmxhZ3MgfD0gRkRfQ0xPRVhFQzsKKworICAgIGlmICggZmNudGwoZmQs IEZfU0VURkQsIGZsYWdzKSA8IDAgKQorICAgIHsKKyAgICAgICAgUEVSUk9SKCJDb3VsZCBub3Qg c2V0IGZpbGUgaGFuZGxlIGZsYWdzIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisg ICAgcmV0dXJuICh4Y19vc2RlcF9oYW5kbGUpZmQ7CisKKyBlcnJvcjoKKyAgICBzYXZlZF9lcnJu byA9IGVycm5vOworICAgIGNsb3NlKGZkKTsKKyAgICBlcnJubyA9IHNhdmVkX2Vycm5vOworCisg ICAgcmV0dXJuIFhDX09TREVQX09QRU5fRVJST1I7Cit9CisKK3N0YXRpYyBpbnQgZnJlZWJzZF9w cml2Y21kX2Nsb3NlKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19vc2RlcF9oYW5kbGUgaCkKK3sKKyAg ICBpbnQgZmQgPSAoaW50KWg7CisKKyAgICByZXR1cm4gY2xvc2UoZmQpOworfQorCisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2Y21kIGh5cGVyY2FsbCBpbnRlcmZhY2UgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgKmZyZWVic2RfcHJpdmNtZF9hbGxvY19oeXBl cmNhbGxfYnVmZmVyKHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX29zZGVwX2hhbmRsZSBoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBucGFnZXMpCit7 CisgICAgc2l6ZV90IHNpemUgPSBucGFnZXMgKiBYQ19QQUdFX1NJWkU7CisgICAgdm9pZCAqcDsK KworICAgIC8qIEFkZHJlc3MgcmV0dXJuZWQgYnkgbW1hcCBpcyBwYWdlIGFsaWduZWQuICovCisg ICAgcCA9IG1tYXAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRF fE1BUF9BTk9OWU1PVVMsCisgICAgICAgICAgICAgLTEsIDApOworICAgIGlmIChwID09IE5VTEwp CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyoKKyAgICAgKiBTaW5jZSBGcmVlQlNEIGRv ZXNuJ3QgaGF2ZSB0aGUgTUFQX0xPQ0tFRCBmbGFnLAorICAgICAqIGxvY2sgbWVtb3J5IHVzaW5n IG1sb2NrLgorICAgICAqLworICAgIGlmICggbWxvY2socCwgc2l6ZSkgPCAwICkKKyAgICB7Cisg ICAgICAgIG11bm1hcChwLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisg ICAgcmV0dXJuIHA7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVic2RfcHJpdmNtZF9mcmVlX2h5cGVy Y2FsbF9idWZmZXIoeGNfaW50ZXJmYWNlICp4Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhjX29zZGVwX2hhbmRsZSBoLCB2b2lkICpwdHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBucGFn ZXMpCit7CisKKyAgICAvKiBVbmxvY2sgcGFnZXMgKi8KKyAgICBtdW5sb2NrKHB0ciwgbnBhZ2Vz ICogWENfUEFHRV9TSVpFKTsKKworICAgIG11bm1hcChwdHIsIG5wYWdlcyAqIFhDX1BBR0VfU0la RSk7Cit9CisKK3N0YXRpYyBpbnQgZnJlZWJzZF9wcml2Y21kX2h5cGVyY2FsbCh4Y19pbnRlcmZh Y2UgKnhjaCwgeGNfb3NkZXBfaGFuZGxlIGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpdmNtZF9oeXBlcmNhbGxfdCAqaHlwZXJjYWxsKQoreworICAgIGludCBmZCA9 IChpbnQpaDsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX1BSSVZD TURfSFlQRVJDQUxMLCBoeXBlcmNhbGwpOworCisgICAgcmV0dXJuIChyZXQgPT0gMCkgPyBoeXBl cmNhbGwtPnJldHZhbCA6IHJldDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2 Y21kIGZvcmVpZ24gbWFwIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRp YyB2b2lkICpmcmVlYnNkX3ByaXZjbWRfbWFwX2ZvcmVpZ25fYnVsayh4Y19pbnRlcmZhY2UgKnhj aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfb3Nk ZXBfaGFuZGxlIGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IGRvbSwgaW50IHByb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHhlbl9wZm5fdCAqYXJyLCBpbnQgKmVyciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51 bSkKK3sKKyAgICBpbnQgZmQgPSAoaW50KWg7CisgICAgcHJpdmNtZF9tbWFwYmF0Y2hfdCBpb2N0 bHg7CisgICAgdm9pZCAqYWRkcjsKKyAgICBpbnQgcmM7CisKKyAgICBhZGRyID0gbW1hcChOVUxM LCBudW0gPDwgWENfUEFHRV9TSElGVCwgcHJvdCwgTUFQX1NIQVJFRCwgZmQsIDApOworICAgIGlm ICggYWRkciA9PSBNQVBfRkFJTEVEICkKKyAgICB7CisgICAgICAgIFBFUlJPUigieGNfbWFwX2Zv cmVpZ25fYmF0Y2g6IG1tYXAgZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K KworICAgIGlvY3RseC5udW0gPSBudW07CisgICAgaW9jdGx4LmRvbSA9IGRvbTsKKyAgICBpb2N0 bHguYWRkciA9ICh1bnNpZ25lZCBsb25nKWFkZHI7CisgICAgaW9jdGx4LmFyciA9IGFycjsKKyAg ICBpb2N0bHguZXJyID0gZXJyOworCisgICAgcmMgPSBpb2N0bChmZCwgSU9DVExfUFJJVkNNRF9N TUFQQkFUQ0gsICZpb2N0bHgpOworICAgIGlmICggcmMgPCAwICkKKyAgICB7CisgICAgICAgIGlu dCBzYXZlZF9lcnJubyA9IGVycm5vOworICAgICAgICBQRVJST1IoInhjX21hcF9mb3JlaWduX2Jh dGNoOiBpb2N0bCBmYWlsZWQiKTsKKyAgICAgICAgKHZvaWQpbXVubWFwKGFkZHIsIG51bSA8PCBY Q19QQUdFX1NISUZUKTsKKyAgICAgICAgZXJybm8gPSBzYXZlZF9lcnJubzsKKyAgICAgICAgcmV0 dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGFkZHI7Cit9CisKK3N0YXRpYyB2b2lkICpm cmVlYnNkX3ByaXZjbWRfbWFwX2ZvcmVpZ25fcmFuZ2UoeGNfaW50ZXJmYWNlICp4Y2gsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX29zZGVwX2hhbmRs ZSBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBkb20sIGludCBzaXplLCBpbnQgcHJvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4pCit7CisgICAgeGVuX3Bmbl90 ICphcnI7CisgICAgaW50IG51bTsKKyAgICBpbnQgaTsKKyAgICB2b2lkICpyZXQ7CisKKyAgICBu dW0gPSAoc2l6ZSArIFhDX1BBR0VfU0laRSAtIDEpID4+IFhDX1BBR0VfU0hJRlQ7CisgICAgYXJy ID0gY2FsbG9jKG51bSwgc2l6ZW9mKHhlbl9wZm5fdCkpOworICAgIGlmICggYXJyID09IE5VTEwg KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtOyBpKysg KQorICAgICAgICBhcnJbaV0gPSBtZm4gKyBpOworCisgICAgcmV0ID0geGNfbWFwX2ZvcmVpZ25f cGFnZXMoeGNoLCBkb20sIHByb3QsIGFyciwgbnVtKTsKKyAgICBmcmVlKGFycik7CisgICAgcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgKmZyZWVic2RfcHJpdmNtZF9tYXBfZm9yZWlnbl9y YW5nZXMoeGNfaW50ZXJmYWNlICp4Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4Y19vc2RlcF9oYW5kbGUgaCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbSwgc2l6ZV90IHNpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvdCwg c2l6ZV90IGNodW5rc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaXZjbWRfbW1hcF9lbnRyeV90IGVudHJpZXNbXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZW50cmllcykKK3sKKyAgICB4 ZW5fcGZuX3QgKmFycjsKKyAgICBpbnQgbnVtX3Blcl9lbnRyeTsKKyAgICBpbnQgbnVtOworICAg IGludCBpOworICAgIGludCBqOworICAgIHZvaWQgKnJldDsKKworICAgIG51bV9wZXJfZW50cnkg PSBjaHVua3NpemUgPj4gWENfUEFHRV9TSElGVDsKKyAgICBudW0gPSBudW1fcGVyX2VudHJ5ICog bmVudHJpZXM7CisgICAgYXJyID0gY2FsbG9jKG51bSwgc2l6ZW9mKHhlbl9wZm5fdCkpOworICAg IGlmICggYXJyID09IE5VTEwgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoIGkg PSAwOyBpIDwgbmVudHJpZXM7IGkrKyApCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgbnVtX3Bl cl9lbnRyeTsgaisrICkKKyAgICAgICAgICAgIGFycltpICogbnVtX3Blcl9lbnRyeSArIGpdID0g ZW50cmllc1tpXS5tZm4gKyBqOworCisgICAgcmV0ID0geGNfbWFwX2ZvcmVpZ25fcGFnZXMoeGNo LCBkb20sIHByb3QsIGFyciwgbnVtKTsKKyAgICBmcmVlKGFycik7CisgICAgcmV0dXJuIHJldDsK K30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2Y21kIGhhbmRsZXJzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3Bz IGZyZWVic2RfcHJpdmNtZF9vcHMgPSB7CisgICAgLm9wZW4gPSAmZnJlZWJzZF9wcml2Y21kX29w ZW4sCisgICAgLmNsb3NlID0gJmZyZWVic2RfcHJpdmNtZF9jbG9zZSwKKworICAgIC51LnByaXZj bWQgPSB7CisgICAgICAgIC5hbGxvY19oeXBlcmNhbGxfYnVmZmVyID0gJmZyZWVic2RfcHJpdmNt ZF9hbGxvY19oeXBlcmNhbGxfYnVmZmVyLAorICAgICAgICAuZnJlZV9oeXBlcmNhbGxfYnVmZmVy ID0gJmZyZWVic2RfcHJpdmNtZF9mcmVlX2h5cGVyY2FsbF9idWZmZXIsCisKKyAgICAgICAgLmh5 cGVyY2FsbCA9ICZmcmVlYnNkX3ByaXZjbWRfaHlwZXJjYWxsLAorCisgICAgICAgIC5tYXBfZm9y ZWlnbl9idWxrID0gJmZyZWVic2RfcHJpdmNtZF9tYXBfZm9yZWlnbl9idWxrLAorICAgICAgICAu bWFwX2ZvcmVpZ25fcmFuZ2UgPSAmZnJlZWJzZF9wcml2Y21kX21hcF9mb3JlaWduX3JhbmdlLAor ICAgICAgICAubWFwX2ZvcmVpZ25fcmFuZ2VzID0gJmZyZWVic2RfcHJpdmNtZF9tYXBfZm9yZWln bl9yYW5nZXMsCisgICAgfSwKK307CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZ0 Y2huIGRldmljZSBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMg eGNfb3NkZXBfaGFuZGxlCitmcmVlYnNkX2V2dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKQorewor ICAgIGludCBmZCA9IG9wZW4oRVZUQ0hOX0RFViwgT19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0x ICkKKyAgICAgICAgcmV0dXJuIFhDX09TREVQX09QRU5fRVJST1I7CisKKyAgICByZXR1cm4gKHhj X29zZGVwX2hhbmRsZSlmZDsKK30KKworc3RhdGljIGludAorZnJlZWJzZF9ldnRjaG5fY2xvc2Uo eGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBoKQoreworICAgIGludCBmZCA9IChpbnQp aDsKKyAgICByZXR1cm4gY2xvc2UoZmQpOworfQorCitzdGF0aWMgaW50CitmcmVlYnNkX2V2dGNo bl9mZCh4Y19ldnRjaG4gKnhjZSwgeGNfb3NkZXBfaGFuZGxlIGgpCit7CisgICAgcmV0dXJuIChp bnQpaDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZ0Y2huIGludGVy ZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK2ZyZWVic2Rf ZXZ0Y2huX25vdGlmeSh4Y19ldnRjaG4gKnhjZSwgeGNfb3NkZXBfaGFuZGxlIGgsIGV2dGNobl9w b3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSAoaW50KWg7CisgICAgc3RydWN0IGlvY3RsX2V2 dGNobl9ub3RpZnkgbm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0 dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworc3RhdGlj IGV2dGNobl9wb3J0X29yX2Vycm9yX3QKK2ZyZWVic2RfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0 KHhjX2V2dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUgaCwgaW50IGRvbWlkKQoreworICAgIGlu dCByZXQsIGZkID0gKGludCloOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5k X3BvcnQgYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworCisgICAgcmV0 ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOworICAg IHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Cit9CisKK3N0YXRpYyBldnRj aG5fcG9ydF9vcl9lcnJvcl90CitmcmVlYnNkX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2 dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUgaCwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KQoreworICAgIGludCBy ZXQsIGZkID0gKGludCloOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFp biBiaW5kOworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisgICAgYmluZC5yZW1v dGVfcG9ydCA9IHJlbW90ZV9wb3J0OworCisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENI Tl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7CisgICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJp bmQucG9ydCA6IHJldDsKK30KKworc3RhdGljIGV2dGNobl9wb3J0X29yX2Vycm9yX3QKK2ZyZWVi c2RfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgeGNfb3NkZXBfaGFuZGxlIGgsIHVu c2lnbmVkIGludCB2aXJxKQoreworICAgIGludCByZXQsIGZkID0gKGludCloOworICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOwor CisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKKyAg ICByZXR1cm4gKCByZXQgPT0gMCApID8gYmluZC5wb3J0IDogcmV0OworfQorCitzdGF0aWMgaW50 CitmcmVlYnNkX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIHhjX29zZGVwX2hhbmRsZSBo LCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0gKGludCloOworICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsK KworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9 CisKK3N0YXRpYyBldnRjaG5fcG9ydF9vcl9lcnJvcl90CitmcmVlYnNkX2V2dGNobl9wZW5kaW5n KHhjX2V2dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUgaCkKK3sKKyAgICBpbnQgZmQgPSAoaW50 KWg7CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkKGZkLCAmcG9ydCwg c2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICByZXR1cm4gcG9ydDsKK30KKworc3RhdGljIGludAorZnJlZWJzZF9ldnRjaG5fdW5tYXNrKHhj X2V2dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUgaCwgZXZ0Y2huX3BvcnRfdCBwb3J0KQorewor ICAgIGludCBmZCA9IChpbnQpaDsKKworICAgIGlmICggd3JpdGUoZmQsICZwb3J0LCBzaXplb2Yo cG9ydCkpICE9IHNpemVvZihwb3J0KSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g MDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdnRjaG4gaGFuZGxlcnMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBf b3BzIGZyZWVic2RfZXZ0Y2huX29wcyA9IHsKKyAgICAub3BlbiA9ICZmcmVlYnNkX2V2dGNobl9v cGVuLAorICAgIC5jbG9zZSA9ICZmcmVlYnNkX2V2dGNobl9jbG9zZSwKKworICAgIC51LmV2dGNo biA9IHsKKyAgICAgICAgLmZkID0gJmZyZWVic2RfZXZ0Y2huX2ZkLAorICAgICAgICAubm90aWZ5 ID0gJmZyZWVic2RfZXZ0Y2huX25vdGlmeSwKKyAgICAgICAgLmJpbmRfdW5ib3VuZF9wb3J0ID0g JmZyZWVic2RfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0LAorICAgICAgICAuYmluZF9pbnRlcmRv bWFpbiA9ICZmcmVlYnNkX2V2dGNobl9iaW5kX2ludGVyZG9tYWluLAorICAgICAgICAuYmluZF92 aXJxID0gJmZyZWVic2RfZXZ0Y2huX2JpbmRfdmlycSwKKyAgICAgICAgLnVuYmluZCA9ICZmcmVl YnNkX2V2dGNobl91bmJpbmQsCisgICAgICAgIC5wZW5kaW5nID0gJmZyZWVic2RfZXZ0Y2huX3Bl bmRpbmcsCisgICAgICAgIC51bm1hc2sgPSAmZnJlZWJzZF9ldnRjaG5fdW5tYXNrLAorICAgIH0s Cit9OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJlZUJTRCBpbnRlcmZhY2Ug LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHN0cnVjdCB4Y19vc2RlcF9v cHMgKgorZnJlZWJzZF9vc2RlcF9pbml0KHhjX2ludGVyZmFjZSAqeGNoLCBlbnVtIHhjX29zZGVw X3R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2FzZSBYQ19P U0RFUF9QUklWQ01EOgorICAgICAgICByZXR1cm4gJmZyZWVic2RfcHJpdmNtZF9vcHM7CisgICAg Y2FzZSBYQ19PU0RFUF9FVlRDSE46CisgICAgICAgIHJldHVybiAmZnJlZWJzZF9ldnRjaG5fb3Bz OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworeGNfb3Nk ZXBfaW5mb190IHhjX29zZGVwX2luZm8gPSB7CisgICAgLm5hbWUgPSAiRnJlZUJTRCBOYXRpdmUg T1MgaW50ZXJmYWNlIiwKKyAgICAuaW5pdCA9ICZmcmVlYnNkX29zZGVwX2luaXQsCisgICAgLmZh a2UgPSAwLAorfTsKKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoxLjcuNy41IChBcHBs ZSBHaXQtMjYpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK