Another patch by Vasilis Kaoutsis:
Use find_directory() to find the runtime_loader when starting teams. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25506 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
8f65f279f2
commit
5dc81824d6
@ -17,9 +17,12 @@
|
|||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
|
|
||||||
#include <AutoDeleter.h>
|
#include <AutoDeleter.h>
|
||||||
|
#include <FindDirectory.h>
|
||||||
|
|
||||||
|
#include <boot_device.h>
|
||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <file_cache.h>
|
#include <file_cache.h>
|
||||||
|
#include <fs/KPath.h>
|
||||||
#include <heap.h>
|
#include <heap.h>
|
||||||
#include <int.h>
|
#include <int.h>
|
||||||
#include <kernel.h>
|
#include <kernel.h>
|
||||||
@ -1168,14 +1171,28 @@ team_create_thread_start(void *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free_team_arg(teamArgs);
|
free_team_arg(teamArgs);
|
||||||
// the arguments are already on the user stack, we no longer need them in this form
|
// the arguments are already on the user stack, we no longer need
|
||||||
|
// them in this form
|
||||||
|
|
||||||
// ToDo: don't use fixed paths!
|
// find runtime_loader path
|
||||||
err = elf_load_user_image("/boot/beos/system/runtime_loader", team, 0, &entry);
|
KPath runtimeLoaderPath;
|
||||||
|
err = find_directory(B_BEOS_SYSTEM_DIRECTORY, gBootDevice, false,
|
||||||
|
runtimeLoaderPath.LockBuffer(), runtimeLoaderPath.BufferSize());
|
||||||
|
if (err < B_OK) {
|
||||||
|
TRACE(("team_create_thread_start: find_directory() failed: %s\n",
|
||||||
|
strerror(err)));
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
runtimeLoaderPath.UnlockBuffer();
|
||||||
|
err = runtimeLoaderPath.Append("runtime_loader");
|
||||||
|
|
||||||
|
if (err == B_OK)
|
||||||
|
err = elf_load_user_image(runtimeLoaderPath.Path(), team, 0, &entry);
|
||||||
if (err < B_OK) {
|
if (err < B_OK) {
|
||||||
// Luckily, we don't have to clean up the mess we created - that's
|
// Luckily, we don't have to clean up the mess we created - that's
|
||||||
// done for us by the normal team deletion process
|
// done for us by the normal team deletion process
|
||||||
TRACE(("team_create_thread_start: error when elf_load_user_image() %s\n", strerror(err)));
|
TRACE(("team_create_thread_start: elf_load_user_image() failed: "
|
||||||
|
"%s\n", strerror(err)));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user