X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Fmodule.c;h=bc4f3de0c941ad923c040345795d8818c6bc1616;hb=79257ba540581e198c9d9b047fe0738a25c324ff;hp=a1826b91430e2255396d4f6a9f82278bc8c0772f;hpb=00e74b693f28b3f543d8ec18ae631abab8023d5c;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/module.c b/ltt/branches/poly/lttv/lttv/module.c index a1826b91..bc4f3de0 100644 --- a/ltt/branches/poly/lttv/lttv/module.c +++ b/ltt/branches/poly/lttv/lttv/module.c @@ -20,6 +20,10 @@ /* module.c : Implementation of the module loading/unloading mechanism. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include @@ -559,6 +563,7 @@ static void destroy() locked_libraries = g_new(LttvLibrary *, nb); for(i = 0 ; i < nb ; i++) { + //g_assert(nb == libraries->len); l = (LttvLibrary *)(libraries->pdata[i]); locked_libraries[i] = l; library_lock_loaded(l); @@ -566,7 +571,16 @@ static void destroy() m = (LttvModule *)(l->modules->pdata[j]); while(m->info.require_count > 0) lttv_module_release(m); } + library_unlock_loaded(l); while(l->info.load_count > 0) lttv_library_unload(l); + + /* If the number of librairies loaded have changed, restart from the + * beginning */ + if(nb != libraries->len) { + i = 0; + nb = libraries->len; + } + } for(i = 0 ; i < nb ; i++) {