kernel: add a syscall to query generic information about an object

This commit is contained in:
2026-03-29 11:50:37 +01:00
parent 62770f4ab2
commit 04617e81e3
7 changed files with 42 additions and 0 deletions
+1
View File
@@ -52,6 +52,7 @@ static const virt_addr_t syscall_table[] = {
VM_CONTROLLER_SUPPLY_PAGES,
vm_controller_supply_pages),
SYSCALL_TABLE_ENTRY(KERN_OBJECT_WAIT, kern_object_wait),
SYSCALL_TABLE_ENTRY(KERN_OBJECT_QUERY, kern_object_query),
SYSCALL_TABLE_ENTRY(FUTEX_WAIT, futex_wait),
SYSCALL_TABLE_ENTRY(FUTEX_WAKE, futex_wake),
};
+29
View File
@@ -80,3 +80,32 @@ cleanup:
self_thread->tr_state = THREAD_READY;
return status;
}
kern_status_t sys_kern_object_query(
kern_handle_t object_handle,
kern_object_info_t *out)
{
struct task *self = current_task();
if (!out) {
return KERN_INVALID_ARGUMENT;
}
if (!validate_access_w(self, out, sizeof *out)) {
return KERN_MEMORY_FAULT;
}
struct object *obj = NULL;
handle_flags_t flags = 0;
kern_status_t status
= task_resolve_handle(self, object_handle, &obj, &flags);
if (status != KERN_OK) {
return status;
}
out->obj_id = obj->ob_id;
object_unref(obj);
return KERN_OK;
}