forked from enlightenment/efl
loggify eina_module, adding couple of debug info.
SVN revision: 42194
This commit is contained in:
parent
c1e2a300e4
commit
2f8ded1037
|
@ -49,6 +49,8 @@
|
||||||
|
|
||||||
#define READBUFSIZ 65536
|
#define READBUFSIZ 65536
|
||||||
|
|
||||||
|
#define EINA_LOG_COLOR_DEFAULT "\033[36m"
|
||||||
|
|
||||||
/* eina magic types */
|
/* eina magic types */
|
||||||
#define EINA_MAGIC_STRINGSHARE 0x98761234
|
#define EINA_MAGIC_STRINGSHARE 0x98761234
|
||||||
#define EINA_MAGIC_STRINGSHARE_NODE 0x98761235
|
#define EINA_MAGIC_STRINGSHARE_NODE 0x98761235
|
||||||
|
|
|
@ -58,6 +58,7 @@ void *alloca (size_t);
|
||||||
#include "eina_error.h"
|
#include "eina_error.h"
|
||||||
#include "eina_module.h"
|
#include "eina_module.h"
|
||||||
#include "eina_file.h"
|
#include "eina_file.h"
|
||||||
|
#include "eina_log.h"
|
||||||
|
|
||||||
/*============================================================================*
|
/*============================================================================*
|
||||||
* Local *
|
* Local *
|
||||||
|
@ -67,6 +68,11 @@ void *alloca (size_t);
|
||||||
* @cond LOCAL
|
* @cond LOCAL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static int EINA_MODULE_LOG_DOM = -1;
|
||||||
|
#define ERR(...) EINA_LOG_DOM_ERR(EINA_MODULE_LOG_DOM, __VA_ARGS__)
|
||||||
|
#define WRN(...) EINA_LOG_DOM_WARN(EINA_MODULE_LOG_DOM, __VA_ARGS__)
|
||||||
|
#define DBG(...) EINA_LOG_DOM_DBG(EINA_MODULE_LOG_DOM, __VA_ARGS__)
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||||
# define MODULE_EXTENSION ".dll"
|
# define MODULE_EXTENSION ".dll"
|
||||||
#else
|
#else
|
||||||
|
@ -118,9 +124,9 @@ static void _dir_list_cb(const char *name, const char *path, void *data)
|
||||||
size_t length;
|
size_t length;
|
||||||
|
|
||||||
length = strlen(name);
|
length = strlen(name);
|
||||||
if (length < strlen(MODULE_EXTENSION) + 1) /* x.so */
|
if (length < sizeof(MODULE_EXTENSION)) /* x.so */
|
||||||
return;
|
return;
|
||||||
if (!strcmp(name + length - strlen(MODULE_EXTENSION),
|
if (!strcmp(name + length - sizeof(MODULE_EXTENSION) + 1,
|
||||||
MODULE_EXTENSION))
|
MODULE_EXTENSION))
|
||||||
{
|
{
|
||||||
char *file;
|
char *file;
|
||||||
|
@ -203,9 +209,25 @@ eina_module_init(void)
|
||||||
if (_eina_module_count != 1)
|
if (_eina_module_count != 1)
|
||||||
goto end_init;
|
goto end_init;
|
||||||
|
|
||||||
|
if (!eina_log_init())
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Could not initialize eina logging module.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EINA_MODULE_LOG_DOM = eina_log_domain_register
|
||||||
|
("eina_module", EINA_LOG_COLOR_DEFAULT);
|
||||||
|
if (EINA_MODULE_LOG_DOM < 0)
|
||||||
|
{
|
||||||
|
EINA_LOG_ERR("Could not register log domain: eina_module\n");
|
||||||
|
eina_log_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!eina_error_init())
|
if (!eina_error_init())
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Could not initialize eina error module.\n");
|
ERR("Could not initialize eina error module.\n");
|
||||||
|
eina_log_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,6 +265,10 @@ eina_module_shutdown(void)
|
||||||
* delete the list of modules here
|
* delete the list of modules here
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
eina_log_domain_unregister(EINA_MODULE_LOG_DOM);
|
||||||
|
EINA_MODULE_LOG_DOM = -1;
|
||||||
|
eina_log_shutdown();
|
||||||
|
|
||||||
end_shutdown:
|
end_shutdown:
|
||||||
return _eina_module_count;
|
return _eina_module_count;
|
||||||
}
|
}
|
||||||
|
@ -274,6 +300,7 @@ EAPI Eina_Module *eina_module_new(const char *file)
|
||||||
m->file = strdup(file);
|
m->file = strdup(file);
|
||||||
m->ref = 0;
|
m->ref = 0;
|
||||||
m->handle = NULL;
|
m->handle = NULL;
|
||||||
|
DBG("m=%p, file=%s\n", m, file);
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
@ -293,6 +320,8 @@ EAPI Eina_Bool eina_module_free(Eina_Module *m)
|
||||||
{
|
{
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
||||||
|
|
||||||
|
DBG("m=%p, handle=%p, file=%s, refs=%d\n", m, m->handle, m->file, m->ref);
|
||||||
|
|
||||||
if (m->handle)
|
if (m->handle)
|
||||||
{
|
{
|
||||||
if (eina_module_unload(m) == EINA_FALSE)
|
if (eina_module_unload(m) == EINA_FALSE)
|
||||||
|
@ -330,13 +359,14 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m)
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
||||||
|
|
||||||
|
DBG("m=%p, handle=%p, file=%s, refs=%d\n", m, m->handle, m->file, m->ref);
|
||||||
|
|
||||||
if (m->handle) goto loaded;
|
if (m->handle) goto loaded;
|
||||||
|
|
||||||
dl_handle = dlopen(m->file, RTLD_NOW);
|
dl_handle = dlopen(m->file, RTLD_NOW);
|
||||||
if (!dl_handle)
|
if (!dl_handle)
|
||||||
{
|
{
|
||||||
EINA_ERROR_PDBG("could not dlopen(\"%s\", RTLD_NOW): %s\n",
|
WRN("could not dlopen(\"%s\", RTLD_NOW): %s\n", m->file, dlerror());
|
||||||
m->file, dlerror());
|
|
||||||
eina_error_set(EINA_ERROR_WRONG_MODULE);
|
eina_error_set(EINA_ERROR_WRONG_MODULE);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -347,13 +377,17 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m)
|
||||||
if ((*initcall)() == EINA_TRUE)
|
if ((*initcall)() == EINA_TRUE)
|
||||||
goto ok;
|
goto ok;
|
||||||
|
|
||||||
|
WRN("could not find eina's entry symbol %s inside module %s\n",
|
||||||
|
EINA_MODULE_SYMBOL_INIT, m->file);
|
||||||
eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
|
eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
|
||||||
dlclose(dl_handle);
|
dlclose(dl_handle);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
ok:
|
ok:
|
||||||
|
DBG("successfully loaded %s", m->file);
|
||||||
m->handle = dl_handle;
|
m->handle = dl_handle;
|
||||||
loaded:
|
loaded:
|
||||||
m->ref++;
|
m->ref++;
|
||||||
|
DBG("ref %d", m->ref);
|
||||||
|
|
||||||
eina_error_set(0);
|
eina_error_set(0);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
@ -378,6 +412,8 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m)
|
||||||
Eina_Module_Shutdown *shut;
|
Eina_Module_Shutdown *shut;
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
|
||||||
|
|
||||||
|
DBG("m=%p, handle=%p, file=%s, refs=%d\n", m, m->handle, m->file, m->ref);
|
||||||
|
|
||||||
m->ref--;
|
m->ref--;
|
||||||
if (!m->ref)
|
if (!m->ref)
|
||||||
{
|
{
|
||||||
|
@ -386,6 +422,7 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m)
|
||||||
(*shut)();
|
(*shut)();
|
||||||
dlclose(m->handle);
|
dlclose(m->handle);
|
||||||
m->handle = NULL;
|
m->handle = NULL;
|
||||||
|
DBG("unloaded module %s\n", m->file);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
@ -534,7 +571,7 @@ EAPI void eina_module_list_load(Eina_Array *array)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(array);
|
EINA_SAFETY_ON_NULL_RETURN(array);
|
||||||
|
DBG("array %p, count %u\n", array, array->count);
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
||||||
eina_module_load(m);
|
eina_module_load(m);
|
||||||
}
|
}
|
||||||
|
@ -550,7 +587,7 @@ EAPI void eina_module_list_unload(Eina_Array *array)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(array);
|
EINA_SAFETY_ON_NULL_RETURN(array);
|
||||||
|
DBG("array %p, count %u\n", array, array->count);
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
||||||
eina_module_unload(m);
|
eina_module_unload(m);
|
||||||
}
|
}
|
||||||
|
@ -566,7 +603,7 @@ EAPI void eina_module_list_flush(Eina_Array *array)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(array);
|
EINA_SAFETY_ON_NULL_RETURN(array);
|
||||||
|
DBG("array %p, count %u\n", array, array->count);
|
||||||
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
|
||||||
eina_module_free(m);
|
eina_module_free(m);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue