summaryrefslogtreecommitdiffstats
path: root/mm/cma.h
diff options
context:
space:
mode:
authorSasha Levin <sasha.levin@oracle.com>2015-04-14 15:44:57 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-14 16:49:00 -0700
commit28b24c1fc8c22cabe5b8a16ffe6a61dfce51a1f2 (patch)
tree2a6127decc749a3aea6a50123855ba73013fd082 /mm/cma.h
parent19c07d5e0414261bd7ec3d8419dd26f468ef69d9 (diff)
downloadop-kernel-dev-28b24c1fc8c22cabe5b8a16ffe6a61dfce51a1f2.zip
op-kernel-dev-28b24c1fc8c22cabe5b8a16ffe6a61dfce51a1f2.tar.gz
mm: cma: debugfs interface
I've noticed that there is no interfaces exposed by CMA which would let me fuzz what's going on in there. This small patchset exposes some information out to userspace, plus adds the ability to trigger allocation and freeing from userspace. This patch (of 3): Implement a simple debugfs interface to expose information about CMA areas in the system. Useful for testing/sanity checks for CMA since it was impossible to previously retrieve this information in userspace. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/cma.h')
-rw-r--r--mm/cma.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/mm/cma.h b/mm/cma.h
new file mode 100644
index 0000000..4141887
--- /dev/null
+++ b/mm/cma.h
@@ -0,0 +1,20 @@
+#ifndef __MM_CMA_H__
+#define __MM_CMA_H__
+
+struct cma {
+ unsigned long base_pfn;
+ unsigned long count;
+ unsigned long *bitmap;
+ unsigned int order_per_bit; /* Order of pages represented by one bit */
+ struct mutex lock;
+};
+
+extern struct cma cma_areas[MAX_CMA_AREAS];
+extern unsigned cma_area_count;
+
+static unsigned long cma_bitmap_maxno(struct cma *cma)
+{
+ return cma->count >> cma->order_per_bit;
+}
+
+#endif
OpenPOWER on IntegriCloud