Sebastian Huber wrote:
I will add the lock to the rtems_chain_control to keep it simple.

Given below I think we will need more.


There is a big problem with the extract operation:

void _Chain_Extract(
Chain_Node *node
)
{
ISR_Level level;

_ISR_Disable( level );
_Chain_Extract_unprotected( node );
_ISR_Enable( level );
}

Here we don't have access to the corresponding chain control and thus
the lock object.

Ouch.

Thus the normal extract operation is not available on SMP. An extract
variant which needs also the chain control as a parameter must be used.

I think a node may need a back pointer to the chain control that contains a lock. I suspect we cannot have a single score chain control structure for both protected and unprotected operations and support the current extract. I have not looked at all the uses of extract in the code so I do not know if the chain control is available and even it is I think the node should handle this.

Chris
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to