/[guile]/guile/guile-core/libguile/gc-malloc.c
ViewVC logotype

Diff of /guile/guile-core/libguile/gc-malloc.c

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

revision 1.13 by mdj, Tue Dec 10 20:25:26 2002 UTC revision 1.14 by mdj, Wed Dec 11 08:35:22 2002 UTC
# Line 99  extern unsigned long * __libc_ia64_regis Line 99  extern unsigned long * __libc_ia64_regis
99    
100  static int scm_i_minyield_malloc;  static int scm_i_minyield_malloc;
101    
 static scm_t_mutex malloc_mutex;  
   
 void  
 scm_gc_malloc_prehistory ()  
 {  
   scm_i_plugin_mutex_init (&malloc_mutex, 0);  
 }  
   
102  void  void
103  scm_gc_init_malloc (void)  scm_gc_init_malloc (void)
104  {  {
# Line 134  scm_realloc (void *mem, size_t size) Line 126  scm_realloc (void *mem, size_t size)
126  {  {
127    void *ptr;    void *ptr;
128    
   scm_i_plugin_mutex_lock (&malloc_mutex);  
129    SCM_SYSCALL (ptr = realloc (mem, size));    SCM_SYSCALL (ptr = realloc (mem, size));
   scm_i_plugin_mutex_unlock (&malloc_mutex);  
130    if (ptr)    if (ptr)
131      return ptr;      return ptr;
132    
# Line 144  scm_realloc (void *mem, size_t size) Line 134  scm_realloc (void *mem, size_t size)
134        
135    scm_i_sweep_all_segments ("realloc");    scm_i_sweep_all_segments ("realloc");
136        
   scm_i_plugin_mutex_lock (&malloc_mutex);  
137    SCM_SYSCALL (ptr = realloc (mem, size));    SCM_SYSCALL (ptr = realloc (mem, size));
   scm_i_plugin_mutex_unlock (&malloc_mutex);  
138    if (ptr)    if (ptr)
139      {      {
140        scm_i_thread_wake_up ();        scm_i_thread_wake_up ();
# Line 158  scm_realloc (void *mem, size_t size) Line 146  scm_realloc (void *mem, size_t size)
146        
147    scm_i_thread_wake_up ();    scm_i_thread_wake_up ();
148        
   scm_i_plugin_mutex_lock (&malloc_mutex);  
149    SCM_SYSCALL (ptr = realloc (mem, size));    SCM_SYSCALL (ptr = realloc (mem, size));
   scm_i_plugin_mutex_unlock (&malloc_mutex);  
150    if (ptr)    if (ptr)
151      return ptr;      return ptr;
152    
# Line 186  scm_calloc (size_t sz) Line 172  scm_calloc (size_t sz)
172      By default, try to use calloc, as it is likely more efficient than      By default, try to use calloc, as it is likely more efficient than
173      calling memset by hand.      calling memset by hand.
174     */     */
   scm_i_plugin_mutex_lock (&malloc_mutex);  
175    SCM_SYSCALL(ptr= calloc (sz, 1));    SCM_SYSCALL(ptr= calloc (sz, 1));
   scm_i_plugin_mutex_unlock (&malloc_mutex);  
176    if (ptr)    if (ptr)
177      return ptr;      return ptr;
178        

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

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