public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kmemtrace: Remove the relay version of kmemtrace.
       [not found] <20090105191330.GA1498@elte.hu>
@ 2009-01-05 20:09 ` Eduard - Gabriel Munteanu
  2009-01-05 20:12   ` Eduard - Gabriel Munteanu
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Eduard - Gabriel Munteanu @ 2009-01-05 20:09 UTC (permalink / raw)
  To: mingo; +Cc: penberg, rostedt, fweisbec, Eduard - Gabriel Munteanu,
	linux-kernel

kmemtrace now uses ftrace. This patch removes the relay version.

Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
---
 kernel/trace/Kconfig |    1 -
 mm/Makefile          |    1 -
 mm/kmemtrace.c       |  333 --------------------------------------------------
 3 files changed, 0 insertions(+), 335 deletions(-)
 delete mode 100644 mm/kmemtrace.c

diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index cc9f91e..4b69dd3 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -268,7 +268,6 @@ config KMEMTRACE
 	bool "Trace SLAB allocations"
 	select TRACING
 	select MARKERS
-	select RELAY
 	help
 	  kmemtrace provides tracing for slab allocator functions, such as
 	  kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected
diff --git a/mm/Makefile b/mm/Makefile
index 1910665..33892d1 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -36,4 +36,3 @@ obj-$(CONFIG_MIGRATION) += migrate.o
 obj-$(CONFIG_SMP) += allocpercpu.o
 obj-$(CONFIG_QUICKLIST) += quicklist.o
 obj-$(CONFIG_CGROUP_MEM_RES_CTLR) += memcontrol.o page_cgroup.o
