Print this page
    
OS-3602 lxbrand LTP recv* tests failing on MSG_ERRQUEUE flag
OS-3600 lxbrand 32bit cannot boot with OS-3594 fix
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Bryan Cantrill <bryan@joyent.com>
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/sys/vmsystm.h
          +++ new/usr/src/uts/common/sys/vmsystm.h
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  
    | 
      ↓ open down ↓ | 
    11 lines elided | 
    
      ↑ open up ↑ | 
  
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  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 + * Copyright (c) 2014, Joyent, Inc. All rights reserved.
       23 + */
       24 +/*
  22   25   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23   26   * Use is subject to license terms.
  24   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
  35   38   * software developed by the University of California, Berkeley, and its
  36   39   * contributors.
  37   40   */
  38   41  
  39   42  #ifndef _SYS_VMSYSTM_H
  40   43  #define _SYS_VMSYSTM_H
  41   44  
  42   45  #include <sys/proc.h>
  43   46  
  44   47  #ifdef  __cplusplus
  45   48  extern "C" {
  46   49  #endif
  47   50  
  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   61  extern pgcnt_t  slowscan;
  59   62  extern 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   66  extern pgcnt_t  maxpgio;        /* max paging i/o per sec before start swaps */
  64   67  extern pgcnt_t  lotsfree;       /* max free before clock freezes */
  65   68  extern pgcnt_t  desfree;        /* minimum free pages before swapping begins */
  66   69  extern pgcnt_t  minfree;        /* no of pages to try to keep free via daemon */
  67   70  extern pgcnt_t  needfree;       /* no of pages currently being waited for */
  68   71  extern pgcnt_t  throttlefree;   /* point at which we block PG_WAIT calls */
  69   72  extern pgcnt_t  pageout_reserve; /* point at which we deny non-PG_WAIT calls */
  70   73  extern pgcnt_t  pages_before_pager; /* XXX */
  71   74  
  72   75  /*
  73   76   * TRUE if the pageout daemon, fsflush daemon or the scheduler.  These
  74   77   * processes can't sleep while trying to free up memory since a deadlock
  75   78   * will occur if they do sleep.
  76   79   */
  77   80  #define NOMEMWAIT() (ttoproc(curthread) == proc_pageout || \
  78   81                          ttoproc(curthread) == proc_fsflush || \
  79   82                          ttoproc(curthread) == proc_sched)
  80   83  
  81   84  /* insure non-zero */
  82   85  #define nz(x)   ((x) != 0 ? (x) : 1)
  83   86  
  84   87  /*
  85   88   * Flags passed by the swapper to swapout routines of each
  86   89   * scheduling class.
  87   90   */
  88   91  #define HARDSWAP        1
  89   92  #define SOFTSWAP        2
  90   93  
  91   94  /*
  92   95   * Values returned by valid_usr_range()
  93   96   */
  94   97  #define RANGE_OKAY      (0)
  95   98  #define RANGE_BADADDR   (1)
  96   99  #define RANGE_BADPROT   (2)
  97  100  
  98  101  /*
  99  102   * map_pgsz: temporary - subject to change.
 100  103   */
 101  104  #define MAPPGSZ_VA      0x01
 102  105  #define MAPPGSZ_STK     0x02
 103  106  #define MAPPGSZ_HEAP    0x04
 104  107  #define MAPPGSZ_ISM     0x08
 105  108  
 106  109  /*
 107  110   * Flags for map_pgszcvec
 108  111   */
 109  112  #define MAPPGSZC_SHM    0x01
 110  113  #define MAPPGSZC_PRIVM  0x02
 111  114  #define MAPPGSZC_STACK  0x04
 112  115  #define MAPPGSZC_HEAP   0x08
 113  116  
 114  117  /*
 115  118   * vacalign values for choose_addr
 116  119   */
 117  120  #define ADDR_NOVACALIGN 0
 118  121  #define ADDR_VACALIGN   1
 119  122  
 120  123  struct as;
 121  124  struct page;
 122  125  struct anon;
 123  126  
 124  127  extern int maxslp;
 125  128  extern ulong_t pginrate;
 126  129  extern ulong_t pgoutrate;
 127  130  extern void swapout_lwp(klwp_t *);
 128  131  
 129  132  extern  int valid_va_range(caddr_t *basep, size_t *lenp, size_t minlen,
 130  133                  int dir);
 131  134  extern  int valid_va_range_aligned(caddr_t *basep, size_t *lenp,
 132  135      size_t minlen, int dir, size_t align, size_t redzone, size_t off);
 133  136  
 134  137  extern  int valid_usr_range(caddr_t, size_t, uint_t, struct as *, caddr_t);
 135  138  extern  int useracc(void *, size_t, int);
 136  139  extern  size_t map_pgsz(int maptype, struct proc *p, caddr_t addr, size_t len,
 137  140      int memcntl);
 138  141  extern  uint_t map_pgszcvec(caddr_t addr, size_t size, uintptr_t off, int flags,
 139  142      int type, int memcntl);
 140  143  extern int choose_addr(struct as *as, caddr_t *addrp, size_t len, offset_t off,
 141  144      int vacalign, uint_t flags);
 142  145  extern  void map_addr(caddr_t *addrp, size_t len, offset_t off, int vacalign,
 143  146      uint_t flags);
 144  147  extern  int map_addr_vacalign_check(caddr_t, u_offset_t);
 145  148  extern  void map_addr_proc(caddr_t *addrp, size_t len, offset_t off,
 146  149      int vacalign, caddr_t userlimit, struct proc *p, uint_t flags);
 147  150  extern  void vmmeter(void);
 148  151  extern  int cow_mapin(struct as *, caddr_t, caddr_t, struct page **,
 149  152          struct anon **, size_t *, int);
 150  153  
 151  154  extern  caddr_t ppmapin(struct page *, uint_t, caddr_t);
  
    | 
      ↓ open down ↓ | 
    120 lines elided | 
    
      ↑ open up ↑ | 
  
 152  155  extern  void    ppmapout(caddr_t);
 153  156  
 154  157  extern  int pf_is_memory(pfn_t);
 155  158  
 156  159  extern  void    dcache_flushall(void);
 157  160  
 158  161  extern  void    *boot_virt_alloc(void *addr, size_t size);
 159  162  
 160  163  extern  size_t  exec_get_spslew(void);
 161  164  
      165 +extern  caddr_t map_userlimit(proc_t *pp, struct as *as, int flags);
      166 +
 162  167  #endif  /* _KERNEL */
 163  168  
 164  169  #ifdef  __cplusplus
 165  170  }
 166  171  #endif
 167  172  
 168  173  #endif  /* _SYS_VMSYSTM_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX