* [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] [not found] <20130411132739.32763.82609.stgit@warthog.procyon.org.uk> @ 2013-04-11 13:30 ` David Howells 2013-04-11 15:48 ` Tony Lindgren 2013-04-11 16:45 ` David Howells 0 siblings, 2 replies; 5+ messages in thread From: David Howells @ 2013-04-11 13:30 UTC (permalink / raw) To: linux-kernel Cc: Russell King, Kevin Hilman, Tony Lindgren, viro, linux-omap, linux-arm-kernel Don't use create_proc_read_entry() as that is deprecated, but rather use proc_create_data() and seq_file instead. Signed-off-by: David Howells <dhowells@redhat.com> cc: Russell King <linux@arm.linux.org.uk> cc: Kevin Hilman <khilman@deeprootsystems.com> cc: Tony Lindgren <tony@atomide.com> cc: linux-arm-kernel@lists.infradead.org cc: linux-omap@vger.kernel.org --- arch/arm/kernel/swp_emulate.c | 42 +++++++++++++----------------- arch/arm/mach-omap1/pm.c | 58 +++++++++++++++++------------------------ 2 files changed, 43 insertions(+), 57 deletions(-) diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c index 0bba47a..087fc32 100644 --- a/arch/arm/kernel/swp_emulate.c +++ b/arch/arm/kernel/swp_emulate.c @@ -21,6 +21,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/proc_fs.h> +#include <linux/seq_file.h> #include <linux/sched.h> #include <linux/syscalls.h> #include <linux/perf_event.h> @@ -79,27 +80,27 @@ static unsigned long abtcounter; static pid_t previous_pid; #ifdef CONFIG_PROC_FS -static int proc_read_status(char *page, char **start, off_t off, int count, - int *eof, void *data) +static int proc_status_show(struct seq_file *m, void *v) { - char *p = page; - int len; - - p += sprintf(p, "Emulated SWP:\t\t%lu\n", swpcounter); - p += sprintf(p, "Emulated SWPB:\t\t%lu\n", swpbcounter); - p += sprintf(p, "Aborted SWP{B}:\t\t%lu\n", abtcounter); + seq_printf(m, "Emulated SWP:\t\t%lu\n", swpcounter); + seq_printf(m, "Emulated SWPB:\t\t%lu\n", swpbcounter); + seq_printf(m, "Aborted SWP{B}:\t\t%lu\n", abtcounter); if (previous_pid != 0) - p += sprintf(p, "Last process:\t\t%d\n", previous_pid); - - len = (p - page) - off; - if (len < 0) - len = 0; - - *eof = (len <= count) ? 1 : 0; - *start = page + off; + seq_printf(m, "Last process:\t\t%d\n", previous_pid); + return 0; +} - return len; +static int proc_status_open(struct inode *inode, struct file *file) +{ + return single_open(file, proc_status_show, PDE_DATA(inode)); } + +static const struct file_operations proc_status_fops = { + .open = proc_status_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; #endif /* @@ -266,12 +267,7 @@ static struct undef_hook swp_hook = { static int __init swp_emulation_init(void) { #ifdef CONFIG_PROC_FS - struct proc_dir_entry *res; - - res = create_proc_read_entry("cpu/swp_emulation", S_IRUGO, NULL, - proc_read_status, NULL); - - if (!res) + if (!proc_create("cpu/swp_emulation", S_IRUGO, NULL, &proc_status_fops)) return -ENOMEM; #endif /* CONFIG_PROC_FS */ diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 7a7690a..2645e37 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c @@ -38,6 +38,7 @@ #include <linux/suspend.h> #include <linux/sched.h> #include <linux/proc_fs.h> +#include <linux/seq_file.h> #include <linux/interrupt.h> #include <linux/sysfs.h> #include <linux/module.h> @@ -423,22 +424,11 @@ void omap1_pm_suspend(void) } #if defined(DEBUG) && defined(CONFIG_PROC_FS) -static int g_read_completed; - /* * Read system PM registers for debugging */ -static int omap_pm_read_proc( - char *page_buffer, - char **my_first_byte, - off_t virtual_start, - int length, - int *eof, - void *data) +static int omap_pm_proc_show(struct seq_file *m, void *v) { - int my_buffer_offset = 0; - char * const my_base = page_buffer; - ARM_SAVE(ARM_CKCTL); ARM_SAVE(ARM_IDLECT1); ARM_SAVE(ARM_IDLECT2); @@ -479,10 +469,7 @@ static int omap_pm_read_proc( MPUI1610_SAVE(EMIFS_CONFIG); } - if (virtual_start == 0) { - g_read_completed = 0; - - my_buffer_offset += sprintf(my_base + my_buffer_offset, + seq_printf(m, "ARM_CKCTL_REG: 0x%-8x \n" "ARM_IDLECT1_REG: 0x%-8x \n" "ARM_IDLECT2_REG: 0x%-8x \n" @@ -512,8 +499,8 @@ static int omap_pm_read_proc( ULPD_SHOW(ULPD_STATUS_REQ), ULPD_SHOW(ULPD_POWER_CTRL)); - if (cpu_is_omap7xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + if (cpu_is_omap7xx()) { + seq_printf(m, "MPUI7XX_CTRL_REG 0x%-8x \n" "MPUI7XX_DSP_STATUS_REG: 0x%-8x \n" "MPUI7XX_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -526,8 +513,8 @@ static int omap_pm_read_proc( MPUI7XX_SHOW(MPUI_DSP_API_CONFIG), MPUI7XX_SHOW(EMIFF_SDRAM_CONFIG), MPUI7XX_SHOW(EMIFS_CONFIG)); - } else if (cpu_is_omap15xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + } else if (cpu_is_omap15xx()) { + seq_printf(m, "MPUI1510_CTRL_REG 0x%-8x \n" "MPUI1510_DSP_STATUS_REG: 0x%-8x \n" "MPUI1510_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -540,8 +527,8 @@ static int omap_pm_read_proc( MPUI1510_SHOW(MPUI_DSP_API_CONFIG), MPUI1510_SHOW(EMIFF_SDRAM_CONFIG), MPUI1510_SHOW(EMIFS_CONFIG)); - } else if (cpu_is_omap16xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + } else if (cpu_is_omap16xx()) { + seq_printf(m, "MPUI1610_CTRL_REG 0x%-8x \n" "MPUI1610_DSP_STATUS_REG: 0x%-8x \n" "MPUI1610_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -554,25 +541,28 @@ static int omap_pm_read_proc( MPUI1610_SHOW(MPUI_DSP_API_CONFIG), MPUI1610_SHOW(EMIFF_SDRAM_CONFIG), MPUI1610_SHOW(EMIFS_CONFIG)); - } - - g_read_completed++; - } else if (g_read_completed >= 1) { - *eof = 1; - return 0; } - g_read_completed++; - *my_first_byte = page_buffer; - return my_buffer_offset; + return 0; +} + +static int omap_pm_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, omap_pm_proc_show, PDE_DATA(inode)); } +static const struct file_operations omap_pm_proc_fops = { + .open = omap_pm_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + static void omap_pm_init_proc(void) { /* XXX Appears to leak memory */ - create_proc_read_entry("driver/omap_pm", - S_IWUSR | S_IRUGO, NULL, - omap_pm_read_proc, NULL); + create_proc("driver/omap_pm", S_IWUSR | S_IRUGO, NULL, + &omap_pm_proc_fops); } #endif /* DEBUG && CONFIG_PROC_FS */ ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] 2013-04-11 13:30 ` [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] David Howells @ 2013-04-11 15:48 ` Tony Lindgren 2013-04-11 16:45 ` David Howells 1 sibling, 0 replies; 5+ messages in thread From: Tony Lindgren @ 2013-04-11 15:48 UTC (permalink / raw) To: David Howells Cc: linux-kernel, Russell King, Kevin Hilman, viro, linux-omap, linux-arm-kernel * David Howells <dhowells@redhat.com> [130411 06:35]: > Don't use create_proc_read_entry() as that is deprecated, but rather use > proc_create_data() and seq_file instead. > > Signed-off-by: David Howells <dhowells@redhat.com> > cc: Russell King <linux@arm.linux.org.uk> > cc: Kevin Hilman <khilman@deeprootsystems.com> Looks like the mach-omap1/pm.c part we can make into a debugfs entry as it only contains PM debug data. But that we can do after this patch. Acked-by: Tony Lindgren <tony@atomide.com> > cc: linux-arm-kernel@lists.infradead.org > cc: linux-omap@vger.kernel.org > --- > > arch/arm/kernel/swp_emulate.c | 42 +++++++++++++----------------- > arch/arm/mach-omap1/pm.c | 58 +++++++++++++++++------------------------ > 2 files changed, 43 insertions(+), 57 deletions(-) > > diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c > index 0bba47a..087fc32 100644 > --- a/arch/arm/kernel/swp_emulate.c > +++ b/arch/arm/kernel/swp_emulate.c > @@ -21,6 +21,7 @@ > #include <linux/init.h> > #include <linux/kernel.h> > #include <linux/proc_fs.h> > +#include <linux/seq_file.h> > #include <linux/sched.h> > #include <linux/syscalls.h> > #include <linux/perf_event.h> > @@ -79,27 +80,27 @@ static unsigned long abtcounter; > static pid_t previous_pid; > > #ifdef CONFIG_PROC_FS > -static int proc_read_status(char *page, char **start, off_t off, int count, > - int *eof, void *data) > +static int proc_status_show(struct seq_file *m, void *v) > { > - char *p = page; > - int len; > - > - p += sprintf(p, "Emulated SWP:\t\t%lu\n", swpcounter); > - p += sprintf(p, "Emulated SWPB:\t\t%lu\n", swpbcounter); > - p += sprintf(p, "Aborted SWP{B}:\t\t%lu\n", abtcounter); > + seq_printf(m, "Emulated SWP:\t\t%lu\n", swpcounter); > + seq_printf(m, "Emulated SWPB:\t\t%lu\n", swpbcounter); > + seq_printf(m, "Aborted SWP{B}:\t\t%lu\n", abtcounter); > if (previous_pid != 0) > - p += sprintf(p, "Last process:\t\t%d\n", previous_pid); > - > - len = (p - page) - off; > - if (len < 0) > - len = 0; > - > - *eof = (len <= count) ? 1 : 0; > - *start = page + off; > + seq_printf(m, "Last process:\t\t%d\n", previous_pid); > + return 0; > +} > > - return len; > +static int proc_status_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, proc_status_show, PDE_DATA(inode)); > } > + > +static const struct file_operations proc_status_fops = { > + .open = proc_status_open, > + .read = seq_read, > + .llseek = seq_lseek, > + .release = seq_release, > +}; > #endif > > /* > @@ -266,12 +267,7 @@ static struct undef_hook swp_hook = { > static int __init swp_emulation_init(void) > { > #ifdef CONFIG_PROC_FS > - struct proc_dir_entry *res; > - > - res = create_proc_read_entry("cpu/swp_emulation", S_IRUGO, NULL, > - proc_read_status, NULL); > - > - if (!res) > + if (!proc_create("cpu/swp_emulation", S_IRUGO, NULL, &proc_status_fops)) > return -ENOMEM; > #endif /* CONFIG_PROC_FS */ > > diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c > index 7a7690a..2645e37 100644 > --- a/arch/arm/mach-omap1/pm.c > +++ b/arch/arm/mach-omap1/pm.c > @@ -38,6 +38,7 @@ > #include <linux/suspend.h> > #include <linux/sched.h> > #include <linux/proc_fs.h> > +#include <linux/seq_file.h> > #include <linux/interrupt.h> > #include <linux/sysfs.h> > #include <linux/module.h> > @@ -423,22 +424,11 @@ void omap1_pm_suspend(void) > } > > #if defined(DEBUG) && defined(CONFIG_PROC_FS) > -static int g_read_completed; > - > /* > * Read system PM registers for debugging > */ > -static int omap_pm_read_proc( > - char *page_buffer, > - char **my_first_byte, > - off_t virtual_start, > - int length, > - int *eof, > - void *data) > +static int omap_pm_proc_show(struct seq_file *m, void *v) > { > - int my_buffer_offset = 0; > - char * const my_base = page_buffer; > - > ARM_SAVE(ARM_CKCTL); > ARM_SAVE(ARM_IDLECT1); > ARM_SAVE(ARM_IDLECT2); > @@ -479,10 +469,7 @@ static int omap_pm_read_proc( > MPUI1610_SAVE(EMIFS_CONFIG); > } > > - if (virtual_start == 0) { > - g_read_completed = 0; > - > - my_buffer_offset += sprintf(my_base + my_buffer_offset, > + seq_printf(m, > "ARM_CKCTL_REG: 0x%-8x \n" > "ARM_IDLECT1_REG: 0x%-8x \n" > "ARM_IDLECT2_REG: 0x%-8x \n" > @@ -512,8 +499,8 @@ static int omap_pm_read_proc( > ULPD_SHOW(ULPD_STATUS_REQ), > ULPD_SHOW(ULPD_POWER_CTRL)); > > - if (cpu_is_omap7xx()) { > - my_buffer_offset += sprintf(my_base + my_buffer_offset, > + if (cpu_is_omap7xx()) { > + seq_printf(m, > "MPUI7XX_CTRL_REG 0x%-8x \n" > "MPUI7XX_DSP_STATUS_REG: 0x%-8x \n" > "MPUI7XX_DSP_BOOT_CONFIG_REG: 0x%-8x \n" > @@ -526,8 +513,8 @@ static int omap_pm_read_proc( > MPUI7XX_SHOW(MPUI_DSP_API_CONFIG), > MPUI7XX_SHOW(EMIFF_SDRAM_CONFIG), > MPUI7XX_SHOW(EMIFS_CONFIG)); > - } else if (cpu_is_omap15xx()) { > - my_buffer_offset += sprintf(my_base + my_buffer_offset, > + } else if (cpu_is_omap15xx()) { > + seq_printf(m, > "MPUI1510_CTRL_REG 0x%-8x \n" > "MPUI1510_DSP_STATUS_REG: 0x%-8x \n" > "MPUI1510_DSP_BOOT_CONFIG_REG: 0x%-8x \n" > @@ -540,8 +527,8 @@ static int omap_pm_read_proc( > MPUI1510_SHOW(MPUI_DSP_API_CONFIG), > MPUI1510_SHOW(EMIFF_SDRAM_CONFIG), > MPUI1510_SHOW(EMIFS_CONFIG)); > - } else if (cpu_is_omap16xx()) { > - my_buffer_offset += sprintf(my_base + my_buffer_offset, > + } else if (cpu_is_omap16xx()) { > + seq_printf(m, > "MPUI1610_CTRL_REG 0x%-8x \n" > "MPUI1610_DSP_STATUS_REG: 0x%-8x \n" > "MPUI1610_DSP_BOOT_CONFIG_REG: 0x%-8x \n" > @@ -554,25 +541,28 @@ static int omap_pm_read_proc( > MPUI1610_SHOW(MPUI_DSP_API_CONFIG), > MPUI1610_SHOW(EMIFF_SDRAM_CONFIG), > MPUI1610_SHOW(EMIFS_CONFIG)); > - } > - > - g_read_completed++; > - } else if (g_read_completed >= 1) { > - *eof = 1; > - return 0; > } > - g_read_completed++; > > - *my_first_byte = page_buffer; > - return my_buffer_offset; > + return 0; > +} > + > +static int omap_pm_proc_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, omap_pm_proc_show, PDE_DATA(inode)); > } > > +static const struct file_operations omap_pm_proc_fops = { > + .open = omap_pm_proc_open, > + .read = seq_read, > + .llseek = seq_lseek, > + .release = seq_release, > +}; > + > static void omap_pm_init_proc(void) > { > /* XXX Appears to leak memory */ > - create_proc_read_entry("driver/omap_pm", > - S_IWUSR | S_IRUGO, NULL, > - omap_pm_read_proc, NULL); > + create_proc("driver/omap_pm", S_IWUSR | S_IRUGO, NULL, > + &omap_pm_proc_fops); > } > > #endif /* DEBUG && CONFIG_PROC_FS */ > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] 2013-04-11 13:30 ` [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] David Howells 2013-04-11 15:48 ` Tony Lindgren @ 2013-04-11 16:45 ` David Howells 2013-04-11 16:57 ` Tony Lindgren 1 sibling, 1 reply; 5+ messages in thread From: David Howells @ 2013-04-11 16:45 UTC (permalink / raw) To: Tony Lindgren Cc: dhowells, linux-kernel, Russell King, Kevin Hilman, viro, linux-omap, linux-arm-kernel Tony Lindgren <tony@atomide.com> wrote: > Looks like the mach-omap1/pm.c part we can make into > a debugfs entry as it only contains PM debug data. But > that we can do after this patch. If you have a patch to do that, I can substitute it for this one. David ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] 2013-04-11 16:45 ` David Howells @ 2013-04-11 16:57 ` Tony Lindgren 2013-04-11 18:03 ` Tony Lindgren 0 siblings, 1 reply; 5+ messages in thread From: Tony Lindgren @ 2013-04-11 16:57 UTC (permalink / raw) To: David Howells Cc: linux-kernel, Russell King, Kevin Hilman, viro, linux-omap, linux-arm-kernel * David Howells <dhowells@redhat.com> [130411 09:50]: > Tony Lindgren <tony@atomide.com> wrote: > > > Looks like the mach-omap1/pm.c part we can make into > > a debugfs entry as it only contains PM debug data. But > > that we can do after this patch. > > If you have a patch to do that, I can substitute it for this one. Sure will do. Tony ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] 2013-04-11 16:57 ` Tony Lindgren @ 2013-04-11 18:03 ` Tony Lindgren 0 siblings, 0 replies; 5+ messages in thread From: Tony Lindgren @ 2013-04-11 18:03 UTC (permalink / raw) To: David Howells Cc: linux-kernel, Russell King, Kevin Hilman, viro, linux-omap, linux-arm-kernel * Tony Lindgren <tony@atomide.com> [130411 10:01]: > * David Howells <dhowells@redhat.com> [130411 09:50]: > > Tony Lindgren <tony@atomide.com> wrote: > > > > > Looks like the mach-omap1/pm.c part we can make into > > > a debugfs entry as it only contains PM debug data. But > > > that we can do after this patch. > > > > If you have a patch to do that, I can substitute it for this one. > > Sure will do. Here's the updated patch to do it against current linux next. Tested on osk5912. It should not conflict with anything else currently queued, so please feel free to merge it along with your other patches. Note that the patch below does not contain the swp_emulate.c changes. Regards, Tony From: Tony Lindgren <tony@atomide.com> Date: Thu, 11 Apr 2013 10:02:38 -0700 Subject: [PATCH] ARM: OMAP1: Replace PM debug create_proc_read_entry() with debugfs There's no need to keep this entry in proc, it is PM related debug only entry. Let's move it into debugfs. Based on an earlier patch David Howells <dhowells@redhat.com> to use seq_printf and to update to use create_proc_read_entry(). Signed-off-by: Tony Lindgren <tony@atomide.com> diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index db37f49..dd712f1 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c @@ -37,7 +37,8 @@ #include <linux/suspend.h> #include <linux/sched.h> -#include <linux/proc_fs.h> +#include <linux/debugfs.h> +#include <linux/seq_file.h> #include <linux/interrupt.h> #include <linux/sysfs.h> #include <linux/module.h> @@ -423,23 +424,12 @@ void omap1_pm_suspend(void) omap_rev()); } -#if defined(DEBUG) && defined(CONFIG_PROC_FS) -static int g_read_completed; - +#ifdef CONFIG_DEBUG_FS /* * Read system PM registers for debugging */ -static int omap_pm_read_proc( - char *page_buffer, - char **my_first_byte, - off_t virtual_start, - int length, - int *eof, - void *data) +static int omap_pm_debug_show(struct seq_file *m, void *v) { - int my_buffer_offset = 0; - char * const my_base = page_buffer; - ARM_SAVE(ARM_CKCTL); ARM_SAVE(ARM_IDLECT1); ARM_SAVE(ARM_IDLECT2); @@ -480,10 +470,7 @@ static int omap_pm_read_proc( MPUI1610_SAVE(EMIFS_CONFIG); } - if (virtual_start == 0) { - g_read_completed = 0; - - my_buffer_offset += sprintf(my_base + my_buffer_offset, + seq_printf(m, "ARM_CKCTL_REG: 0x%-8x \n" "ARM_IDLECT1_REG: 0x%-8x \n" "ARM_IDLECT2_REG: 0x%-8x \n" @@ -513,8 +500,8 @@ static int omap_pm_read_proc( ULPD_SHOW(ULPD_STATUS_REQ), ULPD_SHOW(ULPD_POWER_CTRL)); - if (cpu_is_omap7xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + if (cpu_is_omap7xx()) { + seq_printf(m, "MPUI7XX_CTRL_REG 0x%-8x \n" "MPUI7XX_DSP_STATUS_REG: 0x%-8x \n" "MPUI7XX_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -527,8 +514,8 @@ static int omap_pm_read_proc( MPUI7XX_SHOW(MPUI_DSP_API_CONFIG), MPUI7XX_SHOW(EMIFF_SDRAM_CONFIG), MPUI7XX_SHOW(EMIFS_CONFIG)); - } else if (cpu_is_omap15xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + } else if (cpu_is_omap15xx()) { + seq_printf(m, "MPUI1510_CTRL_REG 0x%-8x \n" "MPUI1510_DSP_STATUS_REG: 0x%-8x \n" "MPUI1510_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -541,8 +528,8 @@ static int omap_pm_read_proc( MPUI1510_SHOW(MPUI_DSP_API_CONFIG), MPUI1510_SHOW(EMIFF_SDRAM_CONFIG), MPUI1510_SHOW(EMIFS_CONFIG)); - } else if (cpu_is_omap16xx()) { - my_buffer_offset += sprintf(my_base + my_buffer_offset, + } else if (cpu_is_omap16xx()) { + seq_printf(m, "MPUI1610_CTRL_REG 0x%-8x \n" "MPUI1610_DSP_STATUS_REG: 0x%-8x \n" "MPUI1610_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -555,28 +542,37 @@ static int omap_pm_read_proc( MPUI1610_SHOW(MPUI_DSP_API_CONFIG), MPUI1610_SHOW(EMIFF_SDRAM_CONFIG), MPUI1610_SHOW(EMIFS_CONFIG)); - } - - g_read_completed++; - } else if (g_read_completed >= 1) { - *eof = 1; - return 0; } - g_read_completed++; - *my_first_byte = page_buffer; - return my_buffer_offset; + return 0; +} + +static int omap_pm_debug_open(struct inode *inode, struct file *file) +{ + return single_open(file, omap_pm_debug_show, + &inode->i_private); } -static void omap_pm_init_proc(void) +static const struct file_operations omap_pm_debug_fops = { + .open = omap_pm_debug_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +static void omap_pm_init_debugfs(void) { - /* XXX Appears to leak memory */ - create_proc_read_entry("driver/omap_pm", - S_IWUSR | S_IRUGO, NULL, - omap_pm_read_proc, NULL); + struct dentry *d; + + d = debugfs_create_dir("pm_debug", NULL); + if (!d) + return; + + (void) debugfs_create_file("omap_pm", S_IWUSR | S_IRUGO, + d, NULL, &omap_pm_debug_fops); } -#endif /* DEBUG && CONFIG_PROC_FS */ +#endif /* CONFIG_DEBUG_FS */ /* * omap_pm_prepare - Do preliminary suspend work. @@ -701,8 +697,8 @@ static int __init omap_pm_init(void) suspend_set_ops(&omap_pm_ops); -#if defined(DEBUG) && defined(CONFIG_PROC_FS) - omap_pm_init_proc(); +#ifdef CONFIG_DEBUG_FS + omap_pm_init_debugfs(); #endif #ifdef CONFIG_OMAP_32K_TIMER ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-11 18:03 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20130411132739.32763.82609.stgit@warthog.procyon.org.uk> 2013-04-11 13:30 ` [PATCH 25/26] arm: Don't use create_proc_read_entry() [RFC] David Howells 2013-04-11 15:48 ` Tony Lindgren 2013-04-11 16:45 ` David Howells 2013-04-11 16:57 ` Tony Lindgren 2013-04-11 18:03 ` Tony Lindgren
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).