aboutsummaryrefslogtreecommitdiff
path: root/docs/driver_library_sequence.svg
blob: 1103a05218a05499f23cd7b8712491a282c5549d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1083px" preserveAspectRatio="none" style="width:831px;height:1083px;background:#FEFEFE;" version="1.1" viewBox="0 0 831 1083" width="831px" zoomAndPan="magnify"><defs><filter height="300%" id="f528w0w85mfwd" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#0091BD" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="89" x="9" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="12" y="16.0669">Application</text><rect fill="#00C1DE" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="389" x="109" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="255.5" y="16.0669">Driver library</text><rect fill="#7D868C" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="320" x="500" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="612.5" y="16.0669">Kernel driver</text><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="956.5859" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.5625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="269.0938"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="577.2891"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="709.8203"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="114.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="289.5" y="409.625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="857.3516"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="57.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="958.75"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="531.5" y="157.6953"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="298.2266"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="606.4219"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="738.9531"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="680.5" y="438.7578"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="886.4844"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="14.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="987.8828"/><rect fill="#FEFEFE" filter="url(#f528w0w85mfwd)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="539.1563"/><rect fill="#FEFEFE" filter="url(#f528w0w85mfwd)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="671.6875"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="53" x2="53" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="145" x2="145" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="217" x2="217" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="294" x2="294" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="452" x2="452" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="536" x2="536" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="608" x2="608" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="685" x2="685" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="774" x2="774" y1="58.4297" y2="1034.0156"/><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="43.1279">main()</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="1053.0107">main()</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="1053.0107">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="1053.0107">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="257" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="264" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="257" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="264" y="1053.0107">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="411" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="418" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="411" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="418" y="1053.0107">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="504" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="511" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="504" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="511" y="1053.0107">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="579" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="586" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="579" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="586" y="1053.0107">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="648" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="655" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="648" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="655" y="1053.0107">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="733" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="740" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="733" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="740" y="1053.0107">Inference</text><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="956.5859" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.5625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="269.0938"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="577.2891"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="709.8203"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="114.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="289.5" y="409.625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="857.3516"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="57.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="958.75"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="531.5" y="157.6953"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="298.2266"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="606.4219"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="738.9531"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="680.5" y="438.7578"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="886.4844"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="14.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="987.8828"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="89,73.4297,89,98.4297,198,98.4297,198,83.4297,188,73.4297,89,73.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="188" x2="188" y1="73.4297" y2="83.4297"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="198" x2="188" y1="83.4297" y2="83.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="95" y="90.4966">Create device</text><polygon fill="#A80036" points="128.5,124.5625,138.5,128.5625,128.5,132.5625,132.5,128.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="134.5" y1="128.5625" y2="128.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="53" x="65.5" y="123.6294">Device()</text><polygon fill="#A80036" points="519.5,153.6953,529.5,157.6953,519.5,161.6953,523.5,157.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="150.5" x2="525.5" y1="157.6953" y2="157.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="157.5" y="152.7622">open(&lt;device node&gt;)</text><polygon fill="#A80036" points="161.5,182.8281,151.5,186.8281,161.5,190.8281,157.5,186.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="155.5" x2="535.5" y1="186.8281" y2="186.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="167.5" y="181.895">file descriptor</text><polygon fill="#A80036" points="69.5,196.9609,59.5,200.9609,69.5,204.9609,65.5,200.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="144.5" y1="200.9609" y2="200.9609"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="186,213.9609,186,238.9609,398,238.9609,398,223.9609,388,213.9609,186,213.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="388" x2="388" y1="213.9609" y2="223.9609"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="398" x2="388" y1="223.9609" y2="223.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="191" x="192" y="231.0278">Allocate and fill network buffer</text><polygon fill="#A80036" points="200.5,265.0938,210.5,269.0938,200.5,273.0938,204.5,269.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="269.0938" y2="269.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="264.1606">Buffer(device)</text><polygon fill="#A80036" points="591.5,294.2266,601.5,298.2266,591.5,302.2266,595.5,298.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="298.2266" y2="298.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="293.2935">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,323.3594,223.5,327.3594,233.5,331.3594,229.5,327.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="327.3594" y2="327.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="322.4263">file descriptor</text><polygon fill="#A80036" points="69.5,337.4922,59.5,341.4922,69.5,345.4922,65.5,341.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="341.4922" y2="341.4922"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="162,354.4922,162,379.4922,422,379.4922,422,364.4922,412,354.4922,162,354.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="412" x2="412" y1="354.4922" y2="364.4922"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="422" x2="412" y1="364.4922" y2="364.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="239" x="168" y="371.5591">Create network, parse network model</text><polygon fill="#A80036" points="277.5,405.625,287.5,409.625,277.5,413.625,281.5,409.625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="283.5" y1="409.625" y2="409.625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="65.5" y="404.6919">Network(device, buffer)</text><polygon fill="#A80036" points="668.5,434.7578,678.5,438.7578,668.5,442.7578,672.5,438.7578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="299.5" x2="674.5" y1="438.7578" y2="438.7578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="306.5" y="433.8247">ioctl(NETWORK_CREATE)</text><polygon fill="#A80036" points="310.5,463.8906,300.5,467.8906,310.5,471.8906,306.5,467.8906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="304.5" x2="684.5" y1="467.8906" y2="467.8906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="316.5" y="462.9575">file descriptor</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="299.5" x2="341.5" y1="497.1563" y2="497.1563"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="341.5" x2="341.5" y1="497.1563" y2="510.1563"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="300.5" x2="341.5" y1="510.1563" y2="510.1563"/><polygon fill="#A80036" points="310.5,506.1563,300.5,510.1563,310.5,514.1563,306.5,510.1563" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="306.5" y="492.0903">Parse network model</text><polygon fill="#A80036" points="69.5,520.1563,59.5,524.1563,69.5,528.1563,65.5,524.1563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="293.5" y1="524.1563" y2="524.1563"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="539.1563"/><polygon fill="#EEEEEE" points="13,539.1563,90,539.1563,90,546.1563,80,556.1563,13,556.1563,13,539.1563" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="552.2231">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="188" x="105" y="551.3667">[Allocate and fill IFM buffers]</text><polygon fill="#A80036" points="200.5,573.2891,210.5,577.2891,200.5,581.2891,204.5,577.2891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="577.2891" y2="577.2891"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="572.356">Buffer(device)</text><polygon fill="#A80036" points="591.5,602.4219,601.5,606.4219,591.5,610.4219,595.5,606.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="606.4219" y2="606.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="601.4888">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,631.5547,223.5,635.5547,233.5,639.5547,229.5,635.5547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="635.5547" y2="635.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="630.6216">file descriptor</text><polygon fill="#A80036" points="69.5,645.6875,59.5,649.6875,69.5,653.6875,65.5,649.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="649.6875" y2="649.6875"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="671.6875"/><polygon fill="#EEEEEE" points="13,671.6875,90,671.6875,90,678.6875,80,688.6875,13,688.6875,13,671.6875" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="684.7544">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="145" x="105" y="683.8979">[Allocate OFM buffers]</text><polygon fill="#A80036" points="200.5,705.8203,210.5,709.8203,200.5,713.8203,204.5,709.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="709.8203" y2="709.8203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="704.8872">Buffer(device)</text><polygon fill="#A80036" points="591.5,734.9531,601.5,738.9531,591.5,742.9531,595.5,738.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="738.9531" y2="738.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="734.02">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,764.0859,223.5,768.0859,233.5,772.0859,229.5,768.0859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="768.0859" y2="768.0859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="763.1528">file descriptor</text><polygon fill="#A80036" points="69.5,778.2188,59.5,782.2188,69.5,786.2188,65.5,782.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="782.2188" y2="782.2188"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="360,802.2188,360,827.2188,540,827.2188,540,812.2188,530,802.2188,360,802.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="530" x2="530" y1="802.2188" y2="812.2188"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="540" x2="530" y1="812.2188" y2="812.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="159" x="366" y="819.2856">Create and run inference</text><polygon fill="#A80036" points="435.5,853.3516,445.5,857.3516,435.5,861.3516,439.5,857.3516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="441.5" y1="857.3516" y2="857.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="180" x="65.5" y="852.4185">Inference(network, ifm, ofm)</text><polygon fill="#A80036" points="757.5,882.4844,767.5,886.4844,757.5,890.4844,761.5,886.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="457.5" x2="763.5" y1="886.4844" y2="886.4844"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="464.5" y="881.5513">ioctl(INFERENCE_CREATE)</text><polygon fill="#A80036" points="468.5,911.6172,458.5,915.6172,468.5,919.6172,464.5,915.6172" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="462.5" x2="773.5" y1="915.6172" y2="915.6172"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="474.5" y="910.6841">file descriptor</text><polygon fill="#A80036" points="69.5,925.75,59.5,929.75,69.5,933.75,65.5,929.75" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="451.5" y1="929.75" y2="929.75"/><polygon fill="#A80036" points="435.5,954.75,445.5,958.75,435.5,962.75,439.5,958.75" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="441.5" y1="958.75" y2="958.75"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="65.5" y="953.8169">wait(file descriptor)</text><polygon fill="#A80036" points="757.5,983.8828,767.5,987.8828,757.5,991.8828,761.5,987.8828" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="457.5" x2="763.5" y1="987.8828" y2="987.8828"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="118" x="464.5" y="982.9497">poll(file descriptor)</text><polygon fill="#A80036" points="468.5,998.0156,458.5,1002.0156,468.5,1006.0156,464.5,1002.0156" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="462.5" x2="773.5" y1="1002.0156" y2="1002.0156"/><polygon fill="#A80036" points="69.5,1012.0156,59.5,1016.0156,69.5,1020.0156,65.5,1016.0156" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="451.5" y1="1016.0156" y2="1016.0156"/><!--
@startuml

