/[pupa]/pupa/kern/dl.c
ViewVC logotype

Diff of /pupa/kern/dl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by okuji, Fri Jan 17 02:52:05 2003 UTC revision 1.4 by okuji, Mon Jan 20 04:13:46 2003 UTC
# Line 459  pupa_dl_resolve_dependencies (pupa_dl_t Line 459  pupa_dl_resolve_dependencies (pupa_dl_t
459  int  int
460  pupa_dl_ref (pupa_dl_t mod)  pupa_dl_ref (pupa_dl_t mod)
461  {  {
462      pupa_dl_dep_t dep;
463    
464      for (dep = mod->dep; dep; dep = dep->next)
465        pupa_dl_ref (dep->mod);
466      
467    return ++mod->ref_count;    return ++mod->ref_count;
468  }  }
469    
470  int  int
471  pupa_dl_unref (pupa_dl_t mod)  pupa_dl_unref (pupa_dl_t mod)
472  {  {
473    int ret;    pupa_dl_dep_t dep;
474    
475    ret = --mod->ref_count;    for (dep = mod->dep; dep; dep = dep->next)
476    if (ret <= 0)      pupa_dl_unref (dep->mod);
477      pupa_dl_unload (mod);    
478      return --mod->ref_count;
   return ret;  
479  }  }
480    
481  /* Load a module from core memory.  */  /* Load a module from core memory.  */
# Line 605  pupa_dl_unload (pupa_dl_t mod) Line 609  pupa_dl_unload (pupa_dl_t mod)
609    for (dep = mod->dep; dep; dep = depn)    for (dep = mod->dep; dep; dep = depn)
610      {      {
611        depn = dep->next;        depn = dep->next;
612        pupa_dl_unref (dep->mod);        
613          if (! pupa_dl_unref (dep->mod))
614            pupa_dl_unload (dep->mod);
615          
616        pupa_free (dep);        pupa_free (dep);
617      }      }
618    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26