Messing up driver model API

Pavel Machek (pavel@ucw.cz)
Wed, 11 Jun 2003 22:36:52 +0200


Hi!

So you just had to mess it up... Having suspend(device *, state,
level) might be bad, but having suspend(device *, state, level) in one
piece of code and {suspend,save}(device *, state) is *way* worse. (And
I did not see any proposal on l-k. I hope I just missed it).

So are you going to revert it or convert whole driver model to use
{suspend,save}(device *, state)?
Pavel

[driver model] Add save() and restore() methods for system device drivers.

It turns out that at least some system device drivers need to allocate
memory and/or sleep for one reason or another when either saving or
restoring state.

Instead of adding a 'level' paramter to the suspend() and resume() methods,
which I despise and think is a horrible programming interface, two new
methods have been added to struct sysdev_driver:

int (*save)(struct sys_device *, u32 state);
int (*restore)(struct sys_device *);

that are called explicitly before and after suspend() and resume()
respectively, with interrupts enabled. This gives the drivers the
flexibility to allocate memory and sleep, if necessary.

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/