Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] ob1 and req->req_state
From: Brian W. Barrett (brbarret_at_[hidden])
Date: 2008-06-23 15:17:27

Just because it's volatile doesn't mean that adds are atomic. There's at
least one place in the PML (or used to be) where two threads could
decrement that counter at the same time.


On Mon, 23 Jun 2008, Jeff Squyres wrote:

> I see in a few places in ob1 we do things like this:
> OPAL_THREAD_ADD32(&sendreq->req_state, -1);
> Why do we do this? req_state is technically an enum value, so we shouldn't
> be adding/subtracting to it (granted, it looks like the enum values were
> carefully chosen to allow this). Additionally, req_state is volatile; the
> atomics shouldn't be necessary.
> Is there some other non-obvious reason?
> Also, I see this in a few places:
> req->req_state = 2;
> which really should be
> req->req_state = OMPI_REQUEST_ACTIVE;