From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 5/8] golang/xenlight: Implement libxl_bitmap and helper operations Date: Wed, 18 Jan 2017 14:56:43 -0500 Message-ID: <1484769406-17416-5-git-send-email-ronladred@gmail.com> References: <1484769406-17416-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: <1484769406-17416-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" 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 b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28gfCAxNjcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC94ZW5saWdodC5nbyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC94ZW5saWdodC5nbwppbmRleCAxZTI1NDEzLi44YWFjYTZhIDEwMDY0NAot LS0gYS90b29scy9nb2xhbmcveGVubGlnaHQveGVubGlnaHQuZ28KKysrIGIvdG9vbHMvZ29sYW5n L3hlbmxpZ2h0L3hlbmxpZ2h0LmdvCkBAIC0xMzEsNiArMTMxLDIwIEBAIGZ1bmMgaHdjYXBDVG9H byhjaHdjYXAgQy5saWJ4bF9od2NhcCkgKGdod2NhcCBId2NhcCkgewogCXJldHVybgogfQogCisv LyB0eXBlZGVmIHN0cnVjdCB7CisvLyAgICAgdWludDMyX3Qgc2l6ZTsgICAgICAgICAgLyogbnVt YmVyIG9mIGJ5dGVzIGluIG1hcCAqLworLy8gICAgIHVpbnQ4X3QgKm1hcDsKKy8vIH0gbGlieGxf Yml0bWFwOworCisvLyBJbXBsZW1lbnQgdGhlIEdvIGJpdG1hcCB0eXBlIHN1Y2ggdGhhdCB0aGUg dW5kZXJseWluZyBkYXRhIGNhbgorLy8gZWFzaWx5IGJlIGNvcGllZCBpbiBhbmQgb3V0LiAgTkIg dGhhdCB3ZSBzdGlsbCBoYXZlIHRvIGRvIGNvcGllcworLy8gYm90aCBkaXJlY3Rpb25zLCBiZWNh dXNlIGNnbyBydW50aW1lIHJlc3RyaWN0aW9ucyBmb3JiaWQgcGFzc2luZyB0bworLy8gYSBDIGZ1 bmN0aW9uIGEgcG9pbnRlciB0byBhIEdvLWFsbG9jYXRlZCBzdHJ1Y3R1cmUgd2hpY2ggY29udGFp bnMgYQorLy8gcG9pbnRlci4KK3R5cGUgQml0bWFwIHN0cnVjdCB7CisJYml0bWFwIFtdQy51aW50 OF90Cit9CisKIC8qCiAgKiBUeXBlczogSURMCiAgKgpAQCAtMTk4LDYgKzIxMiwxNTkgQEAgdHlw ZSBEb21pbmZvIHN0cnVjdCB7CiB9CiAKIC8qCisgKiBCaXRtYXAgb3BlcmF0aW9ucworICovCisK Ky8vIFJldHVybiBhIEdvIGJpdG1hcCB3aGljaCBpcyBhIGNvcHkgb2YgdGhlIHJlZmVycmVkIEMg Yml0bWFwLgorZnVuYyBiaXRtYXBDVG9HbyhjYm0gQy5saWJ4bF9iaXRtYXApIChnYm0gQml0bWFw KSB7CisJLy8gQWxsb2MgYSBHbyBzbGljZSBmb3IgdGhlIGJ5dGVzCisJc2l6ZSA6PSBpbnQoY2Jt LnNpemUpCisJZ2JtLmJpdG1hcCA9IG1ha2UoW11DLnVpbnQ4X3QsIHNpemUpCisKKwkvLyBNYWtl IGEgc2xpY2UgcG9pbnRpbmcgdG8gdGhlIEMgYXJyYXkKKwltYXBzbGljZSA6PSAoKlsxIDw8IDMw XUMudWludDhfdCkodW5zYWZlLlBvaW50ZXIoY2JtLl9tYXApKVs6c2l6ZTpzaXplXQorCisJLy8g QW5kIGNvcHkgdGhlIEMgYXJyYXkgaW50byB0aGUgR28gYXJyYXkKKwljb3B5KGdibS5iaXRtYXAs IG1hcHNsaWNlKQorCisJcmV0dXJuCit9CisKKy8vIE11c3QgYmUgQy5saWJ4bF9iaXRtYXBfZGlz cG9zZSdkIG9mIGFmdGVyd2FyZHMKK2Z1bmMgYml0bWFwR290b0MoZ2JtIEJpdG1hcCkgKGNibSBD LmxpYnhsX2JpdG1hcCkgeworCUMubGlieGxfYml0bWFwX2luaXQoJmNibSkKKworCXNpemUgOj0g bGVuKGdibS5iaXRtYXApCisJY2JtLl9tYXAgPSAoKkMudWludDhfdCkoQy5tYWxsb2MoQy5zaXpl X3Qoc2l6ZSkpKQorCWNibS5zaXplID0gQy51aW50MzJfdChzaXplKQorCWlmIGNibS5fbWFwID09 IG5pbCB7CisJCXBhbmljKCJDLmNhbGxvYyBmYWlsZWQhIikKKwl9CisKKwkvLyBNYWtlIGEgc2xp Y2UgcG9pbnRpbmcgdG8gdGhlIEMgYXJyYXkKKwltYXBzbGljZSA6PSAoKlsxIDw8IDMwXUMudWlu dDhfdCkodW5zYWZlLlBvaW50ZXIoY2JtLl9tYXApKVs6c2l6ZTpzaXplXQorCisJLy8gQW5kIGNv cHkgdGhlIEdvIGFycmF5IGludG8gdGhlIEMgYXJyYXkKKwljb3B5KG1hcHNsaWNlLCBnYm0uYml0 bWFwKQorCisJcmV0dXJuCit9CisKK2Z1bmMgKGJtICpCaXRtYXApIFRlc3QoYml0IGludCkgYm9v bCB7CisJdWJpdCA6PSB1aW50KGJpdCkKKwlpZiBiaXQgPiBibS5NYXgoKSB8fCBibS5iaXRtYXAg PT0gbmlsIHsKKwkJcmV0dXJuIGZhbHNlCisJfQorCisJcmV0dXJuIChibS5iaXRtYXBbYml0Lzhd ICYgKDEgPDwgKHViaXQgJiA3KSkpICE9IDAKK30KKworZnVuYyAoYm0gKkJpdG1hcCkgU2V0KGJp dCBpbnQpIHsKKwlpYml0IDo9IGJpdCAvIDgKKwlpZiBpYml0KzEgPiBsZW4oYm0uYml0bWFwKSB7 CisJCWJtLmJpdG1hcCA9IGFwcGVuZChibS5iaXRtYXAsIG1ha2UoW11DLnVpbnQ4X3QsIGliaXQr MS1sZW4oYm0uYml0bWFwKSkuLi4pCisJfQorCisJYm0uYml0bWFwW2liaXRdIHw9IDEgPDwgKHVp bnQoYml0KSAmIDcpCit9CisKK2Z1bmMgKGJtICpCaXRtYXApIFNldFJhbmdlKHN0YXJ0IGludCwg ZW5kIGludCkgeworCWZvciBpIDo9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrIHsKKwkJYm0uU2V0KGkp CisJfQorfQorCitmdW5jIChibSAqQml0bWFwKSBDbGVhcihiaXQgaW50KSB7CisJdWJpdCA6PSB1 aW50KGJpdCkKKwlpZiBiaXQgPiBibS5NYXgoKSB8fCBibS5iaXRtYXAgPT0gbmlsIHsKKwkJcmV0 dXJuCisJfQorCisJYm0uYml0bWFwW2JpdC84XSAmPSBeKDEgPDwgKHViaXQgJiA3KSkKK30KKwor ZnVuYyAoYm0gKkJpdG1hcCkgQ2xlYXJSYW5nZShzdGFydCBpbnQsIGVuZCBpbnQpIHsKKwlmb3Ig aSA6PSBzdGFydDsgaSA8PSBlbmQ7IGkrKyB7CisJCWJtLkNsZWFyKGkpCisJfQorfQorCitmdW5j IChibSAqQml0bWFwKSBNYXgoKSBpbnQgeworCXJldHVybiBsZW4oYm0uYml0bWFwKSo4IC0gMQor fQorCitmdW5jIChibSAqQml0bWFwKSBJc0VtcHR5KCkgYm9vbCB7CisJZm9yIGkgOj0gMDsgaSA8 IGxlbihibS5iaXRtYXApOyBpKysgeworCQlpZiBibS5iaXRtYXBbaV0gIT0gMCB7CisJCQlyZXR1 cm4gZmFsc2UKKwkJfQorCX0KKwlyZXR1cm4gdHJ1ZQorfQorCitmdW5jIChhIEJpdG1hcCkgQW5k KGIgQml0bWFwKSAoYyBCaXRtYXApIHsKKwl2YXIgbWF4LCBtaW4gaW50CisJaWYgbGVuKGEuYml0 bWFwKSA+IGxlbihiLmJpdG1hcCkgeworCQltYXggPSBsZW4oYS5iaXRtYXApCisJCW1pbiA9IGxl bihiLmJpdG1hcCkKKwl9IGVsc2UgeworCQltYXggPSBsZW4oYi5iaXRtYXApCisJCW1pbiA9IGxl bihhLmJpdG1hcCkKKwl9CisJYy5iaXRtYXAgPSBtYWtlKFtdQy51aW50OF90LCBtYXgpCisKKwlm b3IgaSA6PSAwOyBpIDwgbWluOyBpKysgeworCQljLmJpdG1hcFtpXSA9IGEuYml0bWFwW2ldICYg Yi5iaXRtYXBbaV0KKwl9CisJcmV0dXJuCit9CisKK2Z1bmMgKGJtIEJpdG1hcCkgU3RyaW5nKCkg KHMgc3RyaW5nKSB7CisJbGFzdE9ubGluZSA6PSBmYWxzZQorCWNyYW5nZSA6PSBmYWxzZQorCXBy aW50ZWQgOj0gZmFsc2UKKwl2YXIgaSBpbnQKKwkvLy8gLS14LXh4eHh4LXggLT4gMiw0LTgsMTAK KwkvLy8gLS14LXh4eHh4eHggLT4gMiw0LTEwCisJZm9yIGkgPSAwOyBpIDw9IGJtLk1heCgpOyBp KysgeworCQlpZiBibS5UZXN0KGkpIHsKKwkJCWlmICFsYXN0T25saW5lIHsKKwkJCQkvLyBTd2l0 Y2hpbmcgb2ZmbGluZSAtPiBvbmxpbmUsIHByaW50IHRoaXMgY3B1CisJCQkJaWYgcHJpbnRlZCB7 CisJCQkJCXMgKz0gIiwiCisJCQkJfQorCQkJCXMgKz0gZm10LlNwcmludGYoIiVkIiwgaSkKKwkJ CQlwcmludGVkID0gdHJ1ZQorCQkJfSBlbHNlIGlmICFjcmFuZ2UgeworCQkJCS8vIGxhc3Qgd2Fz IG9ubGluZSwgYnV0IHdlJ3JlIG5vdCBpbiBhIHJhbmdlOyBwcmludCAtCisJCQkJY3JhbmdlID0g dHJ1ZQorCQkJCXMgKz0gIi0iCisJCQl9IGVsc2UgeworCQkJCS8vIGxhc3Qgd2FzIG9ubGluZSwg d2UncmUgaW4gYSByYW5nZSwgIG5vdGhpbmcgZWxzZSB0byBkbworCQkJfQorCQkJbGFzdE9ubGlu ZSA9IHRydWUKKwkJfSBlbHNlIHsKKwkJCWlmIGxhc3RPbmxpbmUgeworCQkJCS8vIFN3aXRjaGlu ZyBvbmxpbmUtPm9mZmxpbmU7IGRvIHdlIG5lZWQgdG8gZW5kIGEgcmFuZ2U/CisJCQkJaWYgY3Jh bmdlIHsKKwkJCQkJcyArPSBmbXQuU3ByaW50ZigiJWQiLCBpLTEpCisJCQkJfQorCQkJfQorCQkJ bGFzdE9ubGluZSA9IGZhbHNlCisJCQljcmFuZ2UgPSBmYWxzZQorCQl9CisJfQorCWlmIGxhc3RP bmxpbmUgeworCQkvLyBTd2l0Y2hpbmcgb25saW5lLT5vZmZsaW5lOyBkbyB3ZSBuZWVkIHRvIGVu ZCBhIHJhbmdlPworCQlpZiBjcmFuZ2UgeworCQkJcyArPSBmbXQuU3ByaW50ZigiJWQiLCBpLTEp CisJCX0KKwl9CisKKwlyZXR1cm4KK30KKworLyoKICAqIENvbnRleHQKICAqLwogdmFyIEN0eCBD b250ZXh0Ci0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=