blob: 8b3b4a32c3fa746e673030c1a6ff7a7d1beaa0ce [file] [log] [blame]
<?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="380px" preserveAspectRatio="none" style="width:874px;height:380px;background:#FEFEFE;" version="1.1" viewBox="0 0 874 380" width="874px" zoomAndPan="magnify"><defs><filter height="300%" id="fflf1tczznf06" 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="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="89" x="71" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="74" y="16.0669">Application</text><rect fill="#00C1DE" height="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="320" x="162" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="274" y="16.0669">Driver library</text><rect fill="#7D868C" height="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="320" x="539" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="651.5" y="16.0669">Kernel driver</text><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="254.0625" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="110.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="169.7969" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="342.5" y="143.6953"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="126.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="570.5" y="172.8281"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="719.5" y="241.0938"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="115" x2="115" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="198" x2="198" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="270" x2="270" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="347" x2="347" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="436" x2="436" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="575" x2="575" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="647" x2="647" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="724" x2="724" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="813" x2="813" y1="58.4297" y2="331.4922"/><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="85" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="92" y="43.1279">main()</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="85" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="92" y="350.4873">main()</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="166" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="173" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="166" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="173" y="350.4873">Device</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="241" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="248" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="241" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="248" y="350.4873">Buffer</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="310" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="317" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="310" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="317" y="350.4873">Network</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="395" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="402" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="395" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="402" y="350.4873">Inference</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="543" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="550" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="543" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="550" y="350.4873">Device</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="618" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="625" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="618" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="625" y="350.4873">Buffer</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="687" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="694" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="687" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="694" y="350.4873">Network</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="772" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="779" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#fflf1tczznf06)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="772" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="779" y="350.4873">Inference</text><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="254.0625" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="110.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="169.7969" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="342.5" y="143.6953"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="126.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="570.5" y="172.8281"/><rect fill="#FFFFFF" filter="url(#fflf1tczznf06)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="719.5" y="241.0938"/><polygon fill="#FBFB77" filter="url(#fflf1tczznf06)" points="8,73.4297,8,113.4297,220,113.4297,220,83.4297,210,73.4297,8,73.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="210" x2="210" y1="73.4297" y2="83.4297"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220" x2="210" y1="83.4297" y2="83.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="14" y="90.4966">Create device</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="191" x="14" y="105.6294">Allocate and fill network buffer</text><polygon fill="#A80036" points="330.5,139.6953,340.5,143.6953,330.5,147.6953,334.5,143.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="120.5" x2="336.5" y1="143.6953" y2="143.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="127.5" y="138.7622">Network(device, buffer)</text><polygon fill="#A80036" points="558.5,168.8281,568.5,172.8281,558.5,176.8281,562.5,172.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="352.5" x2="564.5" y1="172.8281" y2="172.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="199" x="359.5" y="167.895">ioctl(NETWORK_CREATE, buffer)</text><polygon fill="#FBFB77" filter="url(#fflf1tczznf06)" points="583,185.9609,583,210.9609,862,210.9609,862,195.9609,852,185.9609,583,185.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="852" x2="852" y1="185.9609" y2="195.9609"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="862" x2="852" y1="195.9609" y2="195.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="258" x="589" y="203.0278">Create network and return file descriptor</text><polygon fill="#A80036" points="707.5,237.0938,717.5,241.0938,707.5,245.0938,711.5,241.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="580.5" x2="713.5" y1="241.0938" y2="241.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="587.5" y="236.1606">create(buffer)</text><polygon fill="#A80036" points="591.5,266.2266,581.5,270.2266,591.5,274.2266,587.5,270.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="585.5" x2="723.5" y1="270.2266" y2="270.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="597.5" y="265.2935">file descriptor</text><polygon fill="#A80036" points="363.5,295.3594,353.5,299.3594,363.5,303.3594,359.5,299.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="357.5" x2="574.5" y1="299.3594" y2="299.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="369.5" y="294.4263">file descriptor</text><polygon fill="#A80036" points="131.5,309.4922,121.5,313.4922,131.5,317.4922,127.5,313.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="125.5" x2="346.5" y1="313.4922" y2="313.4922"/><!--
@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
activate main
note over main
Create device
Allocate and fill network buffer
end note
main -> dnet++: Network(device, buffer)
dnet -> kdev++: ioctl(NETWORK_CREATE, buffer)
note over knet
Create network and return file descriptor
end note
kdev -> knet++: create(buffer)
return file descriptor
return file descriptor
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>