On Fri, Feb 12, 2010 at 07:15:52PM +0100, Stefan Manegold wrote:
> Peter,
> 
> > +/* a thread informs it is goin to (preload==1) or stops (preload==-1) 
> > using a range of memory */
> >  void
> > -MT_mmap_pin(void *base, size_t len)
> > +MT_mmap_inform(void *base, size_t len, int preload, int advise, int 
> > writable)
> >  {
> >     int i;
> >  
> >     (void) pthread_mutex_lock(&MT_mmap_lock);
> >     i = MT_mmap_idx(base, len);
> >     if (i >= 0) {
> > -           MT_mmap_tab[i].pincnt++;
> > +           if (writable) MT_mmap_tab[i].writable = (writable > 0);
> > +           MT_mmap_tab[i].random += (advise == BUF_WILLNEED); /* done as a 
> > counter to keep track of multiple threads */
>                                          ^^^^^^^^^^^^^^^^^^^^^^^^
> shouldn't this rather be something like
>               MT_mmap_tab[i].random += preload * (advise == BUF_WILLNEED);

I just checked this in --- hope it's indeed correct ...

Stefan

> ?
> Otherwise (i.e., in the current case), both BATpreload_() & _BATpreload()
> only increment MT_mmap_tab[i].random, but never decrement it, right?
> 
> Stefan
> 
> > +           MT_mmap_tab[i].usecnt += preload; /* active thread count */
> > +           if (preload > 0) (void) posix_madvise(base, len, advise);
> >     }
> >     (void) pthread_mutex_unlock(&MT_mmap_lock);
> >  
> >  }

-- 
| Dr. Stefan Manegold | mailto:[email protected] |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4199       |

------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers

Reply via email to