I think that the wait_order specification behaviour is ambiguous if you have an event specified more than once in the wait_order. IEEE Std 1800 section 14.6 para 3 has the following: "For wait_order to succeed, at any point in the sequence, the subsequent events-which must all be un-triggered at this point, or the sequence would have already failed-must be triggered in the prescribed order. Preceding events are not limited to occur only once. That is, once an event occurs in the prescribed order, it can be triggered again without causing the construct to fail." Consider two events a, b, and a process that has the following construct: wait_order(a, b, a); Do the following sequences of event triggering cause the wait_order to succeed or not? ->a; ->b; ->a; // clear exact sequence SUCCESS ->a; ->a; ->b; ->a; // ? I think it should FAIL second 'a' is out of order but the spec seems to indicate that it is SUCCESS ->a; ->b; ->b; ->a; // ? ->a;- >b; ->a; ->b; // sub-sequence SUCCESS at second 'a' I am not clear if the second and third sequences of events causes wait_order(a, b, a) to succeed or not. If I have wait_order(a, b, a) and the sequence ->a; ->b; ->b; ->a; occurs, does it succeed? If I have wait_order(a, b, a, b) and the sequence ->a; ->b; ->b; ->a; ->b occurs, does it succeed? I think that the sentence: Preceding events are not limited to occur only once. That is, once an event occurs in the prescribed order, it can be triggered again without causing the construct to fail." Should be rewritten as: Preceding events are not limited to occur only once. That is, once an event occurs in the prescribed order, it can be triggered again without causing the construct to fail, unless it is expected to occur again. If an event appears multiple times in a wait_order, it is an error for it to occur out of order until after the last expected occurence in the wait_order. With that, If I have wait_order(a, b, a) and the sequence ->a; ->b; ->b; ->a; The wait will succeed. But if I have wait_order(a, b, a, b) and the sequence ->a; ->b; ->b; ->a; ->b The wait will fail at the second 'b'.Received on Thu Jan 19 05:33:37 2006
This archive was generated by hypermail 2.1.8 : Thu Jan 19 2006 - 05:37:19 PST