From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2378 invoked by alias); 12 Jan 2007 18:23:14 -0000 Received: (qmail 2367 invoked by uid 22791); 12 Jan 2007 18:23:13 -0000 X-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,FORGED_RCVD_HELO X-Spam-Check-By: sourceware.org Received: from tomts36.bellnexxia.net (HELO tomts36-srv.bellnexxia.net) (209.226.175.93) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 12 Jan 2007 18:23:07 +0000 Received: from krystal.dyndns.org ([67.68.204.133]) by tomts36-srv.bellnexxia.net (InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id <20070112182303.JGOV1862.tomts36-srv.bellnexxia.net@krystal.dyndns.org> for ; Fri, 12 Jan 2007 13:23:03 -0500 Received: from localhost (localhost [127.0.0.1]) (uid 1000) by krystal.dyndns.org with local; Fri, 12 Jan 2007 13:23:01 -0500 id 000C4027.45A7D205.00001D94 Date: Fri, 12 Jan 2007 18:23:00 -0000 From: Mathieu Desnoyers To: Nick Piggin Cc: linux-kernel@vger.kernel.org, Linus Torvalds , Andrew Morton , Ingo Molnar , Greg Kroah-Hartman , Christoph Hellwig , ltt-dev@shafik.org, systemtap@sources.redhat.com, Douglas Niehaus , Thomas Gleixner Subject: Re: [PATCH 05/05] update - Linux Kernel Markers, non optimised architectures Message-ID: <20070112182301.GA11102@Krystal> References: <11685601382063-git-send-email-mathieu.desnoyers@polymtl.ca> <11685601404005-git-send-email-mathieu.desnoyers@polymtl.ca> <45A710F8.7000405@yahoo.com.au> <20070112050032.GA14100@Krystal> <45A71827.6020300@yahoo.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline In-Reply-To: <45A71827.6020300@yahoo.com.au> X-Editor: vi X-Info: http://krystal.dyndns.org:8080 X-Operating-System: Linux/2.4.32-grsec (i686) X-Uptime: 13:19:07 up 142 days, 15:26, 3 users, load average: 1.25, 0.69, 0.52 User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2007-q1/txt/msg00086.txt.bz2 * Nick Piggin (nickpiggin@yahoo.com.au) wrote: > OK, well one problem is that it can cause a resched event to be lost, so > you might say it has more side-effects without checking resched. > Here is the patch that implements this. I also did a cosmetic change to linux/marker.h. Preliminary tests of running the markers with preempt_enable() with LTTng 0.6.56 instrumentation shows no problem. Signed-off-by: Mathieu Desnoyers --- a/include/asm-generic/marker.h +++ b/include/asm-generic/marker.h @@ -39,7 +39,7 @@ struct __mark_marker { if (unlikely(__marker_enable_##name)) { \ preempt_disable(); \ (*__mark_call_##name)(format, ## args); \ - preempt_enable_no_resched(); \ + preempt_enable(); \ } \ } while (0) --- a/include/asm-i386/marker.h +++ b/include/asm-i386/marker.h @@ -42,7 +42,7 @@ struct __mark_marker { if (unlikely(condition)) { \ preempt_disable(); \ (*__mark_call_##name)(format, ## args); \ - preempt_enable_no_resched(); \ + preempt_enable(); \ } \ } while (0) --- a/include/asm-powerpc/marker.h +++ b/include/asm-powerpc/marker.h @@ -45,7 +45,7 @@ struct __mark_marker { if (unlikely(condition)) { \ preempt_disable(); \ (*__mark_call_##name)(format, ## args); \ - preempt_enable_no_resched(); \ + preempt_enable(); \ } \ } while (0) --- a/include/linux/marker.h +++ b/include/linux/marker.h @@ -8,12 +8,12 @@ * * Example : * - * MARK(subsystem_event, "%d %s %p[struct task_struct *]", + * MARK(subsystem_event, "%d %s %p[struct task_struct]", * someint, somestring, current); * Where : * - Subsystem is the name of your subsystem. * - event is the name of the event to mark. - * - "%d %s %p[struct task_struct *]" is the formatted string for printk. + * - "%d %s %p[struct task_struct]" is the formatted string for printk. * - someint is an integer. * - somestring is a char pointer. * - current is a pointer to a struct task_struct. @@ -27,6 +27,9 @@ * Markers can be put in inline functions, inlined static functions and * unrolled loops. * + * Note : It is safe to put markers within preempt-safe code : preempt_enable() + * will not call the scheduler due to the tests in preempt_schedule(). + * * (C) Copyright 2006 Mathieu Desnoyers * * This file is released under the GPLv2. -- OpenPGP public key: http://krystal.dyndns.org:8080/key/compudj.gpg Key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68