Print this page
re #13613 rb4516 Tunables needs volatile keyword

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/vmsystm.h
          +++ new/usr/src/uts/common/sys/vmsystm.h
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
       25 +/*
       26 + * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
       27 + */
  25   28  
  26   29  /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
  27   30  /*        All Rights Reserved   */
  28   31  
  29   32  /*
  30   33   * University Copyright- Copyright (c) 1982, 1986, 1988
  31   34   * The Regents of the University of California
  32   35   * All Rights Reserved
  33   36   *
  34   37   * University Acknowledgment- Portions of this document are derived from
↓ open down ↓ 13 lines elided ↑ open up ↑
  48   51  /*
  49   52   * Miscellaneous virtual memory subsystem variables and structures.
  50   53   */
  51   54  #ifdef _KERNEL
  52   55  extern pgcnt_t  freemem;        /* remaining blocks of free memory */
  53   56  extern pgcnt_t  avefree;        /* 5 sec moving average of free memory */
  54   57  extern pgcnt_t  avefree30;      /* 30 sec moving average of free memory */
  55   58  extern pgcnt_t  deficit;        /* estimate of needs of new swapped in procs */
  56   59  extern pgcnt_t  nscan;          /* number of scans in last second */
  57   60  extern pgcnt_t  desscan;        /* desired pages scanned per second */
  58      -extern pgcnt_t  slowscan;
  59      -extern pgcnt_t  fastscan;
       61 +extern volatile pgcnt_t slowscan;
       62 +extern volatile pgcnt_t fastscan;
  60   63  extern pgcnt_t  pushes;         /* number of pages pushed to swap device */
  61   64  
  62   65  /* writable copies of tunables */
  63      -extern pgcnt_t  maxpgio;        /* max paging i/o per sec before start swaps */
  64      -extern pgcnt_t  lotsfree;       /* max free before clock freezes */
  65      -extern pgcnt_t  desfree;        /* minimum free pages before swapping begins */
  66      -extern pgcnt_t  minfree;        /* no of pages to try to keep free via daemon */
       66 +extern volatile pgcnt_t maxpgio;        /* max paging i/o per sec before */
       67 +                                        /* start swaps */
       68 +extern volatile pgcnt_t lotsfree;       /* max free before clock freezes */
       69 +extern volatile pgcnt_t desfree;        /* minimum free pages before swapping */
       70 +                                        /* begins */
       71 +extern volatile pgcnt_t minfree;        /* no of pages to try to keep free */
       72 +                                        /* via daemon */
  67   73  extern pgcnt_t  needfree;       /* no of pages currently being waited for */
  68      -extern pgcnt_t  throttlefree;   /* point at which we block PG_WAIT calls */
  69      -extern pgcnt_t  pageout_reserve; /* point at which we deny non-PG_WAIT calls */
  70      -extern pgcnt_t  pages_before_pager; /* XXX */
       74 +extern volatile pgcnt_t throttlefree;   /* point at which we block PG_WAIT */
       75 +                                        /* calls */
       76 +extern volatile pgcnt_t pageout_reserve; /* point at which we deny */
       77 +                                        /* non-PG_WAIT calls */
       78 +extern volatile pgcnt_t pages_before_pager; /* XXX */
  71   79  
  72   80  /*
  73   81   * TRUE if the pageout daemon, fsflush daemon or the scheduler.  These
  74   82   * processes can't sleep while trying to free up memory since a deadlock
  75   83   * will occur if they do sleep.
  76   84   */
  77   85  #define NOMEMWAIT() (ttoproc(curthread) == proc_pageout || \
  78   86                          ttoproc(curthread) == proc_fsflush || \
  79   87                          ttoproc(curthread) == proc_sched)
  80   88  
↓ open down ↓ 88 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX