On Wed, Sep 07, 2016 at 10:45:07AM +0200, Daniel Wagner wrote:
From: Daniel Wagner <daniel.wagner@xxxxxxxxxxxx>
We track the state of the loading with bit ops. Since the state machine
has only a couple of states and there are only a few simple state
transition
And they are all mutually exclusive ?
we can model this simplify.
UNKNOWN -> LOADING -> DONE | ABORTED
So why unsigned long ? Why not a u8?
return ret;
@@ -138,13 +140,11 @@ static int fw_status_wait_timeout(struct fw_status *fw_st, long timeout)
static void __fw_status_set(struct fw_status *fw_st,
unsigned long status)
{
- set_bit(status, &fw_st->status);
+ WRITE_ONCE(fw_st->status, status);
if (status == FW_STATUS_DONE ||
- status == FW_STATUS_ABORTED) {
- clear_bit(FW_STATUS_LOADING, &fw_st->status);
+ status == FW_STATUS_ABORTED)
complete_all(&fw_st->completion);
- }
}
#define fw_status_start(fw_st) \
See if all the above were prefixed with fw_umh or something like it
it would make this easier to read and tell this is all umh related.