![Russell King](/assets/img/avatar_default.png)
Add a new seqfile for reporting coherent DMA allocations. This contains the address range, size and the function which was used to allocate each region, allowing these allocations to be viewed in much the same way as /proc/vmallocinfo. The DMA coherent region has limited space, so this allows allocation failures to be viewed, as well as finding out how much space is being used. Make sure this file is only readable by root - same as vmallocinfo - to prevent information leakage. Acked-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
33 lines
839 B
C
33 lines
839 B
C
#ifndef VMREGION_H
|
|
#define VMREGION_H
|
|
|
|
#include <linux/spinlock.h>
|
|
#include <linux/list.h>
|
|
|
|
struct page;
|
|
|
|
struct arm_vmregion_head {
|
|
spinlock_t vm_lock;
|
|
struct list_head vm_list;
|
|
unsigned long vm_start;
|
|
unsigned long vm_end;
|
|
};
|
|
|
|
struct arm_vmregion {
|
|
struct list_head vm_list;
|
|
unsigned long vm_start;
|
|
unsigned long vm_end;
|
|
struct page *vm_pages;
|
|
int vm_active;
|
|
const void *caller;
|
|
};
|
|
|
|
struct arm_vmregion *arm_vmregion_alloc(struct arm_vmregion_head *, size_t, size_t, gfp_t, const void *);
|
|
struct arm_vmregion *arm_vmregion_find(struct arm_vmregion_head *, unsigned long);
|
|
struct arm_vmregion *arm_vmregion_find_remove(struct arm_vmregion_head *, unsigned long);
|
|
void arm_vmregion_free(struct arm_vmregion_head *, struct arm_vmregion *);
|
|
|
|
int arm_vmregion_create_proc(const char *, struct arm_vmregion_head *);
|
|
|
|
#endif
|