documentation/graphs/fsm_eoe.dot
author Edouard Tisserant <edouard.tisserant@gmail.com>
Mon, 08 Oct 2018 23:16:34 +0200
branchstable-1.5
changeset 2726 ca80d6dac4c8
parent 2513 e60c68f33e4f
permissions -rw-r--r--
devices/rtdmnet.c : abuse RTDM api to allow sendmsg and recvmsg to be called indirectly from userland cobalt process ioctl, while rtdm_socket is created from a kernel thread.
1478
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
/* $Id$ */
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
2513
e60c68f33e4f Improved fon specifications in DOT graphs.
Florian Pose <fp@igh-essen.com>
parents: 1478
diff changeset
     4
digraph eoe {
1478
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
    node [fontname="Helvetica"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
    edge [fontname="Helvetica",fontsize=12]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
    start [shape=point]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
    start -> query
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
    query [label="Query all Mailboxes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
    query -> check_read
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
    check_read [shape=diamond,label="Frames to read?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
    check_read -> unset_idle_read [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
    check_read -> check_idle_read [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
    unset_idle_read [label="Reset idle flag"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
    unset_idle_read -> read
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
    read [label="Read next segment"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
    read -> check_read_finished
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
    check_read_finished [shape=diamond,label="Frame complete?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
    check_read_finished -> read [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
    check_read_finished -> check_write [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
    check_idle_read [shape=diamond,label="Idle flag set?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
    check_idle_read -> set_idle_read [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
    check_idle_read -> sleep_read [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
    set_idle_read [label="Set idle flag"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
    set_idle_read -> check_write
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
    sleep_read [label="Sleep"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
    sleep_read -> check_write
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
    check_write [shape=diamond,label="Frames to write?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
    check_write -> unset_idle_write [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
    check_write -> check_idle_write [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
    unset_idle_write [label="Reset idle flag"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
    unset_idle_write -> write
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
    write [label="Write next segment"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
    write -> check_write_finished
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
    check_write_finished [shape=diamond,label="Frame complete?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
    check_write_finished -> check_read_remaining [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
    check_write_finished -> write [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
    check_read_remaining [shape=diamond,label="Remaining segments to read?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
    check_read_remaining -> query [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
    check_read_remaining -> read [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
    check_idle_write [shape=diamond,label="Idle flag set?"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
    check_idle_write -> set_idle_write [label="no"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
    check_idle_write -> sleep_write [label="yes"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    59
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
    set_idle_write [label="Set idle flag"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
    set_idle_write -> check_read_remaining
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
    sleep_write [label="Sleep"]
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
    sleep_write -> query
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
    /*{rank=same; check_read; check_idle_read}
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    67
    {rank=same; unset_idle_read; set_idle_read; sleep_read}
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    68
    {rank=same; check_write; check_idle_write}
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
    {rank=same; unset_idle_write; set_idle_write; sleep_write}*/
0b19ac5acad2 Redesign of EoE statemachine.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
}