2002-10-05 21:04:37 +04:00
|
|
|
/*
|
2003-01-13 13:50:14 +03:00
|
|
|
** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
|
|
|
** Distributed under the terms of the OpenBeOS License.
|
2002-10-05 21:04:37 +04:00
|
|
|
*/
|
|
|
|
|
2003-01-13 13:50:14 +03:00
|
|
|
|
2002-10-05 21:04:37 +04:00
|
|
|
#include <user_runtime.h>
|
2003-01-13 13:50:14 +03:00
|
|
|
#include <string.h>
|
2002-10-05 21:04:37 +04:00
|
|
|
|
|
|
|
|
2003-01-12 20:13:32 +03:00
|
|
|
extern void __init__image(struct uspace_program_args const *args);
|
2003-01-13 13:50:14 +03:00
|
|
|
extern void __init__dlfcn(struct uspace_program_args const *args);
|
2002-10-05 21:04:37 +04:00
|
|
|
|
2003-01-12 20:13:32 +03:00
|
|
|
void initialize_before(image_id imageID, struct uspace_program_args const *args);
|
|
|
|
|
2003-01-13 13:50:14 +03:00
|
|
|
char *__progname = NULL;
|
|
|
|
|
2003-02-11 22:51:49 +03:00
|
|
|
char _single_threaded = true;
|
|
|
|
// determines if I/O locking needed; needed for BeOS compatibility
|
2003-01-13 13:50:14 +03:00
|
|
|
thread_id __main_thread_id;
|
|
|
|
char **argv_save;
|
2003-02-11 22:51:49 +03:00
|
|
|
// needed for BeOS compatibility - they are set in the original
|
2003-01-13 13:50:14 +03:00
|
|
|
// BeOS startup code, but they won't be initialized when the
|
|
|
|
// OpenBeOS startup code is used.
|
|
|
|
|
|
|
|
|
|
|
|
// ToDo: these functions are defined in libgcc - this one is included in
|
|
|
|
// libroot.so in BeOS, but we probably don't want to do that.
|
|
|
|
// Since we don't yet have libgcc at all, it's defined here for now
|
|
|
|
// so that BeOS executables will find them.
|
|
|
|
// Remove them later!
|
|
|
|
|
|
|
|
|
|
|
|
void __deregister_frame_info(void);
|
|
|
|
void
|
|
|
|
__deregister_frame_info(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __register_frame_info(void);
|
|
|
|
void
|
|
|
|
__register_frame_info(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-10-05 21:04:37 +04:00
|
|
|
void
|
2003-01-12 20:13:32 +03:00
|
|
|
initialize_before(image_id imageID, struct uspace_program_args const *args)
|
2002-10-05 21:04:37 +04:00
|
|
|
{
|
2003-01-13 13:50:14 +03:00
|
|
|
char *programPath = args->argv[0];
|
|
|
|
if (programPath) {
|
|
|
|
if ((__progname = strrchr(programPath, '/')) == NULL)
|
|
|
|
__progname = programPath;
|
|
|
|
else
|
|
|
|
__progname++;
|
|
|
|
}
|
|
|
|
|
2003-01-12 20:13:32 +03:00
|
|
|
__init__image(args);
|
2003-01-13 13:50:14 +03:00
|
|
|
__init__dlfcn(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void _init_c_library_(void);
|
|
|
|
void
|
|
|
|
_init_c_library_(void)
|
|
|
|
{
|
|
|
|
// This function is called from the BeOS start_dyn.o - so it's called once
|
|
|
|
// for every application that was compiled under BeOS.
|
|
|
|
// Our libroot functions are already initialized above, so we don't have to
|
|
|
|
// do anything here.
|
2002-10-05 21:04:37 +04:00
|
|
|
}
|
|
|
|
|