Print this page
re #13613 rb4516 Tunables needs volatile keyword
        
*** 20,29 ****
--- 20,32 ----
   */
  /*
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
+ /*
+  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+  */
  
  /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
  /*        All Rights Reserved   */
  
  /*
*** 53,75 ****
  extern pgcnt_t  avefree;        /* 5 sec moving average of free memory */
  extern pgcnt_t  avefree30;      /* 30 sec moving average of free memory */
  extern pgcnt_t  deficit;        /* estimate of needs of new swapped in procs */
  extern pgcnt_t  nscan;          /* number of scans in last second */
  extern pgcnt_t  desscan;        /* desired pages scanned per second */
! extern pgcnt_t  slowscan;
! extern pgcnt_t  fastscan;
  extern pgcnt_t  pushes;         /* number of pages pushed to swap device */
  
  /* writable copies of tunables */
! extern pgcnt_t  maxpgio;        /* max paging i/o per sec before start swaps */
! extern pgcnt_t  lotsfree;       /* max free before clock freezes */
! extern pgcnt_t  desfree;        /* minimum free pages before swapping begins */
! extern pgcnt_t  minfree;        /* no of pages to try to keep free via daemon */
  extern pgcnt_t  needfree;       /* no of pages currently being waited for */
! extern pgcnt_t  throttlefree;   /* point at which we block PG_WAIT calls */
! extern pgcnt_t  pageout_reserve; /* point at which we deny non-PG_WAIT calls */
! extern pgcnt_t  pages_before_pager; /* XXX */
  
  /*
   * TRUE if the pageout daemon, fsflush daemon or the scheduler.  These
   * processes can't sleep while trying to free up memory since a deadlock
   * will occur if they do sleep.
--- 56,83 ----
  extern pgcnt_t  avefree;        /* 5 sec moving average of free memory */
  extern pgcnt_t  avefree30;      /* 30 sec moving average of free memory */
  extern pgcnt_t  deficit;        /* estimate of needs of new swapped in procs */
  extern pgcnt_t  nscan;          /* number of scans in last second */
  extern pgcnt_t  desscan;        /* desired pages scanned per second */
! extern volatile pgcnt_t slowscan;
! extern volatile pgcnt_t fastscan;
  extern pgcnt_t  pushes;         /* number of pages pushed to swap device */
  
  /* writable copies of tunables */
! extern volatile pgcnt_t maxpgio;        /* max paging i/o per sec before */
!                                         /* start swaps */
! extern volatile pgcnt_t lotsfree;       /* max free before clock freezes */
! extern volatile pgcnt_t desfree;        /* minimum free pages before swapping */
!                                         /* begins */
! extern volatile pgcnt_t minfree;        /* no of pages to try to keep free */
!                                         /* via daemon */
  extern pgcnt_t  needfree;       /* no of pages currently being waited for */
! extern volatile pgcnt_t throttlefree;   /* point at which we block PG_WAIT */
!                                         /* calls */
! extern volatile pgcnt_t pageout_reserve; /* point at which we deny */
!                                         /* non-PG_WAIT calls */
! extern volatile pgcnt_t pages_before_pager; /* XXX */
  
  /*
   * TRUE if the pageout daemon, fsflush daemon or the scheduler.  These
   * processes can't sleep while trying to free up memory since a deadlock
   * will occur if they do sleep.