* [RFC][PATCH 0/2] PM: More suspend core modifications
@ 2007-06-10 13:19 Rafael J. Wysocki
2007-06-10 13:21 ` [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code Rafael J. Wysocki
2007-06-10 13:22 ` [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type Rafael J. Wysocki
0 siblings, 2 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-06-10 13:19 UTC (permalink / raw)
To: linux-pm; +Cc: Pavel Machek
Hi,
It seems that the core suspend code can be simplified even further. Namely,
it's possible to reduce code duplication in drivers/base/power/suspend.c with
the help of an auxiliary inline finction and it's possible to remove the
suspend and resume support from struct device_type.
Comments welcome.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
^ permalink raw reply [flat|nested] 9+ messages in thread
* [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 13:19 [RFC][PATCH 0/2] PM: More suspend core modifications Rafael J. Wysocki
@ 2007-06-10 13:21 ` Rafael J. Wysocki
2007-06-10 14:55 ` Alan Stern
2007-06-10 19:15 ` Pavel Machek
2007-06-10 13:22 ` [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type Rafael J. Wysocki
1 sibling, 2 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-06-10 13:21 UTC (permalink / raw)
To: linux-pm; +Cc: Pavel Machek
From: Rafael J. Wysocki <rjw@sisk.pl>
Reduce code duplication in drivers/base/suspend.c by introducing an inline
function for printing diagnostic messages.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
drivers/base/power/suspend.c | 49 +++++++++++++++----------------------------
1 file changed, 18 insertions(+), 31 deletions(-)
Index: linux-2.6.22-rc4/drivers/base/power/suspend.c
===================================================================
--- linux-2.6.22-rc4.orig/drivers/base/power/suspend.c 2007-06-10 13:30:45.000000000 +0200
+++ linux-2.6.22-rc4/drivers/base/power/suspend.c 2007-06-10 15:00:40.000000000 +0200
@@ -40,6 +40,14 @@ static inline char *suspend_verb(u32 eve
}
+static inline void
+suspend_device_dbg(struct device * dev, pm_message_t state, char *info)
+{
+ dev_dbg(dev, "%s%s%s\n", info, suspend_verb(state.event),
+ ((state.event == PM_EVENT_SUSPEND) && device_may_wakeup(dev)) ?
+ ", may wakeup" : "");
+}
+
/**
* suspend_device - Save state of one device.
* @dev: Device.
@@ -66,37 +74,21 @@ int suspend_device(struct device * dev,
dev->power.prev_state = dev->power.power_state;
if (dev->class && dev->class->suspend && !dev->power.power_state.event) {
- dev_dbg(dev, "class %s%s\n",
- suspend_verb(state.event),
- ((state.event == PM_EVENT_SUSPEND)
- && device_may_wakeup(dev))
- ? ", may wakeup"
- : ""
- );
+ suspend_device_dbg(dev, state, "class ");
error = dev->class->suspend(dev, state);
suspend_report_result(dev->class->suspend, error);
}
- if (!error && dev->type && dev->type->suspend && !dev->power.power_state.event) {
- dev_dbg(dev, "%s%s\n",
- suspend_verb(state.event),
- ((state.event == PM_EVENT_SUSPEND)
- && device_may_wakeup(dev))
- ? ", may wakeup"
- : ""
- );
+ if (!error && dev->type && dev->type->suspend
+ && !dev->power.power_state.event) {
+ suspend_device_dbg(dev, state, "type ");
error = dev->type->suspend(dev, state);
suspend_report_result(dev->type->suspend, error);
}
- if (!error && dev->bus && dev->bus->suspend && !dev->power.power_state.event) {
- dev_dbg(dev, "%s%s\n",
- suspend_verb(state.event),
- ((state.event == PM_EVENT_SUSPEND)
- && device_may_wakeup(dev))
- ? ", may wakeup"
- : ""
- );
+ if (!error && dev->bus && dev->bus->suspend
+ && !dev->power.power_state.event) {
+ suspend_device_dbg(dev, state, "");
error = dev->bus->suspend(dev, state);
suspend_report_result(dev->bus->suspend, error);
}
@@ -114,14 +106,9 @@ static int suspend_device_late(struct de
{
int error = 0;
- if (dev->bus && dev->bus->suspend_late && !dev->power.power_state.event) {
- dev_dbg(dev, "LATE %s%s\n",
- suspend_verb(state.event),
- ((state.event == PM_EVENT_SUSPEND)
- && device_may_wakeup(dev))
- ? ", may wakeup"
- : ""
- );
+ if (dev->bus && dev->bus->suspend_late
+ && !dev->power.power_state.event) {
+ suspend_device_dbg(dev, state, "LATE ");
error = dev->bus->suspend_late(dev, state);
suspend_report_result(dev->bus->suspend_late, error);
}
^ permalink raw reply [flat|nested] 9+ messages in thread
* [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type
2007-06-10 13:19 [RFC][PATCH 0/2] PM: More suspend core modifications Rafael J. Wysocki
2007-06-10 13:21 ` [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code Rafael J. Wysocki
@ 2007-06-10 13:22 ` Rafael J. Wysocki
2007-06-10 19:22 ` Pavel Machek
1 sibling, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-06-10 13:22 UTC (permalink / raw)
To: linux-pm; +Cc: Pavel Machek
From: Rafael J. Wysocki <rjw@sisk.pl>
The suspend and resume support in struct device_type (include/linux/device.h)
is not used anywhere. It is also undocumented, so it can be removed.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
drivers/base/power/resume.c | 5 -----
drivers/base/power/suspend.c | 7 -------
include/linux/device.h | 2 --
3 files changed, 14 deletions(-)
Index: linux-2.6.22-rc4/drivers/base/power/resume.c
===================================================================
--- linux-2.6.22-rc4.orig/drivers/base/power/resume.c 2007-06-10 15:00:23.000000000 +0200
+++ linux-2.6.22-rc4/drivers/base/power/resume.c 2007-06-10 15:02:04.000000000 +0200
@@ -41,11 +41,6 @@ int resume_device(struct device * dev)
error = dev->bus->resume(dev);
}
- if (!error && dev->type && dev->type->resume) {
- dev_dbg(dev,"resuming\n");
- error = dev->type->resume(dev);
- }
-
if (!error && dev->class && dev->class->resume) {
dev_dbg(dev,"class resume\n");
error = dev->class->resume(dev);
Index: linux-2.6.22-rc4/drivers/base/power/suspend.c
===================================================================
--- linux-2.6.22-rc4.orig/drivers/base/power/suspend.c 2007-06-10 15:00:40.000000000 +0200
+++ linux-2.6.22-rc4/drivers/base/power/suspend.c 2007-06-10 15:02:04.000000000 +0200
@@ -79,13 +79,6 @@ int suspend_device(struct device * dev,
suspend_report_result(dev->class->suspend, error);
}
- if (!error && dev->type && dev->type->suspend
- && !dev->power.power_state.event) {
- suspend_device_dbg(dev, state, "type ");
- error = dev->type->suspend(dev, state);
- suspend_report_result(dev->type->suspend, error);
- }
-
if (!error && dev->bus && dev->bus->suspend
&& !dev->power.power_state.event) {
suspend_device_dbg(dev, state, "");
Index: linux-2.6.22-rc4/include/linux/device.h
===================================================================
--- linux-2.6.22-rc4.orig/include/linux/device.h 2007-06-10 15:00:23.000000000 +0200
+++ linux-2.6.22-rc4/include/linux/device.h 2007-06-10 15:02:04.000000000 +0200
@@ -343,8 +343,6 @@ struct device_type {
int (*uevent)(struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size);
void (*release)(struct device *dev);
- int (*suspend)(struct device * dev, pm_message_t state);
- int (*resume)(struct device * dev);
};
/* interface for exporting device attributes */
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 13:21 ` [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code Rafael J. Wysocki
@ 2007-06-10 14:55 ` Alan Stern
2007-06-10 16:42 ` Rafael J. Wysocki
2007-06-10 19:15 ` Pavel Machek
1 sibling, 1 reply; 9+ messages in thread
From: Alan Stern @ 2007-06-10 14:55 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: linux-pm, Pavel Machek
On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
>
> Reduce code duplication in drivers/base/suspend.c by introducing an inline
> function for printing diagnostic messages.
Could you save object-code space by making the function non-inline?
It looks complicated enough.
Or is the compiler supposed to figure such things out for itself?
Alan Stern
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 14:55 ` Alan Stern
@ 2007-06-10 16:42 ` Rafael J. Wysocki
2007-06-10 20:37 ` Alan Stern
0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-06-10 16:42 UTC (permalink / raw)
To: Alan Stern; +Cc: linux-pm, Pavel Machek
On Sunday, 10 June 2007 16:55, Alan Stern wrote:
> On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
>
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> >
> > Reduce code duplication in drivers/base/suspend.c by introducing an inline
> > function for printing diagnostic messages.
>
> Could you save object-code space by making the function non-inline?
> It looks complicated enough.
I thought I would do that, but then I thought I'd want it to be compiled out if
dev_dbg() were a noop (like when the debugging is off).
> Or is the compiler supposed to figure such things out for itself?
I think it is. I'll remove this 'inline'.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 13:21 ` [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code Rafael J. Wysocki
2007-06-10 14:55 ` Alan Stern
@ 2007-06-10 19:15 ` Pavel Machek
1 sibling, 0 replies; 9+ messages in thread
From: Pavel Machek @ 2007-06-10 19:15 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: linux-pm
Hi!
> Reduce code duplication in drivers/base/suspend.c by introducing an inline
> function for printing diagnostic messages.
>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Looks ok to me.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type
2007-06-10 13:22 ` [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type Rafael J. Wysocki
@ 2007-06-10 19:22 ` Pavel Machek
0 siblings, 0 replies; 9+ messages in thread
From: Pavel Machek @ 2007-06-10 19:22 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: linux-pm
Hi!
> The suspend and resume support in struct device_type (include/linux/device.h)
> is not used anywhere. It is also undocumented, so it can be removed.
I guess you should cc gregkh on this one.. and the previous series
that touches driver model. And perhaps cc lkml is good idea.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 16:42 ` Rafael J. Wysocki
@ 2007-06-10 20:37 ` Alan Stern
2007-06-10 22:43 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: Alan Stern @ 2007-06-10 20:37 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: linux-pm, Pavel Machek
On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
> On Sunday, 10 June 2007 16:55, Alan Stern wrote:
> > On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
> >
> > > From: Rafael J. Wysocki <rjw@sisk.pl>
> > >
> > > Reduce code duplication in drivers/base/suspend.c by introducing an inline
> > > function for printing diagnostic messages.
> >
> > Could you save object-code space by making the function non-inline?
> > It looks complicated enough.
>
> I thought I would do that, but then I thought I'd want it to be compiled out if
> dev_dbg() were a noop (like when the debugging is off).
You can always do something like this:
#ifdef DEBUG
static void print_msg(...)
{
...
}
#else
static inline void print_msg(...)
{ }
#endif
Alan Stern
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code
2007-06-10 20:37 ` Alan Stern
@ 2007-06-10 22:43 ` Rafael J. Wysocki
0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-06-10 22:43 UTC (permalink / raw)
To: Alan Stern; +Cc: linux-pm, Pavel Machek
On Sunday, 10 June 2007 22:37, Alan Stern wrote:
> On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
>
> > On Sunday, 10 June 2007 16:55, Alan Stern wrote:
> > > On Sun, 10 Jun 2007, Rafael J. Wysocki wrote:
> > >
> > > > From: Rafael J. Wysocki <rjw@sisk.pl>
> > > >
> > > > Reduce code duplication in drivers/base/suspend.c by introducing an inline
> > > > function for printing diagnostic messages.
> > >
> > > Could you save object-code space by making the function non-inline?
> > > It looks complicated enough.
> >
> > I thought I would do that, but then I thought I'd want it to be compiled out if
> > dev_dbg() were a noop (like when the debugging is off).
>
> You can always do something like this:
>
> #ifdef DEBUG
>
> static void print_msg(...)
> {
> ...
> }
>
> #else
>
> static inline void print_msg(...)
> { }
> #endif
Well, IMHO, that doesn't look very nice. ;-)
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-06-10 22:43 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-10 13:19 [RFC][PATCH 0/2] PM: More suspend core modifications Rafael J. Wysocki
2007-06-10 13:21 ` [RFC][PATCH 1/2] PM: Reduce code duplication in the core suspend code Rafael J. Wysocki
2007-06-10 14:55 ` Alan Stern
2007-06-10 16:42 ` Rafael J. Wysocki
2007-06-10 20:37 ` Alan Stern
2007-06-10 22:43 ` Rafael J. Wysocki
2007-06-10 19:15 ` Pavel Machek
2007-06-10 13:22 ` [RFC][PATCH 2/2] PM: Remove suspend and resume support from struct device_type Rafael J. Wysocki
2007-06-10 19:22 ` Pavel Machek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox