Print this page
re #13613 rb4516 Tunables needs volatile keyword

@@ -20,10 +20,13 @@
  */
 /*
  * 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,23 +56,28 @@
 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 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 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 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 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 */
+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.