skinparam backgroundColor #FEFEFE

box "Application" #0091BD
participant "main()" as main
end box

box "Driver library" #00C1DE
participant "Device" as ddev
participant "Buffer" as dbuf
participant "Network" as dnet
participant "Inference" as dinf
end box

box "Kernel driver" #7D868C
participant "Device" as kdev
participant "Buffer" as kbuf
participant "Network" as knet
participant "Inference" as kinf
end box

note over ddev
    Create device
end note
activate main
main -> ddev++: Device()
    ddev -> kdev++: open(<device node>)
    return file descriptor
return

note over dnet
    Allocate and fill network buffer
end note

main -> dbuf++: Buffer(device)
    dbuf -> kbuf++: ioctl(BUFFER_CREATE)
    return file descriptor
return

note over dnet
    Create network, parse network model
end note

main -> dnet++: Network(device, buffer)
    dnet -> knet++: ioctl(NETWORK_CREATE)
    return file descriptor

    dnet -> dnet: Parse network model
return

loop Allocate and fill IFM buffers
    main -> dbuf++: Buffer(device)
        dbuf -> kbuf++: ioctl(BUFFER_CREATE)
        return file descriptor
    return
end loop

loop Allocate OFM buffers
    main -> dbuf++: Buffer(device)
        dbuf -> kbuf++: ioctl(BUFFER_CREATE)
        return file descriptor
    return
end loop

note over dinf
    Create and run inference
end note
main -> dinf++: Inference(network, ifm, ofm)
    dinf -> kinf++: ioctl(INFERENCE_CREATE)
    return file descriptor
return

main -> dinf++: wait(file descriptor)
    dinf -> kinf++: poll(file descriptor)
    return
return

@enduml

PlantUML version 1.2017.15(Mon Jul 03 18:45:34 CEST 2017)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.11+9-Ubuntu-0ubuntu2.18.04
Operating System: Linux
OS Version: 5.4.0-73-generic
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>