diff --git a/src/kernel/apps/rld/rldexport.c b/src/kernel/apps/rld/rldexport.c new file mode 100644 index 0000000000..91422ce37f --- /dev/null +++ b/src/kernel/apps/rld/rldexport.c @@ -0,0 +1,56 @@ +/* +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Copyright 2002, Manuel J. Petit. All rights reserved. +** Distributed under the terms of the NewOS License. +*/ + +#include "rld_priv.h" + + +// exported via the rld_export structure in user space program arguments + + +static image_id +export_load_add_on(char const *name, uint32 flags) +{ + // ToDo: use load_add_on() here when it's implemented, or better, unify + // load_library() and load_add_on(). + return load_library(name, flags); +} + + +static status_t +export_unload_add_on(image_id id) +{ + return unload_library(id); +} + + +static status_t +export_get_image_symbol(image_id id, char const *symbolName, int32 symbolType, void **_location) +{ + return get_symbol(id, symbolName, symbolType, _location); +} + + +static status_t +export_get_nth_image_symbol(image_id id, int32 num, char *nameBuffer, int32 *_nameLength, + int32 *_symbolType, void **_location) +{ + return get_nth_symbol(id, num, nameBuffer, _nameLength, _symbolType, _location); +} + + +void +rldexport_init(struct uspace_program_args *args) +{ + static struct rld_export exports = { + // dynamic loading support API + export_load_add_on, + export_unload_add_on, + export_get_image_symbol, + export_get_nth_image_symbol + }; + + args->rld_export = &exports; +}