From a155d4bce4d1ebc58dc1d287b8f9f87fcfc50c87 Mon Sep 17 00:00:00 2001 From: Chanwoo Choi Date: Sat, 6 Aug 2022 02:31:24 +0900 Subject: [PATCH] lib: resource-monitor: Change prototype of pass_resource_monitor_get_resource_count Almost get_value functions get the value by using l-value parameter. In order to keep the consistent function prototype stule, change the prototype of pass_resource_monitor_get_resource_count function as following: - before: int pass_resource_monitor_get_resource_count(int id, int resource_type); - after : int pass_resource_monitor_get_resource_count(int id, int resource_type, int *resource_count); Change-Id: Ic18f45a1ee4bbd4f9320751541cf00b3f4d9f5c8 Signed-off-by: Chanwoo Choi --- lib/resource-monitor/resource-monitor.c | 11 +++- lib/resource-monitor/resource-monitor.h | 3 +- src/monitor/request-handler.c | 13 ++++- tests/integration-test/resource-monitor-tests.cpp | 69 ++++++++++++----------- tools/resource-monitor/resource-monitor.c | 11 ++-- 5 files changed, 64 insertions(+), 43 deletions(-) diff --git a/lib/resource-monitor/resource-monitor.c b/lib/resource-monitor/resource-monitor.c index 3d6a1a9..62e42cf 100644 --- a/lib/resource-monitor/resource-monitor.c +++ b/lib/resource-monitor/resource-monitor.c @@ -191,6 +191,7 @@ static inline int handle_request(struct request_data *data) ret = 0; switch (data->request) { case REQUEST_GET_VALUE_INT: + case REQUEST_GET_RESOURCE_COUNT: if (sscanf(buffer, "%d$%d$%d", &response_req, &data->value_int32, &response_ret) < 3) ret = EINVAL; @@ -324,15 +325,21 @@ int pass_resource_monitor_exit(int id) } EXPORT -int pass_resource_monitor_get_resource_count(int id, int resource_type) +int pass_resource_monitor_get_resource_count(int id, int resource_type, int *resource_count) { struct request_data request = { .request = REQUEST_GET_RESOURCE_COUNT, .client_id = id, .resource_type = resource_type, }; + int ret; - return handle_request(&request); + ret = handle_request(&request); + if (ret < 0) + return ret; + + *resource_count = request.value_int32; + return 0; } EXPORT diff --git a/lib/resource-monitor/resource-monitor.h b/lib/resource-monitor/resource-monitor.h index 647ad29..97b11e0 100644 --- a/lib/resource-monitor/resource-monitor.h +++ b/lib/resource-monitor/resource-monitor.h @@ -182,9 +182,10 @@ int pass_resource_monitor_exit(int id); * @brief Get the count of supported resources according to resource type * @param[in] Resource monitor id * @param[in] Resource type + * @param[out] Resource count retrieved from resource monitor * @return @c positive integer as resource count on success, otherwise a negative error value */ -int pass_resource_monitor_get_resource_count(int id, int resource_type); +int pass_resource_monitor_get_resource_count(int id, int resource_type, int *resource_count); /** * @brief Create resource for given resource_type diff --git a/src/monitor/request-handler.c b/src/monitor/request-handler.c index 033ce16..2074fde 100644 --- a/src/monitor/request-handler.c +++ b/src/monitor/request-handler.c @@ -153,7 +153,7 @@ static int handle_request_update_resource(struct request_client *client, char *a return 0; } -static int handle_request_get_resource_count(struct request_client *client, char *args) +static int handle_request_get_resource_count(struct request_client *client, char *args, int *value) { int resource_type; int ret; @@ -174,8 +174,9 @@ static int handle_request_get_resource_count(struct request_client *client, char _E("failed to get resource device count, res:type(%d)\n", resource_type); return ret; } + *value = ret; - return ret; + return 0; } static int handle_request_update_resource_all(struct request_client *client, char *args) @@ -749,7 +750,13 @@ static int handle_request(struct request_client *client, char *request) ret = handle_request_update_resource(client, args); break; case REQUEST_GET_RESOURCE_COUNT: - ret = handle_request_get_resource_count(client, args); + { + int32_t value; + + ret = handle_request_get_resource_count(client, args, &value); + + ADD_RESPONSE(response, buffer_len, "%d$", value); + } break; case REQUEST_UPDATE_RESOURCE_ALL: ret = handle_request_update_resource_all(client, args); diff --git a/tests/integration-test/resource-monitor-tests.cpp b/tests/integration-test/resource-monitor-tests.cpp index 3f2bba1..5bc4189 100644 --- a/tests/integration-test/resource-monitor-tests.cpp +++ b/tests/integration-test/resource-monitor-tests.cpp @@ -76,8 +76,9 @@ TEST_F(ResourceMonitorTest, pass_resource_monitor_get_resource_count_valid) EXPECT_TRUE(id > 0); for (i = 0; i < (int)ARRAY_SIZE(res_types); i++) { - int ret = pass_resource_monitor_get_resource_count(id, res_types[i]); - EXPECT_TRUE(ret >= 0); + int count; + int ret = pass_resource_monitor_get_resource_count(id, res_types[i], &count); + EXPECT_EQ(ret, 0); } int ret = pass_resource_monitor_exit(id); @@ -96,7 +97,8 @@ TEST_F(ResourceMonitorTest, pass_resource_monitor_get_resource_count_invalid) EXPECT_TRUE(id > 0); for (i = 0; i < (int)ARRAY_SIZE(res_types); i++) { - int ret = pass_resource_monitor_get_resource_count(id, res_types[i]); + int count; + int ret = pass_resource_monitor_get_resource_count(id, res_types[i], &count); EXPECT_EQ(ret, 0); } @@ -118,14 +120,15 @@ TEST_F(ResourceMonitorTest, int id = pass_resource_monitor_init(); EXPECT_TRUE(id > 0); - int count = pass_resource_monitor_get_resource_count(id, res_type); - EXPECT_TRUE(count >= 0); + int count; + int ret = pass_resource_monitor_get_resource_count(id, res_type, &count); + EXPECT_EQ(ret, 0); for (i = 0; i < count; i++) { int res_id = pass_resource_monitor_create_resource(id, res_type); EXPECT_TRUE(res_id >= 0); - int ret = pass_resource_monitor_set_resource_ctrl(id, res_id, + ret = pass_resource_monitor_set_resource_ctrl(id, res_id, CPU_CTRL_CLUSTER_ID, i); EXPECT_EQ(ret, 0); @@ -150,7 +153,7 @@ TEST_F(ResourceMonitorTest, EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(id); + ret = pass_resource_monitor_exit(id); EXPECT_EQ(ret, 0); } @@ -365,8 +368,8 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_create_resource_and_de res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { /* Test pass_resource_monitor_create_resource */ @@ -374,7 +377,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_create_resource_and_de EXPECT_TRUE(res.res_id >= 0); /* Test pass_resource_monitor_delete_resource */ - int ret = pass_resource_monitor_delete_resource(res.mon_id, res.res_id); + ret = pass_resource_monitor_delete_resource(res.mon_id, res.res_id); EXPECT_EQ(ret, 0); } @@ -389,8 +392,8 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_get_resource_timestamp res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { int64_t start, end; @@ -399,7 +402,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_get_resource_timestamp EXPECT_TRUE(res.res_id >= 0); /* Test pass_resource_monitor_get_resource_timestamp */ - int ret = pass_resource_monitor_get_resource_timestamp( + ret = pass_resource_monitor_get_resource_timestamp( res.mon_id, res.res_id, &start, &end); EXPECT_EQ(ret, 0); @@ -419,15 +422,15 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_ctrl) res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type); EXPECT_TRUE(res.res_id >= 0); /* Test pass_resource_monitor_set_resource_ctrl */ - int ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, + ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, res.ctrl_id, i); if (res.ctrl_id > 0) EXPECT_EQ(ret, 0); @@ -438,7 +441,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_ctrl) EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(res.mon_id); + ret = pass_resource_monitor_exit(res.mon_id); EXPECT_EQ(ret, 0); } @@ -488,8 +491,8 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_attr) res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type); @@ -499,7 +502,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_attr) * Test both pass_resource_monitor_set_resource_attr * and pass_resource_monitor_is_resource_attr_supported * */ - int ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, + ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, res.ctrl_id, i); if (res.ctrl_id > 0) EXPECT_EQ(ret, 0); @@ -516,7 +519,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_set_resource_attr) EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(res.mon_id); + ret = pass_resource_monitor_exit(res.mon_id); EXPECT_EQ(ret, 0); } @@ -528,14 +531,14 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_unset_resource_attr_va res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type); EXPECT_TRUE(res.res_id >= 0); - int ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, + ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, res.ctrl_id, i); if (res.ctrl_id > 0) EXPECT_EQ(ret, 0); @@ -559,7 +562,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_unset_resource_attr_va EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(res.mon_id); + ret = pass_resource_monitor_exit(res.mon_id); EXPECT_EQ(ret, 0); } @@ -571,14 +574,14 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_unset_resource_attr_in res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type); EXPECT_TRUE(res.res_id >= 0); - int ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, + ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, res.ctrl_id, i); if (res.ctrl_id > 0) EXPECT_EQ(ret, 0); @@ -601,7 +604,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_unset_resource_attr_in EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(res.mon_id); + ret = pass_resource_monitor_exit(res.mon_id); EXPECT_EQ(ret, 0); } @@ -738,14 +741,14 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_get_value) res.mon_id = pass_resource_monitor_init(); ASSERT_TRUE(res.mon_id > 0); - res.count = pass_resource_monitor_get_resource_count(res.mon_id, res.type); - EXPECT_TRUE(res.count >= 0); + int ret = pass_resource_monitor_get_resource_count(res.mon_id, res.type, &res.count); + EXPECT_EQ(ret, 0); for (i = 0; i < res.count; i++) { res.res_id = pass_resource_monitor_create_resource(res.mon_id, res.type); EXPECT_TRUE(res.res_id >= 0); - int ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, + ret = pass_resource_monitor_set_resource_ctrl(res.mon_id, res.res_id, res.ctrl_id, i); if (res.ctrl_id > 0) EXPECT_EQ(ret, 0); @@ -775,7 +778,7 @@ TEST_P(PhysicalResourceMonitorTest, pass_resource_monitor_get_value) EXPECT_EQ(ret, 0); } - int ret = pass_resource_monitor_exit(res.mon_id); + ret = pass_resource_monitor_exit(res.mon_id); EXPECT_EQ(ret, 0); } diff --git a/tools/resource-monitor/resource-monitor.c b/tools/resource-monitor/resource-monitor.c index 0147aaf..fe2675a 100644 --- a/tools/resource-monitor/resource-monitor.c +++ b/tools/resource-monitor/resource-monitor.c @@ -445,7 +445,7 @@ static void resource_monitor_exit(int signal) static int resource_monitor_init(void) { - int id, i, j, count; + int id, i, j, count, ret; /* 1. Initialize resource-monitor */ id = pass_resource_monitor_init(); @@ -453,10 +453,13 @@ static int resource_monitor_init(void) /* 2. Get resource count */ for (i = 0; i < ARRAY_SIZE(g_resource_type); i++) { - if (g_resource_type[i].res_count) + if (g_resource_type[i].res_count) { count = g_resource_type[i].res_count; - else - count = pass_resource_monitor_get_resource_count(id, g_resource_type[i].type); + } else { + ret = pass_resource_monitor_get_resource_count(id, g_resource_type[i].type, &count); + if (ret < 0) + continue; + } if (g_resource_type[i].ctrl_val < 0) continue; -- 2.7.4