Skip to content
Snippets Groups Projects
loader.c 27.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	return total_mod_loaded;
    
    Mark Spencer's avatar
    Mark Spencer committed
    }
    
    int ast_loader_register(int (*v)(void)) 
    {
    	/* XXX Should be more flexible here, taking > 1 verboser XXX */
    
    	struct loadupdate *tmp;	
    	if (!(tmp = ast_malloc(sizeof(*tmp))))
    
    		return -1;
    	tmp->updater = v;
    	if (AST_LIST_LOCK(&module_list))
    		ast_log(LOG_WARNING, "Failed to lock\n");
    	AST_LIST_INSERT_HEAD(&updaters, tmp, next);
    	AST_LIST_UNLOCK(&module_list);
    	return 0;
    
    Mark Spencer's avatar
    Mark Spencer committed
    }
    
    int ast_loader_unregister(int (*v)(void))
    {
    
    	struct loadupdate *cur;
    
    	if (AST_LIST_LOCK(&module_list))
    
    Mark Spencer's avatar
    Mark Spencer committed
    		ast_log(LOG_WARNING, "Failed to lock\n");
    
    	AST_LIST_TRAVERSE_SAFE_BEGIN(&updaters, cur, next) {
    		if (cur->updater == v)	{
    			AST_LIST_REMOVE_CURRENT(&updaters, next);
    
    	AST_LIST_TRAVERSE_SAFE_END;
    	AST_LIST_UNLOCK(&module_list);
    	return cur ? 0 : -1;
    
    Mark Spencer's avatar
    Mark Spencer committed
    }