From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
To: David Daney <ddaney@caviumnetworks.com>
Cc: ltt-dev@lists.casi.polymtl.ca, linux-mips@linux-mips.org
Subject: Re: [ltt-dev] [PATCH 2/3] lttng: MIPS: Dump MIPS system call tables.
Date: Tue, 20 Apr 2010 09:56:08 -0400 [thread overview]
Message-ID: <20100420135608.GB25175@Krystal> (raw)
In-Reply-To: <1271722791-27885-3-git-send-email-ddaney@caviumnetworks.com>
* David Daney (ddaney@caviumnetworks.com) wrote:
> The 64-bit kernel may support all three ABIs, so we iterate the
> sys_call_tables of all of enabled ABIs.
Merged into the LTTng tree, with some coding style cleanups. Thanks!
Mathieu
>
> Signed-off-by: David Daney <ddaney@caviumnetworks.com>
> ---
> arch/mips/Kconfig | 1 +
> arch/mips/kernel/scall64-64.S | 3 +-
> arch/mips/kernel/scall64-n32.S | 2 +
> arch/mips/kernel/scall64-o32.S | 8 +++---
> arch/mips/kernel/syscall.c | 58 ++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 67 insertions(+), 5 deletions(-)
>
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 5e1133f..a690e9b 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -8,6 +8,7 @@ config MIPS
> # Horrible source of confusion. Die, die, die ...
> select EMBEDDED
> select RTC_LIB if !LEMOTE_FULOONG2E
> + select HAVE_LTT_DUMP_TABLES
>
> mainmenu "Linux/MIPS Kernel Configuration"
>
> diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
> index 38c0c95..f437a01 100644
> --- a/arch/mips/kernel/scall64-64.S
> +++ b/arch/mips/kernel/scall64-64.S
> @@ -125,7 +125,8 @@ illegal_syscall:
> END(handle_sys64)
>
> .align 3
> -sys_call_table:
> + .type sys_call_table,@object
> +EXPORT(sys_call_table)
> PTR sys_read /* 5000 */
> PTR sys_write
> PTR sys_open
> diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
> index fbecc01..49ab15a 100644
> --- a/arch/mips/kernel/scall64-n32.S
> +++ b/arch/mips/kernel/scall64-n32.S
> @@ -119,6 +119,8 @@ not_n32_scall:
>
> END(handle_sysn32)
>
> + .align 3
> + .type sysn32_call_table,@object
> EXPORT(sysn32_call_table)
> PTR sys_read /* 6000 */
> PTR sys_write
> diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
> index 0db5589..01500cb 100644
> --- a/arch/mips/kernel/scall64-o32.S
> +++ b/arch/mips/kernel/scall64-o32.S
> @@ -53,7 +53,7 @@ NESTED(handle_sys, PT_SIZE, sp)
> sll a3, a3, 0
>
> dsll t0, v0, 3 # offset into table
> - ld t2, (sys_call_table - (__NR_O32_Linux * 8))(t0)
> + ld t2, (syso32_call_table - (__NR_O32_Linux * 8))(t0)
>
> sd a3, PT_R26(sp) # save a3 for syscall restarting
>
> @@ -179,7 +179,7 @@ LEAF(sys32_syscall)
> beqz t0, einval # do not recurse
> dsll t1, t0, 3
> beqz v0, einval
> - ld t2, sys_call_table(t1) # syscall routine
> + ld t2, syso32_call_table(t1) # syscall routine
>
> move a0, a1 # shift argument registers
> move a1, a2
> @@ -201,8 +201,8 @@ einval: li v0, -ENOSYS
> END(sys32_syscall)
>
> .align 3
> - .type sys_call_table,@object
> -sys_call_table:
> + .type syso32_call_table,@object
> +EXPORT(syso32_call_table)
> PTR sys32_syscall /* 4000 */
> PTR sys_exit
> PTR sys_fork
> diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
> index 1452e2f..996ef29 100644
> --- a/arch/mips/kernel/syscall.c
> +++ b/arch/mips/kernel/syscall.c
> @@ -29,6 +29,7 @@
> #include <linux/module.h>
> #include <linux/ipc.h>
> #include <linux/uaccess.h>
> +#include <linux/kallsyms.h>
> #include <trace/ipc.h>
>
> #include <asm/asm.h>
> @@ -560,3 +561,60 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
>
> return -__v0;
> }
> +
> +void ltt_dump_sys_call_table(void *call_data)
> +{
> + int i;
> + char namebuf[KSYM_NAME_LEN];
> +
> +#ifdef CONFIG_32BIT
> + extern struct {
> + unsigned long ptr;
> + long j;
> + } sys_call_table[];
> + for (i = 0; i < __NR_O32_Linux_syscalls; i++) {
> + sprint_symbol(namebuf, sys_call_table[i].ptr);
> + __trace_mark(0, syscall_state, sys_call_table, call_data,
> + "id %d address %p symbol %s",
> + i + __NR_O32_Linux, (void*)sys_call_table[i].ptr, namebuf);
> + }
> +#endif
> +#ifdef CONFIG_64BIT
> +# ifdef CONFIG_MIPS32_O32
> + for (i = 0; i < __NR_O32_Linux_syscalls; i++) {
> + extern unsigned long syso32_call_table[];
> + sprint_symbol(namebuf, syso32_call_table[i]);
> + __trace_mark(0, syscall_state, sys_call_table, call_data,
> + "id %d address %p symbol %s",
> + i + __NR_O32_Linux, (void*)syso32_call_table[i], namebuf);
> + }
> +# endif
> +
> + for (i = 0; i < __NR_64_Linux_syscalls; i++) {
> + extern unsigned long sys_call_table[];
> + sprint_symbol(namebuf, sys_call_table[i]);
> + __trace_mark(0, syscall_state, sys_call_table, call_data,
> + "id %d address %p symbol %s",
> + i + __NR_64_Linux, (void*)sys_call_table[i], namebuf);
> + }
> +
> +# ifdef CONFIG_MIPS32_N32
> + for (i = 0; i < __NR_N32_Linux_syscalls; i++) {
> + extern unsigned long sysn32_call_table[];
> + sprint_symbol(namebuf, sysn32_call_table[i]);
> + __trace_mark(0, syscall_state, sys_call_table, call_data,
> + "id %d address %p symbol %s",
> + i + __NR_N32_Linux, (void*)sysn32_call_table[i], namebuf);
> + }
> +# endif
> +#endif
> +
> +}
> +EXPORT_SYMBOL_GPL(ltt_dump_sys_call_table);
> +
> +void ltt_dump_idt_table(void *call_data)
> +{
> + /* No IDT information yet. */
> + return;
> +}
> +EXPORT_SYMBOL_GPL(ltt_dump_idt_table);
> --
> 1.6.6.1
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev@lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
next prev parent reply other threads:[~2010-04-20 13:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-20 0:19 [PATCH 0/3] LTTng patches for MIPS CPUs David Daney
2010-04-20 0:19 ` [PATCH 1/3] lttng: MIPS: Fix syscall entry tracing David Daney
2010-04-20 13:55 ` [ltt-dev] " Mathieu Desnoyers
2010-04-20 0:19 ` [PATCH 2/3] lttng: MIPS: Dump MIPS system call tables David Daney
2010-04-20 13:56 ` Mathieu Desnoyers [this message]
2010-04-20 0:19 ` [PATCH 3/3] lttng: MIPS: Use 64 bit counter for trace clock on Octeon CPUs David Daney
2010-04-20 13:56 ` [ltt-dev] " Mathieu Desnoyers
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=20100420135608.GB25175@Krystal \
--to=compudj@krystal.dyndns.org \
--cc=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=ltt-dev@lists.casi.polymtl.ca \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox