/* ** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. ** Distributed under the terms of the OpenBeOS License. */ #include #include extern void __init__image(struct uspace_program_args const *args); extern void __init__dlfcn(struct uspace_program_args const *args); void initialize_before(image_id imageID, struct uspace_program_args const *args); char *__progname = NULL; char _single_threaded = true; // determines if I/O locking needed; needed for BeOS compatibility thread_id __main_thread_id; char **argv_save; // needed for BeOS compatibility - they are set in the original // 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) { } void initialize_before(image_id imageID, struct uspace_program_args const *args) { char *programPath = args->argv[0]; if (programPath) { if ((__progname = strrchr(programPath, '/')) == NULL) __progname = programPath; else __progname++; } __init__image(args); __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. }