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