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 <
[email protected]> 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 <[email protected]> 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 <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On 9 May 2016 at 16:28, Bill Fischofer <[email protected]>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Mon, May 9, 2016 at 7:58 AM, Christophe Milard <
>>>> [email protected]> 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 <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Signed-off-by: Bill Fischofer <[email protected]>
>>>>>> ---
>>>>>>  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
>>>>>> [email protected]
>>>>>> https://lists.linaro.org/mailman/listinfo/lng-odp
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to