summaryrefslogtreecommitdiff
path: root/libpagemap
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-08-23 17:47:49 -0700
committerElliott Hughes <enh@google.com>2016-08-23 17:47:49 -0700
commit9eed624c760b9c70de9a8f75ff84c5f085d62fdc (patch)
tree2f8b3a9b0d1678fc2ba2eebd54d21687cd3db8ac /libpagemap
parentcb0112fe640d7b8a9668f91d2cad7234bd63f880 (diff)
downloadextras-9eed624c760b9c70de9a8f75ff84c5f085d62fdc.tar.gz
Don't invent our own pagemap constants.
Use the uapi ones instead, so I don't have to think about whether ours are correct. Bug: http://b/31044648 Change-Id: Ibe4a078ad3223419301a5f585e8ed24dd7366ce2
Diffstat (limited to 'libpagemap')
-rw-r--r--libpagemap/include/pagemap/pagemap.h40
-rw-r--r--libpagemap/pm_map.c2
2 files changed, 8 insertions, 34 deletions
diff --git a/libpagemap/include/pagemap/pagemap.h b/libpagemap/include/pagemap/pagemap.h
index 61e59e2f..b03614e8 100644
--- a/libpagemap/include/pagemap/pagemap.h
+++ b/libpagemap/include/pagemap/pagemap.h
@@ -23,6 +23,8 @@
#include <sys/types.h>
#include <sys/queue.h>
+#include <linux/kernel-page-flags.h>
+
__BEGIN_DECLS
typedef struct pm_proportional_swap pm_proportional_swap_t;
@@ -124,39 +126,11 @@ int pm_kernel_pids(pm_kernel_t *ker, pid_t **pids_out, size_t *len);
int pm_kernel_count(pm_kernel_t *ker, uint64_t pfn, uint64_t *count_out);
/* Get the page flags (from /proc/kpageflags) of a physical frame.
- * The count is returned through *flags_out. */
+ * Flag constants are in <linux/kernel-page-flags.h>.
+ * The count is returned through *flags_out.
+ */
int pm_kernel_flags(pm_kernel_t *ker, uint64_t pfn, uint64_t *flags_out);
-#define PM_PAGE_LOCKED (1 << 0)
-#define PM_PAGE_ERROR (1 << 1)
-#define PM_PAGE_REFERENCED (1 << 2)
-#define PM_PAGE_UPTODATE (1 << 3)
-#define PM_PAGE_DIRTY (1 << 4)
-#define PM_PAGE_LRU (1 << 5)
-#define PM_PAGE_ACTIVE (1 << 6)
-#define PM_PAGE_SLAB (1 << 7)
-#define PM_PAGE_WRITEBACK (1 << 8)
-#define PM_PAGE_RECLAIM (1 << 9)
-#define PM_PAGE_BUDDY (1 << 10)
-
-/* for kernels >= 2.6.31 */
-#define PM_PAGE_MMAP (1 << 11)
-#define PM_PAGE_ANON (1 << 12)
-#define PM_PAGE_SWAPCACHE (1 << 13)
-#define PM_PAGE_SWAPBACKED (1 << 14)
-#define PM_PAGE_COMPOUND_HEAD (1 << 15)
-#define PM_PAGE_COMPOUND_TAIL (1 << 16)
-#define PM_PAGE_HUGE (1 << 17)
-#define PM_PAGE_UNEVICTABLE (1 << 18)
-#define PM_PAGE_HWPOISON (1 << 19)
-#define PM_PAGE_NOPAGE (1 << 20)
-
-/* for kernels >= 2.6.32 */
-#define PM_PAGE_KSM (1 << 21)
-
-/* for kernels >= 3.4 */
-#define PM_PAGE_THP (1 << 22)
-
/* Destroy a pm_kernel_t. */
int pm_kernel_destroy(pm_kernel_t *ker);
@@ -180,7 +154,7 @@ int pm_process_usage_flags(pm_process_t *proc, pm_memusage_t *usage_out,
int pm_process_workingset(pm_process_t *proc, pm_memusage_t *ws_out, int reset);
/* Get the PFNs corresponding to a range of virtual addresses.
- * The array of PFNs is returned through *range_out, and the caller has the
+ * The array of PFNs is returned through *range_out, and the caller has the
* responsibility to free it. */
int pm_process_pagemap_range(pm_process_t *proc,
uint64_t low, uint64_t hi,
@@ -197,7 +171,7 @@ int pm_process_pagemap_range(pm_process_t *proc,
/* Get the maps in the virtual address space of this process.
* Returns an array of pointers to pm_map_t through *maps.
- * The array should be freed by the caller, but the maps should not be
+ * The array should be freed by the caller, but the maps should not be
* modified or destroyed. */
int pm_process_maps(pm_process_t *proc, pm_map_t ***maps_out, size_t *len);
diff --git a/libpagemap/pm_map.c b/libpagemap/pm_map.c
index 301a1cc3..0060a98c 100644
--- a/libpagemap/pm_map.c
+++ b/libpagemap/pm_map.c
@@ -109,7 +109,7 @@ int pm_map_workingset(pm_map_t *map, pm_memusage_t *ws_out) {
&flags);
if (error) goto out;
- if (!(flags & PM_PAGE_REFERENCED))
+ if (!(flags & KPF_REFERENCED))
continue;
error = pm_kernel_count(map->proc->ker, PM_PAGEMAP_PFN(pagemap[i]),