From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH v4 06/14] golang/xenlight: Implement libxl_bitmap and helper operations Date: Thu, 16 Mar 2017 15:08:42 -0400 Message-ID: <1489691330-17695-6-git-send-email-ronladred@gmail.com> References: <1489691330-17695-1-git-send-email-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489691330-17695-1-git-send-email-ronladred@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" Cc: Ronald Rojas , wei.liu2@citrix.com, ian.jackson@eu.citrix.com, George Dunlap , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SW1wbGVtZW50IEJpdG1hcCB0eXBlLCBhbG9uZyB3aXRoIGhlbHBlciBmdW5jdGlvbnMuCgpUaGUg Qml0bWFwIHR5cGUgaXMgaW1wbGVtZW50ZWQgaW50ZXJsbGF5IGluIGEgd2F5IHdoaWNoIG1ha2Vz IGl0CmVhc3kgdG8gY29weSBpbnRvIGFuZCBvdXQgb2YgdGhlIEMgbGlieGxfYml0bWFwIHR5cGUu CgpTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+ ClNpZ25lZC1vZmYtYnk6IFJvbmFsZCBSb2phcyA8cm9ubGFkcmVkQGdtYWlsLmNvbT4KCi0tLQoK Q0M6IHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCkNDOiBnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20K Q0M6IGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20KQ0M6IHdlaS5saXUyQGNpdHJpeC5jb20KCi0t LQotLS0KIHRvb2xzL2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbyB8IDE2NyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE2NyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3hlbmxpZ2h0LmdvIGIv dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3hlbmxpZ2h0LmdvCmluZGV4IDM0YzMwNTAuLmViMmIzY2Yg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbworKysgYi90b29s cy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28KQEAgLTEyOSw2ICsxMjksMjAgQEAgZnVuYyAo Y2h3Y2FwIEMubGlieGxfaHdjYXApIHRvR28oKSAoZ2h3Y2FwIEh3Y2FwKSB7CiAJcmV0dXJuCiB9 CiAKKy8vIHR5cGVkZWYgc3RydWN0IHsKKy8vICAgICB1aW50MzJfdCBzaXplOyAgICAgICAgICAv KiBudW1iZXIgb2YgYnl0ZXMgaW4gbWFwICovCisvLyAgICAgdWludDhfdCAqbWFwOworLy8gfSBs aWJ4bF9iaXRtYXA7CisKKy8vIEltcGxlbWVudCB0aGUgR28gYml0bWFwIHR5cGUgc3VjaCB0aGF0 IHRoZSB1bmRlcmx5aW5nIGRhdGEgY2FuCisvLyBlYXNpbHkgYmUgY29waWVkIGluIGFuZCBvdXQu ICBOQiB0aGF0IHdlIHN0aWxsIGhhdmUgdG8gZG8gY29waWVzCisvLyBib3RoIGRpcmVjdGlvbnMs IGJlY2F1c2UgY2dvIHJ1bnRpbWUgcmVzdHJpY3Rpb25zIGZvcmJpZCBwYXNzaW5nIHRvCisvLyBh IEMgZnVuY3Rpb24gYSBwb2ludGVyIHRvIGEgR28tYWxsb2NhdGVkIHN0cnVjdHVyZSB3aGljaCBj b250YWlucyBhCisvLyBwb2ludGVyLgordHlwZSBCaXRtYXAgc3RydWN0IHsKKwliaXRtYXAgW11D LnVpbnQ4X3QKK30KKwogLyoKICAqIFR5cGVzOiBJREwKICAqCkBAIC0yOTgsNiArMzEyLDE1OSBA QCBmdW5jIChjZGkgKkMubGlieGxfZG9taW5mbykgdG9HbygpIChkaSAqRG9taW5mbykgewogfQog CiAvKgorICogQml0bWFwIG9wZXJhdGlvbnMKKyAqLworCisvLyBSZXR1cm4gYSBHbyBiaXRtYXAg d2hpY2ggaXMgYSBjb3B5IG9mIHRoZSByZWZlcnJlZCBDIGJpdG1hcC4KK2Z1bmMgKGNibSBDLmxp YnhsX2JpdG1hcCkgdG9HbygpIChnYm0gQml0bWFwKSB7CisJLy8gQWxsb2MgYSBHbyBzbGljZSBm b3IgdGhlIGJ5dGVzCisJc2l6ZSA6PSBpbnQoY2JtLnNpemUpCisJZ2JtLmJpdG1hcCA9IG1ha2Uo W11DLnVpbnQ4X3QsIHNpemUpCisKKwkvLyBNYWtlIGEgc2xpY2UgcG9pbnRpbmcgdG8gdGhlIEMg YXJyYXkKKwltYXBzbGljZSA6PSAoKlsxIDw8IDMwXUMudWludDhfdCkodW5zYWZlLlBvaW50ZXIo Y2JtLl9tYXApKVs6c2l6ZTpzaXplXQorCisJLy8gQW5kIGNvcHkgdGhlIEMgYXJyYXkgaW50byB0 aGUgR28gYXJyYXkKKwljb3B5KGdibS5iaXRtYXAsIG1hcHNsaWNlKQorCisJcmV0dXJuCit9CisK Ky8vIE11c3QgYmUgQy5saWJ4bF9iaXRtYXBfZGlzcG9zZSdkIG9mIGFmdGVyd2FyZHMKK2Z1bmMg KGdibSBCaXRtYXApIHRvQygpIChjYm0gQy5saWJ4bF9iaXRtYXApIHsKKwlDLmxpYnhsX2JpdG1h cF9pbml0KCZjYm0pCisKKwlzaXplIDo9IGxlbihnYm0uYml0bWFwKQorCWNibS5fbWFwID0gKCpD LnVpbnQ4X3QpKEMubWFsbG9jKEMuc2l6ZV90KHNpemUpKSkKKwljYm0uc2l6ZSA9IEMudWludDMy X3Qoc2l6ZSkKKwlpZiBjYm0uX21hcCA9PSBuaWwgeworCQlwYW5pYygiQy5jYWxsb2MgZmFpbGVk ISIpCisJfQorCisJLy8gTWFrZSBhIHNsaWNlIHBvaW50aW5nIHRvIHRoZSBDIGFycmF5CisJbWFw c2xpY2UgOj0gKCpbMSA8PCAzMF1DLnVpbnQ4X3QpKHVuc2FmZS5Qb2ludGVyKGNibS5fbWFwKSlb OnNpemU6c2l6ZV0KKworCS8vIEFuZCBjb3B5IHRoZSBHbyBhcnJheSBpbnRvIHRoZSBDIGFycmF5 CisJY29weShtYXBzbGljZSwgZ2JtLmJpdG1hcCkKKworCXJldHVybgorfQorCitmdW5jIChibSAq Qml0bWFwKSBUZXN0KGJpdCBpbnQpIGJvb2wgeworCXViaXQgOj0gdWludChiaXQpCisJaWYgYml0 ID4gYm0uTWF4KCkgfHwgYm0uYml0bWFwID09IG5pbCB7CisJCXJldHVybiBmYWxzZQorCX0KKwor CXJldHVybiAoYm0uYml0bWFwW2JpdC84XSAmICgxIDw8ICh1Yml0ICYgNykpKSAhPSAwCit9CisK K2Z1bmMgKGJtICpCaXRtYXApIFNldChiaXQgaW50KSB7CisJaWJpdCA6PSBiaXQgLyA4CisJaWYg aWJpdCsxID4gbGVuKGJtLmJpdG1hcCkgeworCQlibS5iaXRtYXAgPSBhcHBlbmQoYm0uYml0bWFw LCBtYWtlKFtdQy51aW50OF90LCBpYml0KzEtbGVuKGJtLmJpdG1hcCkpLi4uKQorCX0KKworCWJt LmJpdG1hcFtpYml0XSB8PSAxIDw8ICh1aW50KGJpdCkgJiA3KQorfQorCitmdW5jIChibSAqQml0 bWFwKSBTZXRSYW5nZShzdGFydCBpbnQsIGVuZCBpbnQpIHsKKwlmb3IgaSA6PSBzdGFydDsgaSA8 PSBlbmQ7IGkrKyB7CisJCWJtLlNldChpKQorCX0KK30KKworZnVuYyAoYm0gKkJpdG1hcCkgQ2xl YXIoYml0IGludCkgeworCXViaXQgOj0gdWludChiaXQpCisJaWYgYml0ID4gYm0uTWF4KCkgfHwg Ym0uYml0bWFwID09IG5pbCB7CisJCXJldHVybgorCX0KKworCWJtLmJpdG1hcFtiaXQvOF0gJj0g XigxIDw8ICh1Yml0ICYgNykpCit9CisKK2Z1bmMgKGJtICpCaXRtYXApIENsZWFyUmFuZ2Uoc3Rh cnQgaW50LCBlbmQgaW50KSB7CisJZm9yIGkgOj0gc3RhcnQ7IGkgPD0gZW5kOyBpKysgeworCQli bS5DbGVhcihpKQorCX0KK30KKworZnVuYyAoYm0gKkJpdG1hcCkgTWF4KCkgaW50IHsKKwlyZXR1 cm4gbGVuKGJtLmJpdG1hcCkqOCAtIDEKK30KKworZnVuYyAoYm0gKkJpdG1hcCkgSXNFbXB0eSgp IGJvb2wgeworCWZvciBpIDo9IDA7IGkgPCBsZW4oYm0uYml0bWFwKTsgaSsrIHsKKwkJaWYgYm0u Yml0bWFwW2ldICE9IDAgeworCQkJcmV0dXJuIGZhbHNlCisJCX0KKwl9CisJcmV0dXJuIHRydWUK K30KKworZnVuYyAoYSBCaXRtYXApIEFuZChiIEJpdG1hcCkgKGMgQml0bWFwKSB7CisJdmFyIG1h eCwgbWluIGludAorCWlmIGxlbihhLmJpdG1hcCkgPiBsZW4oYi5iaXRtYXApIHsKKwkJbWF4ID0g bGVuKGEuYml0bWFwKQorCQltaW4gPSBsZW4oYi5iaXRtYXApCisJfSBlbHNlIHsKKwkJbWF4ID0g bGVuKGIuYml0bWFwKQorCQltaW4gPSBsZW4oYS5iaXRtYXApCisJfQorCWMuYml0bWFwID0gbWFr ZShbXUMudWludDhfdCwgbWF4KQorCisJZm9yIGkgOj0gMDsgaSA8IG1pbjsgaSsrIHsKKwkJYy5i aXRtYXBbaV0gPSBhLmJpdG1hcFtpXSAmIGIuYml0bWFwW2ldCisJfQorCXJldHVybgorfQorCitm dW5jIChibSBCaXRtYXApIFN0cmluZygpIChzIHN0cmluZykgeworCWxhc3RPbmxpbmUgOj0gZmFs c2UKKwljcmFuZ2UgOj0gZmFsc2UKKwlwcmludGVkIDo9IGZhbHNlCisJdmFyIGkgaW50CisJLy8v IC0teC14eHh4eC14IC0+IDIsNC04LDEwCisJLy8vIC0teC14eHh4eHh4IC0+IDIsNC0xMAorCWZv ciBpID0gMDsgaSA8PSBibS5NYXgoKTsgaSsrIHsKKwkJaWYgYm0uVGVzdChpKSB7CisJCQlpZiAh bGFzdE9ubGluZSB7CisJCQkJLy8gU3dpdGNoaW5nIG9mZmxpbmUgLT4gb25saW5lLCBwcmludCB0 aGlzIGNwdQorCQkJCWlmIHByaW50ZWQgeworCQkJCQlzICs9ICIsIgorCQkJCX0KKwkJCQlzICs9 IGZtdC5TcHJpbnRmKCIlZCIsIGkpCisJCQkJcHJpbnRlZCA9IHRydWUKKwkJCX0gZWxzZSBpZiAh Y3JhbmdlIHsKKwkJCQkvLyBsYXN0IHdhcyBvbmxpbmUsIGJ1dCB3ZSdyZSBub3QgaW4gYSByYW5n ZTsgcHJpbnQgLQorCQkJCWNyYW5nZSA9IHRydWUKKwkJCQlzICs9ICItIgorCQkJfSBlbHNlIHsK KwkJCQkvLyBsYXN0IHdhcyBvbmxpbmUsIHdlJ3JlIGluIGEgcmFuZ2UsICBub3RoaW5nIGVsc2Ug dG8gZG8KKwkJCX0KKwkJCWxhc3RPbmxpbmUgPSB0cnVlCisJCX0gZWxzZSB7CisJCQlpZiBsYXN0 T25saW5lIHsKKwkJCQkvLyBTd2l0Y2hpbmcgb25saW5lLT5vZmZsaW5lOyBkbyB3ZSBuZWVkIHRv IGVuZCBhIHJhbmdlPworCQkJCWlmIGNyYW5nZSB7CisJCQkJCXMgKz0gZm10LlNwcmludGYoIiVk IiwgaS0xKQorCQkJCX0KKwkJCX0KKwkJCWxhc3RPbmxpbmUgPSBmYWxzZQorCQkJY3JhbmdlID0g ZmFsc2UKKwkJfQorCX0KKwlpZiBsYXN0T25saW5lIHsKKwkJLy8gU3dpdGNoaW5nIG9ubGluZS0+ b2ZmbGluZTsgZG8gd2UgbmVlZCB0byBlbmQgYSByYW5nZT8KKwkJaWYgY3JhbmdlIHsKKwkJCXMg Kz0gZm10LlNwcmludGYoIiVkIiwgaS0xKQorCQl9CisJfQorCisJcmV0dXJuCit9CisKKy8qCiAg KiBDb250ZXh0CiAgKi8KIHZhciBDdHggQ29udGV4dAotLSAKMi43LjMKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK