看板 DFBSD_kernel 關於我們 聯絡資訊
--20cf305e2505c5092a04af451d02 Content-Type: multipart/alternative; boundary=20cf305e2505c5092704af451d00 --20cf305e2505c5092704af451d00 Content-Type: text/plain; charset=ISO-8859-1 Hello, Here is the top io patch attached. This patch is just for testing purpose. I have made some changes to PRES print and sorting stuff. As, I was testing this on my old system, cause its graphical and gives me some good read and write results while fire-fox is running. I talked on IRC and Alex told me that the IVCSW (In voluntary context switches) values are not stored properly but on my system I always see the IVCSW values zero both with the values from the struct kp_ru and kp_cru i.e. I tried to check the values of process resource usage and childs resource usage and the IVCSW is allways zero. May be their are no involuntary context switches on my system, may be the processes are kind enough to utilise cpu in bounds. Also, I added a function to sort the reads which is not sorting the processes properly, although the logic is same the way with other sort ORDERKEY's. Please test this patch with the top -m io command and give me some suggestions on it. Note: This patch is just to get some feedback. The only things missing in this patch is sorting the output depending on write, total io, vcsw, ivcsw and faults. - Pratyush Kshirsagar. --20cf305e2505c5092704af451d00 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello,<br>Here is the top io patch attached.<br>This patch is just for test= ing purpose.<br>I have made some changes to PRES print and sorting stuff.<b= r>As, I was testing this on my old system, cause its graphical and gives me= some good read and write results while fire-fox is running.<br> I talked on IRC and Alex told me that the IVCSW=A0 (In voluntary context sw= itches) values are not stored properly but on my system I always see the IV= CSW values zero both with the values from the struct kp_ru and kp_cru i.e. = I tried to check the values of process resource usage and childs resource u= sage and the IVCSW is allways zero. May be their are no involuntary context= switches on my system, may be the processes are kind enough to utilise cpu= in bounds.<br> Also, I added a function to sort the reads which is not sorting the process= es properly, although the logic is same the way with other sort ORDERKEY&#3= 9;s.<br><br>Please test this patch with the top -m io command and give me s= ome suggestions on it.<br> <br>Note: This patch is just to get some feedback. The only things missing = in this patch is sorting the output depending on write, total io, vcsw, ivc= sw and faults.<br><br>- Pratyush Kshirsagar.<br> --20cf305e2505c5092704af451d00-- --20cf305e2505c5092a04af451d02 Content-Type: application/octet-stream; name="top_io_patch_review_01.patch" Content-Disposition: attachment; filename="top_io_patch_review_01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtkl7vn00 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvdG9wL3RvcC5jIGIvY29udHJpYi90b3AvdG9wLmMKaW5kZXgg OGQ4Nzk0MC4uNWY0NzU0ZSAxMDA2NDQKLS0tIGEvY29udHJpYi90b3AvdG9wLmMKKysrIGIvY29u dHJpYi90b3AvdG9wLmMKQEAgLTQxNCw4ICs0MTQsMTQgQEAgZG9fYXJndW1lbnRzKGdsb2JhbHN0 YXRlICpnc3RhdGUsIGludCBhYywgY2hhciAqKmF2KQogCSAgICBicmVhazsKIAogCWNhc2UgJ20n OgotCSAgICBpID0gYXRvaShvcHRhcmcpOwotCSAgICBnc3RhdGUtPnBzZWxlY3QubW9kZSA9IGk7 CisJICAgIGlmIChzdHJjbXAob3B0YXJnLCJpbyIpID09IDApIHsKKwkJZGlzcGxheW1vZGUgPSBE SVNQX0lPOworCSAgICB9IGVsc2UgaWYgKHN0cmNtcChvcHRhcmcsImNwdSIpID09IDApIHsKKwkJ ZGlzcGxheW1vZGUgPSBESVNQX0NQVTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisJCSAgICBpID0g YXRvaShvcHRhcmcpOworCQkgICAgZ3N0YXRlLT5wc2VsZWN0Lm1vZGUgPSBpOworCSAgICB9CiAJ ICAgIGJyZWFrOwogCiAJY2FzZSAnUyc6CmRpZmYgLS1naXQgYS9jb250cmliL3RvcC90b3AuaCBi L2NvbnRyaWIvdG9wL3RvcC5oCmluZGV4IGM1MDA0NmEuLjVlODFlNGQgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvdG9wL3RvcC5oCisrKyBiL2NvbnRyaWIvdG9wL3RvcC5oCkBAIC02NSw2ICs2NSwxMCBA QCBzdHJ1Y3QgZXh0X2RlY2wgewogICAgIGludCAoKmZfZGlzcGxheSkoY2hhciAqLCBpbnQpOwog fTsKIAorLyogRGlzcGxheSBtb2RlcyB0byBkaXN0aW5ndWlzaCB0aGUgdHlwZSBvZiB0b3AgZGlz cGxheSAqLworZW51bSBkaXNwbGF5bW9kZXMgeyBESVNQX0NQVSA9IDAsIERJU1BfSU8sIERJU1Bf TUFYIH07CisKK2V4dGVybiBlbnVtIGRpc3BsYXltb2RlcyBkaXNwbGF5bW9kZTsKIC8qCiAgKiAg IlRhYmxlX3NpemUiIGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIGhhc2ggdGFibGVzIHVzZWQgdG8g bWFwIHVpZCB0bwogICogIHVzZXJuYW1lLiAgVGhpbmdzIHdpbGwgd29yayBiZXN0IGlmIHRoZSBu dW1iZXIgaXMgYSBwcmltZSBudW1iZXIuCmRpZmYgLS1naXQgYS9zeXMvc3lzL2tpbmZvLmggYi9z eXMvc3lzL2tpbmZvLmgKaW5kZXggYzU0N2M2ZC4uYmFmZjZlOSAxMDA2NDQKLS0tIGEvc3lzL3N5 cy9raW5mby5oCisrKyBiL3N5cy9zeXMva2luZm8uaApAQCAtMjA0LDYgKzIwNCw3IEBAIHN0cnVj dCBraW5mb19wcm9jIHsKIAlzdHJ1Y3QgcnVzYWdlCWtwX3J1OwogCXN0cnVjdCBydXNhZ2UJa3Bf Y3J1OwogCisJdm9pZCAJCSprcF91ZGF0YTsKIAlpbnQJCWtwX2F1eGZsYWdzOwkvKiBnZW5lcmF0 ZWQgZmxhZ3MgKi8KICNkZWZpbmUgS0lfQ1RUWQkxCiAjZGVmaW5lIEtJX1NMRUFERVIJMgpkaWZm IC0tZ2l0IGEvdXNyLmJpbi90b3AvbV9kcmFnb25mbHkuYyBiL3Vzci5iaW4vdG9wL21fZHJhZ29u Zmx5LmMKaW5kZXggZmZhNzg5YS4uZmJkMzkzNyAxMDA2NDQKLS0tIGEvdXNyLmJpbi90b3AvbV9k cmFnb25mbHkuYworKysgYi91c3IuYmluL3RvcC9tX2RyYWdvbmZseS5jCkBAIC02Myw2ICs2Myw3 IEBAIHN0YXRpYyBpbnQgc21wbW9kZTsKIHN0YXRpYyBpbnQgbmFtZWxlbmd0aDsKIHN0YXRpYyBp bnQgY21kbGVuZ3RoOwogc3RhdGljIGludCBzaG93X2Z1bGxjbWQ7CitlbnVtIGRpc3BsYXltb2Rl cyBkaXNwbGF5bW9kZTsKIAogaW50IG5fY3B1cyA9IDA7CiAKQEAgLTg0LDYgKzg1LDcgQEAgc3Ry dWN0IGhhbmRsZSB7CiAjZGVmaW5lIFBQKHBwLCBmaWVsZCkgKChwcCktPmtwXyAjIyBmaWVsZCkK ICNkZWZpbmUgTFAocHAsIGZpZWxkKSAoKHBwKS0+a3BfbHdwLmtsXyAjIyBmaWVsZCkKICNkZWZp bmUgVlAocHAsIGZpZWxkKSAoKHBwKS0+a3Bfdm1fICMjIGZpZWxkKQorI2RlZmluZSBSVShwcCkg ICAgICAgICgmKHBwKS0+a3BfcnUpCiAKIC8qIGRlZmluZSB3aGF0IHdlaWdodGVkIGNwdSBpcy4g ICovCiAjZGVmaW5lIHdlaWdodGVkX2NwdShwY3QsIHBwKSAoUFAoKHBwKSwgc3d0aW1lKSA9PSAw ID8gMC4wIDogXApAQCAtOTYsMTggKzk4LDIzIEBAIHN0cnVjdCBoYW5kbGUgewogICogVGhlc2Ug ZGVmaW5pdGlvbnMgY29udHJvbCB0aGUgZm9ybWF0IG9mIHRoZSBwZXItcHJvY2VzcyBhcmVhCiAg Ki8KIAorc3RhdGljIGNoYXIgaW9faGVhZGVyW10gPQorIiAgUElEICUtKi4qcyBWQ1NXICBJVkNT VyAgUkVBRCAgIFdSSVRFICAgICBGQVVMVCAgIFRPVEFMICAgUEVSQ0VOVCBDT01NQU5EIjsKKwor I2RlZmluZSBpb19Qcm9jX2Zvcm1hdCBcCisJIiU1ZCAlLSouKnMgJTZsZCAlNmxkICU2bGQgJTZs ZCAlNmxkICU2bGQgICU1LjJmJSUgJTdzIgorCiBzdGF0aWMgY2hhciBzbXBfaGVhZGVyW10gPQot IiAgUElEICUtKi4qcyBQUkkgTklDRSAgU0laRSAgICBSRVMgU1RBVEUgIEMgICBUSU1FICAgQ1RJ TUUgICBDUFUgQ09NTUFORCI7CisiICBQSUQgJS0qLipzIE5JQ0UgIFNJWkUgICBQUkVTICAgU1RB VEUgQ1BVICBUSU1FICAgQ1RJTUUgICAgQ1BVIENPTU1BTkQiOwogCiAjZGVmaW5lIHNtcF9Qcm9j X2Zvcm1hdCBcCi0JIiU1ZCAlLSouKnMgJTNkICUzZCU3cyAlNnMgJS02LjZzICUxeCU3cyAlN3Mg JTUuMmYlJSAlLipzIgorCSIlNWQgJS0qLipzICUzZCU3cyAlNnMgJTcuN3MgJTJkICU2cyAlN3Mg JTUuMmYlJSAlLipzIgogCiBzdGF0aWMgY2hhciB1cF9oZWFkZXJbXSA9Ci0iICBQSUQgJS0qLipz IFBSSSBOSUNFICBTSVpFICAgIFJFUyBTVEFURSAgICBUSU1FICAgQ1RJTUUgICBDUFUgQ09NTUFO RCI7CisiICBQSUQgJS0qLipzIE5JQ0UgIFNJWkUgICBQUkVTICAgU1RBVEUgICAgVElNRSAgIENU SU1FICAgIENQVSBDT01NQU5EIjsKIAogI2RlZmluZSB1cF9Qcm9jX2Zvcm1hdCBcCi0JIiU1ZCAl LSouKnMgJTNkICUzZCU3cyAlNnMgJS02LjZzJS4wZCU3cyAlN3MgJTUuMmYlJSAlLipzIgotCisJ IiU1ZCAlLSouKnMgJTNkJTdzICU2cyAlNy43cyUuMGQgJTdzICU3cyAlNS4yZiUlICUuKnMiCiAK IAogLyogcHJvY2VzcyBzdGF0ZSBuYW1lcyBmb3IgdGhlICJTVEFURSIgY29sdW1uIG9mIHRoZSBk aXNwbGF5ICovCkBAIC0xNzIsNiArMTc5LDE1IEBAIHN0YXRpYyBpbnQgb25wcm9jID0gLTE7CiBz dGF0aWMgaW50IHByZWZfbGVuOwogc3RhdGljIHN0cnVjdCBraW5mb19wcm9jICpwYmFzZTsKIHN0 YXRpYyBzdHJ1Y3Qga2luZm9fcHJvYyAqKnByZWY7CitzdGF0aWMgc3RydWN0IGtpbmZvX3Byb2Mg KnByZXZpb3VzX3Byb2NzOworc3RhdGljIHN0cnVjdCBraW5mb19wcm9jICoqcHJldmlvdXNfcHJl ZjsKK3N0YXRpYyBpbnQgcHJldmlvdXNfcHJvY19jb3VudCA9IDA7CitzdGF0aWMgaW50IHByZXZp b3VzX3Byb2NfY291bnRfbWF4ID0gMDsKKworLyogdG90YWwgbnVtYmVyIG9mIGlvIG9wZXJhdGlv bnMgKi8KK3N0YXRpYyBsb25nIHRvdGFsX2luYmxvY2s7CitzdGF0aWMgbG9uZyB0b3RhbF9vdWJs b2NrOworc3RhdGljIGxvbmcgdG90YWxfbWFqZmx0OwogCiAvKiB0aGVzZSBhcmUgZm9yIGdldHRp bmcgdGhlIG1lbW9yeSBzdGF0aXN0aWNzICovCiAKQEAgLTE4Myw3ICsxOTksNyBAQCBzdGF0aWMg aW50IHBhZ2VzaGlmdDsJCS8qIGxvZyBiYXNlIDIgb2YgdGhlIHBhZ2VzaXplICovCiAKIC8qIHNv cnRpbmcgb3JkZXJzLiBmaXJzdCBpcyBkZWZhdWx0ICovCiBjaGFyICpvcmRlcm5hbWVzW10gPSB7 Ci0JImNwdSIsICJzaXplIiwgInJlcyIsICJ0aW1lIiwgInByaSIsICJ0aHIiLCAicGlkIiwgImN0 aW1lIiwgIE5VTEwKKyAgImNwdSIsICJzaXplIiwgInJlcyIsICJ0aW1lIiwgInByaSIsICJ0aHIi LCAicGlkIiwgImN0aW1lIiwgInJlYWQiLCBOVUxMCiB9OwogCiAvKiBjb21wYXJlIHJvdXRpbmVz ICovCkBAIC0xOTUsNiArMjExLDggQEAgaW50IGNvbXBhcmVfY3RpbWUgKHN0cnVjdCBraW5mb19w cm9jICoqLCBzdHJ1Y3Qga2luZm9fcHJvYyAqKik7CiBpbnQgY29tcGFyZV9wcmlvKHN0cnVjdCBr aW5mb19wcm9jICoqLCBzdHJ1Y3Qga2luZm9fcHJvYyAqKik7CiBpbnQgY29tcGFyZV90aHIgKHN0 cnVjdCBraW5mb19wcm9jICoqLCBzdHJ1Y3Qga2luZm9fcHJvYyAqKik7CiBpbnQgY29tcGFyZV9w aWQgKHN0cnVjdCBraW5mb19wcm9jICoqLCBzdHJ1Y3Qga2luZm9fcHJvYyAqKik7CitpbnQgY29t cGFyZV9waWQxIChzdHJ1Y3Qga2luZm9fcHJvYyAqLCBzdHJ1Y3Qga2luZm9fcHJvYyAqKTsKK2lu dCBjb21wYXJlX2lvcmVhZCAoc3RydWN0IGtpbmZvX3Byb2MgKiosIHN0cnVjdCBraW5mb19wcm9j ICoqKTsKIAogaW50ICgqcHJvY19jb21wYXJlc1tdKSAoc3RydWN0IGtpbmZvX3Byb2MgKiosc3Ry dWN0IGtpbmZvX3Byb2MgKiopID0gewogCXByb2NfY29tcGFyZSwKQEAgLTIwNSw2ICsyMjMsNyBA QCBpbnQgKCpwcm9jX2NvbXBhcmVzW10pIChzdHJ1Y3Qga2luZm9fcHJvYyAqKixzdHJ1Y3Qga2lu Zm9fcHJvYyAqKikgPSB7CiAJY29tcGFyZV90aHIsCiAJY29tcGFyZV9waWQsCiAJY29tcGFyZV9j dGltZSwKKwljb21wYXJlX2lvcmVhZCwKIAlOVUxMCiB9OwogCkBAIC0zMjcsOCArMzQ2LDE2IEBA IGZvcm1hdF9oZWFkZXIoY2hhciAqdW5hbWVfZmllbGQpCiB7CiAJc3RhdGljIGNoYXIgSGVhZGVy WzEyOF07CiAKLQlzbnByaW50ZihIZWFkZXIsIHNpemVvZihIZWFkZXIpLCBzbXBtb2RlID8gc21w X2hlYWRlciA6IHVwX2hlYWRlciwKLQkgICAgbmFtZWxlbmd0aCwgbmFtZWxlbmd0aCwgdW5hbWVf ZmllbGQpOworCXN3aXRjaChkaXNwbGF5bW9kZSkgeworCWNhc2UgRElTUF9DUFU6CisJCXNucHJp bnRmKEhlYWRlciwgc2l6ZW9mKEhlYWRlciksIHNtcG1vZGUgPyBzbXBfaGVhZGVyIDogdXBfaGVh ZGVyLAorCQkgICAgbmFtZWxlbmd0aCwgbmFtZWxlbmd0aCwgdW5hbWVfZmllbGQpOworCQlicmVh azsKKwljYXNlIERJU1BfSU86CisJCXNucHJpbnRmKEhlYWRlciwgc2l6ZW9mKEhlYWRlciksIGlv X2hlYWRlciwKKwkJCW5hbWVsZW5ndGgsIG5hbWVsZW5ndGgsIHVuYW1lX2ZpZWxkKTsKKwkJYnJl YWs7CisJfQogCiAJaWYgKHNjcmVlbl93aWR0aCA8PSA3OSkKIAkJY21kbGVuZ3RoID0gODA7CkBA IC0zNjEsNyArMzg4LDYgQEAgZ2V0X3N5c3RlbV9pbmZvKHN0cnVjdCBzeXN0ZW1faW5mbyAqc2kp CiAJCWlmIChjcF90aW1lID09IE5VTEwpCiAJCQllcnIoMSwgImNwX3RpbWUiKTsKIAkJY3Bfb2xk ID0gY3BfdGltZSArIG5fY3B1czsKLQogCQlsZW4gPSBuX2NwdXMgKiBzaXplb2YoY3Bfb2xkWzBd KTsKIAkJYnplcm8oY3BfdGltZSwgbGVuKTsKIAkJaWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5jcHV0 aW1lIiwgY3Bfb2xkLCAmbGVuLCBOVUxMLCAwKSkKQEAgLTQ0OSw2ICs0NzUsNzMgQEAgZ2V0X3N5 c3RlbV9pbmZvKHN0cnVjdCBzeXN0ZW1faW5mbyAqc2kpCiAJfQogfQogCisjZGVmaW5lIE5PUFJP QyAoKHZvaWQgKiktMSkKKworY29uc3Qgc3RydWN0IGtpbmZvX3Byb2MgKgorZ2V0X29sZF9wcm9j KHN0cnVjdCBraW5mb19wcm9jICpwcCkgeworCisJc3RydWN0IGtpbmZvX3Byb2MgKipvbGRwcCwg Km9sZHA7CisJaWYocHJldmlvdXNfcHJvY19jb3VudCA9PSAwKQorCQlyZXR1cm4gKE5VTEwpOwor CWlmKHBwLT5rcF91ZGF0YSA9PSBOT1BST0MpCisJCXJldHVybiAoTlVMTCk7CisJaWYocHAtPmtw X3VkYXRhICE9IE5VTEwpIHsKKwkJcmV0dXJuIChwcC0+a3BfdWRhdGEpOworCX0KKwlvbGRwcCA9 IGJzZWFyY2goJnBwLCBwcmV2aW91c19wcmVmLCBwcmV2aW91c19wcm9jX2NvdW50LCBzaXplb2Yo KnByZXZpb3VzX3ByZWYpLAorCQkoaW50KCopIChjb25zdCB2b2lkICosIGNvbnN0ICB2b2lkICop KSBjb21wYXJlX3BpZDEpOworCWlmKG9sZHBwID09IE5VTEwpIHsKKwkJcHAtPmtwX3VkYXRhID0g Tk9QUk9DOworCQlyZXR1cm4gKE5VTEwpOworCX0KKwlvbGRwID0gKm9sZHBwOworCWlmKGJjbXAo Jm9sZHAtPmtwX3N0YXJ0LCAmcHAtPmtwX3N0YXJ0LCBzaXplb2YocHAtPmtwX3N0YXJ0KSkgIT0g MCkgeworCQlwcC0+a3BfdWRhdGEgPSBOT1BST0M7CisJCXJldHVybihOVUxMKTsKKwl9CisJcHAt PmtwX3VkYXRhID0gb2xkcDsKKwlyZXR1cm4gKG9sZHApOworfQorCisvKgorICogUmV0dXJuIHRo ZSB0b3RhbCBhbW91bnQgb2YgSU8gZG9uZSBpbiBibG9ja3MgaW4vb3V0IGFuZCBmYXVsdHMuCisg KiBzdG9yZSB0aGUgdmFsdWVzIGluZGl2aWR1YWxseSBpbiB0aGUgcG9pbnRlcnMgcGFzc2VkIGlu LgorICovCitsb25nCitnZXRfaW9fc3RhdHMoc3RydWN0IGtpbmZvX3Byb2MgKnBwLCBsb25nICpp bnAsIGxvbmcgKm91cCwgbG9uZyAqZmxwLAorICAgIGxvbmcgKnZjc3csIGxvbmcgKml2Y3N3KQor eworCWNvbnN0IHN0cnVjdCBraW5mb19wcm9jICpvbGRwOworCXN0YXRpYyBzdHJ1Y3Qga2luZm9f cHJvYyBkdW1teTsKKwlsb25nIHJldDsKKworCW9sZHAgPSBnZXRfb2xkX3Byb2MocHApOworCWlm IChvbGRwID09IE5VTEwpIHsKKwkJYnplcm8oJmR1bW15LCBzaXplb2YoZHVtbXkpKTsKKwkJb2xk cCA9ICZkdW1teTsKKwl9CisJKmlucCA9ICAgUFAocHAscnUpLnJ1X2luYmxvY2sgLSBQUChwcCxy dSkucnVfaW5ibG9jazsKKwkqb3VwID0gICBQUChwcCxydSkucnVfb3VibG9jayAtIFBQKG9sZHAs cnUpLnJ1X291YmxvY2s7CisJKmZscCA9ICAgUFAocHAscnUpLnJ1X21hamZsdCAgLSBQUChvbGRw LHJ1KS5ydV9tYWpmbHQ7CisJKnZjc3cgPSAgUFAocHAscnUpLnJ1X252Y3N3ICAgLSBQUChvbGRw LHJ1KS5ydV9udmNzdzsKKwkqaXZjc3cgPSBQUChwcCxydSkucnVfbml2Y3N3ICAtIFBQKG9sZHAs cnUpLnJ1X25pdmNzdzsKKwlyZXQgPQorCSAgICAoUFAocHAscnUpLnJ1X2luYmxvY2sgLSBQUChv bGRwLHJ1KS5ydV9pbmJsb2NrKSArCisJICAgIChQUChwcCxydSkucnVfb3VibG9jayAtIFBQKG9s ZHAscnUpLnJ1X291YmxvY2spICsKKwkgICAgKFBQKHBwLHJ1KS5ydV9tYWpmbHQgIC0gUFAob2xk cCxydSkucnVfbWFqZmx0KTsKKwlyZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhl IHRvdGFsIG51bWJlciBvZiBibG9jayBpbi9vdXQgYW5kIGZhdWx0cyBieSBhIHByb2Nlc3MuCisg Ki8KK2xvbmcKK2dldF9pb190b3RhbChzdHJ1Y3Qga2luZm9fcHJvYyAqcHApCit7CisJbG9uZyBk dW1teTsKKworCXJldHVybiAoZ2V0X2lvX3N0YXRzKHBwLCAmZHVtbXksICZkdW1teSwgJmR1bW15 LCAmZHVtbXksICZkdW1teSkpOworfQogCiBzdGF0aWMgc3RydWN0IGhhbmRsZSBoYW5kbGU7CiAK QEAgLTQ1OSw2ICs1NTIsOCBAQCBnZXRfcHJvY2Vzc19pbmZvKHN0cnVjdCBzeXN0ZW1faW5mbyAq c2ksIHN0cnVjdCBwcm9jZXNzX3NlbGVjdCAqc2VsLAogCWludCBpOwogCWludCB0b3RhbF9wcm9j czsKIAlpbnQgYWN0aXZlX3Byb2NzOworCWxvbmcgcF9pbzsKKwlsb25nIHBfaW5ibG9jaywgcF9v dWJsb2NrLCBwX21hamZsdCwgcF92Y3N3LCBwX2l2Y3N3OwogCXN0cnVjdCBraW5mb19wcm9jICoq cHJlZnA7CiAJc3RydWN0IGtpbmZvX3Byb2MgKnBwOwogCkBAIC00NjcsNiArNTYyLDI3IEBAIGdl dF9wcm9jZXNzX2luZm8oc3RydWN0IHN5c3RlbV9pbmZvICpzaSwgc3RydWN0IHByb2Nlc3Nfc2Vs ZWN0ICpzZWwsCiAJaW50IHNob3dfc3lzdGVtOwogCWludCBzaG93X3VpZDsKIAorCWlmKHByZXZp b3VzX3Byb2NfY291bnRfbWF4IDwgbnByb2MpIHsKKwkJZnJlZShwcmV2aW91c19wcm9jcyk7CisJ CXByZXZpb3VzX3Byb2NzID0gbWFsbG9jKG5wcm9jICogc2l6ZW9mKCpwcmV2aW91c19wcm9jcykp OworCQlmcmVlKHByZXZpb3VzX3ByZWYpOworCQlwcmV2aW91c19wcmVmID0gbWFsbG9jKG5wcm9j ICogc2l6ZW9mKCpwcmV2aW91c19wcmVmKSk7CisJCWlmKHByZXZpb3VzX3Byb2NzID09IE5VTEwg fHwgcHJldmlvdXNfcHJlZiA9PSBOVUxMKSB7CisJCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJ0 b3A6IE91dCBvZiBtZW1vcnkuIFxuIik7CisJCQlxdWl0KDIzKTsKKwkJfQorCQlwcmV2aW91c19w cm9jX2NvdW50X21heCA9IG5wcm9jOworCX0KKworCWlmKG5wcm9jKSB7CisJCWZvcihpPTA7IGk8 bnByb2M7IGkrKykgeworCQkJcHJldmlvdXNfcHJlZltpXSA9ICZwcmV2aW91c19wcm9jc1tpXTsK KwkJCWJjb3B5KHBiYXNlLCBwcmV2aW91c19wcm9jcywgbnByb2MgKiBzaXplb2YoKnByZXZpb3Vz X3Byb2NzKSk7CisJCQlxc29ydChwcmV2aW91c19wcmVmLCBucHJvYywgc2l6ZW9mKCpwcmV2aW91 c19wcmVmKSwKKwkJCQkoaW50ICgqKSAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgY29t cGFyZV9waWQxKTsKKwkJfQorCX0KKwlwcmV2aW91c19wcm9jX2NvdW50ID0gbnByb2M7CiAKIAlw YmFzZSA9IGt2bV9nZXRwcm9jcyhrZCwgS0VSTl9QUk9DX0FMTCwgMCwgJm5wcm9jKTsKIAlpZiAo bnByb2MgPiBvbnByb2MpCkBAIC00ODgsNiArNjA0LDEwIEBAIGdldF9wcm9jZXNzX2luZm8oc3Ry dWN0IHN5c3RlbV9pbmZvICpzaSwgc3RydWN0IHByb2Nlc3Nfc2VsZWN0ICpzZWwsCiAJLyogY291 bnQgdXAgcHJvY2VzcyBzdGF0ZXMgYW5kIGdldCBwb2ludGVycyB0byBpbnRlcmVzdGluZyBwcm9j cyAqLwogCXRvdGFsX3Byb2NzID0gMDsKIAlhY3RpdmVfcHJvY3MgPSAwOworCXRvdGFsX2luYmxv Y2sgPSAwOworCXRvdGFsX291YmxvY2sgPSAwOworCXRvdGFsX21hamZsdCA9IDA7CisKIAltZW1z ZXQoKGNoYXIgKilwcm9jZXNzX3N0YXRlcywgMCwgc2l6ZW9mKHByb2Nlc3Nfc3RhdGVzKSk7CiAJ cHJlZnAgPSBwcmVmOwogCWZvciAocHAgPSBwYmFzZSwgaSA9IDA7IGkgPCBucHJvYzsgcHArKywg aSsrKSB7CkBAIC00OTksNiArNjE5LDEyIEBAIGdldF9wcm9jZXNzX2luZm8oc3RydWN0IHN5c3Rl bV9pbmZvICpzaSwgc3RydWN0IHByb2Nlc3Nfc2VsZWN0ICpzZWwsCiAJCSAqLwogCQlpZiAoKHNo b3dfdGhyZWFkcyAmJiAoTFAocHAsIHBpZCkgPT0gLTEpKSB8fAogCQkgICAgKHNob3dfc3lzdGVt IHx8ICgoUFAocHAsIGZsYWdzKSAmIFBfU1lTVEVNKSA9PSAwKSkpIHsKKwkJICBwX2lvID0gZ2V0 X2lvX3N0YXRzKHBwLCAmcF9pbmJsb2NrLCAmcF9vdWJsb2NrLCAmcF9tYWpmbHQsCisJCQkJICAg ICAgJnBfdmNzdywgJnBfaXZjc3cpOworCQkgIHRvdGFsX2luYmxvY2sgKz0gcF9pbmJsb2NrOwor CQkgIHRvdGFsX291YmxvY2sgKz0gcF9vdWJsb2NrOworCQkgIHRvdGFsX21hamZsdCArPSBwX21h amZsdDsKKwogCQkJdG90YWxfcHJvY3MrKzsKIAkJCWlmIChMUChwcCwgc3RhdCkgPT0gTFNSVU4p CiAJCQkJcHJvY2Vzc19zdGF0ZXNbMF0rKzsKQEAgLTU0Miw2ICs2NjgsOCBAQCBmb3JtYXRfbmV4 dF9wcm9jZXNzKGNhZGRyX3QgeGhhbmRsZSwgY2hhciAqKCpnZXRfdXNlcmlkKSAoaW50KSkKIAlj aGFyICoqY29tbV9mdWxsOwogCWNoYXIgKmNvbW07CiAJY2hhciBjcHV0aW1lX2ZtdFsxMF0sIGNj cHV0aW1lX2ZtdFsxMF07CisJc3RydWN0IHJ1c2FnZSBydSwgKnJ1cDsKKwlsb25nIHBfdG90LCBz X3RvdDsKIAogCS8qIGZpbmQgYW5kIHJlbWVtYmVyIHRoZSBuZXh0IHByb2Mgc3RydWN0dXJlICov CiAJaHAgPSAoc3RydWN0IGhhbmRsZSAqKXhoYW5kbGU7CkBAIC02MTcsMTcgKzc0NSw1MiBAQCBm b3JtYXRfbmV4dF9wcm9jZXNzKGNhZGRyX3QgeGhhbmRsZSwgY2hhciAqKCpnZXRfdXNlcmlkKSAo aW50KSkKIAkJYnJlYWs7CiAJfQogCisJaWYoZGlzcGxheW1vZGUgPT0gRElTUF9JTykgeworCQlj b25zdCBzdHJ1Y3Qga2luZm9fcHJvYyAqb2xkcDsKKwkJb2xkcCA9IGdldF9vbGRfcHJvYyhwcCk7 CisJCWlmKG9sZHAgIT0gTlVMTCkgeworCQkJcnUucnVfaW5ibG9jayA9IFBQKHBwLHJ1KS5ydV9p bmJsb2NrIC0gUFAob2xkcCxydSkucnVfaW5ibG9jazsKKwkJCXJ1LnJ1X291YmxvY2sgPSBQUChw cCxydSkucnVfb3VibG9jayAtIFBQKG9sZHAscnUpLnJ1X291YmxvY2s7CisJCQlydS5ydV9tYWpm bHQgID0gUFAocHAscnUpLnJ1X21hamZsdCAgLSBQUChvbGRwLHJ1KS5ydV9tYWpmbHQ7CisJCQly dS5ydV9udmNzdyAgID0gUFAocHAscnUpLnJ1X252Y3N3ICAgLSBQUChvbGRwLHJ1KS5ydV9udmNz dzsKKwkJCXJ1LnJ1X25pdmNzdyAgPSBQUChwcCxydSkucnVfbml2Y3N3ICAtIFBQKG9sZHAscnUp LnJ1X25pdmNzdzsKKwkJCXJ1cCA9ICZydTsKKwkJfSBlbHNlIHsKKwkJCXJ1cCA9IFJVKHBwKTsK Ky8vCQkJcnUucnVfaW5ibG9jayA9IFBQKHBwLHJ1KS5ydV9pbmJsb2NrOworLy8JCQlydS5ydV9v dWJsb2NrID0gUFAocHAscnUpLnJ1X291YmxvY2s7CisvLwkJCXJ1LnJ1X21hamZsdCAgPSBQUChw cCxydSkucnVfbWFqZmx0OworLy8JCQlydS5ydV9udmNzdyAgID0gUFAocHAscnUpLnJ1X252Y3N3 OworLy8JCQlydS5ydV9uaXZjc3cgICA9IFBQKHBwLHJ1KS5ydV9uaXZjc3c7CisJCX0KKwkJcF90 b3QgPSAobG9uZykgKHJ1cC0+cnVfaW5ibG9jayArIHJ1cC0+cnVfb3VibG9jayArIHJ1cC0+cnVf bWFqZmx0KTsKKwkJc190b3QgPSB0b3RhbF9pbmJsb2NrICsgdG90YWxfb3VibG9jayArIHRvdGFs X21hamZsdDsKKwkJc25wcmludGYoZm10LCBzaXplb2YoZm10KSwKKwkJCWlvX1Byb2NfZm9ybWF0 LAorCQkJKGludClQUChwcCxwaWQpLAorCQkJbmFtZWxlbmd0aCwgbmFtZWxlbmd0aCwKKwkJCWdl dF91c2VyaWQoUFAocHAscnVpZCkpLAorCQkJcnVwLT5ydV9udmNzdywKKwkJCXJ1cC0+cnVfbml2 Y3N3LAorCQkJcnVwLT5ydV9pbmJsb2NrLAorCQkJcnVwLT5ydV9vdWJsb2NrLAorCQkJcnVwLT5y dV9tYWpmbHQsCisJCQlwX3RvdCwKKwkJCXNfdG90ID09IDAgPyAwLjAgOiAocF90b3QgKiAxMDAu MCAvIHNfdG90KSwKKwkJCS8vY21kbGVuZ3RoLAorCQkJc2hvd19mdWxsY21kID8gKmNvbW1fZnVs bCA6IGNvbW0pOworCQkJcmV0dXJuIChmbXQpOworCX0gZWxzZSB7CiAJLyogZm9ybWF0IHRoaXMg ZW50cnkgKi8KIAlzbnByaW50ZihmbXQsIHNpemVvZihmbXQpLAogCSAgICBzbXBtb2RlID8gc21w X1Byb2NfZm9ybWF0IDogdXBfUHJvY19mb3JtYXQsCiAJICAgIChpbnQpUFAocHAsIHBpZCksCiAJ ICAgIG5hbWVsZW5ndGgsIG5hbWVsZW5ndGgsCiAJICAgIGdldF91c2VyaWQoUFAocHAsIHJ1aWQp KSwKLQkgICAgKGludCkoKHNob3dfdGhyZWFkcyAmJiAoTFAocHAsIHBpZCkgPT0gLTEpKSA/Ci0J ICAgIExQKHBwLCB0ZHByaW8pIDogTFAocHAsIHByaW8pKSwKIAkgICAgKGludCl4bmljZSwKIAkg ICAgZm9ybWF0X2soUFJPQ1NJWkUocHApKSwKLQkgICAgZm9ybWF0X2socGFnZXRvayhWUChwcCwg cnNzaXplKSkpLAorLy8JICAgIGZvcm1hdF9rKHBhZ2V0b2soVlAocHAsIHByc3NpemUpKSksCisJ ICAgICIgIiAsCiAJICAgIHN0YXR1cywKIAkgICAgKGludCkoc21wbW9kZSA/IExQKHBwLCBjcHVp ZCkgOiAwKSwKIAkgICAgY3B1dGltZV9mbXQsCkBAIC02MzgsNiArODAxLDcgQEAgZm9ybWF0X25l eHRfcHJvY2VzcyhjYWRkcl90IHhoYW5kbGUsIGNoYXIgKigqZ2V0X3VzZXJpZCkgKGludCkpCiAK IAkvKiByZXR1cm4gdGhlIHJlc3VsdCAqLwogCXJldHVybiAoZm10KTsKKwl9CiB9CiAKIC8qIGNv bXBhcmlzb24gcm91dGluZXMgZm9yIHFzb3J0ICovCkBAIC04ODIsNiArMTA0NiwyMSBAQCBjb21w YXJlX3RocihzdHJ1Y3Qga2luZm9fcHJvYyAqKnBwMSwgc3RydWN0IGtpbmZvX3Byb2MgKipwcDIp CiAJcmV0dXJuIChyZXN1bHQpOwogfQogCitpbnQgY29tcGFyZV9waWQxIChzdHJ1Y3Qga2luZm9f cHJvYyAqcHAxLCBzdHJ1Y3Qga2luZm9fcHJvYyAqcHAyKSB7CisJc3RydWN0IGtpbmZvX3Byb2Mg KnAxID0gcHAxOworCXN0cnVjdCBraW5mb19wcm9jICpwMiA9IHBwMjsKKwlpbnQgcmVzdWx0Owor CisvLwlpZigocDIpLT5rcF9waWQgPCAwIHx8IChwMSktPmtwX3BpZCA8IDApCisvLwkJYWJvcnQo KTsKKworLy8JcmV0dXJuICgocDEpLT5rcF9waWQgLSAocDIpLT5rcF9waWQpOworCU9SREVSS0VZ X1BJRAorCTsKKworCXJldHVybihyZXN1bHQpOworCit9CiAvKiBjb21wYXJlX3BpZCAtIHRoZSBj b21wYXJpc29uIGZ1bmN0aW9uIGZvciBzb3J0aW5nIGJ5IHByb2Nlc3MgaWQgKi8KIAogaW50CkBA IC05MDEsNiArMTA4MCwxOSBAQCBjb21wYXJlX3BpZChzdHJ1Y3Qga2luZm9fcHJvYyAqKnBwMSwg c3RydWN0IGtpbmZvX3Byb2MgKipwcDIpCiAJcmV0dXJuKHJlc3VsdCk7CiB9CiAKK2ludAorY29t cGFyZV9pb3JlYWQoc3RydWN0IGtpbmZvX3Byb2MgKipwcDEsIHN0cnVjdCBraW5mb19wcm9jICoq cHAyKQoreworCXN0cnVjdCBraW5mb19wcm9jICpwMTsKKwlzdHJ1Y3Qga2luZm9fcHJvYyAqcDI7 CisJbG9uZyBpbnAxLCBpbnAyLCBkdW1teTsKKworCSh2b2lkKSBnZXRfaW9fc3RhdHMocDEsICZp bnAxLCAmZHVtbXksICZkdW1teSwgJmR1bW15LCAmZHVtbXkpOworCSh2b2lkKSBnZXRfaW9fc3Rh dHMocDIsICZpbnAyLCAmZHVtbXksICZkdW1teSwgJmR1bW15LCAmZHVtbXkpOworCisJcmV0dXJu KGlucDItaW5wMSk7Cit9CisKIC8qCiAgKiBwcm9jX293bmVyKHBpZCkgLSByZXR1cm5zIHRoZSB1 aWQgdGhhdCBvd25zIHByb2Nlc3MgInBpZCIsIG9yIC0xIGlmCiAgKgkJdGhlIHByb2Nlc3MgZG9l cyBub3QgZXhpc3QuCg== --20cf305e2505c5092a04af451d02--