53 lines
1.2 KiB
C
Executable File
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;
|
|
}
|