Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932802Ab1ERBlg (ORCPT ); Tue, 17 May 2011 21:41:36 -0400 Received: from e8.ny.us.ibm.com ([32.97.182.138]:58071 "EHLO e8.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932761Ab1ERBlW (ORCPT ); Tue, 17 May 2011 21:41:22 -0400 From: John Stultz To: LKML Cc: John Stultz , Joe Perches , Ingo Molnar , Michal Nazarewicz , Andy Whitcroft , Jiri Slaby , KOSAKI Motohiro , David Rientjes , Dave Hansen , Andrew Morton , linux-mm@kvack.org Subject: [PATCH 2/4] comm: Add lock-free task->comm accessor Date: Tue, 17 May 2011 18:41:03 -0700 Message-Id: <1305682865-27111-3-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.7.3.2.146.gca209 In-Reply-To: <1305682865-27111-1-git-send-email-john.stultz@linaro.org> References: <1305682865-27111-1-git-send-email-john.stultz@linaro.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2210 Lines: 65 This patch adds __get_task_comm() which returns the task->comm value without taking the comm_lock. This function may return null or incomplete comm values, and is only present for performance critical paths that can handle these pitfalls. CC: Joe Perches CC: Ingo Molnar CC: Michal Nazarewicz CC: Andy Whitcroft CC: Jiri Slaby CC: KOSAKI Motohiro CC: David Rientjes CC: Dave Hansen CC: Andrew Morton CC: linux-mm@kvack.org Signed-off-by: John Stultz --- fs/exec.c | 13 +++++++++++++ include/linux/sched.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/fs/exec.c b/fs/exec.c index 34fa611..7e79c97 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -996,6 +996,19 @@ static void flush_old_files(struct files_struct * files) spin_unlock(&files->file_lock); } +/** + * __get_task_comm - Unlocked accessor to task comm value + * + * This function returns the task->comm value without + * taking the comm_lock. This method is only for performance + * critical paths, and may return a null or incomplete comm + * value. + */ +char *__get_task_comm(struct task_struct *tsk) +{ + return tsk->comm; +} + char *get_task_comm(char *buf, struct task_struct *tsk) { unsigned long flags; diff --git a/include/linux/sched.h b/include/linux/sched.h index f8a7cdf..5e3c25a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2189,6 +2189,7 @@ struct task_struct *fork_idle(int); extern void set_task_comm(struct task_struct *tsk, char *from); extern char *get_task_comm(char *to, struct task_struct *tsk); +extern char *__get_task_comm(struct task_struct *tsk); #ifdef CONFIG_SMP extern unsigned long wait_task_inactive(struct task_struct *, long match_state); -- 1.7.3.2.146.gca209 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/