Hi Andrzej, On Sun, Sep 30, 2018 at 08:27:19PM +0200, Andrzej Kaczmarek wrote: > I guess device can be powered off simply as a power saving option or > shipping mode so perhaps 'reason' parameter could be added to shutdown > call. I do not know if it really matters to any package whether we shutdown > to reset device or just to power it off, but single extra parameter won't > hurt.
Good idea. > Return codes feel like a bit more intuitive way to do this. You don't > really need to use branching in shutdown code, I think of two other ways to > do this: > 1. create array of pointers to functions and then main shutdown code can > call each function and examine return codes (or, a bit more complicated > way, create new section where these pointers are places and shutdown code > can also iterate them as array) Another good idea. I will try it out and report back! > 2. just return logical "or" of all return codes from all shutdown functions > - zero means shutdown is complete, non-zero means it's in progress (you can > make it a bitmask in case there's need to distinguish few status codes) I am having a hard time seeing how this would work. A logical-or of the return codes would only tell us if at least one subprocedure is still in progress. This is not enough information; we need to know exactly how many are still in progress so that we can determine when they have all completed (i.e., when the counter reaches 0). Are you envisioning a solution that does not require a counter? Chris