~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/virtio_balloon.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _LINUX_VIRTIO_BALLOON_H
  2 #define _LINUX_VIRTIO_BALLOON_H
  3 /* This header is BSD licensed so anyone can use the definitions to implement
  4  * compatible drivers/servers.
  5  *
  6  * Redistribution and use in source and binary forms, with or without
  7  * modification, are permitted provided that the following conditions
  8  * are met:
  9  * 1. Redistributions of source code must retain the above copyright
 10  *    notice, this list of conditions and the following disclaimer.
 11  * 2. Redistributions in binary form must reproduce the above copyright
 12  *    notice, this list of conditions and the following disclaimer in the
 13  *    documentation and/or other materials provided with the distribution.
 14  * 3. Neither the name of IBM nor the names of its contributors
 15  *    may be used to endorse or promote products derived from this software
 16  *    without specific prior written permission.
 17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
 18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 20  * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
 21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 27  * SUCH DAMAGE. */
 28 #include <linux/types.h>
 29 #include <linux/virtio_types.h>
 30 #include <linux/virtio_ids.h>
 31 #include <linux/virtio_config.h>
 32 
 33 /* The feature bitmap for virtio balloon */
 34 #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
 35 #define VIRTIO_BALLOON_F_STATS_VQ       1 /* Memory Stats virtqueue */
 36 #define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */
 37 #define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3 /* VQ to report free pages */
 38 #define VIRTIO_BALLOON_F_PAGE_POISON    4 /* Guest is using page poisoning */
 39 #define VIRTIO_BALLOON_F_REPORTING      5 /* Page reporting virtqueue */
 40 
 41 /* Size of a PFN in the balloon interface. */
 42 #define VIRTIO_BALLOON_PFN_SHIFT 12
 43 
 44 #define VIRTIO_BALLOON_CMD_ID_STOP      0
 45 #define VIRTIO_BALLOON_CMD_ID_DONE      1
 46 struct virtio_balloon_config {
 47         /* Number of pages host wants Guest to give up. */
 48         __le32 num_pages;
 49         /* Number of pages we've actually got in balloon. */
 50         __le32 actual;
 51         /*
 52          * Free page hint command id, readonly by guest.
 53          * Was previously named free_page_report_cmd_id so we
 54          * need to carry that name for legacy support.
 55          */
 56         union {
 57                 __le32 free_page_hint_cmd_id;
 58                 __le32 free_page_report_cmd_id; /* deprecated */
 59         };
 60         /* Stores PAGE_POISON if page poisoning is in use */
 61         __le32 poison_val;
 62 };
 63 
 64 #define VIRTIO_BALLOON_S_SWAP_IN  0   /* Amount of memory swapped in */
 65 #define VIRTIO_BALLOON_S_SWAP_OUT 1   /* Amount of memory swapped out */
 66 #define VIRTIO_BALLOON_S_MAJFLT   2   /* Number of major faults */
 67 #define VIRTIO_BALLOON_S_MINFLT   3   /* Number of minor faults */
 68 #define VIRTIO_BALLOON_S_MEMFREE  4   /* Total amount of free memory */
 69 #define VIRTIO_BALLOON_S_MEMTOT   5   /* Total amount of memory */
 70 #define VIRTIO_BALLOON_S_AVAIL    6   /* Available memory as in /proc */
 71 #define VIRTIO_BALLOON_S_CACHES   7   /* Disk caches */
 72 #define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* Hugetlb page allocations */
 73 #define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* Hugetlb page allocation failures */
 74 #define VIRTIO_BALLOON_S_NR       10
 75 
 76 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
 77         VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
 78         VIRTIO_BALLOON_S_NAMES_prefix "swap-out", \
 79         VIRTIO_BALLOON_S_NAMES_prefix "major-faults", \
 80         VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", \
 81         VIRTIO_BALLOON_S_NAMES_prefix "free-memory", \
 82         VIRTIO_BALLOON_S_NAMES_prefix "total-memory", \
 83         VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
 84         VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
 85         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
 86         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
 87 }
 88 
 89 #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
 90 
 91 /*
 92  * Memory statistics structure.
 93  * Driver fills an array of these structures and passes to device.
 94  *
 95  * NOTE: fields are laid out in a way that would make compiler add padding
 96  * between and after fields, so we have to use compiler-specific attributes to
 97  * pack it, to disable this padding. This also often causes compiler to
 98  * generate suboptimal code.
 99  *
100  * We maintain this statistics structure format for backwards compatibility,
101  * but don't follow this example.
102  *
103  * If implementing a similar structure, do something like the below instead:
104  *     struct virtio_balloon_stat {
105  *         __virtio16 tag;
106  *         __u8 reserved[6];
107  *         __virtio64 val;
108  *     };
109  *
110  * In other words, add explicit reserved fields to align field and
111  * structure boundaries at field size, avoiding compiler padding
112  * without the packed attribute.
113  */
114 struct virtio_balloon_stat {
115         __virtio16 tag;
116         __virtio64 val;
117 } __attribute__((packed));
118 
119 #endif /* _LINUX_VIRTIO_BALLOON_H */
120 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php