Hello Andrew, On 04/04/15 00:58, Andrew Morton wrote: > On Fri, 03 Apr 2015 15:42:40 +0300 Stefan Strogin <stefan.strogin@xxxxxxxxx> wrote: > >> From: Dmitry Safonov <d.safonov@xxxxxxxxxxxxxxxxxxx> >> >> Here are two functions that provide interface to compute/get used size >> and size of biggest free chunk in cma region. Add that information to debugfs. >> >> ... >> >> --- a/mm/cma.c >> +++ b/mm/cma.c >> @@ -53,6 +53,36 @@ unsigned long cma_get_size(const struct cma *cma) >> return cma->count << PAGE_SHIFT; >> } >> >> +unsigned long cma_get_used(struct cma *cma) >> +{ >> + unsigned long ret = 0; >> + >> + mutex_lock(&cma->lock); >> + /* pages counter is smaller than sizeof(int) */ >> + ret = bitmap_weight(cma->bitmap, (int)cma->count); >> + mutex_unlock(&cma->lock); >> + >> + return ret << cma->order_per_bit; >> +} >> + >> +unsigned long cma_get_maxchunk(struct cma *cma) >> +{ >> + unsigned long maxchunk = 0; >> + unsigned long start, end = 0; >> + >> + mutex_lock(&cma->lock); >> + for (;;) { >> + start = find_next_zero_bit(cma->bitmap, cma->count, end); >> + if (start >= cma->count) >> + break; >> + end = find_next_bit(cma->bitmap, cma->count, start); >> + maxchunk = max(end - start, maxchunk); >> + } >> + mutex_unlock(&cma->lock); >> + >> + return maxchunk << cma->order_per_bit; >> +} > > This will cause unused code to be included in cma.o when > CONFIG_CMA_DEBUGFS=n. Please review the below patch which moves it all > into cma_debug.c > Thank you very much for the reply and for the patches. >> --- a/mm/cma_debug.c >> +++ b/mm/cma_debug.c >> @@ -33,6 +33,28 @@ static int cma_debugfs_get(void *data, u64 *val) >> >> DEFINE_SIMPLE_ATTRIBUTE(cma_debugfs_fops, cma_debugfs_get, NULL, "%llu\n"); >> >> +static int cma_used_get(void *data, u64 *val) >> +{ >> + struct cma *cma = data; >> + >> + *val = cma_get_used(cma); >> + >> + return 0; >> +} > > We have cma_used_get() and cma_get_used(). Confusing! Can we think of > better names for one or both of them? > Oh. Excuse me for the bad code. Wouldn't it be better to merge cma_get_used() and cma_get_maxchunk() into cma_*_get() as they aren't used anywhere else? Please see the following patch. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>