From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v6 01/18] kunit: test: add KUnit test runner core Date: Wed, 3 Jul 2019 17:35:58 -0700 Message-ID: <20190704003615.204860-2-brendanhiggins@google.com> References: <20190704003615.204860-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190704003615.204860-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: linux-nvdimm@lists.01.org QWRkIGNvcmUgZmFjaWxpdGllcyBmb3IgZGVmaW5pbmcgdW5pdCB0ZXN0czsgdGhpcyBwcm92aWRl cyBhIGNvbW1vbiB3YXkKdG8gZGVmaW5lIHRlc3QgY2FzZXMsIGZ1bmN0aW9ucyB0aGF0IGV4ZWN1 dGUgY29kZSB3aGljaCBpcyB1bmRlciB0ZXN0CmFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29k ZSB1bmRlciB0ZXN0IGJlaGF2ZXMgYXMgZXhwZWN0ZWQ7IHRoaXMgYWxzbwpwcm92aWRlcyBhIHdh eSB0byBncm91cCB0b2dldGhlciByZWxhdGVkIHRlc3QgY2FzZXMgaW4gdGVzdCBzdWl0ZXMgKGhl cmUKd2UgY2FsbCB0aGVtIHRlc3RfbW9kdWxlcykuCgpKdXN0IGRlZmluZSB0ZXN0IGNhc2VzIGFu ZCBob3cgdG8gZXhlY3V0ZSB0aGVtIGZvciBub3c7IHNldHRpbmcKZXhwZWN0YXRpb25zIG9uIGNv ZGUgd2lsbCBiZSBkZWZpbmVkIGxhdGVyLgoKU2lnbmVkLW9mZi1ieTogQnJlbmRhbiBIaWdnaW5z IDxicmVuZGFuaGlnZ2luc0Bnb29nbGUuY29tPgpSZXZpZXdlZC1ieTogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KUmV2aWV3ZWQtYnk6IExvZ2FuIEd1bnRo b3JwZSA8bG9nYW5nQGRlbHRhdGVlLmNvbT4KLS0tCkNoYW5nZXMgU2luY2UgTGFzdCBSZXZpc2lv bjoKLSBSZW1vdmVkIHNwaW5sb2NrLiAtIFN1Z2dlc3RlZCBieSBMdWlzIGFuZCBTdGVwaGVuCi0g UmVuYW1lZCBgc3RydWN0IGt1bml0X21vZHVsZWAgdG8gYHN0cnVjdCBrdW5pdF9zdWl0ZWAuIC0g SW5zcGlyZWQgYnkKICBMdWlzLgotIE1hZGUgYSBudW1iZXIgb2YgbWlub3IgY2xlYW51cHMuIC0g U3VnZ2VzdGVkIGJ5IEx1aXMgYW5kIFN0ZXBoZW4uCi0tLQogaW5jbHVkZS9rdW5pdC90ZXN0Lmgg fCAxODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGt1bml0L0tj b25maWcgICAgICAgIHwgIDE3ICsrKysKIGt1bml0L01ha2VmaWxlICAgICAgIHwgICAxICsKIGt1 bml0L3Rlc3QuYyAgICAgICAgIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL2t1bml0L3Rlc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGt1bml0 L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBrdW5pdC9NYWtlZmlsZQogY3JlYXRlIG1vZGUg MTAwNjQ0IGt1bml0L3Rlc3QuYwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3VuaXQvdGVzdC5oIGIv aW5jbHVkZS9rdW5pdC90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMC4uYjM0ZDlmMmFjNmY5YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUva3VuaXQvdGVz dC5oCkBAIC0wLDAgKzEsMTgyIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCAqLworLyoKKyAqIEJhc2UgdW5pdCB0ZXN0IChLVW5pdCkgQVBJLgorICoKKyAqIENvcHlyaWdo dCAoQykgMjAxOSwgR29vZ2xlIExMQy4KKyAqIEF1dGhvcjogQnJlbmRhbiBIaWdnaW5zIDxicmVu ZGFuaGlnZ2luc0Bnb29nbGUuY29tPgorICovCisKKyNpZm5kZWYgX0tVTklUX1RFU1RfSAorI2Rl ZmluZSBfS1VOSVRfVEVTVF9ICisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCitzdHJ1Y3Qg a3VuaXQ7CisKKy8qKgorICogc3RydWN0IGt1bml0X2Nhc2UgLSByZXByZXNlbnRzIGFuIGluZGl2 aWR1YWwgdGVzdCBjYXNlLgorICogQHJ1bl9jYXNlOiB0aGUgZnVuY3Rpb24gcmVwcmVzZW50aW5n IHRoZSBhY3R1YWwgdGVzdCBjYXNlLgorICogQG5hbWU6IHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNh c2UuCisgKgorICogQSB0ZXN0IGNhc2UgaXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzaWduYXR1cmUs IGBgdm9pZCAoKikoc3RydWN0IGt1bml0ICopYGAKKyAqIHRoYXQgbWFrZXMgZXhwZWN0YXRpb25z IChzZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSkgYWJvdXQgY29kZSB1bmRlciB0ZXN0LiBFYWNoCisg KiB0ZXN0IGNhc2UgaXMgYXNzb2NpYXRlZCB3aXRoIGEgJnN0cnVjdCBrdW5pdF9zdWl0ZSBhbmQg d2lsbCBiZSBydW4gYWZ0ZXIgdGhlCisgKiBzdWl0ZSdzIGluaXQgZnVuY3Rpb24gYW5kIGZvbGxv d2VkIGJ5IHRoZSBzdWl0ZSdzIGV4aXQgZnVuY3Rpb24uCisgKgorICogQSB0ZXN0IGNhc2Ugc2hv dWxkIGJlIHN0YXRpYyBhbmQgc2hvdWxkIG9ubHkgYmUgY3JlYXRlZCB3aXRoIHRoZSBLVU5JVF9D QVNFKCkKKyAqIG1hY3JvOyBhZGRpdGlvbmFsbHksIGV2ZXJ5IGFycmF5IG9mIHRlc3QgY2FzZXMg c2hvdWxkIGJlIHRlcm1pbmF0ZWQgd2l0aCBhbgorICogZW1wdHkgdGVzdCBjYXNlLgorICoKKyAq IEV4YW1wbGU6CisgKgorICogLi4gY29kZS1ibG9jazo6IGMKKyAqCisgKgl2b2lkIGFkZF90ZXN0 X2Jhc2ljKHN0cnVjdCBrdW5pdCAqdGVzdCkKKyAqCXsKKyAqCQlLVU5JVF9FWFBFQ1RfRVEodGVz dCwgMSwgYWRkKDEsIDApKTsKKyAqCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMiwgYWRkKDEsIDEp KTsKKyAqCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMCwgYWRkKC0xLCAxKSk7CisgKgkJS1VOSVRf RVhQRUNUX0VRKHRlc3QsIElOVF9NQVgsIGFkZCgwLCBJTlRfTUFYKSk7CisgKgkJS1VOSVRfRVhQ RUNUX0VRKHRlc3QsIC0xLCBhZGQoSU5UX01BWCwgSU5UX01JTikpOworICoJfQorICoKKyAqCXN0 YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBleGFtcGxlX3Rlc3RfY2FzZXNbXSA9IHsKKyAqCQlLVU5J VF9DQVNFKGFkZF90ZXN0X2Jhc2ljKSwKKyAqCQl7fQorICoJfTsKKyAqCisgKi8KK3N0cnVjdCBr dW5pdF9jYXNlIHsKKwl2b2lkICgqcnVuX2Nhc2UpKHN0cnVjdCBrdW5pdCAqdGVzdCk7CisJY29u c3QgY2hhciAqbmFtZTsKKworCS8qIHByaXZhdGU6IGludGVybmFsIHVzZSBvbmx5LiAqLworCWJv b2wgc3VjY2VzczsKK307CisKKy8qKgorICogS1VOSVRfQ0FTRSAtIEEgaGVscGVyIGZvciBjcmVh dGluZyBhICZzdHJ1Y3Qga3VuaXRfY2FzZQorICogQHRlc3RfbmFtZTogYSByZWZlcmVuY2UgdG8g YSB0ZXN0IGNhc2UgZnVuY3Rpb24uCisgKgorICogVGFrZXMgYSBzeW1ib2wgZm9yIGEgZnVuY3Rp b24gcmVwcmVzZW50aW5nIGEgdGVzdCBjYXNlIGFuZCBjcmVhdGVzIGEKKyAqICZzdHJ1Y3Qga3Vu aXRfY2FzZSBvYmplY3QgZnJvbSBpdC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorICogJnN0 cnVjdCBrdW5pdF9jYXNlIGZvciBhbiBleGFtcGxlIG9uIGhvdyB0byB1c2UgaXQuCisgKi8KKyNk ZWZpbmUgS1VOSVRfQ0FTRSh0ZXN0X25hbWUpIHsgLnJ1bl9jYXNlID0gdGVzdF9uYW1lLCAubmFt ZSA9ICN0ZXN0X25hbWUgfQorCisvKioKKyAqIHN0cnVjdCBrdW5pdF9zdWl0ZSAtIGRlc2NyaWJl cyBhIHJlbGF0ZWQgY29sbGVjdGlvbiBvZiAmc3RydWN0IGt1bml0X2Nhc2Ugcy4KKyAqIEBuYW1l OiB0aGUgbmFtZSBvZiB0aGUgdGVzdC4gUHVyZWx5IGluZm9ybWF0aW9uYWwuCisgKiBAaW5pdDog Y2FsbGVkIGJlZm9yZSBldmVyeSB0ZXN0IGNhc2UuCisgKiBAZXhpdDogY2FsbGVkIGFmdGVyIGV2 ZXJ5IHRlc3QgY2FzZS4KKyAqIEB0ZXN0X2Nhc2VzOiBhIG51bGwgdGVybWluYXRlZCBhcnJheSBv ZiB0ZXN0IGNhc2VzLgorICoKKyAqIEEga3VuaXRfc3VpdGUgaXMgYSBjb2xsZWN0aW9uIG9mIHJl bGF0ZWQgJnN0cnVjdCBrdW5pdF9jYXNlIHMsIHN1Y2ggdGhhdAorICogQGluaXQgaXMgY2FsbGVk IGJlZm9yZSBldmVyeSB0ZXN0IGNhc2UgYW5kIEBleGl0IGlzIGNhbGxlZCBhZnRlciBldmVyeSB0 ZXN0CisgKiBjYXNlLCBzaW1pbGFyIHRvIHRoZSBub3Rpb24gb2YgYSAqdGVzdCBmaXh0dXJlKiBv ciBhICp0ZXN0IGNsYXNzKiBpbiBvdGhlcgorICogdW5pdCB0ZXN0aW5nIGZyYW1ld29ya3MgbGlr ZSBKVW5pdCBvciBHb29nbGV0ZXN0LgorICoKKyAqIEV2ZXJ5ICZzdHJ1Y3Qga3VuaXRfY2FzZSBt dXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIGt1bml0X3N1aXRlIGZvciBLVW5pdCB0bworICogcnVu IGl0LgorICovCitzdHJ1Y3Qga3VuaXRfc3VpdGUgeworCWNvbnN0IGNoYXIgbmFtZVsyNTZdOwor CWludCAoKmluaXQpKHN0cnVjdCBrdW5pdCAqdGVzdCk7CisJdm9pZCAoKmV4aXQpKHN0cnVjdCBr dW5pdCAqdGVzdCk7CisJc3RydWN0IGt1bml0X2Nhc2UgKnRlc3RfY2FzZXM7Cit9OworCisvKioK KyAqIHN0cnVjdCBrdW5pdCAtIHJlcHJlc2VudHMgYSBydW5uaW5nIGluc3RhbmNlIG9mIGEgdGVz dC4KKyAqIEBwcml2OiBmb3IgdXNlciB0byBzdG9yZSBhcmJpdHJhcnkgZGF0YS4gQ29tbW9ubHkg dXNlZCB0byBwYXNzIGRhdGEgY3JlYXRlZAorICogaW4gdGhlIGluaXQgZnVuY3Rpb24gKHNlZSAm c3RydWN0IGt1bml0X3N1aXRlKS4KKyAqCisgKiBVc2VkIHRvIHN0b3JlIGluZm9ybWF0aW9uIGFi b3V0IHRoZSBjdXJyZW50IGNvbnRleHQgdW5kZXIgd2hpY2ggdGhlIHRlc3QgaXMKKyAqIHJ1bm5p bmcuIE1vc3Qgb2YgdGhpcyBkYXRhIGlzIHByaXZhdGUgYW5kIHNob3VsZCBvbmx5IGJlIGFjY2Vz c2VkIGluZGlyZWN0bHkKKyAqIHZpYSBwdWJsaWMgZnVuY3Rpb25zOyB0aGUgb25lIGV4Y2VwdGlv biBpcyBAcHJpdiB3aGljaCBjYW4gYmUgdXNlZCBieSB0aGUKKyAqIHRlc3Qgd3JpdGVyIHRvIHN0 b3JlIGFyYml0cmFyeSBkYXRhLgorICoKKyAqIEEgYnJpZWYgbm90ZSBvbiBsb2NraW5nOgorICoK KyAqIEZpcnN0IG9mZiwgd2UgbmVlZCB0byBsb2NrIGJlY2F1c2UgaW4gY2VydGFpbiBjYXNlcyBh IHVzZXIgbWF5IHdhbnQgdG8gdXNlIGFuCisgKiBleHBlY3RhdGlvbiBpbiBhIHRocmVhZCBvdGhl ciB0aGFuIHRoZSB0aHJlYWQgdGhhdCB0aGUgdGVzdCBjYXNlIGlzIHJ1bm5pbmcKKyAqIGluLgor ICoKKyAqIFRoZSBuZXh0IHBvaW50IGlzIHRoYXQgdGhlIGxvY2tpbmcgc2hvdWxkIGJlIHNhZmUg aW4gYW4gaXJxIGNvbnRleHQuCisgKiBUZWNobmljYWxseSBzcGVha2luZyBhIHVzZXIgc2hvdWxk IHVzZSBhIG1vY2svZmFrZSBpcnFjaGlwIG9yIHNvbWUgb3RoZXIgZmFrZQorICogbWV0aG9kIHRv IHRyaWdnZXIgYW4gaXJxIGhhbmRsZXIgdW5kZXIgdGVzdDsgaG93ZXZlciwgdGhlIGlycSBoYW5k bGVyIHNob3VsZAorICogdGhpbmsgdGhhdCBpdCBpcyBpbiBhIHJlYWwgaXJxIGNvbnRleHQuIEdp dmVuIHRoYXQgdGhlIGNvZGUgYmVpbmcgcnVuIGV4cGVjdHMKKyAqIHRvIGJlIGluIGFuIGlycSBj b250ZXh0LCB3ZSBzaG91bGQgYWN0IGFzIHRob3VnaCBpdCBpcy4KKyAqLworc3RydWN0IGt1bml0 IHsKKwl2b2lkICpwcml2OworCisJLyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkuICovCisJ Y29uc3QgY2hhciAqbmFtZTsgLyogUmVhZCBvbmx5IGFmdGVyIGluaXRpYWxpemF0aW9uISAqLwor CWJvb2wgc3VjY2VzczsgLyogUmVhZCBvbmx5IGFmdGVyIHRlc3RfY2FzZSBmaW5pc2hlcyEgKi8K K307CisKK3ZvaWQga3VuaXRfaW5pdF90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdCwgY29uc3QgY2hh ciAqbmFtZSk7CisKK2ludCBrdW5pdF9ydW5fdGVzdHMoc3RydWN0IGt1bml0X3N1aXRlICpzdWl0 ZSk7CisKKy8qKgorICogc3VpdGVfdGVzdCgpIC0gdXNlZCB0byByZWdpc3RlciBhICZzdHJ1Y3Qg a3VuaXRfc3VpdGUgd2l0aCBLVW5pdC4KKyAqIEBzdWl0ZTogYSBzdGF0aWNhbGx5IGFsbG9jYXRl ZCAmc3RydWN0IGt1bml0X3N1aXRlLgorICoKKyAqIFJlZ2lzdGVycyBAc3VpdGUgd2l0aCB0aGUg dGVzdCBmcmFtZXdvcmsuIFNlZSAmc3RydWN0IGt1bml0X3N1aXRlIGZvciBtb3JlCisgKiBpbmZv cm1hdGlvbi4KKyAqCisgKiBOT1RFOiBDdXJyZW50bHkgS1VuaXQgdGVzdHMgYXJlIGFsbCBydW4g YXMgbGF0ZV9pbml0Y2FsbHM7IHRoaXMgbWVhbnMgdGhhdAorICogdGhleSBjYW5ub3QgdGVzdCBh bnl0aGluZyB3aGVyZSB0ZXN0cyBtdXN0IHJ1biBhdCBhIGRpZmZlcmVudCBpbml0IHBoYXNlLiBP bmUKKyAqIHNpZ25pZmljYW50IHJlc3RyaWN0aW9uIHJlc3VsdGluZyBmcm9tIHRoaXMgaXMgdGhh dCBLVW5pdCBjYW5ub3QgcmVsaWFibHkKKyAqIHRlc3QgYW55dGhpbmcgdGhhdCBpcyBpbml0aWFs aXplIGluIHRoZSBsYXRlX2luaXQgcGhhc2UuCisgKgorICogVE9ETyhicmVuZGFuaGlnZ2luc0Bn b29nbGUuY29tKTogRG9uJ3QgcnVuIGFsbCBLVW5pdCB0ZXN0cyBhcyBsYXRlX2luaXRjYWxscy4K KyAqIEkgaGF2ZSBzb21lIGZ1dHVyZSB3b3JrIHBsYW5uZWQgdG8gZGlzcGF0Y2ggYWxsIEtVbml0 IHRlc3RzIGZyb20gdGhlIHNhbWUKKyAqIHBsYWNlLCBhbmQgYXQgdGhlIHZlcnkgbGVhc3QgdG8g ZG8gc28gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIGlzIGRlZmluaXRlbHkKKyAqIGluaXRpYWxpemVk LgorICovCisjZGVmaW5lIGt1bml0X3Rlc3Rfc3VpdGUoc3VpdGUpIFwKKwkJc3RhdGljIGludCBr dW5pdF9zdWl0ZV9pbml0IyNzdWl0ZSh2b2lkKSBcCisJCXsgXAorCQkJcmV0dXJuIGt1bml0X3J1 bl90ZXN0cygmc3VpdGUpOyBcCisJCX0gXAorCQlsYXRlX2luaXRjYWxsKGt1bml0X3N1aXRlX2lu aXQjI3N1aXRlKQorCit2b2lkIF9fcHJpbnRmKDMsIDQpIGt1bml0X3ByaW50ayhjb25zdCBjaGFy ICpsZXZlbCwKKwkJCQkgY29uc3Qgc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCSBjb25zdCBjaGFy ICpmbXQsIC4uLik7CisKKy8qKgorICoga3VuaXRfaW5mbygpIC0gUHJpbnRzIGFuIElORk8gbGV2 ZWwgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdGVzdC4KKyAqIEB0ZXN0OiBU aGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBmbXQ6IEEgcHJpbnRrKCkgc3R5bGUgZm9ybWF0 IHN0cmluZy4KKyAqCisgKiBQcmludHMgYW4gaW5mbyBsZXZlbCBtZXNzYWdlIGFzc29jaWF0ZWQg d2l0aCB0aGUgdGVzdCBzdWl0ZSBiZWluZyBydW4uIFRha2VzCisgKiBhIHZhcmlhYmxlIG51bWJl ciBvZiBmb3JtYXQgcGFyYW1ldGVycyBqdXN0IGxpa2UgcHJpbnRrKCkuCisgKi8KKyNkZWZpbmUg a3VuaXRfaW5mbyh0ZXN0LCBmbXQsIC4uLikgXAorCQlrdW5pdF9wcmludGsoS0VSTl9JTkZPLCB0 ZXN0LCBmbXQsICMjX19WQV9BUkdTX18pCisKKy8qKgorICoga3VuaXRfd2FybigpIC0gUHJpbnRz IGEgV0FSTiBsZXZlbCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0ZXN0Lgor ICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGZtdDogQSBwcmludGsoKSBz dHlsZSBmb3JtYXQgc3RyaW5nLgorICoKKyAqIFByaW50cyBhIHdhcm5pbmcgbGV2ZWwgbWVzc2Fn ZS4KKyAqLworI2RlZmluZSBrdW5pdF93YXJuKHRlc3QsIGZtdCwgLi4uKSBcCisJCWt1bml0X3By aW50ayhLRVJOX1dBUk5JTkcsIHRlc3QsIGZtdCwgIyNfX1ZBX0FSR1NfXykKKworLyoqCisgKiBr dW5pdF9lcnIoKSAtIFByaW50cyBhbiBFUlJPUiBsZXZlbCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0 aCB0aGUgY3VycmVudCB0ZXN0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0Lgor ICogQGZtdDogQSBwcmludGsoKSBzdHlsZSBmb3JtYXQgc3RyaW5nLgorICoKKyAqIFByaW50cyBh biBlcnJvciBsZXZlbCBtZXNzYWdlLgorICovCisjZGVmaW5lIGt1bml0X2Vycih0ZXN0LCBmbXQs IC4uLikgXAorCQlrdW5pdF9wcmludGsoS0VSTl9FUlIsIHRlc3QsIGZtdCwgIyNfX1ZBX0FSR1Nf XykKKworI2VuZGlmIC8qIF9LVU5JVF9URVNUX0ggKi8KZGlmZiAtLWdpdCBhL2t1bml0L0tjb25m aWcgYi9rdW5pdC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLjMzMGFlODM1MjdjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9rdW5pdC9LY29uZmlnCkBAIC0w LDAgKzEsMTcgQEAKKyMKKyMgS1VuaXQgYmFzZSBjb25maWd1cmF0aW9uCisjCisKK21lbnUgIktV bml0IHN1cHBvcnQiCisKK2NvbmZpZyBLVU5JVAorCWJvb2wgIkVuYWJsZSBzdXBwb3J0IGZvciB1 bml0IHRlc3RzIChLVW5pdCkiCisJaGVscAorCSAgRW5hYmxlcyBzdXBwb3J0IGZvciBrZXJuZWwg dW5pdCB0ZXN0cyAoS1VuaXQpLCBhIGxpZ2h0d2VpZ2h0IHVuaXQKKwkgIHRlc3RpbmcgYW5kIG1v Y2tpbmcgZnJhbWV3b3JrIGZvciB0aGUgTGludXgga2VybmVsLiBUaGVzZSB0ZXN0cyBhcmUKKwkg IGFibGUgdG8gYmUgcnVuIGxvY2FsbHkgb24gYSBkZXZlbG9wZXIncyB3b3Jrc3RhdGlvbiB3aXRo b3V0IGEgVk0gb3IKKwkgIHNwZWNpYWwgaGFyZHdhcmUgd2hlbiB1c2luZyBVTUwuIENhbiBhbHNv IGJlIHVzZWQgb24gbW9zdCBvdGhlcgorCSAgYXJjaGl0ZWN0dXJlcy4gRm9yIG1vcmUgaW5mb3Jt YXRpb24sIHBsZWFzZSBzZWUKKwkgIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0Ly4KKwor ZW5kbWVudQpkaWZmIC0tZ2l0IGEva3VuaXQvTWFrZWZpbGUgYi9rdW5pdC9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41ZWZkYzRkZWEyYzA4Ci0tLSAv ZGV2L251bGwKKysrIGIva3VuaXQvTWFrZWZpbGUKQEAgLTAsMCArMSBAQAorb2JqLSQoQ09ORklH X0tVTklUKSArPQkJCXRlc3QubwpkaWZmIC0tZ2l0IGEva3VuaXQvdGVzdC5jIGIva3VuaXQvdGVz dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmMwMzBiYTVhNDNl NDAKLS0tIC9kZXYvbnVsbAorKysgYi9rdW5pdC90ZXN0LmMKQEAgLTAsMCArMSwxOTAgQEAKKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQmFzZSB1bml0IHRlc3Qg KEtVbml0KSBBUEkuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE5LCBHb29nbGUgTExDLgorICog QXV0aG9yOiBCcmVuZGFuIEhpZ2dpbnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+CisgKi8K KworI2luY2x1ZGUgPGxpbnV4L3NjaGVkL2RlYnVnLmg+CisjaW5jbHVkZSA8a3VuaXQvdGVzdC5o PgorCitzdGF0aWMgdm9pZCBrdW5pdF9zZXRfZmFpbHVyZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCit7 CisJV1JJVEVfT05DRSh0ZXN0LT5zdWNjZXNzLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBpbnQga3Vu aXRfdnByaW50a19lbWl0KGludCBsZXZlbCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3Mp Cit7CisJcmV0dXJuIHZwcmludGtfZW1pdCgwLCBsZXZlbCwgTlVMTCwgMCwgZm10LCBhcmdzKTsK K30KKworc3RhdGljIGludCBrdW5pdF9wcmludGtfZW1pdChpbnQgbGV2ZWwsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwlpbnQgcmV0OworCisJdmFfc3RhcnQoYXJn cywgZm10KTsKKwlyZXQgPSBrdW5pdF92cHJpbnRrX2VtaXQobGV2ZWwsIGZtdCwgYXJncyk7CisJ dmFfZW5kKGFyZ3MpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQga3VuaXRfdnBy aW50ayhjb25zdCBzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkgIGNvbnN0IGNoYXIgKmxldmVsLAor CQkJICBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpCit7CisJa3VuaXRfcHJpbnRrX2VtaXQobGV2ZWxb MV0gLSAnMCcsICJcdCMgJXM6ICVwViIsIHRlc3QtPm5hbWUsIHZhZik7Cit9CisKK3N0YXRpYyB2 b2lkIGt1bml0X3ByaW50X3RhcF92ZXJzaW9uKHZvaWQpCit7CisJc3RhdGljIGJvb2wga3VuaXRf aGFzX3ByaW50ZWRfdGFwX3ZlcnNpb247CisKKwlpZiAoIWt1bml0X2hhc19wcmludGVkX3RhcF92 ZXJzaW9uKSB7CisJCWt1bml0X3ByaW50a19lbWl0KExPR0xFVkVMX0lORk8sICJUQVAgdmVyc2lv biAxNFxuIik7CisJCWt1bml0X2hhc19wcmludGVkX3RhcF92ZXJzaW9uID0gdHJ1ZTsKKwl9Cit9 CisKK3N0YXRpYyBzaXplX3Qga3VuaXRfdGVzdF9jYXNlc19sZW4oc3RydWN0IGt1bml0X2Nhc2Ug KnRlc3RfY2FzZXMpCit7CisJc3RydWN0IGt1bml0X2Nhc2UgKnRlc3RfY2FzZTsKKwlzaXplX3Qg bGVuID0gMDsKKworCWZvciAodGVzdF9jYXNlID0gdGVzdF9jYXNlczsgdGVzdF9jYXNlLT5ydW5f Y2FzZTsgdGVzdF9jYXNlKyspCisJCWxlbisrOworCisJcmV0dXJuIGxlbjsKK30KKworc3RhdGlj IHZvaWQga3VuaXRfcHJpbnRfc3VidGVzdF9zdGFydChzdHJ1Y3Qga3VuaXRfc3VpdGUgKnN1aXRl KQoreworCWt1bml0X3ByaW50X3RhcF92ZXJzaW9uKCk7CisJa3VuaXRfcHJpbnRrX2VtaXQoTE9H TEVWRUxfSU5GTywgIlx0IyBTdWJ0ZXN0OiAlc1xuIiwgc3VpdGUtPm5hbWUpOworCWt1bml0X3By aW50a19lbWl0KExPR0xFVkVMX0lORk8sCisJCQkgICJcdDEuLiV6ZFxuIiwKKwkJCSAga3VuaXRf dGVzdF9jYXNlc19sZW4oc3VpdGUtPnRlc3RfY2FzZXMpKTsKK30KKworc3RhdGljIHZvaWQga3Vu aXRfcHJpbnRfb2tfbm90X29rKGJvb2wgc2hvdWxkX2luZGVudCwKKwkJCQkgIGJvb2wgaXNfb2ss CisJCQkJICBzaXplX3QgdGVzdF9udW1iZXIsCisJCQkJICBjb25zdCBjaGFyICpkZXNjcmlwdGlv bikKK3sKKwljb25zdCBjaGFyICppbmRlbnQsICpva19ub3Rfb2s7CisKKwlpZiAoc2hvdWxkX2lu ZGVudCkKKwkJaW5kZW50ID0gIlx0IjsKKwllbHNlCisJCWluZGVudCA9ICIiOworCisJaWYgKGlz X29rKQorCQlva19ub3Rfb2sgPSAib2siOworCWVsc2UKKwkJb2tfbm90X29rID0gIm5vdCBvayI7 CisKKwlrdW5pdF9wcmludGtfZW1pdChMT0dMRVZFTF9JTkZPLAorCQkJICAiJXMlcyAlemQgLSAl c1xuIiwKKwkJCSAgaW5kZW50LCBva19ub3Rfb2ssIHRlc3RfbnVtYmVyLCBkZXNjcmlwdGlvbik7 Cit9CisKK3N0YXRpYyBib29sIGt1bml0X3N1aXRlX2hhc19zdWNjZWVkZWQoc3RydWN0IGt1bml0 X3N1aXRlICpzdWl0ZSkKK3sKKwljb25zdCBzdHJ1Y3Qga3VuaXRfY2FzZSAqdGVzdF9jYXNlOwor CisJZm9yICh0ZXN0X2Nhc2UgPSBzdWl0ZS0+dGVzdF9jYXNlczsgdGVzdF9jYXNlLT5ydW5fY2Fz ZTsgdGVzdF9jYXNlKyspCisJCWlmICghdGVzdF9jYXNlLT5zdWNjZXNzKQorCQkJcmV0dXJuIGZh bHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGt1bml0X3ByaW50X3N1YnRl c3RfZW5kKHN0cnVjdCBrdW5pdF9zdWl0ZSAqc3VpdGUpCit7CisJc3RhdGljIHNpemVfdCBrdW5p dF9zdWl0ZV9jb3VudGVyID0gMTsKKworCWt1bml0X3ByaW50X29rX25vdF9vayhmYWxzZSwKKwkJ CSAgICAgIGt1bml0X3N1aXRlX2hhc19zdWNjZWVkZWQoc3VpdGUpLAorCQkJICAgICAga3VuaXRf c3VpdGVfY291bnRlcisrLAorCQkJICAgICAgc3VpdGUtPm5hbWUpOworfQorCitzdGF0aWMgdm9p ZCBrdW5pdF9wcmludF90ZXN0X2Nhc2Vfb2tfbm90X29rKHN0cnVjdCBrdW5pdF9jYXNlICp0ZXN0 X2Nhc2UsCisJCQkJCSAgICBzaXplX3QgdGVzdF9udW1iZXIpCit7CisJa3VuaXRfcHJpbnRfb2tf bm90X29rKHRydWUsCisJCQkgICAgICB0ZXN0X2Nhc2UtPnN1Y2Nlc3MsCisJCQkgICAgICB0ZXN0 X251bWJlciwKKwkJCSAgICAgIHRlc3RfY2FzZS0+bmFtZSk7Cit9CisKK3ZvaWQga3VuaXRfaW5p dF90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzcGluX2xv Y2tfaW5pdCgmdGVzdC0+bG9jayk7CisJdGVzdC0+bmFtZSA9IG5hbWU7CisJdGVzdC0+c3VjY2Vz cyA9IHRydWU7Cit9CisKKy8qCisgKiBQZXJmb3JtcyBhbGwgbG9naWMgdG8gcnVuIGEgdGVzdCBj YXNlLgorICovCitzdGF0aWMgdm9pZCBrdW5pdF9ydW5fY2FzZShzdHJ1Y3Qga3VuaXRfc3VpdGUg KnN1aXRlLAorCQkJICAgc3RydWN0IGt1bml0X2Nhc2UgKnRlc3RfY2FzZSkKK3sKKwlzdHJ1Y3Qg a3VuaXQgdGVzdDsKKwlpbnQgcmV0ID0gMDsKKworCWt1bml0X2luaXRfdGVzdCgmdGVzdCwgdGVz dF9jYXNlLT5uYW1lKTsKKworCWlmIChzdWl0ZS0+aW5pdCkgeworCQlyZXQgPSBzdWl0ZS0+aW5p dCgmdGVzdCk7CisJCWlmIChyZXQpIHsKKwkJCWt1bml0X2VycigmdGVzdCwgImZhaWxlZCB0byBp bml0aWFsaXplOiAlZFxuIiwgcmV0KTsKKwkJCWt1bml0X3NldF9mYWlsdXJlKCZ0ZXN0KTsKKwkJ CXJldHVybjsKKwkJfQorCX0KKworCXRlc3RfY2FzZS0+cnVuX2Nhc2UoJnRlc3QpOworCisJaWYg KHN1aXRlLT5leGl0KQorCQlzdWl0ZS0+ZXhpdCgmdGVzdCk7CisKKwl0ZXN0X2Nhc2UtPnN1Y2Nl c3MgPSB0ZXN0LnN1Y2Nlc3M7Cit9CisKK2ludCBrdW5pdF9ydW5fdGVzdHMoc3RydWN0IGt1bml0 X3N1aXRlICpzdWl0ZSkKK3sKKwlzdHJ1Y3Qga3VuaXRfY2FzZSAqdGVzdF9jYXNlOworCXNpemVf dCB0ZXN0X2Nhc2VfY291bnQgPSAxOworCisJa3VuaXRfcHJpbnRfc3VidGVzdF9zdGFydChzdWl0 ZSk7CisKKwlmb3IgKHRlc3RfY2FzZSA9IHN1aXRlLT50ZXN0X2Nhc2VzOyB0ZXN0X2Nhc2UtPnJ1 bl9jYXNlOyB0ZXN0X2Nhc2UrKykgeworCQlrdW5pdF9ydW5fY2FzZShzdWl0ZSwgdGVzdF9jYXNl KTsKKwkJa3VuaXRfcHJpbnRfdGVzdF9jYXNlX29rX25vdF9vayh0ZXN0X2Nhc2UsIHRlc3RfY2Fz ZV9jb3VudCsrKTsKKwl9CisKKwlrdW5pdF9wcmludF9zdWJ0ZXN0X2VuZChzdWl0ZSk7CisKKwly ZXR1cm4gMDsKK30KKwordm9pZCBrdW5pdF9wcmludGsoY29uc3QgY2hhciAqbGV2ZWwsCisJCSAg Y29uc3Qgc3RydWN0IGt1bml0ICp0ZXN0LAorCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorewor CXN0cnVjdCB2YV9mb3JtYXQgdmFmOworCXZhX2xpc3QgYXJnczsKKworCXZhX3N0YXJ0KGFyZ3Ms IGZtdCk7CisKKwl2YWYuZm10ID0gZm10OworCXZhZi52YSA9ICZhcmdzOworCisJa3VuaXRfdnBy aW50ayh0ZXN0LCBsZXZlbCwgJnZhZik7CisKKwl2YV9lbmQoYXJncyk7Cit9Ci0tIAoyLjIyLjAu NDEwLmdkOGZkYmUyMWI1LWdvb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==