* Enforced 80 column limit.
* Added/improved debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27758 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -392,7 +392,8 @@ load_module_image(const char* path, module_image** _moduleImage)
|
|||||||
status_t status;
|
status_t status;
|
||||||
image_id image;
|
image_id image;
|
||||||
|
|
||||||
TRACE(("load_module_image(path = \"%s\", _image = %p)\n", path, _moduleImage));
|
TRACE(("load_module_image(path = \"%s\", _image = %p)\n", path,
|
||||||
|
_moduleImage));
|
||||||
ASSERT_LOCKED_RECURSIVE(&sModulesLock);
|
ASSERT_LOCKED_RECURSIVE(&sModulesLock);
|
||||||
ASSERT(_moduleImage != NULL);
|
ASSERT(_moduleImage != NULL);
|
||||||
|
|
||||||
@@ -410,7 +411,8 @@ load_module_image(const char* path, module_image** _moduleImage)
|
|||||||
|
|
||||||
if (get_image_symbol(image, "modules", B_SYMBOL_TYPE_DATA,
|
if (get_image_symbol(image, "modules", B_SYMBOL_TYPE_DATA,
|
||||||
(void**)&moduleImage->info) != B_OK) {
|
(void**)&moduleImage->info) != B_OK) {
|
||||||
TRACE(("load_module_image: Failed to load \"%s\" due to lack of 'modules' symbol\n", path));
|
TRACE(("load_module_image: Failed to load \"%s\" due to lack of "
|
||||||
|
"'modules' symbol\n", path));
|
||||||
status = B_BAD_TYPE;
|
status = B_BAD_TYPE;
|
||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
@@ -431,6 +433,8 @@ load_module_image(const char* path, module_image** _moduleImage)
|
|||||||
|
|
||||||
hash_insert(sModuleImagesHash, moduleImage);
|
hash_insert(sModuleImagesHash, moduleImage);
|
||||||
|
|
||||||
|
TRACE(("load_module_image(\"%s\"): image loaded: %p\n", path, moduleImage));
|
||||||
|
|
||||||
*_moduleImage = moduleImage;
|
*_moduleImage = moduleImage;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|
||||||
@@ -524,7 +528,8 @@ create_module(module_info* info, int offset, module** _module)
|
|||||||
|
|
||||||
module = (struct module*)hash_lookup(sModulesHash, info->name);
|
module = (struct module*)hash_lookup(sModulesHash, info->name);
|
||||||
if (module) {
|
if (module) {
|
||||||
FATAL(("Duplicate module name (%s) detected... ignoring new one\n", info->name));
|
FATAL(("Duplicate module name (%s) detected... ignoring new one\n",
|
||||||
|
info->name));
|
||||||
return B_FILE_EXISTS;
|
return B_FILE_EXISTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -727,7 +732,8 @@ init_module(module* module)
|
|||||||
|
|
||||||
// init module
|
// init module
|
||||||
|
|
||||||
TRACE(("initializing module %s (at %p)... \n", module->name, module->info->std_ops));
|
TRACE(("initializing module %s (at %p)... \n", module->name,
|
||||||
|
module->info->std_ops));
|
||||||
|
|
||||||
if (module->info->std_ops != NULL)
|
if (module->info->std_ops != NULL)
|
||||||
status = module->info->std_ops(B_MODULE_INIT);
|
status = module->info->std_ops(B_MODULE_INIT);
|
||||||
@@ -752,11 +758,13 @@ init_module(module* module)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
case MODULE_UNINIT:
|
case MODULE_UNINIT:
|
||||||
FATAL(("tried to load module %s which is currently unloading\n", module->name));
|
FATAL(("tried to load module %s which is currently unloading\n",
|
||||||
|
module->name));
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
case MODULE_ERROR:
|
case MODULE_ERROR:
|
||||||
FATAL(("cannot load module %s because its earlier unloading failed\n", module->name));
|
FATAL(("cannot load module %s because its earlier unloading "
|
||||||
|
"failed\n", module->name));
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -778,11 +786,13 @@ uninit_module(module* module)
|
|||||||
return B_NO_ERROR;
|
return B_NO_ERROR;
|
||||||
|
|
||||||
case MODULE_INIT:
|
case MODULE_INIT:
|
||||||
panic("Trying to unload module %s which is initializing\n", module->name);
|
panic("Trying to unload module %s which is initializing\n",
|
||||||
|
module->name);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
case MODULE_UNINIT:
|
case MODULE_UNINIT:
|
||||||
panic("Trying to unload module %s which is un-initializing\n", module->name);
|
panic("Trying to unload module %s which is un-initializing\n",
|
||||||
|
module->name);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
case MODULE_READY:
|
case MODULE_READY:
|
||||||
@@ -877,7 +887,8 @@ iterator_get_next_module(module_iterator* iterator, char* buffer,
|
|||||||
TRACE(("iterator_get_next_module() -- start\n"));
|
TRACE(("iterator_get_next_module() -- start\n"));
|
||||||
|
|
||||||
if (iterator->builtin_modules) {
|
if (iterator->builtin_modules) {
|
||||||
for (int32 i = iterator->module_offset; sBuiltInModules[i] != NULL; i++) {
|
for (int32 i = iterator->module_offset; sBuiltInModules[i] != NULL;
|
||||||
|
i++) {
|
||||||
// the module name must fit the prefix
|
// the module name must fit the prefix
|
||||||
if (strncmp(sBuiltInModules[i]->name, iterator->prefix,
|
if (strncmp(sBuiltInModules[i]->name, iterator->prefix,
|
||||||
iterator->prefix_length)
|
iterator->prefix_length)
|
||||||
@@ -1062,10 +1073,13 @@ register_builtin_modules(struct module_info** info)
|
|||||||
{
|
{
|
||||||
for (; *info; info++) {
|
for (; *info; info++) {
|
||||||
(*info)->flags |= B_BUILT_IN_MODULE;
|
(*info)->flags |= B_BUILT_IN_MODULE;
|
||||||
// this is an internal flag, it doesn't have to be set by modules itself
|
// this is an internal flag, it doesn't have to be set by modules
|
||||||
|
// itself
|
||||||
|
|
||||||
if (create_module(*info, -1, NULL) != B_OK)
|
if (create_module(*info, -1, NULL) != B_OK) {
|
||||||
dprintf("creation of built-in module \"%s\" failed!\n", (*info)->name);
|
dprintf("creation of built-in module \"%s\" failed!\n",
|
||||||
|
(*info)->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1078,7 +1092,8 @@ register_preloaded_module_image(struct preloaded_image* image)
|
|||||||
status_t status;
|
status_t status;
|
||||||
int32 index = 0;
|
int32 index = 0;
|
||||||
|
|
||||||
TRACE(("register_preloaded_module_image(image = \"%s\")\n", image->name));
|
TRACE(("register_preloaded_module_image(image = %p, name = \"%s\")\n",
|
||||||
|
image, image->name));
|
||||||
|
|
||||||
image->is_module = false;
|
image->is_module = false;
|
||||||
|
|
||||||
@@ -1148,9 +1163,10 @@ dump_modules(int argc, char** argv)
|
|||||||
hash_rewind(sModulesHash, &iterator);
|
hash_rewind(sModulesHash, &iterator);
|
||||||
kprintf("-- known modules:\n");
|
kprintf("-- known modules:\n");
|
||||||
|
|
||||||
while ((module = (struct module*)hash_next(sModulesHash, &iterator)) != NULL) {
|
while ((module = (struct module*)hash_next(sModulesHash, &iterator))
|
||||||
kprintf("%p: \"%s\", \"%s\" (%ld), refcount = %ld, state = %d, mimage = %p\n",
|
!= NULL) {
|
||||||
module, module->name,
|
kprintf("%p: \"%s\", \"%s\" (%ld), refcount = %ld, state = %d, "
|
||||||
|
"mimage = %p\n", module, module->name,
|
||||||
module->module_image ? module->module_image->path : "",
|
module->module_image ? module->module_image->path : "",
|
||||||
module->offset, module->ref_count, module->state,
|
module->offset, module->ref_count, module->state,
|
||||||
module->module_image);
|
module->module_image);
|
||||||
@@ -1159,9 +1175,10 @@ dump_modules(int argc, char** argv)
|
|||||||
hash_rewind(sModuleImagesHash, &iterator);
|
hash_rewind(sModuleImagesHash, &iterator);
|
||||||
kprintf("\n-- loaded module images:\n");
|
kprintf("\n-- loaded module images:\n");
|
||||||
|
|
||||||
while ((image = (struct module_image*)hash_next(sModuleImagesHash, &iterator)) != NULL) {
|
while ((image = (struct module_image*)hash_next(sModuleImagesHash,
|
||||||
kprintf("%p: \"%s\" (image_id = %ld), info = %p, refcount = %ld\n", image,
|
&iterator)) != NULL) {
|
||||||
image->path, image->image, image->info, image->ref_count);
|
kprintf("%p: \"%s\" (image_id = %ld), info = %p, refcount = %ld\n",
|
||||||
|
image, image->path, image->image, image->info, image->ref_count);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1818,6 +1835,7 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
// available, we can load an image when we need it.
|
// available, we can load an image when we need it.
|
||||||
// When the boot volume is also where the boot loader pre-loaded the images
|
// When the boot volume is also where the boot loader pre-loaded the images
|
||||||
// from, we get the actual paths for those images.
|
// from, we get the actual paths for those images.
|
||||||
|
TRACE(("module_init_post_boot_device(%d)\n", bootingFromBootLoaderVolume));
|
||||||
|
|
||||||
RecursiveLocker _(sModulesLock);
|
RecursiveLocker _(sModulesLock);
|
||||||
|
|
||||||
@@ -1828,9 +1846,13 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
struct module* module;
|
struct module* module;
|
||||||
while ((module = (struct module*)hash_next(sModulesHash, &iterator))
|
while ((module = (struct module*)hash_next(sModulesHash, &iterator))
|
||||||
!= NULL) {
|
!= NULL) {
|
||||||
if (module->ref_count == 0 && (module->flags & B_BUILT_IN_MODULE) == 0)
|
if (module->ref_count == 0
|
||||||
|
&& (module->flags & B_BUILT_IN_MODULE) == 0) {
|
||||||
|
TRACE((" module %p, \"%s\" unused, clearing image\n", module,
|
||||||
|
module->name));
|
||||||
module->module_image = NULL;
|
module->module_image = NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Now iterate through the images and drop them respectively normalize their
|
// Now iterate through the images and drop them respectively normalize their
|
||||||
// paths.
|
// paths.
|
||||||
@@ -1848,6 +1870,8 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
|
|
||||||
if (image->ref_count == 0) {
|
if (image->ref_count == 0) {
|
||||||
// not in use -- unload it
|
// not in use -- unload it
|
||||||
|
TRACE((" module image %p, \"%s\" unused, removing\n", image,
|
||||||
|
image->path));
|
||||||
hash_remove_current(sModuleImagesHash, &iterator);
|
hash_remove_current(sModuleImagesHash, &iterator);
|
||||||
unload_module_image(image, false);
|
unload_module_image(image, false);
|
||||||
} else if (bootingFromBootLoaderVolume) {
|
} else if (bootingFromBootLoaderVolume) {
|
||||||
@@ -1893,6 +1917,9 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pathNormalized) {
|
if (pathNormalized) {
|
||||||
|
TRACE((" normalized path of module image %p, \"%s\" -> "
|
||||||
|
"\"%s\"\n", image, image->path, pathBuffer.Path()));
|
||||||
|
|
||||||
// set the new path
|
// set the new path
|
||||||
free(image->path);
|
free(image->path);
|
||||||
size_t pathLen = pathBuffer.Length();
|
size_t pathLen = pathBuffer.Length();
|
||||||
@@ -1904,6 +1931,9 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
hash_remove_current(sModuleImagesHash, &iterator);
|
hash_remove_current(sModuleImagesHash, &iterator);
|
||||||
image->next = imagesToReinsert;
|
image->next = imagesToReinsert;
|
||||||
imagesToReinsert = image;
|
imagesToReinsert = image;
|
||||||
|
} else {
|
||||||
|
dprintf("module_init_post_boot_device() failed to normalize "
|
||||||
|
"path of module image %p, \"%s\"\n", image, image->path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1914,6 +1944,8 @@ module_init_post_boot_device(bool bootingFromBootLoaderVolume)
|
|||||||
hash_insert(sModuleImagesHash, image);
|
hash_insert(sModuleImagesHash, image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRACE(("module_init_post_boot_device() done\n"));
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user