From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rikiya Ayukawa Subject: [PATCH][RFC] making "xm dump-core" paralell Date: Thu, 27 Sep 2007 11:12:20 +0900 Message-ID: <46FB1184.8000205@np.css.fujitsu.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040500010708030600090007" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: Akio Takebe , SUZUKI Kazuhiro List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------040500010708030600090007 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi, xm has a subcommand "dump-core", which dumps the core image of the domainU to the file. This subcommand is useful, but it has the problem that xend can't deal with other xm commands while dealing with "dump-core". The attached patch fixes this problem. ( for cset#15880:a00cc97b392a ) Details of the attached patch are as follows: - Add xc_dumpcore program. This program only calls xc_domain_dump() in libxc to dump the core image of a domainU. - Change xend to make a xc_dumpcore process when it deal with "dump-core". the xend's thread which make the process waits for the process to finish dumping the core image. - Make XendDumpLock to avoid that xend dumps the same domainU twice or more at the same time. XendDumpLock read/write lock informaition of "dump-core" from/to xenstore. - dump-core has --live and --crash options. These options send requests to pause/unpause, destroy the domainU. I move the code into dumpcore thread because xm cannot use the options well at the sencond dump-core request. TODO: - Xend should be fixed not to destory the domainU that it is dumping by "xm destoroy." There are some other xm commands needed this kind of the special care but I don't implement them at this moment yet. So, for example, if you run "xm dump-core " and run "xm destroy " immediately, I don't know what happen (system may crash). I would like you to give me comments. Thank you. Signed-off-by: Rikiya Ayukawa Rikiya Ayukawa --------------040500010708030600090007 Content-Type: text/plain; name="parallel_dumpcore.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="parallel_dumpcore.patch" ZGlmZiAtciBhMDBjYzk3YjM5MmEgLXIgYjdjMWNmYjQ5NjlhIHRvb2xzL3B5dGhvbi94ZW4v eGVuZC9YZW5kQ29uc3RhbnRzLnB5Ci0tLSBhL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9YZW5k Q29uc3RhbnRzLnB5CVdlZCBTZXAgMTIgMDk6NDM6MzMgMjAwNyArMDEwMAorKysgYi90b29s cy9weXRob24veGVuL3hlbmQvWGVuZENvbnN0YW50cy5weQlUaHUgU2VwIDI3IDA5OjQwOjE5 IDIwMDcgKzA5MDAKQEAgLTEyMCwzICsxMjAsMTkgQEAgVlRQTV9ERUxFVEVfU0NSSVBUID0g Jy9ldGMveGVuL3NjcmlwdHMvdgogCiBYU19WTVJPT1QgPSAiL3ZtLyIKIAorCisjCisjIER1 bXBjb3JlIGNvbnN0YW50cworIworCitEVU1QQ09SRV9SRUFTT05fQ1JBU0ggPSAiY3Jhc2gi CitEVU1QQ09SRV9SRUFTT05fWE1DT00gPSAieG0gZHVtcC1jb3JlIgorCisjIGJhc2VwYXRo ID0gL2xvY2FsL2RvbWFpbi88ZG9taWQ+L1hTUEFUSF9EVU1QQ09SRV9CQVNFLworWFNQQVRI X0RVTVBDT1JFX0JBU0UgPSAiZHVtcF9jb3JlX2xvY2siCisKKyMgYmFzZXBhdGgvWFNQQVRI X0RVTVBDT1JFX1RIUkVBRF9JRAorWFNQQVRIX0RVTVBDT1JFX1RIUkVBRF9JRCA9ICJ0aHJl YWRfaWQiCisKKyMgYmFzZXBhdGgvWFNQQVRIX0RVTVBDT1JFX1JFQVNPTgorWFNQQVRIX0RV TVBDT1JFX1JFQVNPTiA9ICJyZWFzb24iCmRpZmYgLXIgYTAwY2M5N2IzOTJhIC1yIGI3YzFj ZmI0OTY5YSB0b29scy9weXRob24veGVuL3hlbmQvWGVuZERvbWFpbi5weQotLS0gYS90b29s cy9weXRob24veGVuL3hlbmQvWGVuZERvbWFpbi5weQlXZWQgU2VwIDEyIDA5OjQzOjMzIDIw MDcgKzAxMDAKKysrIGIvdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmREb21haW4ucHkJVGh1 IFNlcCAyNyAwOTo0MDoxOSAyMDA3ICswOTAwCkBAIC00NCw2ICs0NCw3IEBAIGZyb20geGVu LnhlbmQuWGVuZENvbnN0YW50cyBpbXBvcnQgRE9NX1MKIGZyb20geGVuLnhlbmQuWGVuZENv bnN0YW50cyBpbXBvcnQgRE9NX1NUQVRFX1JVTk5JTkcsIERPTV9TVEFURV9TVVNQRU5ERUQK IGZyb20geGVuLnhlbmQuWGVuZENvbnN0YW50cyBpbXBvcnQgRE9NX1NUQVRFX1NIVVRET1dO LCBET01fU1RBVEVfVU5LTk9XTgogZnJvbSB4ZW4ueGVuZC5YZW5kQ29uc3RhbnRzIGltcG9y dCBUUklHR0VSX1RZUEUKK2Zyb20geGVuLnhlbmQuWGVuZENvbnN0YW50cyBpbXBvcnQgRFVN UENPUkVfUkVBU09OX0NSQVNILCBEVU1QQ09SRV9SRUFTT05fWE1DT00KIGZyb20geGVuLnhl bmQuWGVuZERldmljZXMgaW1wb3J0IFhlbmREZXZpY2VzCiBmcm9tIHhlbi54ZW5kLlhlbmRB UElDb25zdGFudHMgaW1wb3J0ICoKIApAQCAtMTIyMyw3ICsxMjI0LDcgQEAgY2xhc3MgWGVu ZERvbWFpbjoKICAgICAgICAgICAgIGxvZy5pbmZvKCJEb21haW4gY29yZSBkdW1wIHJlcXVl c3RlZCBmb3IgZG9tYWluICVzICglZCkgIgogICAgICAgICAgICAgICAgICAgICAgImxpdmU9 JWQgY3Jhc2g9JWQuIiwKICAgICAgICAgICAgICAgICAgICAgIGRvbWluZm8uZ2V0TmFtZSgp LCBkb21pbmZvLmdldERvbWlkKCksIGxpdmUsIGNyYXNoKQotICAgICAgICAgICAgcmV0dXJu IGRvbWluZm8uZHVtcENvcmUoZmlsZW5hbWUpCisgICAgICAgICAgICByZXR1cm4gZG9taW5m by5kdW1wQ29yZShmaWxlbmFtZSwgRFVNUENPUkVfUkVBU09OX1hNQ09NLCBsaXZlLCBjcmFz aCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXg6CiAgICAgICAgICAgICByYWlzZSBY ZW5kRXJyb3Ioc3RyKGV4KSkKIApkaWZmIC1yIGEwMGNjOTdiMzkyYSAtciBiN2MxY2ZiNDk2 OWEgdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmREb21haW5JbmZvLnB5Ci0tLSBhL3Rvb2xz L3B5dGhvbi94ZW4veGVuZC9YZW5kRG9tYWluSW5mby5weQlXZWQgU2VwIDEyIDA5OjQzOjMz IDIwMDcgKzAxMDAKKysrIGIvdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmREb21haW5JbmZv LnB5CVRodSBTZXAgMjcgMDk6NDA6MTkgMjAwNyArMDkwMApAQCAtNTMsNiArNTMsMTAgQEAg ZnJvbSB4ZW4ueGVuZC5YZW5kQVBJQ29uc3RhbnRzIGltcG9ydCAqCiBmcm9tIHhlbi54ZW5k LlhlbmRBUElDb25zdGFudHMgaW1wb3J0ICoKIAogZnJvbSB4ZW4ueGVuZC5YZW5kVk1NZXRy aWNzIGltcG9ydCBYZW5kVk1NZXRyaWNzCisKK2Zyb20geGVuLnhlbmQgaW1wb3J0IFhlbmRE dW1wTG9jaworaW1wb3J0IHRocmVhZAoraW1wb3J0IHhlbi51dGlsLmF1eGJpbgogCiBNSUdS QVRFX1RJTUVPVVQgPSAzMC4wCiBCT09UTE9BREVSX0xPT1BCQUNLX0RFVklDRSA9ICcvZGV2 L3h2ZHAnCkBAIC0xMTY5LDExICsxMTczLDE5IEBAIGNsYXNzIFhlbmREb21haW5JbmZvOgog CiAgICAgICAgICAgICAgICAgaWYgeG9wdGlvbnMuZ2V0X2VuYWJsZV9kdW1wKCk6CiAgICAg ICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZHVt cENvcmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kdW1wQ29yZShOb25lLCBE VU1QQ09SRV9SRUFTT05fQ1JBU0gpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXJ0 X3JlYXNvbiA9ICdjcmFzaCcKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFhlbmREdW1w TG9jay5EdXBsaWNhdGVEdW1wRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIERv bid0IGNhbGwgX21heWJlUmVzdGFydCBtZXRob2QgLS0gb3RoZXIgdGhyZWFkIGlzCisgICAg ICAgICAgICAgICAgICAgICAgICAjIGR1bXBpbmcgbm93LgorICAgICAgICAgICAgICAgICAg ICAgICAgcmVzdGFydF9yZWFzb24gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw dCBYZW5kRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZXJyb3IgaGFz IGJlZW4gbG9nZ2VkIC0tIHRoZXJlJ3Mgbm90aGluZyBtb3JlCiAgICAgICAgICAgICAgICAg ICAgICAgICAjIHdlIGNhbiBkbyBpbiB0aGlzIGNvbnRleHQuCi0gICAgICAgICAgICAgICAg ICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXJ0X3JlYXNvbiA9 ICdjcmFzaCcKKworICAgICAgICAgICAgICAgICAgICBpZiByZXN0YXJ0X3JlYXNvbiAhPSBO b25lOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdGVTZXQoRE9NX1NUQVRF X0hBTFRFRCkKIAogICAgICAgICAgICAgICAgIHJlc3RhcnRfcmVhc29uID0gJ2NyYXNoJwog ICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlU2V0KERPTV9TVEFURV9IQUxURUQpCkBAIC0x MzY1LDIzICsxMzc3LDI4IEBAIGNsYXNzIFhlbmREb21haW5JbmZvOgogICAgICMgRGVidWdn aW5nIC4uCiAgICAgIwogCi0gICAgZGVmIGR1bXBDb3JlKHNlbGYsIGNvcmVmaWxlID0gTm9u ZSk6CisgICAgZGVmIGR1bXBDb3JlKHNlbGYsIGNvcmVmaWxlID0gTm9uZSwgcmVhc29uID0g RFVNUENPUkVfUkVBU09OX1hNQ09NLCBsaXZlID0gRmFsc2UsIGNyYXNoID0gRmFsc2UpOgog ICAgICAgICAiIiJDcmVhdGUgYSBjb3JlIGR1bXAgZm9yIHRoaXMgZG9tYWluLgogCiAgICAg ICAgIEByYWlzZTogWGVuZEVycm9yIGlmIGNvcmUgZHVtcGluZyBmYWlsZWQuCiAgICAgICAg ICIiIgotICAgICAgICAKKworICAgICAgICBpZiBub3QgKHJlYXNvbiA9PSBEVU1QQ09SRV9S RUFTT05fWE1DT00gb3IgcmVhc29uID09IERVTVBDT1JFX1JFQVNPTl9DUkFTSCk6CisgICAg ICAgICAgICBsb2cuZXJyb3IoIlVua25vd24gcmVhc29uIGZvciBkdW1wQ29yZSgpOiAnJXMn IiAlIHJlYXNvbikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIHRyeToK ICAgICAgICAgICAgIGlmIG5vdCBjb3JlZmlsZToKICAgICAgICAgICAgICAgICB0aGlzX3Rp bWUgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbSVkLSVIJU0uJVMiLCB0aW1lLmxvY2FsdGltZSgp KQogICAgICAgICAgICAgICAgIGNvcmVmaWxlID0gIi92YXIveGVuL2R1bXAvJXMtJXMuJXMu Y29yZSIgJSAodGhpc190aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuaW5mb1snbmFtZV9sYWJlbCddLCBzZWxmLmRvbWlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmZv WyduYW1lX2xhYmVsJ10sIHNlbGYuZG9taWQpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICBpZiBvcy5wYXRoLmlzZGlyKGNvcmVmaWxlKToKICAgICAgICAgICAgICAgICByYWlz ZSBYZW5kRXJyb3IoIkNhbm5vdCBkdW1wIGNvcmUgaW4gYSBkaXJlY3Rvcnk6ICVzIiAlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVmaWxlKQotICAgICAgICAgICAg Ci0gICAgICAgICAgICB4Yy5kb21haW5fZHVtcGNvcmUoc2VsZi5kb21pZCwgY29yZWZpbGUp CisgICAgICAgICAgICBzdGF0dXMgPSBzZWxmLmlubmVyRHVtcENvcmUoY29yZWZpbGUsIHJl YXNvbiwgbGl2ZSwgY3Jhc2gpCisgICAgICAgICAgICBpZiBzdGF0dXMgPT0gMToKKyAgICAg ICAgICAgICAgICByYWlzZSBYZW5kRHVtcExvY2suRHVwbGljYXRlRHVtcEVycm9yKCJPdGhl ciB0aHJlYWQgaXMgYWxyZWFkeSBkdW1waW5nIGNvcmUiKQogICAgICAgICBleGNlcHQgUnVu dGltZUVycm9yLCBleDoKICAgICAgICAgICAgIGNvcmVmaWxlX2luY29tcCA9IGNvcmVmaWxl KyctaW5jb21wbGV0ZScKICAgICAgICAgICAgIG9zLnJlbmFtZShjb3JlZmlsZSwgY29yZWZp bGVfaW5jb21wKQpAQCAtMTM4OSw2ICsxNDA2LDYxIEBAIGNsYXNzIFhlbmREb21haW5JbmZv OgogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvbWlkLCBzZWxmLmluZm9bJ25h bWVfbGFiZWwnXSkKICAgICAgICAgICAgIHJhaXNlIFhlbmRFcnJvcigiRmFpbGVkIHRvIGR1 bXAgY29yZTogJXMiICUgIHN0cihleCkpCiAKKyAgICBkZWYgaW5uZXJEdW1wQ29yZShzZWxm LCBjb3JlZmlsZSwgcmVhc29uLCBsaXZlLCBjcmFzaCk6CisgICAgICAgICIiIgorICAgICAg ICBAcmV0dXJuIHZhbHVlIGlzIGFzIGZvbGxvdzoKKyAgICAgICAgMDogbm9ybWFsIGVuZAor ICAgICAgICAtMTogY3JpdGljYWwgZXJyb3IgZW5kCisgICAgICAgIDE6IGNhbm5vdCBkdW1w IGVuZCwgc2luY2Ugb3RoZXIgdGhyZWFkIGlzIGR1bXBpbmcgYSBjb3JlIG9mIHNhbWUgZG9t YWluLgorICAgICAgICBJdCBtZWVucyB0aGF0IHRoaXMgdGhyZWFkIG11c3RuJ3QgcmVzdGFy dCB0aGUgZG9tYWluICggc2VlIFhlbmREb21haW5JbmZvLnB5QHJlZnJlc2hTaHV0ZG93bigp ICkuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpc19sb2NrZWQg PSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuX3ZhbCA9IC0xCisgICAgICAgICAgICBsb2Nr b2JqID0gWGVuZER1bXBMb2NrLkR1bXBMb2NrKHNlbGYuZG9taWQpCisgICAgICAgICAgICAK KyAgICAgICAgICAgIHdoaWxlKFRydWUpOgorICAgICAgICAgICAgICAgIGlzX2xvY2tlZCA9 IGxvY2tvYmoubG9jayhyZWFzb24pCisgICAgICAgICAgICAgICAgaWYgaXNfbG9ja2VkOiBi cmVhaworCisgICAgICAgICAgICAgICAgaW5mbyA9IFhlbmREdW1wTG9jay5nZXRfbG9ja2lu Zm8oc2VsZi5kb21pZCkKKyAgICAgICAgICAgICAgICBpZiBpbmZvID09IE5vbmU6IGJyZWFr CisgICAgICAgICAgICAgICAgaWYgbm90IChpbmZvWydyZWFzb24nXSA9PSBEVU1QQ09SRV9S RUFTT05fWE1DT00gYW5kIHJlYXNvbiA9PSBEVU1QQ09SRV9SRUFTT05fQ1JBU0gpOgorICAg ICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgx KQorCisgICAgICAgICAgICBsb2cuZGVidWcoInRocmVhZCglcykgaGF2ZSBhIGxvY2s/IC0+ ICVzIiAlICh0aHJlYWQuZ2V0X2lkZW50KCksIGlzX2xvY2tlZCkpCisgICAgICAgICAgICBp ZiBpc19sb2NrZWQ6CisgICAgICAgICAgICAgICAgaWYgcmVhc29uID09IERVTVBDT1JFX1JF QVNPTl9YTUNPTSBhbmQgbm90IGxpdmU6CisgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZv KCJwYXVzZSBmb3IgZHVtcC1jb3JlIGRvbWlkPSVzIiAlIHNlbGYuZG9taWQpCisgICAgICAg ICAgICAgICAgICAgIHNlbGYucGF1c2UoKQorCisgICAgICAgICAgICAgICAgcHJvZ3JhbV9w YXRoID0geGVuLnV0aWwuYXV4YmluLnBhdGhUbygieGNfZHVtcGNvcmUiKQorICAgICAgICAg ICAgICAgIGNtZCA9ICIlcyAlZCAlcyIgJSAocHJvZ3JhbV9wYXRoLCBzZWxmLmRvbWlkLCBj b3JlZmlsZSkKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiY3JlYXRlIGR1bXBjb3JlIHBy b2Nlc3M6IGNtZD0nJXMnIiAlIGNtZCkKKworICAgICAgICAgICAgICAgIGV4aXRzdGF0dXMg PSBvcy5zeXN0ZW0oY21kKQorICAgICAgICAgICAgICAgIGlmIGV4aXRzdGF0dXMgPT0gMDoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbCA9IDAKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsID0gLTEKKworICAgICAgICAg ICAgICAgIGlmIHJlYXNvbiA9PSBEVU1QQ09SRV9SRUFTT05fWE1DT00gYW5kIG5vdCBsaXZl OgorICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygidW5wYXVzZSBmb3IgZHVtcC1jb3Jl IGRvbWlkPSVzIiAlIHNlbGYuZG9taWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudW5w YXVzZSgpCisKKyAgICAgICAgICAgICAgICBpZiByZWFzb24gPT0gRFVNUENPUkVfUkVBU09O X1hNQ09NIGFuZCBjcmFzaDoKKyAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkRlc3Ry b3lpbmcgZG9tYWluOiAlcyAuLi4iICUgc2VsZi5kb21pZCkKKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5kZXN0cm95KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cmV0dXJuX3ZhbCA9IDEKKyAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIk90aGVyIHRocmVh ZCBpcyBhbHJlYWR5IGR1bXBpbmcgY29yZSIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg ICAgICBpZiBpc19sb2NrZWQ6IGxvY2tvYmoudW5sb2NrKCkKKworICAgICAgICByZXR1cm4g cmV0dXJuX3ZhbAorICAgICAgICAKICAgICAjCiAgICAgIyBEZXZpY2UgY3JlYXRpb24vZGVs ZXRpb24gZnVuY3Rpb25zCiAgICAgIwpkaWZmIC1yIGEwMGNjOTdiMzkyYSAtciBiN2MxY2Zi NDk2OWEgdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmREdW1wTG9jay5weQotLS0gL2Rldi9u dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9weXRob24v eGVuL3hlbmQvWGVuZER1bXBMb2NrLnB5CVRodSBTZXAgMjcgMDk6NDA6MTkgMjAwNyArMDkw MApAQCAtMCwwICsxLDIxNyBAQAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyLjEgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRo aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg MDIxMTEtMTMwNyAgVVNBCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQg KEMpIDIwMDcgUmlraXlhIEF5dWthd2EgPGF5dWthd2EucmlraXlhQG5wLmNzcy5mdWppdHN1 LmNvbT4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworZnJvbSB4ZW4ueGVuZC54ZW5z dG9yZSBpbXBvcnQgeHN1dGlsCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdGhyZWFkCitp bXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHJlCitpbXBvcnQgY29weQor aW1wb3J0IG9zCitpbXBvcnQgdHJhY2ViYWNrCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhy ZWFkCitmcm9tIHhlbi54ZW5kLnhlbnN0b3JlLnhzdHJhbnNhY3QgaW1wb3J0IHhzdHJhbnNh Y3QKK2Zyb20geGVuLnhlbmQuWGVuZENvbnN0YW50cyBpbXBvcnQgKgorCitsb2cgPSBsb2dn aW5nLmdldExvZ2dlcigieGVuZC5YZW5kRHVtcExvY2siKQorCitjbGFzcyBEdW1wTG9jazoK KyAgICAiIiJMb2NrIG9mIGR1bXAtY29yZSBmb3IgZWFjaCBkb21haW4KKworICAgIEBjdmFy IGxvY2tpbmdfaWQydGhyZWFkX2RpY3Q6IGRpY3Qgb2YgdGhyZWFkIG9ianMgd2hpY2ggaGF2 ZSBhIGR1bXAtY29yZSBsb2NrLiBkaWN0IGlzIGluZGV4ZWQgYnkgdGhyZWFkIGlkCisgICAg QHR5cGUgbG9ja2luZ19pZDJ0aHJlYWRfZGljdDogZGljdCBvZiB0aHJlYWQgb2JqcyAoaW5k ZXggdHlwZSBpcyBpbnQpCisgICAgIiIiCisKKyAgICBsb2NraW5nX2lkMnRocmVhZF9kaWN0 ID0ge30KKyAgICBpbm5lcl9sb2NrX3VubG9ja19jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlv bigpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZG9tX2lkKToKKyAgICAgICAgIiIiQ29u c3RydWN0b3IgZm9yIGEgZHVtcCBsb2NrCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBh dGhfZG9tYWluID0gIi9kdW1wX2NvcmVfbG9jayIKKyAgICAgICAgc2VsZi54cyA9IHhzdXRp bC54c2hhbmRsZSgpCisKKyAgICAgICAgc2VsZi5kb21faWQgPSBkb21faWQKKyAgICAgICAg c2VsZi5pc19sb2NrZWQgPSBGYWxzZQorCisgICAgZGVmIGxvY2soc2VsZiwgcmVhc29uKToK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgRHVtcExvY2suaW5uZXJfbG9ja191bmxvY2tf Y29uZC5hY3F1aXJlKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbm5lcl9sb2NrKHJl YXNvbikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIER1bXBMb2NrLmlubmVyX2xv Y2tfdW5sb2NrX2NvbmQucmVsZWFzZSgpCisKKyAgICBkZWYgdW5sb2NrKHNlbGYpOgorICAg ICAgICB0cnk6CisgICAgICAgICAgICBEdW1wTG9jay5pbm5lcl9sb2NrX3VubG9ja19jb25k LmFjcXVpcmUoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lubmVyX3VubG9jaygpCisg ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBEdW1wTG9jay5pbm5lcl9sb2NrX3VubG9j a19jb25kLnJlbGVhc2UoKQorICAgICAgICAgICAgCisgICAgZGVmIF9pbm5lcl9sb2NrKHNl bGYsIHJlYXNvbik6CisgICAgICAgICIiIgorICAgICAgICBHZXQgYSBsb2NrIGZvciBkdW1w LWNvcmUuCisgICAgICAgIFlvdSBjYW4gZ2V0IG9ubHkgb25lIGxvY2sgZm9yIGVhY2ggZ3Vl c3QgZG9tYWluLgorICAgICAgICAKKyAgICAgICAgRWFjaCBwYWlyIG9mIGxvY2soKSBhbmQg dW5sb2NrKCkgc2hvdWxkIGJlIGNhbGxlZCBieSBzYW1lIHRocmVhZC4KKyAgICAgICAgIiIi CisgICAgICAgIHN1Y2Nlc3NfbG9jayA9IEZhbHNlCisgICAgICAgIGxvY2tpbmdfdGhpZCA9 IHRocmVhZC5nZXRfaWRlbnQoKQorCisgICAgICAgIGlmIG5vdCBfY2hlY2tfZG9tYWluX2V4 aXN0KHNlbGYuZG9tX2lkKToKKyAgICAgICAgICAgIGxvZy5lcnJvcigiTm90IGV4aXN0IGRv bWFpbjogaWQgJWQiICUgc2VsZi5kb21faWQpCisgICAgICAgICAgICByYWlzZSBSdW50aW1l RXJyb3IoIk5vdCBleGlzdCBkb21haW46IGlkICVkIiAlIHNlbGYuZG9tX2lkKQorICAgICAg ICAKKyAgICAgICAgI2dldCB0aGUgeGVuc3RvcmUgcGF0aCBmb3IgYSBsb2NrCisgICAgICAg IHBhdGggPSBfYmFzZXBhdGgoc2VsZi5kb21faWQpCisKKyAgICAgICAgdGggPSBzZWxmLnhz LnRyYW5zYWN0aW9uX3N0YXJ0KCkKKworICAgICAgICBzdG9yZWRfcmVhc29uID0gc2VsZi54 cy5yZWFkKHRoLCBwYXRoICsgWFNQQVRIX0RVTVBDT1JFX1JFQVNPTikKKyAgICAgICAgc3Rv cmVkX3RocmVhZF9pZCA9IHNlbGYueHMucmVhZCh0aCwgcGF0aCArIFhTUEFUSF9EVU1QQ09S RV9USFJFQURfSUQpCisKKyAgICAgICAgaWYgc3RvcmVkX3RocmVhZF9pZCAhPSBOb25lOgor ICAgICAgICAgICAgc3RvcmVkX3RocmVhZF9pZCA9IGludChzdG9yZWRfdGhyZWFkX2lkKQor ICAgICAgICAgICAgCisgICAgICAgIGlmIHN0b3JlZF90aHJlYWRfaWQgPT0gTm9uZTogI25v IHRocmVhZHMgaGF2ZSBhIGxvY2sgZm9yIGRvbV9pZAorICAgICAgICAgICAgc2VsZi5fYWNx dWlyZV9sb2NrKHRoLCByZWFzb24sIGxvY2tpbmdfdGhpZCkKKyAgICAgICAgICAgIHN1Y2Nl c3NfbG9jayA9IFRydWUKKyAgICAgICAgZWxpZiBub3Qgc2VsZi5faXNfYWxpdmVfYW5kX2xv Y2tlZChzdG9yZWRfdGhyZWFkX2lkKToKKyAgICAgICAgICAgICNmb3JjZSB0byBnZXQgYSBs b2NrCisgICAgICAgICAgICBzZWxmLl9hY3F1aXJlX2xvY2sodGgsIHJlYXNvbiwgbG9ja2lu Z190aGlkKQorICAgICAgICAgICAgc3VjY2Vzc19sb2NrID0gVHJ1ZQorICAgICAgICAgICAg bG9nLndhcm5pbmcoIkZvcmNlIHRvIGdldCBhIGxvY2sgb2YgZG9tYWluIGlkICVzIiAlIHNl bGYuZG9tX2lkKQorICAgICAgICBlbHNlOiAjZmFpbGVkIHRvIGxvY2sKKyAgICAgICAgICAg IHN1Y2Nlc3NfbG9jayA9IEZhbHNlCisKKyAgICAgICAgc2VsZi54cy50cmFuc2FjdGlvbl9l bmQodGgpCisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3NfbG9jaworCisgICAgZGVmIF9pbm5l cl91bmxvY2soc2VsZik6CisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAgaWYg bm90IHNlbGYuaXNfbG9ja2VkOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg IAorICAgICAgICB0aCA9IHNlbGYueHMudHJhbnNhY3Rpb25fc3RhcnQoKQorICAgICAgICBz ZWxmLl9yZWxlYXNlX2xvY2sodGgpCisgICAgICAgIHNlbGYueHMudHJhbnNhY3Rpb25fZW5k KHRoKQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2FjcXVpcmVfbG9jayhz ZWxmLCB0aCwgcmVhc29uLCB0aHJlYWRfaWQpOgorICAgICAgICBwYXRoID0gX2Jhc2VwYXRo KHNlbGYuZG9tX2lkKQorICAgICAgICAKKyAgICAgICAgc2VsZi54cy53cml0ZSh0aCwgcGF0 aCArIFhTUEFUSF9EVU1QQ09SRV9USFJFQURfSUQsIHN0cih0aHJlYWRfaWQpKQorICAgICAg ICBzZWxmLnhzLndyaXRlKHRoLCBwYXRoICsgWFNQQVRIX0RVTVBDT1JFX1JFQVNPTiwgc3Ry KHJlYXNvbikpCisgICAgICAgIHNlbGYuaXNfbG9ja2VkID0gVHJ1ZQorICAgICAgICBEdW1w TG9jay5sb2NraW5nX2lkMnRocmVhZF9kaWN0W3RocmVhZF9pZF0gPSB0aHJlYWRpbmcuY3Vy cmVudFRocmVhZCgpCisgICAgZGVmIF9yZWxlYXNlX2xvY2soc2VsZiwgdGgpOgorICAgICAg ICBwYXRoID0gX2Jhc2VwYXRoKHNlbGYuZG9tX2lkKQorCisgICAgICAgIHNlbGYueHMucm0o dGgsIHBhdGgucnN0cmlwKCIvIikpCisgICAgICAgIHNlbGYuaXNfbG9ja2VkID0gRmFsc2UK KyAgICAgICAgZGVsIER1bXBMb2NrLmxvY2tpbmdfaWQydGhyZWFkX2RpY3RbdGhyZWFkLmdl dF9pZGVudCgpXQorICAgIGRlZiBfaXNfYWxpdmVfYW5kX2xvY2tlZChzZWxmLCB0aHJlYWRf aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQHBhcmFtIHRocmVhZF9pZCAgVGhlIHRocmVh ZCBpZCwgd2hpY2ggbWF5IGhhdmUgYSBsb2NrIG5vdworICAgICAgICBAcmV0dXJuIFJldHVy bnMgVHJ1ZSBpZiB0aHJlYWRfaWQgaXMgYW4gYWxpdmUgdGhyZWFkJ3MgaWQKKyAgICAgICAg IiIiCisgICAgICAgIGlmIG5vdCBEdW1wTG9jay5sb2NraW5nX2lkMnRocmVhZF9kaWN0Lmhh c19rZXkodGhyZWFkX2lkKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAK KyAgICAgICAgdGhfb2JqID0gRHVtcExvY2subG9ja2luZ19pZDJ0aHJlYWRfZGljdFt0aHJl YWRfaWRdCisgICAgICAgIGFsaXZlX3RoX2xpc3QgPSB0aHJlYWRpbmcuZW51bWVyYXRlKCkK KyAgICAgICAgcmV0dXJuIHRoX29iaiBpbiBhbGl2ZV90aF9saXN0CisKK2NsYXNzIER1cGxp Y2F0ZUR1bXBFcnJvcihFeGNlcHRpb24pOgorICAgIHBhc3MKKworZGVmIF9jaGVja19kb21h aW5fZXhpc3QoZG9tX2lkKToKKyAgICBybCA9IHhzdHJhbnNhY3QuUmVhZCgnL2xvY2FsL2Rv bWFpbicsIHN0cihkb21faWQpKQorICAgIHJldHVybiBybCAhPSBOb25lCisKK2RlZiBfYmFz ZXBhdGgoZG9tX2lkKToKKyAgICB4cyA9IHhzdXRpbC54c2hhbmRsZSgpCisgICAgcGF0aCA9 IHhzLmdldF9kb21haW5fcGF0aChkb21faWQpCisgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBY U1BBVEhfRFVNUENPUkVfQkFTRSArICIvIgorCitkZWYgZ2V0X2xvY2tpbmZvKGRvbV9pZCk6 CisgICAgIiIiR2V0IGxvY2sgaW5mb3JtYXRpb24KKyAgICBAdG9kbyByYWlzZSBFeGNlcHRp b24gaWYgZG9tYWluIGRvZXNuJ3QgZXhpc3QKKyAgICBAcmV0dXJuIGxpc3QgaWYgZG9tX2lk IGV4aXN0cywgb3RoZXJ3aXNlIE5vbmUKKyAgICAiIiIKKyAgICB4cyA9IHhzdXRpbC54c2hh bmRsZSgpCisgICAgaW5mbyA9IHt9CisKKyAgICBpZiBub3QgX2NoZWNrX2RvbWFpbl9leGlz dChkb21faWQpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgcGF0aCA9IF9iYXNlcGF0 aChkb21faWQpCisKKyAgICB0aCA9IHhzLnRyYW5zYWN0aW9uX3N0YXJ0KCkKKyAgICBpbmZv Wyd0aHJlYWRfaWQnXSA9IHhzLnJlYWQodGgsIHBhdGggKyBYU1BBVEhfRFVNUENPUkVfVEhS RUFEX0lEKQorICAgIGluZm9bJ3JlYXNvbiddID0geHMucmVhZCh0aCwgcGF0aCArIFhTUEFU SF9EVU1QQ09SRV9SRUFTT04pCisgICAgeHMudHJhbnNhY3Rpb25fZW5kKHRoKQorCisgICAg aWYgaW5mb1sndGhyZWFkX2lkJ10gPT0gTm9uZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor ICAgIHJldHVybiBpbmZvCisgICAgCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg IGxvZ2dpbmcuYmFzaWNDb25maWcoKQorICAgICN1bml0IHRlc3RzCisgICAgZGVmIHRlc3Rf Y2Fubm90X2R1cGxvY2tfZm9yXzFkb21haW4oKToKKyAgICAgICAgbG9jayA9IER1bXBMb2Nr KDApCisgICAgICAgIGxvY2syID0gRHVtcExvY2soMCkKKworICAgICAgICBsb2NrLmxvY2so RFVNUENPUkVfUkVBU09OX1hNQ09NKQorICAgICAgICBjYW5fbG9jayA9IGxvY2syLmxvY2so RFVNUENPUkVfUkVBU09OX1hNQ09NKQorCisgICAgICAgIGFzc2VydCBub3QgY2FuX2xvY2sK KyAgICAgICAgbG9jay51bmxvY2soKQorICAgIGRlZiB0ZXN0X2dldF9sb2NraW5mbygpOgor ICAgICAgICBhc3NlcnQgZ2V0X2xvY2tpbmZvKC0xKSA9PSBOb25lCisgICAgICAgIGxvY2sg PSBEdW1wTG9jaygwKQorICAgICAgICBybCA9IGxvY2subG9jayhEVU1QQ09SRV9SRUFTT05f WE1DT00pCisgICAgICAgIGFzc2VydCBybCA9PSBUcnVlCisgICAgICAgIGluZm8gPSBnZXRf bG9ja2luZm8oMCkKKyAgICAgICAgYXNzZXJ0IGluZm8gIT0gTm9uZQorICAgICAgICBhc3Nl cnQgaW5mb1sncmVhc29uJ10gPT0gRFVNUENPUkVfUkVBU09OX1hNQ09NCisgICAgICAgIGFz c2VydCBpbmZvWyd0aHJlYWRfaWQnXSA9PSBzdHIodGhyZWFkLmdldF9pZGVudCgpKQorICAg ICAgICBsb2NrLnVubG9jaygpCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2V4Y2VwdGlvbigp OgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBEdXBsaWNhdGVEdW1wRXJyb3Io InRlc3QiKQorICAgICAgICBleGNlcHQgRHVwbGljYXRlRHVtcEVycm9yLCBleDoKKyAgICAg ICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBEdXBsaWNh dGVEdW1wRXJyb3IoInRlc3QiKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleDoKKyAg ICAgICAgICAgIHBhc3MKKworICAgIGRlZiBtYWluKCk6CisgICAgICAgIHRlc3RfY2Fubm90 X2R1cGxvY2tfZm9yXzFkb21haW4oKQorICAgICAgICB0ZXN0X2dldF9sb2NraW5mbygpCisg ICAgICAgIHRlc3RfZHVwbGljYXRlX2V4Y2VwdGlvbigpCisgICAgbWFpbigpCmRpZmYgLXIg YTAwY2M5N2IzOTJhIC1yIGI3YzFjZmI0OTY5YSB0b29scy9weXRob24veGVuL3htL21haW4u cHkKLS0tIGEvdG9vbHMvcHl0aG9uL3hlbi94bS9tYWluLnB5CVdlZCBTZXAgMTIgMDk6NDM6 MzMgMjAwNyArMDEwMAorKysgYi90b29scy9weXRob24veGVuL3htL21haW4ucHkJVGh1IFNl cCAyNyAwOTo0MDoxOSAyMDA3ICswOTAwCkBAIC0xMjg2LDE5ICsxMjg2LDggQEAgZGVmIHht X2R1bXBfY29yZShhcmdzKToKICAgICBlbHNlOgogICAgICAgICBmaWxlbmFtZSA9IE5vbmUK IAotICAgIGlmIG5vdCBsaXZlOgotICAgICAgICBzZXJ2ZXIueGVuZC5kb21haW4ucGF1c2Uo ZG9tKQotCi0gICAgdHJ5OgotICAgICAgICBwcmludCAiRHVtcGluZyBjb3JlIG9mIGRvbWFp bjogJXMgLi4uIiAlIHN0cihkb20pCi0gICAgICAgIHNlcnZlci54ZW5kLmRvbWFpbi5kdW1w KGRvbSwgZmlsZW5hbWUsIGxpdmUsIGNyYXNoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlm IG5vdCBsaXZlOgotICAgICAgICAgICAgc2VydmVyLnhlbmQuZG9tYWluLnVucGF1c2UoZG9t KQotCi0gICAgaWYgY3Jhc2g6Ci0gICAgICAgIHByaW50ICJEZXN0cm95aW5nIGRvbWFpbjog JXMgLi4uIiAlIHN0cihkb20pCi0gICAgICAgIHNlcnZlci54ZW5kLmRvbWFpbi5kZXN0cm95 KGRvbSkKKyAgICBwcmludCAiRHVtcGluZyBjb3JlIG9mIGRvbWFpbjogJXMgLi4uIiAlIHN0 cihkb20pCisgICAgc2VydmVyLnhlbmQuZG9tYWluLmR1bXAoZG9tLCBmaWxlbmFtZSwgbGl2 ZSwgY3Jhc2gpCiAKIGRlZiB4bV9yZW5hbWUoYXJncyk6CiAgICAgYXJnX2NoZWNrKGFyZ3Ms ICJyZW5hbWUiLCAyKQpkaWZmIC1yIGEwMGNjOTdiMzkyYSAtciBiN2MxY2ZiNDk2OWEgdG9v bHMveGN1dGlscy9NYWtlZmlsZQotLS0gYS90b29scy94Y3V0aWxzL01ha2VmaWxlCVdlZCBT ZXAgMTIgMDk6NDM6MzMgMjAwNyArMDEwMAorKysgYi90b29scy94Y3V0aWxzL01ha2VmaWxl CVRodSBTZXAgMjcgMDk6NDA6MTkgMjAwNyArMDkwMApAQCAtMjIsNyArMjIsNyBAQCBDRkxB R1MgKz0gLVdwLC1NRCwuJChARikuZAogQ0ZMQUdTICs9IC1XcCwtTUQsLiQoQEYpLmQKIFBS T0dfREVQID0gLiouZAogCi1QUk9HUkFNUyA9IHhjX3Jlc3RvcmUgeGNfc2F2ZSByZWFkbm90 ZXMKK1BST0dSQU1TID0geGNfcmVzdG9yZSB4Y19zYXZlIHJlYWRub3RlcyB4Y19kdW1wY29y ZQogCiBMRExJQlMgICA9IC1MJChYRU5fTElCWEMpIC1MJChYRU5fWEVOU1RPUkUpIC1seGVu Z3Vlc3QgLWx4ZW5jdHJsIC1seGVuc3RvcmUKIApkaWZmIC1yIGEwMGNjOTdiMzkyYSAtciBi N2MxY2ZiNDk2OWEgdG9vbHMveGN1dGlscy94Y19kdW1wY29yZS5jCi0tLSAvZGV2L251bGwJ VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL3hjdXRpbHMveGNf ZHVtcGNvcmUuYwlUaHUgU2VwIDI3IDA5OjQwOjE5IDIwMDcgKzA5MDAKQEAgLTAsMCArMSw0 NSBAQAorLyogCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZS4gIFNlZSB0 aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mCisgKiB0aGlzIGFy Y2hpdmUgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgYnkg UmlraXlhIEF5dWthd2EgPGF5dWthd2EucmlraXlhQG5wLmNzcy5mdWppdHN1LmNvbT4KKyAq CisgKi8KKworI2luY2x1ZGUgPGVyci5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ CisjaW5jbHVkZSA8c3lzL2lwYy5oPgorI2luY2x1ZGUgPHN5cy9zaG0uaD4KKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRs Lmg+CisKKyNpbmNsdWRlIDx4cy5oPgorI2luY2x1ZGUgPHhlbmN0cmwuaD4KKyNpbmNsdWRl IDx4ZW5ndWVzdC5oPgorCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7 CisgICAgdW5zaWduZWQgaW50IHhjX2ZkLCBkb21pZDsKKyAgICBpbnQgcmV0OworCisgICAg aWYgKGFyZ2MgIT0gMykKKwllcnJ4KDEsICJ1c2FnZTogJXMgZG9taWQgY29yZW5hbWUiLCBh cmd2WzBdKTsKKworICAgIHhjX2ZkID0geGNfaW50ZXJmYWNlX29wZW4oKTsKKyAgICBpZiAo eGNfZmQgPCAwKQorICAgICAgICBlcnJ4KDEsICJmYWlsZWQgdG8gb3BlbiBjb250cm9sIGlu dGVyZmFjZSIpOworCisgICAgZG9taWQgPSBhdG9pKGFyZ3ZbMV0pOworICAgIHJldCA9IHhj X2RvbWFpbl9kdW1wY29yZSh4Y19mZCwgZG9taWQsIGFyZ3ZbMl0pOworCisgICAgeGNfaW50 ZXJmYWNlX2Nsb3NlKHhjX2ZkKTsKKworICAgIHJldHVybiByZXQ7Cit9Cg== --------------040500010708030600090007 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------040500010708030600090007--