| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- * Copyright (c) 2006-2020, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-06-09 tyx first version.
- */
- #include "kdb_type.h"
- static struct kdb_type tab[KDB_TYPE_NUM];
- static struct kdb_type *_type_find(rt_uint16_t type)
- {
- int i = 0;
- for (i = 0; i < KDB_TYPE_NUM; i++)
- {
- if (tab[i].type == type)
- return &tab[i];
- }
- return RT_NULL;
- }
- rt_err_t kdb_type_register(rt_uint16_t type, kdb_dump_t dump)
- {
- int i = 0;
- struct kdb_type *t = RT_NULL;
- for (i = 0; i < KDB_TYPE_NUM; i++)
- {
- if (tab[i].type == type)
- {
- t = &tab[i];
- break;
- }
- else if (tab[i].type == KDB_TYPE_INVALID && t == RT_NULL)
- {
- t = &tab[i];
- }
- }
- if (t)
- {
- t->type = type;
- t->dump = dump;
- return RT_EOK;
- }
- return -RT_ERROR;
- }
- void kdb_type_unregister(rt_uint16_t type)
- {
- struct kdb_type *t = _type_find(type);
- if (t)
- {
- t->type = 0;
- t->dump = 0;
- }
- }
- void kdb_type_dump(kdb_head_t head, void *data)
- {
- struct kdb_type *t = _type_find(head->type);
- if (t && t->dump) t->dump(head, data);
- }
|