lib: resource-monitor: Change prototype of pass_resource_monitor_get_resource_count 47/279547/1
authorChanwoo Choi <cw00.choi@samsung.com>
Fri, 5 Aug 2022 17:31:24 +0000 (02:31 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Thu, 11 Aug 2022 08:54:40 +0000 (17:54 +0900)
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 <cw00.choi@samsung.com>
lib/resource-monitor/resource-monitor.c
lib/resource-monitor/resource-monitor.h
src/monitor/request-handler.c
tests/integration-test/resource-monitor-tests.cpp
tools/resource-monitor/resource-monitor.c

index 3d6a1a9..62e42cf 100644 (file)
@@ -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
index 647ad29..97b11e0 100644 (file)
@@ -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
index 033ce16..2074fde 100644 (file)
@@ -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);
index 3f2bba1..5bc4189 100644 (file)
@@ -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);
 }
 
index 0147aaf..fe2675a 100644 (file)
@@ -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;