service: add attribute for number of invocations
This commit adds a new attribute to the service cores attributes API, which allows the application to retrieve the number of times that a service-core called the service to perform its action. Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
This commit is contained in:
parent
1fa2c9e108
commit
fb033aceaf
@ -399,6 +399,11 @@ int32_t rte_service_dump(FILE *f, uint32_t id);
|
||||
*/
|
||||
#define RTE_SERVICE_ATTR_CYCLES 0
|
||||
|
||||
/**
|
||||
* Returns the count of invocations of this service function
|
||||
*/
|
||||
#define RTE_SERVICE_ATTR_CALL_COUNT 1
|
||||
|
||||
/**
|
||||
* @warning
|
||||
* @b EXPERIMENTAL: this API may change without prior notice
|
||||
|
@ -695,6 +695,9 @@ rte_service_attr_get(uint32_t id, uint32_t attr_id, uint32_t *attr_value)
|
||||
case RTE_SERVICE_ATTR_CYCLES:
|
||||
*attr_value = s->cycles_spent;
|
||||
return 0;
|
||||
case RTE_SERVICE_ATTR_CALL_COUNT:
|
||||
*attr_value = s->calls;
|
||||
return 0;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -278,6 +278,12 @@ service_attr_get(void)
|
||||
"Valid attr_get() call didn't return success");
|
||||
TEST_ASSERT_EQUAL(0, attr_value,
|
||||
"attr_get() call didn't set correct cycles (zero)");
|
||||
/* check correct call count */
|
||||
const int attr_calls = RTE_SERVICE_ATTR_CALL_COUNT;
|
||||
TEST_ASSERT_EQUAL(0, rte_service_attr_get(id, attr_calls, &attr_value),
|
||||
"Valid attr_get() call didn't return success");
|
||||
TEST_ASSERT_EQUAL(0, attr_value,
|
||||
"attr_get() call didn't get call count (zero)");
|
||||
|
||||
/* Call service to increment cycle count */
|
||||
TEST_ASSERT_EQUAL(0, rte_service_lcore_add(slcore_id),
|
||||
@ -298,6 +304,11 @@ service_attr_get(void)
|
||||
|
||||
rte_service_lcore_stop(slcore_id);
|
||||
|
||||
TEST_ASSERT_EQUAL(0, rte_service_attr_get(id, attr_calls, &attr_value),
|
||||
"Valid attr_get() call didn't return success");
|
||||
TEST_ASSERT_EQUAL(1, (attr_value > 0),
|
||||
"attr_get() call didn't get call count (zero)");
|
||||
|
||||
TEST_ASSERT_EQUAL(0, rte_service_attr_reset_all(id),
|
||||
"Valid attr_reset_all() return success");
|
||||
|
||||
@ -305,6 +316,11 @@ service_attr_get(void)
|
||||
"Valid attr_get() call didn't return success");
|
||||
TEST_ASSERT_EQUAL(0, attr_value,
|
||||
"attr_get() call didn't set correct cycles (zero)");
|
||||
/* ensure call count > zero */
|
||||
TEST_ASSERT_EQUAL(0, rte_service_attr_get(id, attr_calls, &attr_value),
|
||||
"Valid attr_get() call didn't return success");
|
||||
TEST_ASSERT_EQUAL(0, (attr_value > 0),
|
||||
"attr_get() call didn't get call count (zero)");
|
||||
|
||||
return unregister_all();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user