[PATCH v9 12/19] xen: add a hook to perform AP startup

看板FB_current作者時間12年前 (2014/01/03 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
QVAgc3RhcnR1cCBvbiBQVkggZm9sbG93cyB0aGUgUFYgbWV0aG9kLCBzbyB3ZSBuZWVkIHRvIGFk ZCBhIGhvb2sgaW4Kb3JkZXIgdG8gZGl2ZXJnZSBmcm9tIGJhcmUgbWV0YWwuCi0tLQogc3lzL2Ft ZDY0L2FtZDY0L21wX21hY2hkZXAuYyB8ICAgMTQgKysrLS0tCiBzeXMvYW1kNjQvaW5jbHVkZS9j cHUuaCAgICAgIHwgICAgMSArCiBzeXMvYW1kNjQvaW5jbHVkZS9zbXAuaCAgICAgIHwgICAgMSAr CiBzeXMveDg2L3hlbi9odm0uYyAgICAgICAgICAgIHwgICAxMiArKysrKy0KIHN5cy94ODYveGVu L3B2LmMgICAgICAgICAgICAgfCAgIDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogc3lzL3hlbi9wdi5oICAgICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKysr KysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXMveGVuL3B2LmgKCmRpZmYgLS1naXQgYS9zeXMvYW1k NjQvYW1kNjQvbXBfbWFjaGRlcC5jIGIvc3lzL2FtZDY0L2FtZDY0L21wX21hY2hkZXAuYwppbmRl eCA0ZWY0YjNkLi4wNzM4YTM3IDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvbXBfbWFjaGRl cC5jCisrKyBiL3N5cy9hbWQ2NC9hbWQ2NC9tcF9tYWNoZGVwLmMKQEAgLTkwLDcgKzkwLDcgQEAg ZXh0ZXJuICBzdHJ1Y3QgcGNwdSBfX3BjcHVbXTsKIAogLyogQVAgdXNlcyB0aGlzIGR1cmluZyBi b290c3RyYXAuICBEbyBub3Qgc3RhdGljaXplLiAgKi8KIGNoYXIgKmJvb3RTVEs7Ci1zdGF0aWMg aW50IGJvb3RBUDsKK2ludCBib290QVA7CiAKIC8qIEZyZWUgdGhlc2UgYWZ0ZXIgdXNlICovCiB2 b2lkICpib290c3RhY2tzW01BWENQVV07CkBAIC0xMjQsNyArMTI0LDggQEAgc3RhdGljIHVfbG9u ZyAqaXBpX2hhcmRjbG9ja19jb3VudHNbTUFYQ1BVXTsKIAogLyogRGVmYXVsdCBjcHVfb3BzIGlt cGxlbWVudGF0aW9uLiAqLwogc3RydWN0IGNwdV9vcHMgY3B1X29wcyA9IHsKLQkuaXBpX3ZlY3Rv cmVkID0gbGFwaWNfaXBpX3ZlY3RvcmVkCisJLmlwaV92ZWN0b3JlZCA9IGxhcGljX2lwaV92ZWN0 b3JlZCwKKwkuc3RhcnRfYWxsX2FwcyA9IG5hdGl2ZV9zdGFydF9hbGxfYXBzLAogfTsKIAogZXh0 ZXJuIGludGhhbmRfdCBJRFRWRUMoZmFzdF9zeXNjYWxsKSwgSURUVkVDKGZhc3Rfc3lzY2FsbDMy KTsKQEAgLTEzOCw3ICsxMzksNyBAQCBleHRlcm4gaW50IHBtYXBfcGNpZF9lbmFibGVkOwogc3Rh dGljIHZvbGF0aWxlIGNwdXNldF90IGlwaV9ubWlfcGVuZGluZzsKIAogLyogdXNlZCB0byBob2xk IHRoZSBBUCdzIHVudGlsIHdlIGFyZSByZWFkeSB0byByZWxlYXNlIHRoZW0gKi8KLXN0YXRpYyBz dHJ1Y3QgbXR4IGFwX2Jvb3RfbXR4Oworc3RydWN0IG10eCBhcF9ib290X210eDsKIAogLyogU2V0 IHRvIDEgb25jZSB3ZSdyZSByZWFkeSB0byBsZXQgdGhlIEFQcyBvdXQgb2YgdGhlIHBlbi4gKi8K IHN0YXRpYyB2b2xhdGlsZSBpbnQgYXBzX3JlYWR5ID0gMDsKQEAgLTE2NSw3ICsxNjYsNiBAQCBz dGF0aWMgaW50IGNwdV9jb3JlczsJCQkvKiBjb3JlcyBwZXIgcGFja2FnZSAqLwogCiBzdGF0aWMg dm9pZAlhc3NpZ25fY3B1X2lkcyh2b2lkKTsKIHN0YXRpYyB2b2lkCXNldF9pbnRlcnJ1cHRfYXBp Y19pZHModm9pZCk7Ci1zdGF0aWMgaW50CXN0YXJ0X2FsbF9hcHModm9pZCk7CiBzdGF0aWMgaW50 CXN0YXJ0X2FwKGludCBhcGljX2lkKTsKIHN0YXRpYyB2b2lkCXJlbGVhc2VfYXBzKHZvaWQgKmR1 bW15KTsKIApAQCAtNTY5LDcgKzU2OSw3IEBAIGNwdV9tcF9zdGFydCh2b2lkKQogCWFzc2lnbl9j cHVfaWRzKCk7CiAKIAkvKiBTdGFydCBlYWNoIEFwcGxpY2F0aW9uIFByb2Nlc3NvciAqLwotCXN0 YXJ0X2FsbF9hcHMoKTsKKwljcHVfb3BzLnN0YXJ0X2FsbF9hcHMoKTsKIAogCXNldF9pbnRlcnJ1 cHRfYXBpY19pZHMoKTsKIH0KQEAgLTkwOCw4ICs5MDgsOCBAQCBhc3NpZ25fY3B1X2lkcyh2b2lk KQogLyoKICAqIHN0YXJ0IGVhY2ggQVAgaW4gb3VyIGxpc3QKICAqLwotc3RhdGljIGludAotc3Rh cnRfYWxsX2Fwcyh2b2lkKQoraW50CituYXRpdmVfc3RhcnRfYWxsX2Fwcyh2b2lkKQogewogCXZt X29mZnNldF90IHZhID0gYm9vdF9hZGRyZXNzICsgS0VSTkJBU0U7CiAJdV9pbnQ2NF90ICpwdDQs ICpwdDMsICpwdDI7CmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvaW5jbHVkZS9jcHUuaCBiL3N5cy9h bWQ2NC9pbmNsdWRlL2NwdS5oCmluZGV4IDNkOWZmNTMxLi5lZDlmMWRiIDEwMDY0NAotLS0gYS9z eXMvYW1kNjQvaW5jbHVkZS9jcHUuaAorKysgYi9zeXMvYW1kNjQvaW5jbHVkZS9jcHUuaApAQCAt NjQsNiArNjQsNyBAQCBzdHJ1Y3QgY3B1X29wcyB7CiAJdm9pZCAoKmNwdV9pbml0KSh2b2lkKTsK IAl2b2lkICgqY3B1X3Jlc3VtZSkodm9pZCk7CiAJdm9pZCAoKmlwaV92ZWN0b3JlZCkodV9pbnQs IGludCk7CisJaW50ICAoKnN0YXJ0X2FsbF9hcHMpKHZvaWQpOwogfTsKIAogZXh0ZXJuIHN0cnVj dAljcHVfb3BzIGNwdV9vcHM7CmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvaW5jbHVkZS9zbXAuaCBi L3N5cy9hbWQ2NC9pbmNsdWRlL3NtcC5oCmluZGV4IGQxYjM2NmIuLjE1YmM4MjMgMTAwNjQ0Ci0t LSBhL3N5cy9hbWQ2NC9pbmNsdWRlL3NtcC5oCisrKyBiL3N5cy9hbWQ2NC9pbmNsdWRlL3NtcC5o CkBAIC03OSw2ICs3OSw3IEBAIHZvaWQJc21wX21hc2tlZF9pbnZscGdfcmFuZ2UoY3B1c2V0X3Qg bWFzaywgc3RydWN0IHBtYXAgKnBtYXAsCiAJICAgIHZtX29mZnNldF90IHN0YXJ0dmEsIHZtX29m ZnNldF90IGVuZHZhKTsKIHZvaWQJc21wX2ludmx0bGIoc3RydWN0IHBtYXAgKnBtYXApOwogdm9p ZAlzbXBfbWFza2VkX2ludmx0bGIoY3B1c2V0X3QgbWFzaywgc3RydWN0IHBtYXAgKnBtYXApOwor aW50CW5hdGl2ZV9zdGFydF9hbGxfYXBzKHZvaWQpOwogCiAjZW5kaWYgLyogIUxPQ09SRSAqLwog I2VuZGlmIC8qIFNNUCAqLwpkaWZmIC0tZ2l0IGEvc3lzL3g4Ni94ZW4vaHZtLmMgYi9zeXMveDg2 L3hlbi9odm0uYwppbmRleCBmYjFlZDc5Li40OWNhYWNmIDEwMDY0NAotLS0gYS9zeXMveDg2L3hl bi9odm0uYworKysgYi9zeXMveDg2L3hlbi9odm0uYwpAQCAtNTMsNiArNTMsOSBAQCBfX0ZCU0RJ RCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8eGVuL2h5cGVydmlzb3IuaD4KICNpbmNsdWRlIDx4 ZW4vaHZtLmg+CiAjaW5jbHVkZSA8eGVuL3hlbl9pbnRyLmg+CisjaWZkZWYgX19hbWQ2NF9fCisj aW5jbHVkZSA8eGVuL3B2Lmg+CisjZW5kaWYKIAogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvaHZt L3BhcmFtcy5oPgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvdmNwdS5oPgpAQCAtMTE5LDcgKzEy MiwxMCBAQCBlbnVtIHhlbl9kb21haW5fdHlwZSB4ZW5fZG9tYWluX3R5cGUgPSBYRU5fTkFUSVZF Owogc3RydWN0IGNwdV9vcHMgeGVuX2h2bV9jcHVfb3BzID0gewogCS5pcGlfdmVjdG9yZWQJPSBs YXBpY19pcGlfdmVjdG9yZWQsCiAJLmNwdV9pbml0CT0geGVuX2h2bV9jcHVfaW5pdCwKLQkuY3B1 X3Jlc3VtZQk9IHhlbl9odm1fY3B1X3Jlc3VtZQorCS5jcHVfcmVzdW1lCT0geGVuX2h2bV9jcHVf cmVzdW1lLAorI2lmZGVmIF9fYW1kNjRfXworCS5zdGFydF9hbGxfYXBzID0gbmF0aXZlX3N0YXJ0 X2FsbF9hcHMsCisjZW5kaWYKIH07CiAKIHN0YXRpYyBNQUxMT0NfREVGSU5FKE1fWEVOSFZNLCAi eGVuX2h2bSIsICJYZW4gSFZNIFBWIFN1cHBvcnQiKTsKQEAgLTY5OCw2ICs3MDQsMTAgQEAgeGVu X2h2bV9pbml0KGVudW0geGVuX2h2bV9pbml0X3R5cGUgaW5pdF90eXBlKQogCQlzZXR1cF94ZW5f ZmVhdHVyZXMoKTsKIAkJY3B1X29wcyA9IHhlbl9odm1fY3B1X29wczsKICAJCXZtX2d1ZXN0ID0g Vk1fR1VFU1RfWEVOOworI2lmZGVmIF9fYW1kNjRfXworCQlpZiAoeGVuX3B2X2RvbWFpbigpKQor CQkJY3B1X29wcy5zdGFydF9hbGxfYXBzID0geGVuX3B2X3N0YXJ0X2FsbF9hcHM7CisjZW5kaWYK IAkJYnJlYWs7CiAJY2FzZSBYRU5fSFZNX0lOSVRfUkVTVU1FOgogCQlpZiAoZXJyb3IgIT0gMCkK ZGlmZiAtLWdpdCBhL3N5cy94ODYveGVuL3B2LmMgYi9zeXMveDg2L3hlbi9wdi5jCmluZGV4IGQx MWJjMWEuLjIyZmQ2YTYgMTAwNjQ0Ci0tLSBhL3N5cy94ODYveGVuL3B2LmMKKysrIGIvc3lzL3g4 Ni94ZW4vcHYuYwpAQCAtMzQsOCArMzQsMTEgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2lu Y2x1ZGUgPHN5cy9rZXJuZWwuaD4KICNpbmNsdWRlIDxzeXMvcmVib290Lmg+CiAjaW5jbHVkZSA8 c3lzL3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL21hbGxvYy5oPgogI2luY2x1ZGUgPHN5cy9sb2Nr Lmg+CiAjaW5jbHVkZSA8c3lzL3J3bG9jay5oPgorI2luY2x1ZGUgPHN5cy9tdXRleC5oPgorI2lu Y2x1ZGUgPHN5cy9zbXAuaD4KIAogI2luY2x1ZGUgPHZtL3ZtLmg+CiAjaW5jbHVkZSA8dm0vdm1f ZXh0ZXJuLmg+CkBAIC00OSw5ICs1MiwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5j bHVkZSA8bWFjaGluZS9zeXNhcmNoLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9jbG9jay5oPgogI2lu Y2x1ZGUgPG1hY2hpbmUvcGMvYmlvcy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvc21wLmg+CiAKICNp bmNsdWRlIDx4ZW4veGVuLW9zLmg+CiAjaW5jbHVkZSA8eGVuL2h5cGVydmlzb3IuaD4KKyNpbmNs dWRlIDx4ZW4vcHYuaD4KKworI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvdmNwdS5oPgogCiAvKiBO YXRpdmUgaW5pdGlhbCBmdW5jdGlvbiAqLwogZXh0ZXJuIHVfaW50NjRfdCBoYW1tZXJfdGltZSh1 X2ludDY0X3QsIHVfaW50NjRfdCk7CkBAIC02NSw2ICs3MiwxNSBAQCBzdGF0aWMgY2FkZHJfdCB4 ZW5fcHZfcGFyc2VfcHJlbG9hZF9kYXRhKHVfaW50NjRfdCk7CiBzdGF0aWMgdm9pZCB4ZW5fcHZf cGFyc2VfbWVtbWFwKGNhZGRyX3QsIHZtX3BhZGRyX3QgKiwgaW50ICopOwogCiBzdGF0aWMgdm9p ZCB4ZW5fcHZfc2V0X2luaXRfb3BzKHZvaWQpOworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIEV4dGVybiBEZWNsYXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8q IFZhcmlhYmxlcyB1c2VkIGJ5IGFtZDY0IG1wX21hY2hkZXAgdG8gc3RhcnQgQVBzICovCitleHRl cm4gc3RydWN0IG10eCBhcF9ib290X210eDsKK2V4dGVybiB2b2lkICpib290c3RhY2tzW107Citl eHRlcm4gY2hhciAqZG91YmxlZmF1bHRfc3RhY2s7CitleHRlcm4gY2hhciAqbm1pX3N0YWNrOwor ZXh0ZXJuIHZvaWQgKmRwY3B1OworZXh0ZXJuIGludCBib290QVA7CitleHRlcm4gY2hhciAqYm9v dFNUSzsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHbG9iYWwgRGF0YSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFhlbiBpbml0X29wcyBpbXBsZW1l bnRhdGlvbi4gKi8KQEAgLTE2OCw2ICsxODQsNzUgQEAgaGFtbWVyX3RpbWVfeGVuKHN0YXJ0X2lu Zm9fdCAqc2ksIHVfaW50NjRfdCB4ZW5zdGFjaykKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBQViBzcGVjaWZpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KKworc3RhdGljIGludAorc3RhcnRfeGVuX2FwKGludCBjcHUpCit7CisJc3RydWN0IHZjcHVf Z3Vlc3RfY29udGV4dCAqY3R4dDsKKwlpbnQgbXMsIGNwdXMgPSBtcF9uYXBzOworCisJY3R4dCA9 IG1hbGxvYyhzaXplb2YoKmN0eHQpLCBNX1RFTVAsIE1fTk9XQUlUIHwgTV9aRVJPKTsKKwlpZiAo Y3R4dCA9PSBOVUxMKQorCQlwYW5pYygidW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSIpOworCisJ Y3R4dC0+ZmxhZ3MgPSBWR0NGX0lOX0tFUk5FTDsKKwljdHh0LT51c2VyX3JlZ3MucmlwID0gKHVu c2lnbmVkIGxvbmcpIGluaXRfc2Vjb25kYXJ5OworCWN0eHQtPnVzZXJfcmVncy5yc3AgPSAodW5z aWduZWQgbG9uZykgYm9vdFNUSzsKKworCS8qIFNldCB0aGUgQVAgdG8gdXNlIHRoZSBzYW1lIHBh Z2UgdGFibGVzICovCisJY3R4dC0+Y3RybHJlZ1szXSA9IEtQTUw0cGh5czsKKworCWlmIChIWVBF UlZJU09SX3ZjcHVfb3AoVkNQVU9QX2luaXRpYWxpc2UsIGNwdSwgY3R4dCkpCisJCXBhbmljKCJ1 bmFibGUgdG8gaW5pdGlhbGl6ZSBBUCMlZFxuIiwgY3B1KTsKKworCWZyZWUoY3R4dCwgTV9URU1Q KTsKKworCS8qIExhdW5jaCB0aGUgdkNQVSAqLworCWlmIChIWVBFUlZJU09SX3ZjcHVfb3AoVkNQ VU9QX3VwLCBjcHUsIE5VTEwpKQorCQlwYW5pYygidW5hYmxlIHRvIHN0YXJ0IEFQIyVkXG4iLCBj cHUpOworCisJLyogV2FpdCB1cCB0byA1IHNlY29uZHMgZm9yIGl0IHRvIHN0YXJ0LiAqLworCWZv ciAobXMgPSAwOyBtcyA8IDUwMDA7IG1zKyspIHsKKwkJaWYgKG1wX25hcHMgPiBjcHVzKQorCQkJ cmV0dXJuICgxKTsJLyogcmV0dXJuIFNVQ0NFU1MgKi8KKwkJREVMQVkoMTAwMCk7CisJfQorCisJ cmV0dXJuICgwKTsKK30KKworaW50Cit4ZW5fcHZfc3RhcnRfYWxsX2Fwcyh2b2lkKQoreworCWlu dCBjcHU7CisKKwltdHhfaW5pdCgmYXBfYm9vdF9tdHgsICJhcCBib290IiwgTlVMTCwgTVRYX1NQ SU4pOworCisJZm9yIChjcHUgPSAxOyBjcHUgPCBtcF9uY3B1czsgY3B1KyspIHsKKworCQkvKiBh bGxvY2F0ZSBhbmQgc2V0IHVwIGFuIGlkbGUgc3RhY2sgZGF0YSBwYWdlICovCisJCWJvb3RzdGFj a3NbY3B1XSA9ICh2b2lkICopa21lbV9tYWxsb2Moa2VybmVsX2FyZW5hLAorCQkgICAgS1NUQUNL X1BBR0VTICogUEFHRV9TSVpFLCBNX1dBSVRPSyB8IE1fWkVSTyk7CisJCWRvdWJsZWZhdWx0X3N0 YWNrID0gKGNoYXIgKilrbWVtX21hbGxvYyhrZXJuZWxfYXJlbmEsCisJCSAgICBQQUdFX1NJWkUs IE1fV0FJVE9LIHwgTV9aRVJPKTsKKwkJbm1pX3N0YWNrID0gKGNoYXIgKilrbWVtX21hbGxvYyhr ZXJuZWxfYXJlbmEsIFBBR0VfU0laRSwKKwkJICAgIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwkJZHBj cHUgPSAodm9pZCAqKWttZW1fbWFsbG9jKGtlcm5lbF9hcmVuYSwgRFBDUFVfU0laRSwKKwkJICAg IE1fV0FJVE9LIHwgTV9aRVJPKTsKKworCQlib290U1RLID0gKGNoYXIgKilib290c3RhY2tzW2Nw dV0gKyBLU1RBQ0tfUEFHRVMgKiBQQUdFX1NJWkUgLSA4OworCQlib290QVAgPSBjcHU7CisKKwkJ LyogYXR0ZW1wdCB0byBzdGFydCB0aGUgQXBwbGljYXRpb24gUHJvY2Vzc29yICovCisJCWlmICgh c3RhcnRfeGVuX2FwKGNwdSkpCisJCQlwYW5pYygiQVAgIyVkIGZhaWxlZCB0byBzdGFydCEiLCBj cHUpOworCisJCUNQVV9TRVQoY3B1LCAmYWxsX2NwdXMpOwkvKiByZWNvcmQgQVAgaW4gQ1BVIG1h cCAqLworCX0KKworCXJldHVybiAobXBfbmFwcyk7Cit9CisKIC8qCiAgKiBGdW5jdGlvbnMgdG8g Y29udmVydCB0aGUgImV4dHJhIiBwYXJhbWV0ZXJzIHBhc3NlZCBieSBYZW4KICAqIGludG8gRnJl ZUJTRCBib290IG9wdGlvbnMgKGZyb20gdGhlIGkzODYgWGVuIHBvcnQpLgpkaWZmIC0tZ2l0IGEv c3lzL3hlbi9wdi5oIGIvc3lzL3hlbi9wdi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjQ1Yjc0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMveGVuL3B2LmgKQEAgLTAsMCAr MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRP UlMgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklC VVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMK KyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1Ig VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYJX19Y RU5fUFZfSF9fCisjZGVmaW5lCV9fWEVOX1BWX0hfXworCitpbnQJeGVuX3B2X3N0YXJ0X2FsbF9h cHModm9pZCk7CisKKyNlbmRpZgkvKiBfX1hFTl9QVl9IX18gKi8KLS0gCjEuNy43LjUgKEFwcGxl IEdpdC0yNikKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmZyZWVic2QtY3VycmVudEBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmZy ZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWJzZC1jdXJyZW50ClRvIHVuc3Vic2NyaWJl LCBzZW5kIGFueSBtYWlsIHRvICJmcmVlYnNkLWN1cnJlbnQtdW5zdWJzY3JpYmVAZnJlZWJzZC5v cmci
文章代碼(AID): #1InQbVum (FB_current)