From: Brendan Higgins <brendanhiggins@google.com> 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: devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, linux-um@lists.infradead.org, Alexander.Levin@microsoft.com, Tim.Bird@sony.com, amir73il@gmail.com, dan.carpenter@oracle.com, daniel@ffwll.ch, jdike@addtoit.com, joel@jms.id.au, julia.lawall@lip6.fr, khilman@baylibre.com, knut.omang@oracle.com, logang@deltatee.com, mpe@ellerman.id.au, pmladek@suse.com, rdunlap@infradead.org, richard@nod.at, rientjes@google.com, rostedt@goodmis.org, wfg@linux.intel.com, Avinash Kondareddy <akndr41@gmail.com>, Brendan Higgins <brendanhiggins@google.com> Subject: [PATCH v6 12/18] kunit: test: add tests for KUnit managed resources Date: Wed, 3 Jul 2019 17:36:09 -0700 [thread overview] Message-ID: <20190704003615.204860-13-brendanhiggins@google.com> (raw) In-Reply-To: <20190704003615.204860-1-brendanhiggins@google.com> From: Avinash Kondareddy <akndr41@gmail.com> Add unit tests for KUnit managed resources. KUnit managed resources (struct kunit_resource) are resources that are automatically cleaned up at the end of a KUnit test, similar to the concept of devm_* managed resources. Signed-off-by: Avinash Kondareddy <akndr41@gmail.com> Signed-off-by: Brendan Higgins <brendanhiggins@google.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Logan Gunthorpe <logang@deltatee.com> --- kunit/test-test.c | 219 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/kunit/test-test.c b/kunit/test-test.c index 058f3fb37458a..b044659fe868b 100644 --- a/kunit/test-test.c +++ b/kunit/test-test.c @@ -101,3 +101,222 @@ static struct kunit_suite kunit_try_catch_test_suite = { .test_cases = kunit_try_catch_test_cases, }; kunit_test_suite(kunit_try_catch_test_suite); + +/* + * Context for testing test managed resources + * is_resource_initialized is used to test arbitrary resources + */ +struct kunit_test_resource_context { + struct kunit test; + bool is_resource_initialized; + int allocate_order[2]; + int free_order[2]; +}; + +static int fake_resource_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + res->allocation = &ctx->is_resource_initialized; + ctx->is_resource_initialized = true; + return 0; +} + +static void fake_resource_free(struct kunit_resource *res) +{ + bool *is_resource_initialized = res->allocation; + + *is_resource_initialized = false; +} + +static void kunit_resource_test_init_resources(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + kunit_init_test(&ctx->test, "testing_test_init_test"); + + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_alloc_resource(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *res; + kunit_resource_free_t free = fake_resource_free; + + res = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, res); + KUNIT_EXPECT_PTR_EQ(test, + &ctx->is_resource_initialized, + (bool *) res->allocation); + KUNIT_EXPECT_TRUE(test, list_is_last(&res->node, &ctx->test.resources)); + KUNIT_EXPECT_PTR_EQ(test, free, res->free); +} + +static void kunit_resource_test_free_resource(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *res = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + + kunit_free_resource(&ctx->test, res); + + KUNIT_EXPECT_FALSE(test, ctx->is_resource_initialized); + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_cleanup_resources(struct kunit *test) +{ + int i; + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *resources[5]; + + for (i = 0; i < ARRAY_SIZE(resources); i++) { + resources[i] = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + } + + kunit_cleanup(&ctx->test); + + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_mark_order(int order_array[], + size_t order_size, + int key) +{ + int i; + + for (i = 0; i < order_size && order_array[i]; i++) + ; + + order_array[i] = key; +} + +#define KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, order_field, key) \ + kunit_resource_test_mark_order(ctx->order_field, \ + ARRAY_SIZE(ctx->order_field), \ + key) + +static int fake_resource_2_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, allocate_order, 2); + + res->allocation = ctx; + + return 0; +} + +static void fake_resource_2_free(struct kunit_resource *res) +{ + struct kunit_test_resource_context *ctx = res->allocation; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, free_order, 2); +} + +static int fake_resource_1_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + kunit_alloc_resource(&ctx->test, + fake_resource_2_init, + fake_resource_2_free, + ctx); + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, allocate_order, 1); + + res->allocation = ctx; + + return 0; +} + +static void fake_resource_1_free(struct kunit_resource *res) +{ + struct kunit_test_resource_context *ctx = res->allocation; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, free_order, 1); +} + +/* + * TODO(brendanhiggins@google.com): replace the arrays that keep track of the + * order of allocation and freeing with strict mocks using the IN_SEQUENCE macro + * to assert allocation and freeing order when the feature becomes available. + */ +static void kunit_resource_test_proper_free_ordering(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + /* fake_resource_1 allocates a fake_resource_2 in its init. */ + kunit_alloc_resource(&ctx->test, + fake_resource_1_init, + fake_resource_1_free, + ctx); + + /* + * Since fake_resource_2_init calls KUNIT_RESOURCE_TEST_MARK_ORDER + * before returning to fake_resource_1_init, it should be the first to + * put its key in the allocate_order array. + */ + KUNIT_EXPECT_EQ(test, ctx->allocate_order[0], 2); + KUNIT_EXPECT_EQ(test, ctx->allocate_order[1], 1); + + kunit_cleanup(&ctx->test); + + /* + * Because fake_resource_2 finishes allocation before fake_resource_1, + * fake_resource_1 should be freed first since it could depend on + * fake_resource_2. + */ + KUNIT_EXPECT_EQ(test, ctx->free_order[0], 1); + KUNIT_EXPECT_EQ(test, ctx->free_order[1], 2); +} + +static int kunit_resource_test_init(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = + kzalloc(sizeof(*ctx), GFP_KERNEL); + + if (!ctx) + return -ENOMEM; + + test->priv = ctx; + + kunit_init_test(&ctx->test, "test_test_context"); + + return 0; +} + +static void kunit_resource_test_exit(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + kunit_cleanup(&ctx->test); + kfree(ctx); +} + +static struct kunit_case kunit_resource_test_cases[] = { + KUNIT_CASE(kunit_resource_test_init_resources), + KUNIT_CASE(kunit_resource_test_alloc_resource), + KUNIT_CASE(kunit_resource_test_free_resource), + KUNIT_CASE(kunit_resource_test_cleanup_resources), + KUNIT_CASE(kunit_resource_test_proper_free_ordering), + {} +}; + +static struct kunit_suite kunit_resource_test_suite = { + .name = "kunit-resource-test", + .init = kunit_resource_test_init, + .exit = kunit_resource_test_exit, + .test_cases = kunit_resource_test_cases, +}; +kunit_test_suite(kunit_resource_test_suite); -- 2.22.0.410.gd8fdbe21b5-goog
WARNING: multiple messages have this Message-ID (diff)
From: Brendan Higgins <brendanhiggins@google.com> 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 <brendanhiggins@google.com>, 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, Avinash Kondareddy <akndr41@gmail.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, daniel@ffwll.ch, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com Subject: [PATCH v6 12/18] kunit: test: add tests for KUnit managed resources Date: Wed, 3 Jul 2019 17:36:09 -0700 [thread overview] Message-ID: <20190704003615.204860-13-brendanhiggins@google.com> (raw) In-Reply-To: <20190704003615.204860-1-brendanhiggins@google.com> From: Avinash Kondareddy <akndr41@gmail.com> Add unit tests for KUnit managed resources. KUnit managed resources (struct kunit_resource) are resources that are automatically cleaned up at the end of a KUnit test, similar to the concept of devm_* managed resources. Signed-off-by: Avinash Kondareddy <akndr41@gmail.com> Signed-off-by: Brendan Higgins <brendanhiggins@google.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Logan Gunthorpe <logang@deltatee.com> --- kunit/test-test.c | 219 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/kunit/test-test.c b/kunit/test-test.c index 058f3fb37458a..b044659fe868b 100644 --- a/kunit/test-test.c +++ b/kunit/test-test.c @@ -101,3 +101,222 @@ static struct kunit_suite kunit_try_catch_test_suite = { .test_cases = kunit_try_catch_test_cases, }; kunit_test_suite(kunit_try_catch_test_suite); + +/* + * Context for testing test managed resources + * is_resource_initialized is used to test arbitrary resources + */ +struct kunit_test_resource_context { + struct kunit test; + bool is_resource_initialized; + int allocate_order[2]; + int free_order[2]; +}; + +static int fake_resource_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + res->allocation = &ctx->is_resource_initialized; + ctx->is_resource_initialized = true; + return 0; +} + +static void fake_resource_free(struct kunit_resource *res) +{ + bool *is_resource_initialized = res->allocation; + + *is_resource_initialized = false; +} + +static void kunit_resource_test_init_resources(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + kunit_init_test(&ctx->test, "testing_test_init_test"); + + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_alloc_resource(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *res; + kunit_resource_free_t free = fake_resource_free; + + res = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, res); + KUNIT_EXPECT_PTR_EQ(test, + &ctx->is_resource_initialized, + (bool *) res->allocation); + KUNIT_EXPECT_TRUE(test, list_is_last(&res->node, &ctx->test.resources)); + KUNIT_EXPECT_PTR_EQ(test, free, res->free); +} + +static void kunit_resource_test_free_resource(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *res = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + + kunit_free_resource(&ctx->test, res); + + KUNIT_EXPECT_FALSE(test, ctx->is_resource_initialized); + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_cleanup_resources(struct kunit *test) +{ + int i; + struct kunit_test_resource_context *ctx = test->priv; + struct kunit_resource *resources[5]; + + for (i = 0; i < ARRAY_SIZE(resources); i++) { + resources[i] = kunit_alloc_resource(&ctx->test, + fake_resource_init, + fake_resource_free, + ctx); + } + + kunit_cleanup(&ctx->test); + + KUNIT_EXPECT_TRUE(test, list_empty(&ctx->test.resources)); +} + +static void kunit_resource_test_mark_order(int order_array[], + size_t order_size, + int key) +{ + int i; + + for (i = 0; i < order_size && order_array[i]; i++) + ; + + order_array[i] = key; +} + +#define KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, order_field, key) \ + kunit_resource_test_mark_order(ctx->order_field, \ + ARRAY_SIZE(ctx->order_field), \ + key) + +static int fake_resource_2_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, allocate_order, 2); + + res->allocation = ctx; + + return 0; +} + +static void fake_resource_2_free(struct kunit_resource *res) +{ + struct kunit_test_resource_context *ctx = res->allocation; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, free_order, 2); +} + +static int fake_resource_1_init(struct kunit_resource *res, void *context) +{ + struct kunit_test_resource_context *ctx = context; + + kunit_alloc_resource(&ctx->test, + fake_resource_2_init, + fake_resource_2_free, + ctx); + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, allocate_order, 1); + + res->allocation = ctx; + + return 0; +} + +static void fake_resource_1_free(struct kunit_resource *res) +{ + struct kunit_test_resource_context *ctx = res->allocation; + + KUNIT_RESOURCE_TEST_MARK_ORDER(ctx, free_order, 1); +} + +/* + * TODO(brendanhiggins@google.com): replace the arrays that keep track of the + * order of allocation and freeing with strict mocks using the IN_SEQUENCE macro + * to assert allocation and freeing order when the feature becomes available. + */ +static void kunit_resource_test_proper_free_ordering(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + /* fake_resource_1 allocates a fake_resource_2 in its init. */ + kunit_alloc_resource(&ctx->test, + fake_resource_1_init, + fake_resource_1_free, + ctx); + + /* + * Since fake_resource_2_init calls KUNIT_RESOURCE_TEST_MARK_ORDER + * before returning to fake_resource_1_init, it should be the first to + * put its key in the allocate_order array. + */ + KUNIT_EXPECT_EQ(test, ctx->allocate_order[0], 2); + KUNIT_EXPECT_EQ(test, ctx->allocate_order[1], 1); + + kunit_cleanup(&ctx->test); + + /* + * Because fake_resource_2 finishes allocation before fake_resource_1, + * fake_resource_1 should be freed first since it could depend on + * fake_resource_2. + */ + KUNIT_EXPECT_EQ(test, ctx->free_order[0], 1); + KUNIT_EXPECT_EQ(test, ctx->free_order[1], 2); +} + +static int kunit_resource_test_init(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = + kzalloc(sizeof(*ctx), GFP_KERNEL); + + if (!ctx) + return -ENOMEM; + + test->priv = ctx; + + kunit_init_test(&ctx->test, "test_test_context"); + + return 0; +} + +static void kunit_resource_test_exit(struct kunit *test) +{ + struct kunit_test_resource_context *ctx = test->priv; + + kunit_cleanup(&ctx->test); + kfree(ctx); +} + +static struct kunit_case kunit_resource_test_cases[] = { + KUNIT_CASE(kunit_resource_test_init_resources), + KUNIT_CASE(kunit_resource_test_alloc_resource), + KUNIT_CASE(kunit_resource_test_free_resource), + KUNIT_CASE(kunit_resource_test_cleanup_resources), + KUNIT_CASE(kunit_resource_test_proper_free_ordering), + {} +}; + +static struct kunit_suite kunit_resource_test_suite = { + .name = "kunit-resource-test", + .init = kunit_resource_test_init, + .exit = kunit_resource_test_exit, + .test_cases = kunit_resource_test_cases, +}; +kunit_test_suite(kunit_resource_test_suite); -- 2.22.0.410.gd8fdbe21b5-goog _______________________________________________ linux-um mailing list linux-um@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-um
next prev parent reply other threads:[~2019-07-04 0:36 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-04 0:35 [PATCH v6 00/18] kunit: introduce KUnit, the Linux kernel unit testing framework Brendan Higgins 2019-07-04 0:35 ` Brendan Higgins 2019-07-04 0:35 ` [PATCH v6 01/18] kunit: test: add KUnit test runner core Brendan Higgins 2019-07-04 0:35 ` Brendan Higgins 2019-07-04 0:35 ` Brendan Higgins 2019-07-05 20:15 ` Luis Chamberlain 2019-07-05 20:15 ` Luis Chamberlain 2019-07-05 20:15 ` Luis Chamberlain 2019-07-05 20:15 ` Luis Chamberlain 2019-07-08 18:08 ` Brendan Higgins 2019-07-08 18:08 ` Brendan Higgins 2019-07-08 18:08 ` Brendan Higgins 2019-07-08 18:08 ` Brendan Higgins 2019-07-08 20:40 ` Brendan Higgins 2019-07-08 20:40 ` Brendan Higgins 2019-07-08 20:40 ` Brendan Higgins 2019-07-08 20:40 ` Brendan Higgins 2019-07-05 20:20 ` Luis Chamberlain 2019-07-05 20:20 ` Luis Chamberlain 2019-07-05 20:20 ` Luis Chamberlain 2019-07-05 20:20 ` Luis Chamberlain 2019-07-08 18:12 ` Brendan Higgins 2019-07-08 18:12 ` Brendan Higgins 2019-07-08 18:12 ` Brendan Higgins 2019-07-08 18:12 ` Brendan Higgins 2019-07-04 0:35 ` [PATCH v6 02/18] kunit: test: add test resource management API Brendan Higgins 2019-07-04 0:35 ` Brendan Higgins 2019-07-04 0:35 ` Brendan Higgins 2019-07-05 20:45 ` Luis Chamberlain 2019-07-05 20:45 ` Luis Chamberlain 2019-07-05 20:45 ` Luis Chamberlain 2019-07-05 20:45 ` Luis Chamberlain 2019-07-04 0:36 ` [PATCH v6 04/18] kunit: test: add kunit_stream a std::stream like logger Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 05/18] kunit: test: add the concept of expectations Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 06/18] kbuild: enable building KUnit Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 07/18] kunit: test: add initial tests Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 08/18] objtool: add kunit_try_catch_throw to the noreturn list Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 09/18] kunit: test: add support for test abort Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 10/18] kunit: test: add tests for kunit " Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins [this message] 2019-07-04 0:36 ` [PATCH v6 12/18] kunit: test: add tests for KUnit managed resources Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 13/18] kunit: tool: add Python wrappers for running KUnit tests Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 14/18] kunit: defconfig: add defconfigs for building " Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 15/18] Documentation: kunit: add documentation for KUnit Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins [not found] ` <20190704003615.204860-1-brendanhiggins-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> 2019-07-04 0:36 ` [PATCH v6 03/18] kunit: test: add string_stream a std::stream like string builder Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 11/18] kunit: test: add the concept of assertions Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 16/18] MAINTAINERS: add entry for KUnit the unit testing framework Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` [PATCH v6 17/18] kernel/sysctl-test: Add null pointer test for sysctl.c:proc_dointvec() Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-05 20:45 ` Luis Chamberlain 2019-07-05 20:45 ` Luis Chamberlain 2019-07-05 20:45 ` Luis Chamberlain 2019-07-04 0:36 ` [PATCH v6 18/18] MAINTAINERS: add proc sysctl KUnit test to PROC SYSCTL section Brendan Higgins 2019-07-04 0:36 ` Brendan Higgins 2019-07-05 20:48 ` Luis Chamberlain 2019-07-05 20:48 ` Luis Chamberlain 2019-07-05 20:48 ` Luis Chamberlain 2019-07-05 20:48 ` Luis Chamberlain 2019-07-08 23:15 ` Brendan Higgins 2019-07-08 23:15 ` Brendan Higgins 2019-07-08 23:15 ` Brendan Higgins 2019-07-08 23:15 ` Brendan Higgins [not found] ` <CAFd5g44j7ECQorYLnDQadAaj+yBki98kFjmjejn+3W4eHtqGDA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-07-08 23:29 ` Iurii Zaikin [not found] ` <CAAXuY3q1==RvAiw+gw5kfFJmjdR9JEUnnxou4Sv0POd88aD41w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-07-08 23:34 ` Iurii Zaikin 2019-07-08 23:34 ` Iurii Zaikin 2019-07-08 23:34 ` Iurii Zaikin 2019-07-08 23:34 ` Iurii Zaikin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190704003615.204860-13-brendanhiggins@google.com \ --to=brendanhiggins@google.com \ --cc=Alexander.Levin@microsoft.com \ --cc=Tim.Bird@sony.com \ --cc=akndr41@gmail.com \ --cc=amir73il@gmail.com \ --cc=dan.carpenter@oracle.com \ --cc=daniel@ffwll.ch \ --cc=devicetree@vger.kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=frowand.list@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=jdike@addtoit.com \ --cc=joel@jms.id.au \ --cc=jpoimboe@redhat.com \ --cc=julia.lawall@lip6.fr \ --cc=keescook@google.com \ --cc=khilman@baylibre.com \ --cc=kieran.bingham@ideasonboard.com \ --cc=knut.omang@oracle.com \ --cc=kunit-dev@googlegroups.com \ --cc=linux-doc@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kbuild@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=linux-um@lists.infradead.org \ --cc=logang@deltatee.com \ --cc=mcgrof@kernel.org \ --cc=mpe@ellerman.id.au \ --cc=peterz@infradead.org \ --cc=pmladek@suse.com \ --cc=rdunlap@infradead.org \ --cc=richard@nod.at \ --cc=rientjes@google.com \ --cc=robh@kernel.org \ --cc=rostedt@goodmis.org \ --cc=sboyd@kernel.org \ --cc=shuah@kernel.org \ --cc=tytso@mit.edu \ --cc=wfg@linux.intel.com \ --cc=yamada.masahiro@socionext.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.