The green is for Timer related transitions while the blue is for Timeout
related transitions. This format also seemed to get rid of some of the
annoying line crossings. The red arrows are the transitions that relate to
timer expiration and resulting timeout event scheduling, neither of which
involve Timer APIs. So the colors were supposed to make things easier to
read.

I'm all for improving clarity, so if you have a better way of diagraming
this that's great. I believe the diagrams and text go together in either
case and are intended to be taken together to improve understanding.  The
goal of each of these sections of the User Guide should be to give readers
confidence that they understand how to use these APIs in writing their own
ODP applications, or for ODP implementers to understand the semantics they
need to provide in their own implementations of them.

On Thu, May 12, 2016 at 3:13 AM, Christophe Milard <
christophe.mil...@linaro.org> wrote:

> Hi,
>
> I am still confused with this shared FSM for the 2 distinct objects: The
> red seems to be actions associated with the transitions (and the timer
> expiration event is no longer shown on the transition showing the actions).
> I am not sure what the distinction between the green and blue events are.
> I propose the following: I will send a complete proposal to you, including
> both the FSMs and the text. If we still disagree on which one is clearer,
> we'll let other reviewer decide (you/I would sent a v4 with my stuff in).
> If no one does react, I am ok to mark your proposal as reviewed because
> some doc is better than none.
>
> So you are sure to  win :-)
>
> Christophe.
>
> On 11 May 2016 at 01:47, Bill Fischofer <bill.fischo...@linaro.org> wrote:
>
>> I looked at them and I liked the added color so reworked my diagram
>> adding that and posted a v3 for it. I'm not sure trying to separate into
>> two diagrams really helps but perhaps this reworked diagram is easier to
>> follow?
>>
>> On Tue, May 10, 2016 at 3:45 AM, Christophe Milard <
>> christophe.mil...@linaro.org> wrote:
>>
>>> Hi Bill,
>>>
>>> Just sent you an RFC with 2 FSMs.
>>> Had to fight a bit with graphviz. Not finished yet. I will continue
>>> working on it if you think that makes sense...
>>> Christophe.
>>>
>>> On 9 May 2016 at 17:15, Bill Fischofer <bill.fischo...@linaro.org>
>>> wrote:
>>>
>>>> As we discussed in our call, we can both play around with graphviz and
>>>> see if a prettier diagram can be constructed that is perhaps clearer,
>>>> possibly with two separate FSMs.
>>>>
>>>> On Mon, May 9, 2016 at 9:39 AM, Christophe Milard <
>>>> christophe.mil...@linaro.org> wrote:
>>>>
>>>>>
>>>>>
>>>>> On 9 May 2016 at 16:28, Bill Fischofer <bill.fischo...@linaro.org>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, May 9, 2016 at 7:58 AM, Christophe Milard <
>>>>>> christophe.mil...@linaro.org> wrote:
>>>>>>
>>>>>>> I am a bit confused by this diagram: It feels to me that timers and
>>>>>>> timeout have separate lives (even , if of course some dependency exist).
>>>>>>> From this diagram, it feels like these 2 separate objects (timers
>>>>>>> and time out events) share states...? do they?
>>>>>>>
>>>>>>
>>>>>> Actually they do, which is what this diagram is trying to express.
>>>>>> When a timer is set one of the arguments is the timeout event that should
>>>>>> be associated with it, so it is an error to attempt to free that event
>>>>>> while it is associated with a set timer (results are undefined if you 
>>>>>> do).
>>>>>> Timers are somewhat unique in this respect.
>>>>>>
>>>>>
>>>>> Sorry, Bill I still don't get it: Aren't you saying here that these
>>>>> are 2 separate FSMs, but that these 2 separate FSMs are actually
>>>>> actionned/"triggered" by (partly) the same events? There is nothing wrong
>>>>> with that... Then they should be represented as 2 separated FSM with the
>>>>> same event names on the transitions triggered by the same events...
>>>>>  Or I am very confused...
>>>>>
>>>>> Christophe.
>>>>>
>>>>>>
>>>>>>
>>>>>>> In my head, and from the understanding I had, it feels that the to 4
>>>>>>> top states are for timers, whereas time-out events have only 2 states:
>>>>>>> Unallocated or allocated.
>>>>>>> It feels you are doing 1 FSM out of two. Maybe , it should be two
>>>>>>> FSM (keeping the same transition names to show the dependancy.)
>>>>>>>
>>>>>>> And I guess there is a typo at "odp_timeout_freee().
>>>>>>>
>>>>>>
>>>>>> Thanks.  I'll fix that in the next version.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Christophe
>>>>>>>
>>>>>>> On 7 May 2016 at 18:15, Bill Fischofer <bill.fischo...@linaro.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org>
>>>>>>>> ---
>>>>>>>>  doc/images/.gitignore       |  1 +
>>>>>>>>  doc/images/timer_fsm.gv     | 38
>>>>>>>> ++++++++++++++++++++++++++++++++++++++
>>>>>>>>  doc/users-guide/Makefile.am |  1 +
>>>>>>>>  3 files changed, 40 insertions(+)
>>>>>>>>  create mode 100644 doc/images/timer_fsm.gv
>>>>>>>>
>>>>>>>> diff --git a/doc/images/.gitignore b/doc/images/.gitignore
>>>>>>>> index a19aa75..72cf7ec 100644
>>>>>>>> --- a/doc/images/.gitignore
>>>>>>>> +++ b/doc/images/.gitignore
>>>>>>>> @@ -1,2 +1,3 @@
>>>>>>>>  resource_management.svg
>>>>>>>>  pktio_fsm.svg
>>>>>>>> +timer_fsm.svg
>>>>>>>> diff --git a/doc/images/timer_fsm.gv b/doc/images/timer_fsm.gv
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000..f8cb21a
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/doc/images/timer_fsm.gv
>>>>>>>> @@ -0,0 +1,38 @@
>>>>>>>> +digraph timer_state_machine {
>>>>>>>> +       rankdir=LR;
>>>>>>>> +       size="12,20";
>>>>>>>> +       node [fontsize=28];
>>>>>>>> +       edge [fontsize=28];
>>>>>>>> +       node [shape=doublecircle]; Timer_Unalloc
>>>>>>>> +                                  Timeout_Unalloc
>>>>>>>> +                                  Timeout_Delivered;
>>>>>>>> +        node [shape=rectangle]; Timeout_Queued;
>>>>>>>> +       node [shape=circle];
>>>>>>>> +       Timer_Unalloc -> Timer_Alloc [label="odp_timer_alloc()"];
>>>>>>>> +       Timer_Alloc -> Timer_Unalloc [label="odp_timer_free()"];
>>>>>>>> +       Timer_Alloc -> Timer_Set [label="odp_timer_set_abs()"];
>>>>>>>> +       Timer_Alloc -> Timer_Set [label="odp_timer_set_rel()"];
>>>>>>>> +       Timer_Set -> Timer_Alloc [label="odp_timer_cancel()"];
>>>>>>>> +       Timer_Set -> Timeout_Alloc
>>>>>>>> +                       [label="odp_timer_cancel()"
>>>>>>>> constraint=false];
>>>>>>>> +       Timer_Set -> Timeout_Queued [label="=>odp_queue_enq()"];
>>>>>>>> +       Timeout_Queued -> Timeout_Delivered
>>>>>>>> [label="odp_schedule()"];
>>>>>>>> +       Timeout_Unalloc -> Timeout_Alloc
>>>>>>>> +                        [label="odp_timeout_alloc()"
>>>>>>>> constraint=false];
>>>>>>>> +       Timeout_Alloc -> Timeout_Unalloc
>>>>>>>> +                        [label="odp_timeout_free()"
>>>>>>>> constraint=false];
>>>>>>>> +       Timeout_Alloc -> Timer_Set
>>>>>>>> +                        [label="odp_timer_set_abs()"
>>>>>>>> constraint=false];
>>>>>>>> +       Timeout_Alloc -> Timer_Set
>>>>>>>> +                        [label="odp_timer_set_rel()"];
>>>>>>>> +       Timeout_Delivered -> Timer_Unalloc
>>>>>>>> [label="odp_timer_free()"];
>>>>>>>> +       Timeout_Delivered -> Timer_Set
>>>>>>>> [label="odp_timer_set_abs()"];
>>>>>>>> +       Timeout_Delivered -> Timer_Set
>>>>>>>> [label="odp_timer_set_rel()"];
>>>>>>>> +       Timeout_Delivered -> Timeout_Delivered
>>>>>>>> +                         [label="odp_timeout_from_event()"];
>>>>>>>> +       Timeout_Delivered -> Timeout_Delivered
>>>>>>>> +                         [label="odp_timeout_timer()"];
>>>>>>>> +       Timeout_Delivered -> Timeout_Unalloc
>>>>>>>> +                         [label="odp_event_free() /
>>>>>>>> odp_timeout_freee()"
>>>>>>>> +                         constraint=false];
>>>>>>>> +}
>>>>>>>> diff --git a/doc/users-guide/Makefile.am
>>>>>>>> b/doc/users-guide/Makefile.am
>>>>>>>> index 74caa96..6bb0131 100644
>>>>>>>> --- a/doc/users-guide/Makefile.am
>>>>>>>> +++ b/doc/users-guide/Makefile.am
>>>>>>>> @@ -30,6 +30,7 @@ IMAGES = $(top_srcdir)/doc/images/overview.svg \
>>>>>>>>          $(top_srcdir)/doc/images/release_git.svg \
>>>>>>>>          $(top_srcdir)/doc/images/segment.svg \
>>>>>>>>          $(top_srcdir)/doc/images/simple_release_git.svg \
>>>>>>>> +        $(top_srcdir)/doc/images/timer_fsm.svg \
>>>>>>>>          $(top_srcdir)/doc/images/tm_hierarchy.svg \
>>>>>>>>          $(top_srcdir)/doc/images/tm_node.svg
>>>>>>>>
>>>>>>>> --
>>>>>>>> 2.5.0
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> lng-odp mailing list
>>>>>>>> lng-odp@lists.linaro.org
>>>>>>>> https://lists.linaro.org/mailman/listinfo/lng-odp
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to