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