This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 67fa0e89f driverteset_block.c: Reduce the stack consumption
67fa0e89f is described below

commit 67fa0e89ff291425491a0b385fbe2f5daeaa7ae1
Author: Yongrong Wang <wangyongr...@xiaomi.com>
AuthorDate: Thu Aug 8 16:30:06 2024 +0800

    driverteset_block.c: Reduce the stack consumption
    
    1. By reducing the use of local variables geometry
    2. Use structure pre_build_s pointers instead of using the
    structure directly
    
    Signed-off-by: Yongrong Wang <wangyongr...@xiaomi.com>
---
 testing/drivertest/drivertest_block.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/testing/drivertest/drivertest_block.c 
b/testing/drivertest/drivertest_block.c
index df440d61b..d3521674c 100644
--- a/testing/drivertest/drivertest_block.c
+++ b/testing/drivertest/drivertest_block.c
@@ -201,16 +201,15 @@ static int setup_driver(FAR void **state)
   ret = find_mtddriver(pre->source, &pre->driver);
   if (ret != 0)
     {
-      struct geometry geometry;
       ret = find_blockdriver(pre->source, 0, &pre->driver);
       assert_false(ret != 0);
 
-      ret = pre->driver->u.i_bops->geometry(pre->driver, &geometry);
+      ret = pre->driver->u.i_bops->geometry(pre->driver, &pre->cfg);
       assert_false(ret < 0);
 
-      pre->geo.blocksize = geometry.geo_sectorsize;
-      pre->geo.erasesize = geometry.geo_sectorsize;
-      pre->geo.neraseblocks = geometry.geo_nsectors;
+      pre->geo.blocksize = pre->cfg.geo_sectorsize;
+      pre->geo.erasesize = pre->cfg.geo_sectorsize;
+      pre->geo.neraseblocks = pre->cfg.geo_nsectors;
     }
   else
     {
@@ -469,20 +468,29 @@ static int teardown_bch(FAR void **state)
 
 int main(int argc, FAR char *argv[])
 {
-  struct pre_build_s pre;
+  struct pre_build_s *pre;
+  int ret;
+
+  pre = kmm_zalloc(sizeof(*pre));
+  if (pre == NULL)
+    {
+      return -ENOMEM;
+    }
 
-  parse_commandline(argc, argv, &pre);
+  parse_commandline(argc, argv, pre);
   const struct CMUnitTest tests[] =
     {
       cmocka_unit_test_prestate_setup_teardown(blktest_stress, setup_bch,
-                                               teardown_bch, &pre),
+                                               teardown_bch, pre),
       cmocka_unit_test_prestate_setup_teardown(blktest_single_write,
                                                setup_driver, teardown_driver,
-                                               &pre),
+                                               pre),
       cmocka_unit_test_prestate_setup_teardown(blktest_cachesize_write,
                                                setup_driver, teardown_driver,
-                                               &pre),
+                                               pre),
     };
 
-  return cmocka_run_group_tests(tests, NULL, NULL);
+  ret = cmocka_run_group_tests(tests, NULL, NULL);
+  kmm_free(pre);
+  return ret;
 }

Reply via email to