From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v5 05/10] golang/xenlight: Implement libxl_bitmap and helper operations Date: Wed, 5 Apr 2017 17:05:49 +0100 Message-ID: <1491408354-9643-6-git-send-email-george.dunlap@citrix.com> References: <1491408354-9643-1-git-send-email-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvnRk-0004Lq-C8 for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 16:06:12 +0000 In-Reply-To: <1491408354-9643-1-git-send-email-george.dunlap@citrix.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 Cc: Ronald Rojas , Wei Liu , George Dunlap , Ian Jackson List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9uYWxkIFJvamFzIDxyb25sYWRyZWRAZ21haWwuY29tPgoKSW1wbGVtZW50IEJpdG1h cCB0eXBlLCBhbG9uZyB3aXRoIGhlbHBlciBmdW5jdGlvbnMuCgpUaGUgQml0bWFwIHR5cGUgaXMg aW1wbGVtZW50ZWQgaW50ZXJsbGF5IGluIGEgd2F5IHdoaWNoIG1ha2VzIGl0CmVhc3kgdG8gY29w eSBpbnRvIGFuZCBvdXQgb2YgdGhlIEMgbGlieGxfYml0bWFwIHR5cGUuCgpTaWduZWQtb2ZmLWJ5 OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6 IFJvbmFsZCBSb2phcyA8cm9ubGFkcmVkQGdtYWlsLmNvbT4KLS0tCkNDOiBJYW4gSmFja3NvbiA8 aWFuLmphY2tzb25AY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+ CiB0b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28gfCAxNjcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbyBiL3Rvb2xz L2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbwppbmRleCBlYmNkMmVlLi42N2VlZTYzIDEwMDY0 NAotLS0gYS90b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28KKysrIGIvdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L3hlbmxpZ2h0LmdvCkBAIC0xNDEsNiArMTQxLDIwIEBAIGZ1bmMgKGNod2Nh cCBDLmxpYnhsX2h3Y2FwKSB0b0dvKCkgKGdod2NhcCBId2NhcCkgewogCXJldHVybgogfQogCisv LyB0eXBlZGVmIHN0cnVjdCB7CisvLyAgICAgdWludDMyX3Qgc2l6ZTsgICAgICAgICAgLyogbnVt YmVyIG9mIGJ5dGVzIGluIG1hcCAqLworLy8gICAgIHVpbnQ4X3QgKm1hcDsKKy8vIH0gbGlieGxf Yml0bWFwOworCisvLyBJbXBsZW1lbnQgdGhlIEdvIGJpdG1hcCB0eXBlIHN1Y2ggdGhhdCB0aGUg dW5kZXJseWluZyBkYXRhIGNhbgorLy8gZWFzaWx5IGJlIGNvcGllZCBpbiBhbmQgb3V0LiAgTkIg dGhhdCB3ZSBzdGlsbCBoYXZlIHRvIGRvIGNvcGllcworLy8gYm90aCBkaXJlY3Rpb25zLCBiZWNh dXNlIGNnbyBydW50aW1lIHJlc3RyaWN0aW9ucyBmb3JiaWQgcGFzc2luZyB0bworLy8gYSBDIGZ1 bmN0aW9uIGEgcG9pbnRlciB0byBhIEdvLWFsbG9jYXRlZCBzdHJ1Y3R1cmUgd2hpY2ggY29udGFp bnMgYQorLy8gcG9pbnRlci4KK3R5cGUgQml0bWFwIHN0cnVjdCB7CisJYml0bWFwIFtdQy51aW50 OF90Cit9CisKIC8qCiAgKiBUeXBlczogSURMCiAgKgpAQCAtMzEwLDYgKzMyNCwxNTkgQEAgZnVu YyAoY2RpICpDLmxpYnhsX2RvbWluZm8pIHRvR28oKSAoZGkgKkRvbWluZm8pIHsKIH0KIAogLyoK KyAqIEJpdG1hcCBvcGVyYXRpb25zCisgKi8KKworLy8gUmV0dXJuIGEgR28gYml0bWFwIHdoaWNo IGlzIGEgY29weSBvZiB0aGUgcmVmZXJyZWQgQyBiaXRtYXAuCitmdW5jIChjYm0gQy5saWJ4bF9i aXRtYXApIHRvR28oKSAoZ2JtIEJpdG1hcCkgeworCS8vIEFsbG9jIGEgR28gc2xpY2UgZm9yIHRo ZSBieXRlcworCXNpemUgOj0gaW50KGNibS5zaXplKQorCWdibS5iaXRtYXAgPSBtYWtlKFtdQy51 aW50OF90LCBzaXplKQorCisJLy8gTWFrZSBhIHNsaWNlIHBvaW50aW5nIHRvIHRoZSBDIGFycmF5 CisJbWFwc2xpY2UgOj0gKCpbMSA8PCAzMF1DLnVpbnQ4X3QpKHVuc2FmZS5Qb2ludGVyKGNibS5f bWFwKSlbOnNpemU6c2l6ZV0KKworCS8vIEFuZCBjb3B5IHRoZSBDIGFycmF5IGludG8gdGhlIEdv IGFycmF5CisJY29weShnYm0uYml0bWFwLCBtYXBzbGljZSkKKworCXJldHVybgorfQorCisvLyBN dXN0IGJlIEMubGlieGxfYml0bWFwX2Rpc3Bvc2UnZCBvZiBhZnRlcndhcmRzCitmdW5jIChnYm0g Qml0bWFwKSB0b0MoKSAoY2JtIEMubGlieGxfYml0bWFwKSB7CisJQy5saWJ4bF9iaXRtYXBfaW5p dCgmY2JtKQorCisJc2l6ZSA6PSBsZW4oZ2JtLmJpdG1hcCkKKwljYm0uX21hcCA9ICgqQy51aW50 OF90KShDLm1hbGxvYyhDLnNpemVfdChzaXplKSkpCisJY2JtLnNpemUgPSBDLnVpbnQzMl90KHNp emUpCisJaWYgY2JtLl9tYXAgPT0gbmlsIHsKKwkJcGFuaWMoIkMuY2FsbG9jIGZhaWxlZCEiKQor CX0KKworCS8vIE1ha2UgYSBzbGljZSBwb2ludGluZyB0byB0aGUgQyBhcnJheQorCW1hcHNsaWNl IDo9ICgqWzEgPDwgMzBdQy51aW50OF90KSh1bnNhZmUuUG9pbnRlcihjYm0uX21hcCkpWzpzaXpl OnNpemVdCisKKwkvLyBBbmQgY29weSB0aGUgR28gYXJyYXkgaW50byB0aGUgQyBhcnJheQorCWNv cHkobWFwc2xpY2UsIGdibS5iaXRtYXApCisKKwlyZXR1cm4KK30KKworZnVuYyAoYm0gKkJpdG1h cCkgVGVzdChiaXQgaW50KSBib29sIHsKKwl1Yml0IDo9IHVpbnQoYml0KQorCWlmIGJpdCA+IGJt Lk1heCgpIHx8IGJtLmJpdG1hcCA9PSBuaWwgeworCQlyZXR1cm4gZmFsc2UKKwl9CisKKwlyZXR1 cm4gKGJtLmJpdG1hcFtiaXQvOF0gJiAoMSA8PCAodWJpdCAmIDcpKSkgIT0gMAorfQorCitmdW5j IChibSAqQml0bWFwKSBTZXQoYml0IGludCkgeworCWliaXQgOj0gYml0IC8gOAorCWlmIGliaXQr MSA+IGxlbihibS5iaXRtYXApIHsKKwkJYm0uYml0bWFwID0gYXBwZW5kKGJtLmJpdG1hcCwgbWFr ZShbXUMudWludDhfdCwgaWJpdCsxLWxlbihibS5iaXRtYXApKS4uLikKKwl9CisKKwlibS5iaXRt YXBbaWJpdF0gfD0gMSA8PCAodWludChiaXQpICYgNykKK30KKworZnVuYyAoYm0gKkJpdG1hcCkg U2V0UmFuZ2Uoc3RhcnQgaW50LCBlbmQgaW50KSB7CisJZm9yIGkgOj0gc3RhcnQ7IGkgPD0gZW5k OyBpKysgeworCQlibS5TZXQoaSkKKwl9Cit9CisKK2Z1bmMgKGJtICpCaXRtYXApIENsZWFyKGJp dCBpbnQpIHsKKwl1Yml0IDo9IHVpbnQoYml0KQorCWlmIGJpdCA+IGJtLk1heCgpIHx8IGJtLmJp dG1hcCA9PSBuaWwgeworCQlyZXR1cm4KKwl9CisKKwlibS5iaXRtYXBbYml0LzhdICY9IF4oMSA8 PCAodWJpdCAmIDcpKQorfQorCitmdW5jIChibSAqQml0bWFwKSBDbGVhclJhbmdlKHN0YXJ0IGlu dCwgZW5kIGludCkgeworCWZvciBpIDo9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrIHsKKwkJYm0uQ2xl YXIoaSkKKwl9Cit9CisKK2Z1bmMgKGJtICpCaXRtYXApIE1heCgpIGludCB7CisJcmV0dXJuIGxl bihibS5iaXRtYXApKjggLSAxCit9CisKK2Z1bmMgKGJtICpCaXRtYXApIElzRW1wdHkoKSBib29s IHsKKwlmb3IgaSA6PSAwOyBpIDwgbGVuKGJtLmJpdG1hcCk7IGkrKyB7CisJCWlmIGJtLmJpdG1h cFtpXSAhPSAwIHsKKwkJCXJldHVybiBmYWxzZQorCQl9CisJfQorCXJldHVybiB0cnVlCit9CisK K2Z1bmMgKGEgQml0bWFwKSBBbmQoYiBCaXRtYXApIChjIEJpdG1hcCkgeworCXZhciBtYXgsIG1p biBpbnQKKwlpZiBsZW4oYS5iaXRtYXApID4gbGVuKGIuYml0bWFwKSB7CisJCW1heCA9IGxlbihh LmJpdG1hcCkKKwkJbWluID0gbGVuKGIuYml0bWFwKQorCX0gZWxzZSB7CisJCW1heCA9IGxlbihi LmJpdG1hcCkKKwkJbWluID0gbGVuKGEuYml0bWFwKQorCX0KKwljLmJpdG1hcCA9IG1ha2UoW11D LnVpbnQ4X3QsIG1heCkKKworCWZvciBpIDo9IDA7IGkgPCBtaW47IGkrKyB7CisJCWMuYml0bWFw W2ldID0gYS5iaXRtYXBbaV0gJiBiLmJpdG1hcFtpXQorCX0KKwlyZXR1cm4KK30KKworZnVuYyAo Ym0gQml0bWFwKSBTdHJpbmcoKSAocyBzdHJpbmcpIHsKKwlsYXN0T25saW5lIDo9IGZhbHNlCisJ Y3JhbmdlIDo9IGZhbHNlCisJcHJpbnRlZCA6PSBmYWxzZQorCXZhciBpIGludAorCS8vLyAtLXgt eHh4eHgteCAtPiAyLDQtOCwxMAorCS8vLyAtLXgteHh4eHh4eCAtPiAyLDQtMTAKKwlmb3IgaSA9 IDA7IGkgPD0gYm0uTWF4KCk7IGkrKyB7CisJCWlmIGJtLlRlc3QoaSkgeworCQkJaWYgIWxhc3RP bmxpbmUgeworCQkJCS8vIFN3aXRjaGluZyBvZmZsaW5lIC0+IG9ubGluZSwgcHJpbnQgdGhpcyBj cHUKKwkJCQlpZiBwcmludGVkIHsKKwkJCQkJcyArPSAiLCIKKwkJCQl9CisJCQkJcyArPSBmbXQu U3ByaW50ZigiJWQiLCBpKQorCQkJCXByaW50ZWQgPSB0cnVlCisJCQl9IGVsc2UgaWYgIWNyYW5n ZSB7CisJCQkJLy8gbGFzdCB3YXMgb25saW5lLCBidXQgd2UncmUgbm90IGluIGEgcmFuZ2U7IHBy aW50IC0KKwkJCQljcmFuZ2UgPSB0cnVlCisJCQkJcyArPSAiLSIKKwkJCX0gZWxzZSB7CisJCQkJ Ly8gbGFzdCB3YXMgb25saW5lLCB3ZSdyZSBpbiBhIHJhbmdlLCAgbm90aGluZyBlbHNlIHRvIGRv CisJCQl9CisJCQlsYXN0T25saW5lID0gdHJ1ZQorCQl9IGVsc2UgeworCQkJaWYgbGFzdE9ubGlu ZSB7CisJCQkJLy8gU3dpdGNoaW5nIG9ubGluZS0+b2ZmbGluZTsgZG8gd2UgbmVlZCB0byBlbmQg YSByYW5nZT8KKwkJCQlpZiBjcmFuZ2UgeworCQkJCQlzICs9IGZtdC5TcHJpbnRmKCIlZCIsIGkt MSkKKwkJCQl9CisJCQl9CisJCQlsYXN0T25saW5lID0gZmFsc2UKKwkJCWNyYW5nZSA9IGZhbHNl CisJCX0KKwl9CisJaWYgbGFzdE9ubGluZSB7CisJCS8vIFN3aXRjaGluZyBvbmxpbmUtPm9mZmxp bmU7IGRvIHdlIG5lZWQgdG8gZW5kIGEgcmFuZ2U/CisJCWlmIGNyYW5nZSB7CisJCQlzICs9IGZt dC5TcHJpbnRmKCIlZCIsIGktMSkKKwkJfQorCX0KKworCXJldHVybgorfQorCisvKgogICogQ29u dGV4dAogICovCiB2YXIgQ3R4IENvbnRleHQKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==