Print this page
    
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/sys/vm_usage.h
          +++ new/usr/src/uts/common/sys/vm_usage.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.
  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   22   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   * Copyright 2014 Joyent, Inc.  All rights reserved.
  25   25   */
  26   26  
  27   27  #ifndef _SYS_VM_USAGE_H
  28   28  #define _SYS_VM_USAGE_H
  29   29  
  30   30  #include <sys/types.h>
  31   31  
  32   32  #ifdef  __cplusplus
  33   33  extern "C" {
  34   34  #endif
  35   35  
  36   36  /*
  37   37   * The flags passed to getvmusage() request how to aggregate rss/swap results.
  38   38   * Results can be aggregated by zone, project, task, ruser, and/or euser.
  39   39   *
  40   40   * If VMUSAGE_ALL_* or VMUSAGE_COL_* are passed from a non-global-zone, the
  41   41   * flag is treated as VMUSAGE_*.  For example, VMUSAGE_ALL_ZONES would be
  42   42   * treated as VMUSAGE_ZONE.
  43   43   *
  44   44   * If VMUSAGE_SYSTEM is passed from a non-global zone, a result of type
  45   45   * VMUSAGE_SYSTEM will be returned, but it will only reflect the usage
  46   46   * of the calling zone.
  47   47   *
  48   48   * VMUSAGE_*     requests results for the calling zone.
  49   49   * VMUSAGE_ALL_* requests results for all zones.
  50   50   * VMUSAGE_COL_* requests results for all zones, but collapses out the zoneid.
  51   51   *               For example, VMUSAGE_COL_PROJECTS requests results for all
  52   52   *               projects in all zones, and project N in ANY zone is treated
  53   53   *               as the same project.
  54   54   */
  55   55  #define VMUSAGE_SYSTEM          0x1     /* rss/swap for ALL processes */
  56   56  #define VMUSAGE_ZONE            0x2     /* rss/swap for caller's zone */
  57   57  #define VMUSAGE_PROJECTS        0x4     /* rss/swap for all projects in */
  58   58                                          /* caller's zone */
  59   59  #define VMUSAGE_TASKS           0x8     /* rss/swap for all tasks in */
  60   60                                          /* caller's zones */
  61   61  #define VMUSAGE_RUSERS          0x10    /* rss/swap for all users (by process */
  62   62                                          /* ruser) in the caller's zone */
  63   63  #define VMUSAGE_EUSERS          0x20    /* same as VMUSAGE_RUSERS, but by */
  64   64                                          /* euser */
  65   65  
  66   66  #define VMUSAGE_ALL_ZONES       0x40    /* rss/swap for all zones */
  67   67  #define VMUSAGE_ALL_PROJECTS    0x80    /* rss/swap for all projects in */
  68   68                                          /* all zones */
  69   69  #define VMUSAGE_ALL_TASKS       0x100   /* rss/swap for all tasks in all */
  70   70                                          /* zones */
  71   71  #define VMUSAGE_ALL_RUSERS      0x200   /* rss/swap for all users (by process */
  72   72                                          /* ruser) in all zones */
  73   73  #define VMUSAGE_ALL_EUSERS      0x400   /* same as VMUSAGE_ALL_RUSERS, but by */
  74   74                                          /* euser */
  75   75  
  76   76  #define VMUSAGE_COL_PROJECTS    0x800   /* rss/swap for all projects in */
  77   77                                          /* all zones.  Collapse zoneid. */
  78   78  #define VMUSAGE_COL_RUSERS      0x1000  /* rss/swap for all users (by process */
  79   79                                          /* ruser), in all zones.  Collapse */
  80   80                                          /* zoneid */
  81   81  #define VMUSAGE_COL_EUSERS      0x2000  /* same as VMUSAGE_COL_RUSERS, but by */
  82   82                                          /* euser */
  83   83  #define VMUSAGE_A_ZONE          0x4000  /* rss/swap for a specified zone */
  84   84  
  85   85  #define VMUSAGE_MASK            0x7fff  /* all valid flags for getvmusage() */
  86   86  
  87   87  typedef struct vmusage {
  88   88          id_t    vmu_zoneid;             /* zoneid, or ALL_ZONES for */
  89   89                                          /* VMUSAGE_COL_* results */
  90   90                                          /* ALL_ZONES means that the result */
  91   91                                          /* reflects swap and rss usage for */
  92   92                                          /* a projid/uid across all zones */
  93   93          uint_t  vmu_type;               /* Entity type of result.  One of:  */
  94   94                                          /* VMUSAGE_(SYSTEM|ZONE|PROJECTS| */
  95   95                                          /* TASKS|RUSERS|EUSERS) */
  96   96          id_t    vmu_id;                 /* zoneid, projid, taskid, ... */
  97   97          size_t  vmu_rss_all;            /* total resident memory of entity */
  98   98                                          /* in bytes */
  99   99          size_t  vmu_rss_private;        /* total resident private memory */
 100  100          size_t  vmu_rss_shared;         /* total resident shared memory */
 101  101          size_t  vmu_swap_all;           /* total swap reserved, in bytes */
 102  102          size_t  vmu_swap_private;       /* swap reserved for private mappings */
 103  103          size_t  vmu_swap_shared;        /* swap reserved for shared mappings */
 104  104  
 105  105  } vmusage_t;
 106  106  
 107  107  extern int getvmusage(uint_t flags, time_t age, vmusage_t *buf, size_t *nres);
 108  108  
 109  109  #ifdef  _KERNEL
 110  110  
 111  111  int vm_getusage(uint_t, time_t, vmusage_t *, size_t *, int);
 112  112  void vm_usage_init();
 113  113  int vm_map_inval(pid_t, caddr_t, size_t);
 114  114  
 115  115  #endif  /* _KERNEL */
 116  116  
 117  117  #ifdef  __cplusplus
 118  118  }
 119  119  #endif
 120  120  
 121  121  #endif  /* _SYS_VM_USAGE_H */
  
    | 
      ↓ open down ↓ | 
    121 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX