summaryrefslogtreecommitdiff
path: root/src/object.c
diff options
context:
space:
mode:
authorShell <[email protected]>2024-05-21 08:56:35 +0800
committerGitHub <[email protected]>2024-05-21 08:56:35 +0800
commite82c53559b6e16acb5bdc9c9c9d51c8ddf84a86d (patch)
tree600671847e6af19422e22ec407e8cab46f138699 /src/object.c
parent2f559906d6202c27142237ab4b1d893034a5b7c3 (diff)
[utest] add device find (#8959)
* [utest] add device find Signed-off-by: Shell <[email protected]> * fixup: add test * fixup: ptr aliasing * quality: meaning parameter --------- Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'src/object.c')
-rw-r--r--src/object.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/object.c b/src/object.c
index ae62be1fa3..5c110f7b70 100644
--- a/src/object.c
+++ b/src/object.c
@@ -625,12 +625,19 @@ rt_err_t rt_object_for_each(rt_uint8_t type, rt_object_iter_t iter, void *data)
return RT_EOK;
}
+struct _obj_find_param
+{
+ const char *match_name;
+ rt_object_t matched_obj;
+};
+
static rt_err_t _match_name(struct rt_object *obj, void *data)
{
- const char *name = *(const char **)data;
+ struct _obj_find_param *param = data;
+ const char *name = param->match_name;
if (rt_strncmp(obj->name, name, RT_NAME_MAX) == 0)
{
- *(rt_object_t *)data = obj;
+ param->matched_obj = obj;
/* notify an early break of loop, but not on error */
return 1;
@@ -654,7 +661,11 @@ static rt_err_t _match_name(struct rt_object *obj, void *data)
*/
rt_object_t rt_object_find(const char *name, rt_uint8_t type)
{
- void *data = (void *)name;
+ struct _obj_find_param param =
+ {
+ .match_name = name,
+ .matched_obj = RT_NULL,
+ };
/* parameter check */
if (name == RT_NULL) return RT_NULL;
@@ -662,13 +673,8 @@ rt_object_t rt_object_find(const char *name, rt_uint8_t type)
/* which is invoke in interrupt status */
RT_DEBUG_NOT_IN_INTERRUPT;
- rt_object_for_each(type, _match_name, &data);
- if (data != name)
- {
- return data;
- }
-
- return RT_NULL;
+ rt_object_for_each(type, _match_name, &param);
+ return param.matched_obj;
}
/**