From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754817AbbDNU5C (ORCPT ); Tue, 14 Apr 2015 16:57:02 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:49981 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754475AbbDNU4m (ORCPT ); Tue, 14 Apr 2015 16:56:42 -0400 From: Sasha Levin To: linux-kernel@vger.kernel.org Cc: akpm@linux-foundation.org, kirill@shutemov.name, linux-mm@kvack.org Subject: [RFC 02/11] mm: debug: deal with a new family of MM pointers Date: Tue, 14 Apr 2015 16:56:24 -0400 Message-Id: <1429044993-1677-3-git-send-email-sasha.levin@oracle.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1429044993-1677-1-git-send-email-sasha.levin@oracle.com> References: <1429044993-1677-1-git-send-email-sasha.levin@oracle.com> X-Source-IP: aserv0022.oracle.com [141.146.126.234] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This teaches our printing functions about a new family of MM pointer that it could now print. I've picked %pZ because %pm and %pM were already taken, so I figured it doesn't really matter what we go with. We also have the option of stealing one of those two... Signed-off-by: Sasha Levin --- lib/vsprintf.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 8243e2f..809d19d 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1375,6 +1375,16 @@ char *comm_name(char *buf, char *end, struct task_struct *tsk, return string(buf, end, name, spec); } +static noinline_for_stack +char *mm_pointer(char *buf, char *end, struct task_struct *tsk, + struct printf_spec spec, const char *fmt) +{ + switch (fmt[1]) { + } + + return buf; +} + int kptr_restrict __read_mostly; /* @@ -1463,6 +1473,7 @@ int kptr_restrict __read_mostly; * (legacy clock framework) of the clock * - 'Cr' For a clock, it prints the current rate of the clock * - 'T' task_struct->comm + * - 'Z' Outputs a readable version of a type of memory management struct. * * Note: The difference between 'S' and 'F' is that on ia64 and ppc64 * function pointers are really function descriptors, which contain a @@ -1615,6 +1626,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, spec, fmt); case 'T': return comm_name(buf, end, ptr, spec, fmt); + case 'Z': + return mm_pointer(buf, end, ptr, spec, fmt); } spec.flags |= SMALL; if (spec.field_width == -1) { -- 1.7.10.4