Re: [PATCH v4] mm: cma: support sysfs
From: Dmitry Osipenko <digetx@gmail.com>
Date: 2021-03-19 13:40:23
Also in:
linux-tegra, lkml
From: Dmitry Osipenko <digetx@gmail.com>
Date: 2021-03-19 13:40:23
Also in:
linux-tegra, lkml
19.03.2021 15:44, Dmitry Osipenko пишет: ...
quoted
#include <linux/debugfs.h> +#include <linux/kobject.h> + +struct cma_stat { + spinlock_t lock; + /* the number of CMA page successful allocations */ + unsigned long nr_pages_succeeded; + /* the number of CMA page allocation failures */ + unsigned long nr_pages_failed; + struct kobject kobj; +}; struct cma { unsigned long base_pfn;@@ -16,6 +26,9 @@ struct cma { struct debugfs_u32_array dfs_bitmap; #endif char name[CMA_MAX_NAME]; +#ifdef CONFIG_CMA_SYSFS + struct cma_stat *stat; +#endif
What is the point of allocating stat dynamically? ...
quoted
+void cma_sysfs_alloc_pages_count(struct cma *cma, size_t count) +{ + spin_lock(&cma->stat->lock); + cma->stat->nr_pages_succeeded += count; + spin_unlock(&cma->stat->lock); +} + +void cma_sysfs_fail_pages_count(struct cma *cma, size_t count) +{ + spin_lock(&cma->stat->lock); + cma->stat->nr_pages_failed += count; + spin_unlock(&cma->stat->lock); +}
You could use atomic increment and then locking isn't needed.