Scan the list in reverse order for the shutdown handlers of loaded modules.
This way, when there is a dependency between two modules, the handler of the latter probed runs first. This is a similar approach as the modules are unloaded in the same linkerfile. Sponsored by: Sandvine Incorporated Submitted by: Nima Misaghian <nmisaghian at sandvine dot com> MFC after: 1 week
This commit is contained in:
parent
2e7758a8f6
commit
772753491b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=215544
@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
static MALLOC_DEFINE(M_MODULE, "module", "module data structures");
|
||||
|
||||
typedef TAILQ_HEAD(, module) modulelist_t;
|
||||
typedef TAILQ_HEAD(modulelst, module) modulelist_t;
|
||||
struct module {
|
||||
TAILQ_ENTRY(module) link; /* chain together all modules */
|
||||
TAILQ_ENTRY(module) flink; /* all modules in a file */
|
||||
@ -101,7 +101,7 @@ module_shutdown(void *arg1, int arg2)
|
||||
return;
|
||||
mtx_lock(&Giant);
|
||||
MOD_SLOCK;
|
||||
TAILQ_FOREACH(mod, &modules, link)
|
||||
TAILQ_FOREACH_REVERSE(mod, &modules, modulelst, link)
|
||||
MOD_EVENT(mod, MOD_SHUTDOWN);
|
||||
MOD_SUNLOCK;
|
||||
mtx_unlock(&Giant);
|
||||
|
Loading…
Reference in New Issue
Block a user