Messages in this thread | | | Date | Wed, 11 Jun 2003 22:36:52 +0200 | From | Pavel Machek <> | Subject | Messing up driver model API |
| |
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/
| |