diff --git a/src/kernel/libroot/os/Jamfile b/src/kernel/libroot/os/Jamfile index e6595b7b6a..35bc31c41d 100644 --- a/src/kernel/libroot/os/Jamfile +++ b/src/kernel/libroot/os/Jamfile @@ -5,6 +5,7 @@ KernelMergeObject os_main.o : <$(SOURCE_GRIST)>debug.c <$(SOURCE_GRIST)>fs_attr.c <$(SOURCE_GRIST)>fs_index.c + <$(SOURCE_GRIST)>image.c <$(SOURCE_GRIST)>port.c <$(SOURCE_GRIST)>sem.c <$(SOURCE_GRIST)>systeminfo.c diff --git a/src/kernel/libroot/os/image.c b/src/kernel/libroot/os/image.c new file mode 100644 index 0000000000..a9d6bfd775 --- /dev/null +++ b/src/kernel/libroot/os/image.c @@ -0,0 +1,66 @@ +/* +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Distributed under the terms of the OpenBeOS License. +*/ + + +#include +#include + +#include "syscalls.h" +#include "user_runtime.h" + + +void __init__image(struct uspace_program_args const *); + +static struct rld_export const *gRuntimeLinker; + + +image_id +load_add_on(char const *name) +{ + return gRuntimeLinker->load_add_on(name, 0); +} + + +status_t +unload_add_on(image_id id) +{ + return gRuntimeLinker->unload_add_on(id); +} + + +status_t +get_image_symbol(image_id id, char const *symbolName, int32 symbolType, void **_location) +{ + return gRuntimeLinker->get_image_symbol(id, symbolName, symbolType, _location); +} + + +status_t +get_nth_image_symbol(image_id id, int32 num, char *nameBuffer, int32 *_nameLength, + int32 *_symbolType, void **_location) +{ + return gRuntimeLinker->get_nth_image_symbol(id, num, nameBuffer, _nameLength, _symbolType, _location); +} + + +status_t +_get_image_info(image_id id, image_info *info, size_t infoSize) +{ + return sys_get_image_info(id, info, infoSize); +} + + +status_t +_get_next_image_info(team_id team, int32 *cookie, image_info *info, size_t infoSize) +{ + return sys_get_next_image_info(team, cookie, info, infoSize); +} + + +void +__init__image(struct uspace_program_args const *args) +{ + gRuntimeLinker = args->rld_export; +} diff --git a/src/kernel/libroot/os/syscalls.S b/src/kernel/libroot/os/syscalls.S index 0bb6bb20e7..8bc70c11b6 100644 --- a/src/kernel/libroot/os/syscalls.S +++ b/src/kernel/libroot/os/syscalls.S @@ -111,6 +111,12 @@ SYSCALL3(sys_get_next_thread_info, 89) SYSCALL2(sys_get_team_info, 90) SYSCALL2(sys_get_next_team_info, 91) +/* image calls */ +SYSCALL2(sys_register_image, 114) +SYSCALL1(sys_unregister_image, 115) +SYSCALL3(sys_get_image_info, 116) +SYSCALL4(sys_get_next_image_info, 117) + /* VM calls */ SYSCALL6(sys_vm_create_anonymous_region, 29) SYSCALL6(sys_vm_clone_region, 30)