[PATCH 2/2] generator: Rewrite to use coroutine module
David Gibson <[email protected]> Tue, 29 Nov 2016 00:18:30 +1100
| Newsgroups | org.ozlabs.lists.ccan |
|---|---|
| Message-ID | <[email protected]> |
VXNlIHRoZSBuZXcgY29yb3V0aW5lIG1vZHVsZSB0byBhYnN0cmFjdCBhd2F5IG91ciBkZXBlbmRl bmNlIG9uCnVjb250ZXh0LgoKU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJz b24uZHJvcGJlYXIuaWQuYXU+Ci0tLQogY2Nhbi9nZW5lcmF0b3IvX2luZm8gICAgICAgfCAgOSAr KysrKystLS0KIGNjYW4vZ2VuZXJhdG9yL2dlbmVyYXRvci5jIHwgMzkgKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCiBjY2FuL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8IDQ5ICsr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hh bmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY2Nh bi9nZW5lcmF0b3IvX2luZm8gYi9jY2FuL2dlbmVyYXRvci9faW5mbwppbmRleCAxMTc1M2E1Li40 ODliOWRkIDEwMDY0NAotLS0gYS9jY2FuL2dlbmVyYXRvci9faW5mbworKysgYi9jY2FuL2dlbmVy YXRvci9faW5mbwpAQCAtMiw2ICsyLDggQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg PHN0cmluZy5oPgogCisjaW5jbHVkZSA8Y2Nhbi9jb3JvdXRpbmUvY29yb3V0aW5lLmg+CisKIC8q KgogICogZ2VuZXJhdG9yIC0gZ2VuZXJhdG9ycyBmb3IgQwogICoKQEAgLTU2LDE4ICs1OCwxOSBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKHN0cmNtcChhcmd2WzFd LCAiZGVwZW5kcyIpID09IDApIHsKIAkJcHJpbnRmKCJjY2FuL2J1aWxkX2Fzc2VydFxuIik7Ci0J CXByaW50ZigiY2Nhbi9wdHJpbnRcbiIpOwogCQlwcmludGYoImNjYW4vYWxpZ25vZlxuIik7CisJ CXByaW50ZigiY2Nhbi9jb3JvdXRpbmVcbiIpOwogCQlwcmludGYoImNjYW4vY3BwbWFnaWNcbiIp OwogCQlwcmludGYoImNjYW4vY29tcGlsZXJcbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKIAlpZiAo c3RyY21wKGFyZ3ZbMV0sICJwb3J0ZWQiKSA9PSAwKSB7Ci0jaWYgSEFWRV9VQ09OVEVYVAorI2lm IENPUk9VVElORV9BVkFJTEFCTEUKIAkJcHJpbnRmKCJcbiIpOworCQlyZXR1cm4gMTsKICNlbHNl Ci0JCXByaW50ZigiTmVlZHMgdWNvbnRleHQgc3VwcG9ydFxuIik7CisJCXByaW50ZigiTmVlZHMg Y29yb3V0aW5lIHN1cHBvcnRcbiIpOwogI2VuZGlmCiAJfQogCmRpZmYgLS1naXQgYS9jY2FuL2dl bmVyYXRvci9nZW5lcmF0b3IuYyBiL2NjYW4vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCmluZGV4IGQy MTc2NjUuLjY1NmNiZTcgMTAwNjQ0Ci0tLSBhL2NjYW4vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCisr KyBiL2NjYW4vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCkBAIC0xMCwxMCArMTAsMTggQEAKICNkZWZp bmUgREVGQVVMVF9TVEFURV9TSVpFCTgxOTIKICNkZWZpbmUgU1RBVEVfQUxJR04JCUFMSUdOT0Yo c3RydWN0IGdlbmVyYXRvcl8pCiAKLXZvaWQgKmdlbmVyYXRvcl9uZXdfKGdlbmVyYXRvcl93cmFw cGVyXyAqZm4sIHNpemVfdCByZXRzaXplKQorc3RhdGljIHNpemVfdCBnZW5lcmF0b3JfbWV0YXNp emUoc2l6ZV90IHJldHNpemUpCit7CisJcmV0c2l6ZSA9IChyZXRzaXplICsgU1RBVEVfQUxJR04p ICYgfihTVEFURV9BTElHTiAtIDEpOworCXJldHVybiBzaXplb2Yoc3RydWN0IGdlbmVyYXRvcl8p ICsgcmV0c2l6ZTsKK30KKwordm9pZCAqZ2VuZXJhdG9yX25ld18odm9pZCAoKmZuKSh2b2lkICop LCBzaXplX3QgcmV0c2l6ZSkKIHsKIAljaGFyICpiYXNlOwogCXNpemVfdCBzaXplID0gREVGQVVM VF9TVEFURV9TSVpFOworCXNpemVfdCBtZXRhc2l6ZSA9IGdlbmVyYXRvcl9tZXRhc2l6ZShyZXRz aXplKTsKKwlzdHJ1Y3QgY29yb3V0aW5lX3N0YWNrICpzdGFjazsKIAl2b2lkICpyZXQ7CiAJc3Ry dWN0IGdlbmVyYXRvcl8gKmdlbjsKIApAQCAtMjIsMzMgKzMwLDI2IEBAIHZvaWQgKmdlbmVyYXRv cl9uZXdfKGdlbmVyYXRvcl93cmFwcGVyXyAqZm4sIHNpemVfdCByZXRzaXplKQogCQlhYm9ydCgp OwogCiAJcmV0c2l6ZSA9IChyZXRzaXplICsgU1RBVEVfQUxJR04pICYgfihTVEFURV9BTElHTiAt IDEpOwotCXJldCA9IGJhc2UgKyBzaXplIC0gcmV0c2l6ZTsKLQlnZW4gPSAoc3RydWN0IGdlbmVy YXRvcl8gKilyZXQgLSAxOworCisJc3RhY2sgPSBjb3JvdXRpbmVfc3RhY2tfaW5pdChiYXNlLCBz aXplLCBtZXRhc2l6ZSk7CisJZ2VuID0gY29yb3V0aW5lX3N0YWNrX3RvX21ldGFkYXRhKHN0YWNr LCBtZXRhc2l6ZSk7CisJcmV0ID0gZ2VuICsgMTsKIAogCWdlbi0+YmFzZSA9IGJhc2U7CiAJZ2Vu LT5jb21wbGV0ZSA9IGZhbHNlOwogCi0JZ2V0Y29udGV4dCgmZ2VuLT5nZW4pOwotCi0JZ2VuLT5n ZW4udWNfc3RhY2suc3Nfc3AgPSBnZW4tPmJhc2U7Ci0JZ2VuLT5nZW4udWNfc3RhY2suc3Nfc2l6 ZSA9IChjaGFyICopZ2VuIC0gYmFzZTsKLQotCWlmIChIQVZFX1BPSU5URVJfU0FGRV9NQUtFQ09O VEVYVCkgewotCQltYWtlY29udGV4dCgmZ2VuLT5nZW4sICh2b2lkICopZm4sIDEsIHJldCk7Ci0J fSBlbHNlIHsKLQkJcHRyZGlmZl90IHNpID0gcHRyMmludChyZXQpOwotCQlwdHJkaWZmX3QgbWFz ayA9ICgxVUwgPDwgKHNpemVvZihpbnQpICogOCkpIC0gMTsKLQkJaW50IGxvID0gc2kgJiBtYXNr OwotCQlpbnQgaGkgPSBzaSA+PiAoc2l6ZW9mKGludCkgKiA4KTsKLQotCQltYWtlY29udGV4dCgm Z2VuLT5nZW4sICh2b2lkICopZm4sIDIsIGxvLCBoaSk7Ci0JfQorCWNvcm91dGluZV9pbml0KCZn ZW4tPmdlbiwgZm4sIHJldCwgc3RhY2spOwogCiAJcmV0dXJuIHJldDsKIH0KIAotdm9pZCBnZW5l cmF0b3JfZnJlZV8odm9pZCAqcmV0KQordm9pZCBnZW5lcmF0b3JfZnJlZV8odm9pZCAqcmV0LCBz aXplX3QgcmV0c2l6ZSkKIHsKIAlzdHJ1Y3QgZ2VuZXJhdG9yXyAqZ2VuID0gZ2VuZXJhdG9yX3N0 YXRlXyhyZXQpOworCXNpemVfdCBtZXRhc2l6ZSA9IGdlbmVyYXRvcl9tZXRhc2l6ZShyZXRzaXpl KTsKKwlzdHJ1Y3QgY29yb3V0aW5lX3N0YWNrICpzdGFjazsKKworCXN0YWNrID0gY29yb3V0aW5l X3N0YWNrX2Zyb21fbWV0YWRhdGEoZ2VuLCBtZXRhc2l6ZSk7CisJY29yb3V0aW5lX3N0YWNrX3Jl bGVhc2Uoc3RhY2spOwogCWZyZWUoZ2VuLT5iYXNlKTsKIH0KZGlmZiAtLWdpdCBhL2NjYW4vZ2Vu ZXJhdG9yL2dlbmVyYXRvci5oIGIvY2Nhbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKaW5kZXggMTIx ZjE0YS4uNzEyMmY1NSAxMDA2NDQKLS0tIGEvY2Nhbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKKysr IGIvY2Nhbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKQEAgLTMsMTAgKzMsNiBAQAogI2RlZmluZSBD Q0FOX0dFTkVSQVRPUl9ICiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiAhSEFWRV9VQ09OVEVY VAotI2Vycm9yIEdlbmVyYXRvcnMgcmVxdWlyZSB3b3JraW5nIHVjb250ZXh0LmggZnVuY3Rpb25z Ci0jZW5kaWYKLQogI2lmICFIQVZFX1RZUEVPRgogI2Vycm9yIEdlbmVyYXRvcnMgcmVxdWlyZSB0 eXBlb2YKICNlbmRpZgpAQCAtMTgsMjAgKzE0LDIyIEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAj aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkYm9vbC5oPgotI2luY2x1ZGUgPHVjb250 ZXh0Lmg+CiAKLSNpbmNsdWRlIDxjY2FuL3B0cmludC9wdHJpbnQuaD4KLSNpbmNsdWRlIDxjY2Fu L2J1aWxkX2Fzc2VydC9idWlsZF9hc3NlcnQuaD4KICNpbmNsdWRlIDxjY2FuL2NwcG1hZ2ljL2Nw cG1hZ2ljLmg+CiAjaW5jbHVkZSA8Y2Nhbi9jb21waWxlci9jb21waWxlci5oPgorI2luY2x1ZGUg PGNjYW4vY29yb3V0aW5lL2Nvcm91dGluZS5oPgorCisjaWYgIUNPUk9VVElORV9BVkFJTEFCTEUK KyNlcnJvciBHZW5lcmF0b3JzIHJlcXVpcmUgY29yb3V0aW5lcworI2VuZGlmCiAKIC8qCiAgKiBJ bnRlcm5hbHMgLSBpbmNsdWRlZCBqdXN0IGZvciB0aGUgdXNlIG9mIGlubGluZXMgYW5kIG1hY3Jv cwogICovCiAKIHN0cnVjdCBnZW5lcmF0b3JfIHsKLQl1Y29udGV4dF90IGdlbjsKLQl1Y29udGV4 dF90IGNhbGxlcjsKKwlzdHJ1Y3QgY29yb3V0aW5lX3N0YXRlIGdlbjsKKwlzdHJ1Y3QgY29yb3V0 aW5lX3N0YXRlIGNhbGxlcjsKIAlib29sIGNvbXBsZXRlOwogCXZvaWQgKmJhc2U7CiB9OwpAQCAt NTEsMTUgKzQ5LDggQEAgc3RydWN0IGdlbmVyYXRvcl9pbmNvbXBsZXRlXzsKICNkZWZpbmUgZ2Vu ZXJhdG9yX3J0eXBlXyhnZW5fKQkJCVwKIAl0eXBlb2YoKCooZ2VuXykpKChzdHJ1Y3QgZ2VuZXJh dG9yX2luY29tcGxldGVfICopTlVMTCkpCiAKLSNpZiBIQVZFX1BPSU5URVJfU0FGRV9NQUtFQ09O VEVYVAotI2RlZmluZSBnZW5lcmF0b3Jfd3JhcHBlcl9hcmdzXygpCXZvaWQgKnJldAotI2Vsc2UK LSNkZWZpbmUgZ2VuZXJhdG9yX3dyYXBwZXJfYXJnc18oKQlpbnQgbG8sIGludCBoaQotI2VuZGlm Ci10eXBlZGVmIHZvaWQgZ2VuZXJhdG9yX3dyYXBwZXJfKGdlbmVyYXRvcl93cmFwcGVyX2FyZ3Nf KCkpOwotCi12b2lkICpnZW5lcmF0b3JfbmV3XyhnZW5lcmF0b3Jfd3JhcHBlcl8gKmZuLCBzaXpl X3QgcmV0c2l6ZSk7Ci12b2lkIGdlbmVyYXRvcl9mcmVlXyh2b2lkICpyZXQpOwordm9pZCAqZ2Vu ZXJhdG9yX25ld18odm9pZCAoKmZuKSh2b2lkICopLCBzaXplX3QgcmV0c2l6ZSk7Cit2b2lkIGdl bmVyYXRvcl9mcmVlXyh2b2lkICpyZXQsIHNpemVfdCByZXRzaXplKTsKIAogLyoKICAqIEFQSQpA QCAtMTI4LDIyICsxMTksMTUgQEAgdm9pZCBnZW5lcmF0b3JfZnJlZV8odm9pZCAqcmV0KTsKICNk ZWZpbmUgZ2VuZXJhdG9yX2RlZl8obmFtZV8sIHJ0eXBlXywgc3RvcmFnZV8sIC4uLikJCQlcCiAJ c3RhdGljIHZvaWQgbmFtZV8jI19nZW5lcmF0b3JfKHJ0eXBlXyAqcmV0XwkJCVwKIAkJCQkgICAg ICAgZ2VuZXJhdG9yX3Bhcm1zX2lubmVyXyhfX1ZBX0FSR1NfXykpOyBcCi0Jc3RhdGljIHZvaWQg bmFtZV8jI19nZW5lcmF0b3JfXyhnZW5lcmF0b3Jfd3JhcHBlcl9hcmdzXygpKQlcCisJc3RhdGlj IHZvaWQgbmFtZV8jI19nZW5lcmF0b3JfXyh2b2lkICpyZXQpCQkJXAogCXsJCQkJCQkJCVwKIAkJ c3RydWN0IGdlbmVyYXRvcl8gKmdlbjsJCQkJCVwKIAkJVU5ORUVERUQgZ2VuZXJhdG9yX2FyZ3N0 cnVjdF8oX19WQV9BUkdTX18pICphcmdzOwlcCi0JCUNQUE1BR0lDX0lGRUxTRShIQVZFX1BPSU5U RVJfU0FGRV9NQUtFQ09OVEVYVCkJCVwKLQkJCSgpCQkJCQkJXAotCQkJKHB0cmRpZmZfdCBoaWxv ID0gKChwdHJkaWZmX3QpaGkgPDwgKDgqc2l6ZW9mKGludCkpKSBcCi0JCQkgCSsgKHB0cmRpZmZf dClsbzsJCQlcCi0JCQlydHlwZV8gKnJldCA9IChydHlwZV8gKilpbnQycHRyKGhpbG8pOwkJXAot CQkJQlVJTERfQVNTRVJUKHNpemVvZihzdHJ1Y3QgZ2VuZXJhdG9yXyAqKQlcCi0JCQkJICAgICA8 PSAyKnNpemVvZihpbnQpKTspCQlcCiAJCWdlbiA9IGdlbmVyYXRvcl9zdGF0ZV8ocmV0KTsJCQkJ XAogCQlhcmdzID0gZ2VuZXJhdG9yX2FyZ3BfKHJldCk7CQkJCVwKIAkJbmFtZV8jI19nZW5lcmF0 b3JfKHJldCBnZW5lcmF0b3JfYXJnc191bnBhY2tfKF9fVkFfQVJHU19fKSk7IFwKIAkJZ2VuLT5j b21wbGV0ZSA9IHRydWU7CQkJCQlcCi0JCXNldGNvbnRleHQoJmdlbi0+Y2FsbGVyKTsJCQkJXAor CQljb3JvdXRpbmVfanVtcCgmZ2VuLT5jYWxsZXIpOwkJCQlcCiAJCWFzc2VydCgwKTsJCQkJCQlc CiAJfQkJCQkJCQkJXAogCXN0b3JhZ2VfIGdlbmVyYXRvcl90KHJ0eXBlXykJCQkJCVwKQEAgLTE4 NCwxMCArMTY4LDggQEAgdm9pZCBnZW5lcmF0b3JfZnJlZV8odm9pZCAqcmV0KTsKICNkZWZpbmUg Z2VuZXJhdG9yX3lpZWxkKHZhbF8pCQkJCQkJXAogCWRvIHsJCQkJCQkJCVwKIAkJc3RydWN0IGdl bmVyYXRvcl8gKmdlbl8gPSBnZW5lcmF0b3Jfc3RhdGVfKHJldF8pOwlcCi0JCWludCByYzsJCQkJ CQkJXAogCQkqKHJldF8pID0gKHZhbF8pOwkJCQkJXAotCQlyYyA9IHN3YXBjb250ZXh0KCZnZW5f LT5nZW4sICZnZW5fLT5jYWxsZXIpOwkJXAotCQlhc3NlcnQocmMgPT0gMCk7CQkJCQlcCisJCWNv cm91dGluZV9zd2l0Y2goJmdlbl8tPmdlbiwgJmdlbl8tPmNhbGxlcik7CQlcCiAJfSB3aGlsZSAo MCkKIAogLyoqCkBAIC0yMDIsMTMgKzE4NCwxMSBAQCB2b2lkIGdlbmVyYXRvcl9mcmVlXyh2b2lk ICpyZXQpOwogc3RhdGljIGlubGluZSB2b2lkICpnZW5lcmF0b3JfbmV4dF8odm9pZCAqcmV0XykK IHsKIAlzdHJ1Y3QgZ2VuZXJhdG9yXyAqZ2VuID0gZ2VuZXJhdG9yX3N0YXRlXyhyZXRfKTsKLQlp bnQgcmM7CiAKIAlpZiAoZ2VuLT5jb21wbGV0ZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlyYyA9IHN3 YXBjb250ZXh0KCZnZW4tPmNhbGxlciwgJmdlbi0+Z2VuKTsKLQlhc3NlcnQocmMgPT0gMCk7CisJ Y29yb3V0aW5lX3N3aXRjaCgmZ2VuLT5jYWxsZXIsICZnZW4tPmdlbik7CiAKIAlyZXR1cm4gZ2Vu LT5jb21wbGV0ZSA/IE5VTEwgOiByZXRfOwogfQpAQCAtMjM0LDYgKzIxNCw3IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCAqZ2VuZXJhdG9yX25leHRfKHZvaWQgKnJldF8pCiAJfSkKIAogI2RlZmluZSBn ZW5lcmF0b3JfZnJlZShnZW5fKQkJCQkJXAotCWdlbmVyYXRvcl9mcmVlXygoZ2VuZXJhdG9yX3J0 eXBlXyhnZW5fKSAqKShnZW5fKSkKKwlnZW5lcmF0b3JfZnJlZV8oKGdlbmVyYXRvcl9ydHlwZV8o Z2VuXykgKikoZ2VuXyksCVwKKwkJCXNpemVvZihnZW5lcmF0b3JfcnR5cGVfKGdlbl8pKSkKIAog I2VuZGlmIC8qIENDQU5fR0VORVJBVE9SX0ggKi8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpjY2FuIG1haWxpbmcgbGlzdApjY2FuQGxp c3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3JnL2xpc3RpbmZvL2NjYW4K