From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 6/8] golang/xenlight: Implement libxl_bitmap and helper operations Date: Mon, 23 Jan 2017 11:43:35 -0500 Message-ID: <20170123164337.4205-6-ronladred@gmail.com> References: <20170123164337.4205-1-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170123164337.4205-1-ronladred@gmail.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, george.dunlap@citrix.com, ian.jackson@eu.citrix.com, wei.liu2@citrix.com Cc: Ronald Rojas List-Id: xen-devel@lists.xenproject.org SW1wbGVtZW50IEJpdG1hcCB0eXBlLCBhbG9uZyB3aXRoIGhlbHBlciBmdW5jdGlvbnMuCgpUaGUg Qml0bWFwIHR5cGUgaXMgaW1wbGVtZW50ZWQgaW50ZXJsbGF5IGluIGEgd2F5IHdoaWNoIG1ha2Vz IGl0CmVhc3kgdG8gY29weSBpbnRvIGFuZCBvdXQgb2YgdGhlIEMgbGlieGxfYml0bWFwIHR5cGUu CgpTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+ ClNpZ25lZC1vZmYtYnk6IFJvbmFsZCBSb2phcyA8cm9ubGFkcmVkQGdtYWlsLmNvbT4KLS0tCiB0 b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28gfCAxNjYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC94ZW5saWdodC5nbwppbmRleCBkZDY4OTNjLi41NDY5MmZkIDEwMDY0NAot LS0gYS90b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28KKysrIGIvdG9vbHMvZ29sYW5n L3hlbmxpZ2h0L3hlbmxpZ2h0LmdvCkBAIC0xMzEsNiArMTMxLDE5IEBAIGZ1bmMgKGNod2NhcCBD LmxpYnhsX2h3Y2FwKUNUb0dvKCkgKGdod2NhcCBId2NhcCkgewogCXJldHVybgogfQogCisvLyB0 eXBlZGVmIHN0cnVjdCB7CisvLyAgICAgdWludDMyX3Qgc2l6ZTsgICAgICAgICAgLyogbnVtYmVy IG9mIGJ5dGVzIGluIG1hcCAqLworLy8gICAgIHVpbnQ4X3QgKm1hcDsKKy8vIH0gbGlieGxfYml0 bWFwOworCisvLyBJbXBsZW1lbnQgdGhlIEdvIGJpdG1hcCB0eXBlIHN1Y2ggdGhhdCB0aGUgdW5k ZXJseWluZyBkYXRhIGNhbgorLy8gZWFzaWx5IGJlIGNvcGllZCBpbiBhbmQgb3V0LiAgTkIgdGhh dCB3ZSBzdGlsbCBoYXZlIHRvIGRvIGNvcGllcworLy8gYm90aCBkaXJlY3Rpb25zLCBiZWNhdXNl IGNnbyBydW50aW1lIHJlc3RyaWN0aW9ucyBmb3JiaWQgcGFzc2luZyB0bworLy8gYSBDIGZ1bmN0 aW9uIGEgcG9pbnRlciB0byBhIEdvLWFsbG9jYXRlZCBzdHJ1Y3R1cmUgd2hpY2ggY29udGFpbnMg YQorLy8gcG9pbnRlci4KK3R5cGUgQml0bWFwIHN0cnVjdCB7CisJYml0bWFwIFtdQy51aW50OF90 Cit9CiAKIC8qCiAgKiBUeXBlczogSURMCkBAIC0xOTksNiArMjEyLDE1OSBAQCB0eXBlIERvbWlu Zm8gc3RydWN0IHsKIH0KIAogLyoKKyAqIEJpdG1hcCBvcGVyYXRpb25zCisgKi8KKworLy8gUmV0 dXJuIGEgR28gYml0bWFwIHdoaWNoIGlzIGEgY29weSBvZiB0aGUgcmVmZXJyZWQgQyBiaXRtYXAu CitmdW5jIChjYm0gQy5saWJ4bF9iaXRtYXApIENUb0dvKCkgKGdibSBCaXRtYXApIHsKKwkvLyBB bGxvYyBhIEdvIHNsaWNlIGZvciB0aGUgYnl0ZXMKKwlzaXplIDo9IGludChjYm0uc2l6ZSkKKwln Ym0uYml0bWFwID0gbWFrZShbXUMudWludDhfdCwgc2l6ZSkKKworCS8vIE1ha2UgYSBzbGljZSBw b2ludGluZyB0byB0aGUgQyBhcnJheQorCW1hcHNsaWNlIDo9ICgqWzEgPDwgMzBdQy51aW50OF90 KSh1bnNhZmUuUG9pbnRlcihjYm0uX21hcCkpWzpzaXplOnNpemVdCisKKwkvLyBBbmQgY29weSB0 aGUgQyBhcnJheSBpbnRvIHRoZSBHbyBhcnJheQorCWNvcHkoZ2JtLmJpdG1hcCwgbWFwc2xpY2Up CisKKwlyZXR1cm4KK30KKworLy8gTXVzdCBiZSBDLmxpYnhsX2JpdG1hcF9kaXNwb3NlJ2Qgb2Yg YWZ0ZXJ3YXJkcworZnVuYyAoZ2JtIEJpdG1hcClHb1RvQygpIChjYm0gQy5saWJ4bF9iaXRtYXAp IHsKKwlDLmxpYnhsX2JpdG1hcF9pbml0KCZjYm0pCisKKwlzaXplIDo9IGxlbihnYm0uYml0bWFw KQorCWNibS5fbWFwID0gKCpDLnVpbnQ4X3QpKEMubWFsbG9jKEMuc2l6ZV90KHNpemUpKSkKKwlj Ym0uc2l6ZSA9IEMudWludDMyX3Qoc2l6ZSkKKwlpZiBjYm0uX21hcCA9PSBuaWwgeworCQlwYW5p YygiQy5jYWxsb2MgZmFpbGVkISIpCisJfQorCisJLy8gTWFrZSBhIHNsaWNlIHBvaW50aW5nIHRv IHRoZSBDIGFycmF5CisJbWFwc2xpY2UgOj0gKCpbMSA8PCAzMF1DLnVpbnQ4X3QpKHVuc2FmZS5Q b2ludGVyKGNibS5fbWFwKSlbOnNpemU6c2l6ZV0KKworCS8vIEFuZCBjb3B5IHRoZSBHbyBhcnJh eSBpbnRvIHRoZSBDIGFycmF5CisJY29weShtYXBzbGljZSwgZ2JtLmJpdG1hcCkKKworCXJldHVy bgorfQorCitmdW5jIChibSAqQml0bWFwKSBUZXN0KGJpdCBpbnQpIGJvb2wgeworCXViaXQgOj0g dWludChiaXQpCisJaWYgYml0ID4gYm0uTWF4KCkgfHwgYm0uYml0bWFwID09IG5pbCB7CisJCXJl dHVybiBmYWxzZQorCX0KKworCXJldHVybiAoYm0uYml0bWFwW2JpdC84XSAmICgxIDw8ICh1Yml0 ICYgNykpKSAhPSAwCit9CisKK2Z1bmMgKGJtICpCaXRtYXApIFNldChiaXQgaW50KSB7CisJaWJp dCA6PSBiaXQgLyA4CisJaWYgaWJpdCsxID4gbGVuKGJtLmJpdG1hcCkgeworCQlibS5iaXRtYXAg PSBhcHBlbmQoYm0uYml0bWFwLCBtYWtlKFtdQy51aW50OF90LCBpYml0KzEtbGVuKGJtLmJpdG1h cCkpLi4uKQorCX0KKworCWJtLmJpdG1hcFtpYml0XSB8PSAxIDw8ICh1aW50KGJpdCkgJiA3KQor fQorCitmdW5jIChibSAqQml0bWFwKSBTZXRSYW5nZShzdGFydCBpbnQsIGVuZCBpbnQpIHsKKwlm b3IgaSA6PSBzdGFydDsgaSA8PSBlbmQ7IGkrKyB7CisJCWJtLlNldChpKQorCX0KK30KKworZnVu YyAoYm0gKkJpdG1hcCkgQ2xlYXIoYml0IGludCkgeworCXViaXQgOj0gdWludChiaXQpCisJaWYg Yml0ID4gYm0uTWF4KCkgfHwgYm0uYml0bWFwID09IG5pbCB7CisJCXJldHVybgorCX0KKworCWJt LmJpdG1hcFtiaXQvOF0gJj0gXigxIDw8ICh1Yml0ICYgNykpCit9CisKK2Z1bmMgKGJtICpCaXRt YXApIENsZWFyUmFuZ2Uoc3RhcnQgaW50LCBlbmQgaW50KSB7CisJZm9yIGkgOj0gc3RhcnQ7IGkg PD0gZW5kOyBpKysgeworCQlibS5DbGVhcihpKQorCX0KK30KKworZnVuYyAoYm0gKkJpdG1hcCkg TWF4KCkgaW50IHsKKwlyZXR1cm4gbGVuKGJtLmJpdG1hcCkqOCAtIDEKK30KKworZnVuYyAoYm0g KkJpdG1hcCkgSXNFbXB0eSgpIGJvb2wgeworCWZvciBpIDo9IDA7IGkgPCBsZW4oYm0uYml0bWFw KTsgaSsrIHsKKwkJaWYgYm0uYml0bWFwW2ldICE9IDAgeworCQkJcmV0dXJuIGZhbHNlCisJCX0K Kwl9CisJcmV0dXJuIHRydWUKK30KKworZnVuYyAoYSBCaXRtYXApIEFuZChiIEJpdG1hcCkgKGMg Qml0bWFwKSB7CisJdmFyIG1heCwgbWluIGludAorCWlmIGxlbihhLmJpdG1hcCkgPiBsZW4oYi5i aXRtYXApIHsKKwkJbWF4ID0gbGVuKGEuYml0bWFwKQorCQltaW4gPSBsZW4oYi5iaXRtYXApCisJ fSBlbHNlIHsKKwkJbWF4ID0gbGVuKGIuYml0bWFwKQorCQltaW4gPSBsZW4oYS5iaXRtYXApCisJ fQorCWMuYml0bWFwID0gbWFrZShbXUMudWludDhfdCwgbWF4KQorCisJZm9yIGkgOj0gMDsgaSA8 IG1pbjsgaSsrIHsKKwkJYy5iaXRtYXBbaV0gPSBhLmJpdG1hcFtpXSAmIGIuYml0bWFwW2ldCisJ fQorCXJldHVybgorfQorCitmdW5jIChibSBCaXRtYXApIFN0cmluZygpIChzIHN0cmluZykgewor CWxhc3RPbmxpbmUgOj0gZmFsc2UKKwljcmFuZ2UgOj0gZmFsc2UKKwlwcmludGVkIDo9IGZhbHNl CisJdmFyIGkgaW50CisJLy8vIC0teC14eHh4eC14IC0+IDIsNC04LDEwCisJLy8vIC0teC14eHh4 eHh4IC0+IDIsNC0xMAorCWZvciBpID0gMDsgaSA8PSBibS5NYXgoKTsgaSsrIHsKKwkJaWYgYm0u VGVzdChpKSB7CisJCQlpZiAhbGFzdE9ubGluZSB7CisJCQkJLy8gU3dpdGNoaW5nIG9mZmxpbmUg LT4gb25saW5lLCBwcmludCB0aGlzIGNwdQorCQkJCWlmIHByaW50ZWQgeworCQkJCQlzICs9ICIs IgorCQkJCX0KKwkJCQlzICs9IGZtdC5TcHJpbnRmKCIlZCIsIGkpCisJCQkJcHJpbnRlZCA9IHRy dWUKKwkJCX0gZWxzZSBpZiAhY3JhbmdlIHsKKwkJCQkvLyBsYXN0IHdhcyBvbmxpbmUsIGJ1dCB3 ZSdyZSBub3QgaW4gYSByYW5nZTsgcHJpbnQgLQorCQkJCWNyYW5nZSA9IHRydWUKKwkJCQlzICs9 ICItIgorCQkJfSBlbHNlIHsKKwkJCQkvLyBsYXN0IHdhcyBvbmxpbmUsIHdlJ3JlIGluIGEgcmFu Z2UsICBub3RoaW5nIGVsc2UgdG8gZG8KKwkJCX0KKwkJCWxhc3RPbmxpbmUgPSB0cnVlCisJCX0g ZWxzZSB7CisJCQlpZiBsYXN0T25saW5lIHsKKwkJCQkvLyBTd2l0Y2hpbmcgb25saW5lLT5vZmZs aW5lOyBkbyB3ZSBuZWVkIHRvIGVuZCBhIHJhbmdlPworCQkJCWlmIGNyYW5nZSB7CisJCQkJCXMg Kz0gZm10LlNwcmludGYoIiVkIiwgaS0xKQorCQkJCX0KKwkJCX0KKwkJCWxhc3RPbmxpbmUgPSBm YWxzZQorCQkJY3JhbmdlID0gZmFsc2UKKwkJfQorCX0KKwlpZiBsYXN0T25saW5lIHsKKwkJLy8g U3dpdGNoaW5nIG9ubGluZS0+b2ZmbGluZTsgZG8gd2UgbmVlZCB0byBlbmQgYSByYW5nZT8KKwkJ aWYgY3JhbmdlIHsKKwkJCXMgKz0gZm10LlNwcmludGYoIiVkIiwgaS0xKQorCQl9CisJfQorCisJ cmV0dXJuCit9CisKKy8qCiAgKiBDb250ZXh0CiAgKi8KIHZhciBDdHggQ29udGV4dAotLSAKMi43 LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK