Files
mkrtos-real/mkrtos_knl/knl/kobject.c

53 lines
1.2 KiB
C
Executable File

#include "kobject.h"
#include "string.h"
void kobject_set_name(kobject_t *kobj, const char *name)
{
assert(kobj);
strncpy(kobj->dbg.name, name, KOBJ_NAME_SIZE);
kobj->dbg.name[KOBJ_NAME_SIZE - 1] = 0;
}
char *kobject_get_name(kobject_t *kobj)
{
return kobj->dbg.name;
}
void kobject_invalidate(kobject_t *kobj)
{
assert(!spinlock_is_invalidation(&kobj->lock));
spinlock_invalidate(&kobj->lock);
}
/**
* @brief 默认的系统调用接口
*
* @param kobj
* @param sys_p
* @param in_tag
* @param f
*/
void kobject_invoke(kobject_t *kobj, syscall_prot_t sys_p, msg_tag_t in_tag, entry_frame_t *f)
{
/*TODO:*/
f->regs[0] = msg_tag_init4(0, 0, 0, -ENOSYS).raw;
}
bool_t kobject_put(kobject_t *kobj)
{
return TRUE;
}
void kobject_release_stage1(kobject_t *kobj)
{
}
void kobject_release_stage2(kobject_t *kobj)
{
}
void kobject_init(kobject_t *kobj, enum knl_obj_type type)
{
kobj_map_init(&kobj->mappable);
slist_init(&kobj->del_node);
spinlock_init(&kobj->lock);
kobj->invoke_func = kobject_invoke;
kobj->put_func = kobject_put;
kobj->stage_1_func = kobject_release_stage1;
kobj->stage_2_func = kobject_release_stage2;
kobj->kobj_type = type;
}