-obj-$(CONFIG_KMEMTRACE) += kmemtrace.o
diff --git a/mm/kmemtrace.c b/mm/kmemtrace.c
deleted file mode 100644
index 0573b50..0000000
--- a/mm/kmemtrace.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Copyright (C) 2008 Pekka Enberg, Eduard - Gabriel Munteanu
- *
- * This file is released under GPL version 2.
- */
-
-#include <linux/string.h>
-#include <linux/debugfs.h>
-#include <linux/relay.h>
-#include <linux/module.h>
-#include <linux/marker.h>
-#include <linux/gfp.h>
-#include <trace/kmemtrace.h>
-
-#define KMEMTRACE_SUBBUF_SIZE		524288
-#define KMEMTRACE_DEF_N_SUBBUFS		20
-
-static struct rchan *kmemtrace_chan;
-static u32 kmemtrace_buf_overruns;
-
-static unsigned int kmemtrace_n_subbufs;
-
-/* disabled by default */
-static unsigned int kmemtrace_enabled;
-
-/*
- * The sequence number is used for reordering kmemtrace packets
- * in userspace, since they are logged as per-CPU data.
- *
- * atomic_t should always be a 32-bit signed integer. Wraparound is not
- * likely to occur, but userspace can deal with it by expecting a certain
- * sequence number in the next packet that will be read.
- */
-static atomic_t kmemtrace_seq_num;
-
-#define KMEMTRACE_ABI_VERSION		1
-
-static u32 kmemtrace_abi_version __read_mostly = KMEMTRACE_ABI_VERSION;
-
-enum kmemtrace_event_id {
-	KMEMTRACE_EVENT_ALLOC = 0,
-	KMEMTRACE_EVENT_FREE,
-};
-
-struct kmemtrace_event {
-	u8		event_id;
-	u8		type_id;
-	u16		event_size;
-	s32		seq_num;
-	u64		call_site;
-	u64		ptr;
-} __attribute__ ((__packed__));
-
-struct kmemtrace_stats_alloc {
-	u64		bytes_req;
-	u64		bytes_alloc;
-	u32		gfp_flags;
-	s32		numa_node;
-} __attribute__ ((__packed__));
-
-static void kmemtrace_probe_alloc(void *probe_data, void *call_data,
-				  const char *format, va_list *args)
-{
-	unsigned long flags;
-	struct kmemtrace_event *ev;
-	struct kmemtrace_stats_alloc *stats;
-	void *buf;
-
-	local_irq_save(flags);
-
-	buf = relay_reserve(kmemtrace_chan,
-			    sizeof(struct kmemtrace_event) +
-			    sizeof(struct kmemtrace_stats_alloc));
-	if (!buf)
-		goto failed;
-
-	/*
-	 * Don't convert this to use structure initializers,
-	 * C99 does not guarantee the rvalues evaluation order.
-	 */
-
-	ev = buf;
-	ev->event_id = KMEMTRACE_EVENT_ALLOC;
-	ev->type_id = va_arg(*args, int);
-	ev->event_size = sizeof(struct kmemtrace_event) +
-			 sizeof(struct kmemtrace_stats_alloc);
-	ev->seq_num = atomic_add_return(1, &kmemtrace_seq_num);
-	ev->call_site = va_arg(*args, unsigned long);
-	ev->ptr = va_arg(*args, unsigned long);
-
-	stats = buf + sizeof(struct kmemtrace_event);
-	stats->bytes_req = va_arg(*args, unsigned long);
-	stats->bytes_alloc = va_arg(*args, unsigned long);
-	stats->gfp_flags = va_arg(*args, unsigned long);
-	stats->numa_node = va_arg(*args, int);
-
-failed:
-	local_irq_restore(flags);
-}
-
-static void kmemtrace_probe_free(void *probe_data, void *call_data,
-				 const char *format, va_list *args)
-{
-	unsigned long flags;
-	struct kmemtrace_event *ev;
-
-	local_irq_save(flags);
-
-	ev = relay_reserve(kmemtrace_chan, sizeof(struct kmemtrace_event));
-	if (!ev)
-		goto failed;
-
-	/*
-	 * Don't convert this to use structure initializers,
-	 * C99 does not guarantee the rvalues evaluation order.
-	 */
-	ev->event_id = KMEMTRACE_EVENT_FREE;
-	ev->type_id = va_arg(*args, int);
-	ev->event_size = sizeof(struct kmemtrace_event);
-	ev->seq_num = atomic_add_return(1, &kmemtrace_seq_num);
-	ev->call_site = va_arg(*args, unsigned long);
-	ev->ptr = va_arg(*args, unsigned long);
-
-failed:
-	local_irq_restore(flags);
-}
-
-static struct dentry *
-kmemtrace_create_buf_file(const char *filename, struct dentry *parent,
-			  int mode, struct rchan_buf *buf, int *is_global)
-{
-	return debugfs_create_file(filename, mode, parent, buf,
-				   &relay_file_operations);
-}
-
-static int kmemtrace_remove_buf_file(struct dentry *dentry)
-{
-	debugfs_remove(dentry);
-
-	return 0;
-}
-
-static int kmemtrace_subbuf_start(struct rchan_buf *buf,
-				  void *subbuf,
-				  void *prev_subbuf,
-				  size_t prev_padding)
-{
-	if (relay_buf_full(buf)) {
-		/*
-		 * We know it's not SMP-safe, but neither
-		 * debugfs_create_u32() is.
-		 */
-		kmemtrace_buf_overruns++;
-		return 0;
-	}
-
-	return 1;
-}
-
-static struct rchan_callbacks relay_callbacks = {
-	.create_buf_file = kmemtrace_create_buf_file,
-	.remove_buf_file = kmemtrace_remove_buf_file,
-	.subbuf_start = kmemtrace_subbuf_start,
-};
-
-static struct dentry *kmemtrace_dir;
-static struct dentry *kmemtrace_overruns_dentry;
-static struct dentry *kmemtrace_abi_version_dentry;
-
-static struct dentry *kmemtrace_enabled_dentry;
-
-static int kmemtrace_start_probes(void)
-{
-	int err;
-
-	err = marker_probe_register("kmemtrace_alloc", "type_id %d "
-				    "call_site %lu ptr %lu "
-				    "bytes_req %lu bytes_alloc %lu "
-				    "gfp_flags %lu node %d",
-				    kmemtrace_probe_alloc, NULL);
-	if (err)
-		return err;
-	err = marker_probe_register("kmemtrace_free", "type_id %d "
-				    "call_site %lu ptr %lu",
-				    kmemtrace_probe_free, NULL);
-
-	return err;
-}
-
-static void kmemtrace_stop_probes(void)
-{
-	marker_probe_unregister("kmemtrace_alloc",
-				kmemtrace_probe_alloc, NULL);
-	marker_probe_unregister("kmemtrace_free",
-				kmemtrace_probe_free, NULL);
-}
-
-static int kmemtrace_enabled_get(void *data, u64 *val)
-{
-	*val = *((int *) data);
-
-	return 0;
-}
-
-static int kmemtrace_enabled_set(void *data, u64 val)
-{
-	u64 old_val = kmemtrace_enabled;
-
-	*((int *) data) = !!val;
-
-	if (old_val == val)
-		return 0;
-	if (val)
-		kmemtrace_start_probes();
-	else
-		kmemtrace_stop_probes();
-
-	return 0;
-}
-
-DEFINE_SIMPLE_ATTRIBUTE(kmemtrace_enabled_fops,
-			kmemtrace_enabled_get,
-			kmemtrace_enabled_set, "%llu\n");
-
-static void kmemtrace_cleanup(void)
-{
-	if (kmemtrace_enabled_dentry)
-		debugfs_remove(kmemtrace_enabled_dentry);
-
-	kmemtrace_stop_probes();
-
-	if (kmemtrace_abi_version_dentry)
-		debugfs_remove(kmemtrace_abi_version_dentry);
-	if (kmemtrace_overruns_dentry)
-		debugfs_remove(kmemtrace_overruns_dentry);
-
-	relay_close(kmemtrace_chan);
-	kmemtrace_chan = NULL;
-
-	if (kmemtrace_dir)
-		debugfs_remove(kmemtrace_dir);
-}
-
-static int __init kmemtrace_setup_late(void)
-{
-	if (!kmemtrace_chan)
-		goto failed;
-
-	kmemtrace_dir = debugfs_create_dir("kmemtrace", NULL);
-	if (!kmemtrace_dir)
-		goto cleanup;
-
-	kmemtrace_abi_version_dentry =
-		debugfs_create_u32("abi_version", S_IRUSR,
-				   kmemtrace_dir, &kmemtrace_abi_version);
-	kmemtrace_overruns_dentry =
-		debugfs_create_u32("total_overruns", S_IRUSR,
-				   kmemtrace_dir, &kmemtrace_buf_overruns);
-	if (!kmemtrace_overruns_dentry || !kmemtrace_abi_version_dentry)
-		goto cleanup;
-
-	kmemtrace_enabled_dentry =
-		debugfs_create_file("enabled", S_IRUSR | S_IWUSR,
-				    kmemtrace_dir, &kmemtrace_enabled,
-				    &kmemtrace_enabled_fops);
-	if (!kmemtrace_enabled_dentry)
-		goto cleanup;
-
-	if (relay_late_setup_files(kmemtrace_chan, "cpu", kmemtrace_dir))
-		goto cleanup;
-
-	printk(KERN_INFO "kmemtrace: fully up.\n");
-
-	return 0;
-
-cleanup:
-	kmemtrace_cleanup();
-failed:
-	return 1;
-}
-late_initcall(kmemtrace_setup_late);
-
-static int __init kmemtrace_set_boot_enabled(char *str)
-{
-	if (!str)
-		return -EINVAL;
-
-	if (!strcmp(str, "yes"))
-		kmemtrace_enabled = 1;
-	else if (!strcmp(str, "no"))
-		kmemtrace_enabled = 0;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-early_param("kmemtrace.enable", kmemtrace_set_boot_enabled);
-
-static int __init kmemtrace_set_subbufs(char *str)
-{
-	get_option(&str, &kmemtrace_n_subbufs);
-	return 0;
-}
-early_param("kmemtrace.subbufs", kmemtrace_set_subbufs);
-
-void kmemtrace_init(void)
-{
-	if (!kmemtrace_n_subbufs)
-		kmemtrace_n_subbufs = KMEMTRACE_DEF_N_SUBBUFS;
-
-	kmemtrace_chan = relay_open(NULL, NULL, KMEMTRACE_SUBBUF_SIZE,
-				    kmemtrace_n_subbufs, &relay_callbacks,
-				    NULL);
-	if (!kmemtrace_chan) {
-		printk(KERN_ERR "kmemtrace: could not open relay channel.\n");
-		return;
-	}
-
-	if (!kmemtrace_enabled) {
-		printk(KERN_INFO "kmemtrace: disabled. Pass "
-			"kemtrace.enable=yes as kernel parameter for "
-			"boot-time tracing.\n");
-		return;
-	}
-	if (kmemtrace_start_probes()) {
-		printk(KERN_ERR "kmemtrace: could not register marker probes!\n");
-		kmemtrace_cleanup();
-		return;
-	}
-
-	printk(KERN_INFO "kmemtrace: enabled.\n");
-}
-
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-05 20:09 ` [PATCH] kmemtrace: Remove the relay version of kmemtrace Eduard - Gabriel Munteanu
@ 2009-01-05 20:12   ` Eduard - Gabriel Munteanu
  2009-01-06  0:47   ` Frederic Weisbecker
  2009-01-06  8:49   ` Ingo Molnar
  2 siblings, 0 replies; 7+ messages in thread
From: Eduard - Gabriel Munteanu @ 2009-01-05 20:12 UTC (permalink / raw)
  To: mingo; +Cc: penberg, rostedt, fweisbec, linux-kernel

On Mon, Jan 05, 2009 at 10:09:58PM +0200, Eduard - Gabriel Munteanu wrote:
> kmemtrace now uses ftrace. This patch removes the relay version.
> 
> Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>

I still have to port kmemtrace+ftrace to tracepoints, I'll get back to
you soon.


	Cheers,
	Eduard


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-05 20:09 ` [PATCH] kmemtrace: Remove the relay version of kmemtrace Eduard - Gabriel Munteanu
  2009-01-05 20:12   ` Eduard - Gabriel Munteanu
@ 2009-01-06  0:47   ` Frederic Weisbecker
  2009-01-06  8:50     ` Ingo Molnar
  2009-01-06  8:49   ` Ingo Molnar
  2 siblings, 1 reply; 7+ messages in thread
From: Frederic Weisbecker @ 2009-01-06  0:47 UTC (permalink / raw)
  To: Eduard - Gabriel Munteanu; +Cc: mingo, penberg, rostedt, linux-kernel

On Mon, Jan 05, 2009 at 10:09:58PM +0200, Eduard - Gabriel Munteanu wrote:
> kmemtrace now uses ftrace. This patch removes the relay version.
> 
> Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
> ---
>  kernel/trace/Kconfig |    1 -
>  mm/Makefile          |    1 -
>  mm/kmemtrace.c       |  333 --------------------------------------------------
>  3 files changed, 0 insertions(+), 335 deletions(-)
>  delete mode 100644 mm/kmemtrace.c
> 
> diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
> index cc9f91e..4b69dd3 100644
> --- a/kernel/trace/Kconfig
> +++ b/kernel/trace/Kconfig
> @@ -268,7 +268,6 @@ config KMEMTRACE
>  	bool "Trace SLAB allocations"
>  	select TRACING
>  	select MARKERS
> -	select RELAY
>  	help
>  	  kmemtrace provides tracing for slab allocator functions, such as
>  	  kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected
> diff --git a/mm/Makefile b/mm/Makefile
> index 1910665..33892d1 100644
> --- a/mm/Makefile
> +++ b/mm/Makefile
> @@ -36,4 +36,3 @@ obj-$(CONFIG_MIGRATION) += migrate.o
>  obj-$(CONFIG_SMP) += allocpercpu.o
>  obj-$(CONFIG_QUICKLIST) += quicklist.o
>  obj-$(CONFIG_CGROUP_MEM_RES_CTLR) += memcontrol.o page_cgroup.o
> -obj-$(CONFIG_KMEMTRACE) += kmemtrace.o
> diff --git a/mm/kmemtrace.c b/mm/kmemtrace.c
> deleted file mode 100644
> index 0573b50..0000000
> --- a/mm/kmemtrace.c
> +++ /dev/null
> @@ -1,333 +0,0 @@
> -/*
> - * Copyright (C) 2008 Pekka Enberg, Eduard - Gabriel Munteanu
> - *
> - * This file is released under GPL version 2.
> - */
> -
> -#include <linux/string.h>
> -#include <linux/debugfs.h>
> -#include <linux/relay.h>
> -#include <linux/module.h>
> -#include <linux/marker.h>
> -#include <linux/gfp.h>
> -#include <trace/kmemtrace.h>
> -
> -#define KMEMTRACE_SUBBUF_SIZE		524288
> -#define KMEMTRACE_DEF_N_SUBBUFS		20
> -
> -static struct rchan *kmemtrace_chan;
> -static u32 kmemtrace_buf_overruns;
> -
> -static unsigned int kmemtrace_n_subbufs;
> -
> -/* disabled by default */
> -static unsigned int kmemtrace_enabled;
> -
> -/*
> - * The sequence number is used for reordering kmemtrace packets
> - * in userspace, since they are logged as per-CPU data.
> - *
> - * atomic_t should always be a 32-bit signed integer. Wraparound is not
> - * likely to occur, but userspace can deal with it by expecting a certain
> - * sequence number in the next packet that will be read.
> - */
> -static atomic_t kmemtrace_seq_num;
> -
> -#define KMEMTRACE_ABI_VERSION		1
> -
> -static u32 kmemtrace_abi_version __read_mostly = KMEMTRACE_ABI_VERSION;
> -
> -enum kmemtrace_event_id {
> -	KMEMTRACE_EVENT_ALLOC = 0,
> -	KMEMTRACE_EVENT_FREE,
> -};
> -
> -struct kmemtrace_event {
> -	u8		event_id;
> -	u8		type_id;
> -	u16		event_size;
> -	s32		seq_num;
> -	u64		call_site;
> -	u64		ptr;
> -} __attribute__ ((__packed__));
> -
> -struct kmemtrace_stats_alloc {
> -	u64		bytes_req;
> -	u64		bytes_alloc;
> -	u32		gfp_flags;
> -	s32		numa_node;
> -} __attribute__ ((__packed__));
> -
> -static void kmemtrace_probe_alloc(void *probe_data, void *call_data,
> -				  const char *format, va_list *args)
> -{
> -	unsigned long flags;
> -	struct kmemtrace_event *ev;
> -	struct kmemtrace_stats_alloc *stats;
> -	void *buf;
> -
> -	local_irq_save(flags);
> -
> -	buf = relay_reserve(kmemtrace_chan,
> -			    sizeof(struct kmemtrace_event) +
> -			    sizeof(struct kmemtrace_stats_alloc));
> -	if (!buf)
> -		goto failed;
> -
> -	/*
> -	 * Don't convert this to use structure initializers,
> -	 * C99 does not guarantee the rvalues evaluation order.
> -	 */
> -
> -	ev = buf;
> -	ev->event_id = KMEMTRACE_EVENT_ALLOC;
> -	ev->type_id = va_arg(*args, int);
> -	ev->event_size = sizeof(struct kmemtrace_event) +
> -			 sizeof(struct kmemtrace_stats_alloc);
> -	ev->seq_num = atomic_add_return(1, &kmemtrace_seq_num);
> -	ev->call_site = va_arg(*args, unsigned long);
> -	ev->ptr = va_arg(*args, unsigned long);
> -
> -	stats = buf + sizeof(struct kmemtrace_event);
> -	stats->bytes_req = va_arg(*args, unsigned long);
> -	stats->bytes_alloc = va_arg(*args, unsigned long);
> -	stats->gfp_flags = va_arg(*args, unsigned long);
> -	stats->numa_node = va_arg(*args, int);
> -
> -failed:
> -	local_irq_restore(flags);
> -}
> -
> -static void kmemtrace_probe_free(void *probe_data, void *call_data,
> -				 const char *format, va_list *args)
> -{
> -	unsigned long flags;
> -	struct kmemtrace_event *ev;
> -
> -	local_irq_save(flags);
> -
> -	ev = relay_reserve(kmemtrace_chan, sizeof(struct kmemtrace_event));
> -	if (!ev)
> -		goto failed;
> -
> -	/*
> -	 * Don't convert this to use structure initializers,
> -	 * C99 does not guarantee the rvalues evaluation order.
> -	 */
> -	ev->event_id = KMEMTRACE_EVENT_FREE;
> -	ev->type_id = va_arg(*args, int);
> -	ev->event_size = sizeof(struct kmemtrace_event);
> -	ev->seq_num = atomic_add_return(1, &kmemtrace_seq_num);
> -	ev->call_site = va_arg(*args, unsigned long);
> -	ev->ptr = va_arg(*args, unsigned long);
> -
> -failed:
> -	local_irq_restore(flags);
> -}
> -
> -static struct dentry *
> -kmemtrace_create_buf_file(const char *filename, struct dentry *parent,
> -			  int mode, struct rchan_buf *buf, int *is_global)
> -{
> -	return debugfs_create_file(filename, mode, parent, buf,
> -				   &relay_file_operations);
> -}
> -
> -static int kmemtrace_remove_buf_file(struct dentry *dentry)
> -{
> -	debugfs_remove(dentry);
> -
> -	return 0;
> -}
> -
> -static int kmemtrace_subbuf_start(struct rchan_buf *buf,
> -				  void *subbuf,
> -				  void *prev_subbuf,
> -				  size_t prev_padding)
> -{
> -	if (relay_buf_full(buf)) {
> -		/*
> -		 * We know it's not SMP-safe, but neither
> -		 * debugfs_create_u32() is.
> -		 */
> -		kmemtrace_buf_overruns++;
> -		return 0;
> -	}
> -
> -	return 1;
> -}
> -
> -static struct rchan_callbacks relay_callbacks = {
> -	.create_buf_file = kmemtrace_create_buf_file,
> -	.remove_buf_file = kmemtrace_remove_buf_file,
> -	.subbuf_start = kmemtrace_subbuf_start,
> -};
> -
> -static struct dentry *kmemtrace_dir;
> -static struct dentry *kmemtrace_overruns_dentry;
> -static struct dentry *kmemtrace_abi_version_dentry;
> -
> -static struct dentry *kmemtrace_enabled_dentry;
> -
> -static int kmemtrace_start_probes(void)
> -{
> -	int err;
> -
> -	err = marker_probe_register("kmemtrace_alloc", "type_id %d "
> -				    "call_site %lu ptr %lu "
> -				    "bytes_req %lu bytes_alloc %lu "
> -				    "gfp_flags %lu node %d",
> -				    kmemtrace_probe_alloc, NULL);
> -	if (err)
> -		return err;
> -	err = marker_probe_register("kmemtrace_free", "type_id %d "
> -				    "call_site %lu ptr %lu",
> -				    kmemtrace_probe_free, NULL);
> -
> -	return err;
> -}
> -
> -static void kmemtrace_stop_probes(void)
> -{
> -	marker_probe_unregister("kmemtrace_alloc",
> -				kmemtrace_probe_alloc, NULL);
> -	marker_probe_unregister("kmemtrace_free",
> -				kmemtrace_probe_free, NULL);
> -}
> -
> -static int kmemtrace_enabled_get(void *data, u64 *val)
> -{
> -	*val = *((int *) data);
> -
> -	return 0;
> -}
> -
> -static int kmemtrace_enabled_set(void *data, u64 val)
> -{
> -	u64 old_val = kmemtrace_enabled;
> -
> -	*((int *) data) = !!val;
> -
> -	if (old_val == val)
> -		return 0;
> -	if (val)
> -		kmemtrace_start_probes();
> -	else
> -		kmemtrace_stop_probes();
> -
> -	return 0;
> -}
> -
> -DEFINE_SIMPLE_ATTRIBUTE(kmemtrace_enabled_fops,
> -			kmemtrace_enabled_get,
> -			kmemtrace_enabled_set, "%llu\n");
> -
> -static void kmemtrace_cleanup(void)
> -{
> -	if (kmemtrace_enabled_dentry)
> -		debugfs_remove(kmemtrace_enabled_dentry);
> -
> -	kmemtrace_stop_probes();
> -
> -	if (kmemtrace_abi_version_dentry)
> -		debugfs_remove(kmemtrace_abi_version_dentry);
> -	if (kmemtrace_overruns_dentry)
> -		debugfs_remove(kmemtrace_overruns_dentry);
> -
> -	relay_close(kmemtrace_chan);
> -	kmemtrace_chan = NULL;
> -
> -	if (kmemtrace_dir)
> -		debugfs_remove(kmemtrace_dir);
> -}
> -
> -static int __init kmemtrace_setup_late(void)
> -{
> -	if (!kmemtrace_chan)
> -		goto failed;
> -
> -	kmemtrace_dir = debugfs_create_dir("kmemtrace", NULL);
> -	if (!kmemtrace_dir)
> -		goto cleanup;
> -
> -	kmemtrace_abi_version_dentry =
> -		debugfs_create_u32("abi_version", S_IRUSR,
> -				   kmemtrace_dir, &kmemtrace_abi_version);
> -	kmemtrace_overruns_dentry =
> -		debugfs_create_u32("total_overruns", S_IRUSR,
> -				   kmemtrace_dir, &kmemtrace_buf_overruns);
> -	if (!kmemtrace_overruns_dentry || !kmemtrace_abi_version_dentry)
> -		goto cleanup;
> -
> -	kmemtrace_enabled_dentry =
> -		debugfs_create_file("enabled", S_IRUSR | S_IWUSR,
> -				    kmemtrace_dir, &kmemtrace_enabled,
> -				    &kmemtrace_enabled_fops);
> -	if (!kmemtrace_enabled_dentry)
> -		goto cleanup;
> -
> -	if (relay_late_setup_files(kmemtrace_chan, "cpu", kmemtrace_dir))
> -		goto cleanup;
> -
> -	printk(KERN_INFO "kmemtrace: fully up.\n");
> -
> -	return 0;
> -
> -cleanup:
> -	kmemtrace_cleanup();
> -failed:
> -	return 1;
> -}
> -late_initcall(kmemtrace_setup_late);
> -
> -static int __init kmemtrace_set_boot_enabled(char *str)
> -{
> -	if (!str)
> -		return -EINVAL;
> -
> -	if (!strcmp(str, "yes"))
> -		kmemtrace_enabled = 1;
> -	else if (!strcmp(str, "no"))
> -		kmemtrace_enabled = 0;
> -	else
> -		return -EINVAL;
> -
> -	return 0;
> -}
> -early_param("kmemtrace.enable", kmemtrace_set_boot_enabled);
> -
> -static int __init kmemtrace_set_subbufs(char *str)
> -{
> -	get_option(&str, &kmemtrace_n_subbufs);
> -	return 0;
> -}
> -early_param("kmemtrace.subbufs", kmemtrace_set_subbufs);
> -
> -void kmemtrace_init(void)
> -{
> -	if (!kmemtrace_n_subbufs)
> -		kmemtrace_n_subbufs = KMEMTRACE_DEF_N_SUBBUFS;
> -
> -	kmemtrace_chan = relay_open(NULL, NULL, KMEMTRACE_SUBBUF_SIZE,
> -				    kmemtrace_n_subbufs, &relay_callbacks,
> -				    NULL);
> -	if (!kmemtrace_chan) {
> -		printk(KERN_ERR "kmemtrace: could not open relay channel.\n");
> -		return;
> -	}
> -
> -	if (!kmemtrace_enabled) {
> -		printk(KERN_INFO "kmemtrace: disabled. Pass "
> -			"kemtrace.enable=yes as kernel parameter for "
> -			"boot-time tracing.\n");
> -		return;
> -	}
> -	if (kmemtrace_start_probes()) {
> -		printk(KERN_ERR "kmemtrace: could not register marker probes!\n");
> -		kmemtrace_cleanup();
> -		return;
> -	}
> -
> -	printk(KERN_INFO "kmemtrace: enabled.\n");
> -}
> -
> -- 
> 1.6.0.6
> 


BTW, I've kept the MARKERS dependency from the previous CONFIG entry of kmemtrace.
Looks like it is not needed anymore.
So I will drop it...


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-05 20:09 ` [PATCH] kmemtrace: Remove the relay version of kmemtrace Eduard - Gabriel Munteanu
  2009-01-05 20:12   ` Eduard - Gabriel Munteanu
  2009-01-06  0:47   ` Frederic Weisbecker
@ 2009-01-06  8:49   ` Ingo Molnar
  2009-01-06  9:19     ` Ingo Molnar
  2 siblings, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2009-01-06  8:49 UTC (permalink / raw)
  To: Eduard - Gabriel Munteanu; +Cc: penberg, rostedt, fweisbec, linux-kernel


* Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> wrote:

> kmemtrace now uses ftrace. This patch removes the relay version.
> 
> Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
> ---
>  kernel/trace/Kconfig |    1 -
>  mm/Makefile          |    1 -
>  mm/kmemtrace.c       |  333 --------------------------------------------------
>  3 files changed, 0 insertions(+), 335 deletions(-)
>  delete mode 100644 mm/kmemtrace.c

applied to tip/tracing/kmemtrace2, thanks Eduard!

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-06  0:47   ` Frederic Weisbecker
@ 2009-01-06  8:50     ` Ingo Molnar
  0 siblings, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2009-01-06  8:50 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Eduard - Gabriel Munteanu, penberg, rostedt, linux-kernel


* Frederic Weisbecker <fweisbec@gmail.com> wrote:

> > +++ b/kernel/trace/Kconfig
> > @@ -268,7 +268,6 @@ config KMEMTRACE
> >  	bool "Trace SLAB allocations"
> >  	select TRACING
> >  	select MARKERS
> > -	select RELAY

> BTW, I've kept the MARKERS dependency from the previous CONFIG entry of 
> kmemtrace. Looks like it is not needed anymore. So I will drop it...

good point, i've added that to Eduard's patch.

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-06  8:49   ` Ingo Molnar
@ 2009-01-06  9:19     ` Ingo Molnar
  2009-01-06  9:29       ` Eduard - Gabriel Munteanu
  0 siblings, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2009-01-06  9:19 UTC (permalink / raw)
  To: Eduard - Gabriel Munteanu; +Cc: penberg, rostedt, fweisbec, linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> 
> * Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> wrote:
> 
> > kmemtrace now uses ftrace. This patch removes the relay version.
> > 
> > Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
> > ---
> >  kernel/trace/Kconfig |    1 -
> >  mm/Makefile          |    1 -
> >  mm/kmemtrace.c       |  333 --------------------------------------------------
> >  3 files changed, 0 insertions(+), 335 deletions(-)
> >  delete mode 100644 mm/kmemtrace.c
> 
> applied to tip/tracing/kmemtrace2, thanks Eduard!

I needed the small fixlet below as well.

	Ingo

-------------->
>From 3e80680208ba6ce9635ca7c21ad0019442ea166a Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Tue, 6 Jan 2009 10:16:35 +0100
Subject: [PATCH] kmemtrace: add kmemtrace_init()

Impact: build fix

leftover from the relayfs version - but we want to keep it because
this call is the earliest opportunity when we can start kmemtrace
tracing. (after kmem_cache_init()).

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 kernel/trace/kmemtrace.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/kernel/trace/kmemtrace.c b/kernel/trace/kmemtrace.c
index 2bfdcd3..faaa5ae 100644
--- a/kernel/trace/kmemtrace.c
+++ b/kernel/trace/kmemtrace.c
@@ -337,6 +337,11 @@ static struct tracer kmem_tracer __read_mostly = {
 	.flags		= &kmem_tracer_flags
 };
 
+void kmemtrace_init(void)
+{
+	/* earliest opportunity to start kmem tracing */
+}
+
 static int __init init_kmem_tracer(void)
 {
 	return register_tracer(&kmem_tracer);

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] kmemtrace: Remove the relay version of kmemtrace.
  2009-01-06  9:19     ` Ingo Molnar
@ 2009-01-06  9:29       ` Eduard - Gabriel Munteanu
  0 siblings, 0 replies; 7+ messages in thread
From: Eduard - Gabriel Munteanu @ 2009-01-06  9:29 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: penberg, rostedt, fweisbec, linux-kernel

On Tue, Jan 06, 2009 at 10:19:27AM +0100, Ingo Molnar wrote:
> 
> I needed the small fixlet below as well.
> 
> 	Ingo
> 
> -------------->
> >From 3e80680208ba6ce9635ca7c21ad0019442ea166a Mon Sep 17 00:00:00 2001
> From: Ingo Molnar <mingo@elte.hu>
> Date: Tue, 6 Jan 2009 10:16:35 +0100
> Subject: [PATCH] kmemtrace: add kmemtrace_init()
> 
> Impact: build fix
> 
> leftover from the relayfs version - but we want to keep it because
> this call is the earliest opportunity when we can start kmemtrace
> tracing. (after kmem_cache_init()).
> 
> Signed-off-by: Ingo Molnar <mingo@elte.hu>

Good, I'll get acquainted with ftrace and see if we can make kmemtrace
start earlier.


	Cheers,
	Eduard


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-01-06  9:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20090105191330.GA1498@elte.hu>
2009-01-05 20:09 ` [PATCH] kmemtrace: Remove the relay version of kmemtrace Eduard - Gabriel Munteanu
2009-01-05 20:12   ` Eduard - Gabriel Munteanu
2009-01-06  0:47   ` Frederic Weisbecker
2009-01-06  8:50     ` Ingo Molnar
2009-01-06  8:49   ` Ingo Molnar
2009-01-06  9:19     ` Ingo Molnar
2009-01-06  9:29       ` Eduard - Gabriel Munteanu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox