From: Ingo Molnar <mingo@elte.hu>
To: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
jkenisto@us.ibm.com, a.p.zijlstra@chello.nl, ananth@in.ibm.com,
anton@redhat.com, masami.hiramatsu.pt@hitachi.com,
acme@infradead.org, tglx@linutronix.de, oleg@redhat.com
Subject: Re: [tip:perf/uprobes] uprobes/core: Clean up, refactor and improve the code
Date: Mon, 20 Feb 2012 11:50:42 +0100 [thread overview]
Message-ID: <20120220105041.GA24200@elte.hu> (raw)
In-Reply-To: <20120220092540.GB22680@linux.vnet.ibm.com>
* Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote:
> > - uprobe->insn[] needs to move from struct uprobe to
> > uprobe->arch.insn
> >
> > - The uprobes_arch_*() method(s) should be passed a
> > 'struct arch_uprobe *', not a 'struct uprobe *'.
> >
> > - Once this is done, 'struct uprobe' can move to the head of
> > kernel/uprobes.c, without any ugly #ifdefs and wrappery -
> > that code only compiles if uprobes are enabled and if the
> > architecture supports it.
> >
> > - asm/uprobes.h defines 'struct arch_uprobe' and the arch
> > method(s) - nothing else.
> >
> > - write_opcode() and any similar functions should be renamed to
> > the arch_uprobes_write_opcode() pattern
>
> Currently the kernel/uprobes.c code handles insn as arch
> agnostic in some cases and uses arch specific stuff for
> analysis, verification and to set up fixups. The analysis,
> verification, and fixups is only done at the probe insertion
> only.
>
> The copy_insn code, write_opcode is mostly arch agnostic
> except for the maximum length of any supported instruction for
> that architecture. If we move the insn to arch_uprobe, then we
> would have to duplicate this code in arch specific files to do
> the copying of the instruction. (not only at
> registration/unregistration times and also at probe hit time
> to copy into the slot).
Is there any reason why the core kernel uprobes.c code could not
use uprobe->arch.insn directly?
It's in the architecture specific structure, mainly to
encapsulate architecture-accessible fields and isolate low-level
functionality from high-level one. This does not preclude the
high-level code from using that field though.
Obviously every uprobes supporting architecture would have to
define an 'insn' field in their 'struct arch_uprobe'.
Thanks,
Ingo
next prev parent reply other threads:[~2012-02-20 10:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-17 9:59 [tip:perf/uprobes] uprobes/core: Clean up, refactor and improve the code tip-bot for Ingo Molnar
2012-02-17 10:49 ` Ingo Molnar
2012-02-20 9:25 ` Srikar Dronamraju
2012-02-20 10:50 ` Ingo Molnar [this message]
2012-02-20 6:08 ` Srikar Dronamraju
2012-02-20 7:38 ` Ingo Molnar
2012-02-20 10:13 ` Srikar Dronamraju
2012-02-20 10:51 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120220105041.GA24200@elte.hu \
--to=mingo@elte.hu \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@infradead.org \
--cc=ananth@in.ibm.com \
--cc=anton@redhat.com \
--cc=hpa@zytor.com \
--cc=jkenisto@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=srikar@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.