Linux_Kernel_map4vehicle/Linux_kernel_diagram.dot

738 lines
15 KiB
Plaintext

digraph matrix {
graph [newrank=true,
nodesep=0.1,
overlap=true,
ranksep=0.1,
splines=false
];
node [height=0.3,
width=1.1
];
edge [arrowhead=none,
arrowsize=0.5,
style=invis,
weight=1
];
{
node [fixedsize=true,
style=invis,
width=0.3
fixedsize=true
];
usr_
functions_
D0
E0
F0
G0
H0
}
{ //
node [fixedsize=true,
style=invis,
width=0.0
height=0.0
];
row=subfunc;
system_;
networking_;
storage_;
memory_;
processing_;
HI_;
} //
{
edge [style="filled,setlinewidth(3)",
weight=10
];
{
node [color="#e27dd6ff",
height=0.5
shape=box,
style="filled,setlinewidth(3)",
];
system [color="#e27dd6ff",
fillcolor=white,
fixedsize=true,
height=0.5,
row=func,
tooltip=TODO,
width=1];
system_;
SCI [color="#e27dd6ff",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label="System calls",
row=usr,
shape=ellipse,
];
system -> system_ [arrowhead="",
color="#e27dd6ff",
row=func,
weight=10];
sysfs [color="#e27dd6ff",
fillcolor="#b2d3e4",
height=0.5,
label="proc, sysfs,\nfile systems",
];
SCI -> sysfs [color="#e27dd6ff",
weight=10];
DM [color="#e27dd6ff",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=10,
height=0.4,
label="Device\nModel",
shape=octagon,
width=1];
sysfs -> DM [color="#e27dd6ff",
weight=10];
log_sys [color="#e27dd6ff",
fillcolor="#6a9ab1",
fontsize=10,
height=0.5,
label="system run,\nmodules,\ngeneric\nHW access ",
];
DM -> log_sys [color="#e27dd6ff",
weight=10];
bus_drv [color="#e27dd6ff",
fillcolor="#71809b",
height=0.5,
label="bus drivers",
];
log_sys -> bus_drv [color="#e27dd6ff",
weight=10];
H2 [color="#e27dd6ff",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
label="busess:\nPCI, USB ...",
row=chip,
];
bus_drv -> H2 [color="#e27dd6ff",
weight=10];
}
{
node [color="#61c2c5",
height=0.5
];
edge [color="#61c2c5"];
networking [color="#61c2c5",
fillcolor=white,
fixedsize=true,
height=0.5,
row=func,
shape=box,
style="filled,setlinewidth(3)",
width=1];
sock [color="#61c2c5",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label=Sockets,
row=usr,
shape=ellipse,
style="filled,setlinewidth(3)"];
networking -> networking_ [arrowhead="",
color="#61c2c5",
row=func,
style="filled,setlinewidth(3)",
weight=10];
prot_fam [color="#61c2c5",
fillcolor="#b2d3e4",
height=0.5,
label="protocol\nfamilies",
shape=box,
style="filled,setlinewidth(3)"];
sock -> prot_fam [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=10];
log_prot [color="#61c2c5",
fillcolor="#6a9ab1",
height=0.5,
label="protocols:\nTCP, UDP, IP",
shape=box,
style="filled,setlinewidth(3)"];
prot_fam -> log_prot [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=10];
netif [color="#61c2c5",
fillcolor="#71809b",
fontsize=10,
height=0.5,
label="network\ninterfaces\nand drivers",
shape=box,
style="filled,setlinewidth(3)"];
log_prot -> netif [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=10];
net_hw [color="#61c2c5",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
label="network:\nEthernet, WiFi ...",
row=chip,
shape=box,
style="filled,setlinewidth(3)"];
netif -> net_hw [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=10];
NFS [color="#8383cc",
fillcolor="#91b5c9",
fixedsize=true,
height=0.4,
label=NFS,
shape=octagon,
style="filled,setlinewidth(3)",
width=0.6];
NFS -> log_prot [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=0];
}
{
node [color="#8383cc",
height=0.5
];
edge [color="#8383cc"];
NFS;
storage [color="#8383cc",
fillcolor=white,
fixedsize=true,
height=0.5,
row=func,
shape=box,
style="filled,setlinewidth(3)",
width=1];
FS [color="#8383cc",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label="files and\ndirectories",
row=usr,
shape=ellipse,
style="filled,setlinewidth(3)"];
storage -> storage_ [arrowhead="",
color="#8383cc",
row=func,
style="filled,setlinewidth(3)",
weight=10];
VFS [color="#8383cc",
fillcolor="#b2d3e4",
height=0.5,
label="Virtual\nFile System",
shape=box,
style="filled,setlinewidth(3)"];
FS -> VFS [color="#8383cc",
style="filled,setlinewidth(3)",
weight=10];
VFS -> NFS [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0];
logFS [color="#8383cc",
fillcolor="#6a9ab1",
fontsize=10,
height=0.5,
label="logical\nfilesystems:\next3, xfs ...",
shape=box,
style="filled,setlinewidth(3)"];
VFS -> logFS [color="#8383cc",
style="filled,setlinewidth(3)",
weight=10];
PC [color="#51bf5b",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=10,
height=0.4,
label="page\ncache",
shape=octagon,
style="filled,setlinewidth(3)",
width=0.6];
VFS -> PC [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0];
mmap [color="#51bf5b",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=10,
height=0.4,
label="memory\nmapping",
shape=octagon,
style="filled,setlinewidth(3)",
width=1];
VFS -> mmap [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0];
block [color="#8383cc",
fillcolor="#71809b",
fontsize=10,
height=0.5,
label="Block\ndevices\nand drivers",
shape=box,
style="filled,setlinewidth(3)"];
logFS -> block [color="#8383cc",
style="filled,setlinewidth(3)",
weight=10];
PA [color="#51bf5b",
fillcolor="#71809b",
height=0.5,
label="Page\nAllocator",
shape=box,
style="filled,setlinewidth(3)"];
PC -> PA [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=0];
H4 [color="#8383cc",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
label="storage devices:\nSCSI, NVMe ...",
row=chip,
shape=box,
style="filled,setlinewidth(3)"];
block -> H4 [color="#8383cc",
style="filled,setlinewidth(3)",
weight=10];
SW [color="#8383cc",
fillcolor="#91b5c9",
fixedsize=true,
height=0.5,
label=Swap,
shape=octagon,
style="filled,setlinewidth(3)",
width=0.6];
SW -> block [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0];
}
{
node [color="#c46747",
height=0.5
style="filled,setlinewidth(3)",
];
edge [color="#c46747"];
processing [color="#c46747",
fillcolor=white,
fixedsize=true,
height=0.5,
row=func,
shape=box,
width=1];
proc [color="#c46747",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label=Processes,
row=usr,
shape=ellipse,
style="filled,setlinewidth(3)"];
processing -> processing_ [arrowhead="",
color="#c46747",
row=func,
style="filled,setlinewidth(3)",
weight=10];
Tasks [color="#c46747",
fillcolor="#b2d3e4",
height=0.5,
shape=box,
style="filled,setlinewidth(3)"];
proc -> Tasks [color="#c46747",
style="filled,setlinewidth(3)",
weight=10];
sync [color="#c46747",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=10,
height=0.5,
label=synchronization,
shape=octagon,
style="filled,setlinewidth(3)"];
Tasks -> sync [color="#c46747",
style="filled,setlinewidth(3)",
weight=10];
sched [color="#c46747",
fillcolor="#6a9ab1",
height=0.5,
label=Scheduler,
shape=box,
style="filled,setlinewidth(3)"];
sync -> sched [color="#c46747",
style="filled,setlinewidth(3)",
weight=10];
IRQ [color="#c46747",
fillcolor="#71809b",
fontsize=10,
height=0.5,
label="interrupts\ncore,\nCPU arch",
shape=box,
style="filled,setlinewidth(3)"];
sched -> IRQ [color="#c46747",
style="filled,setlinewidth(3)",
weight=10];
CPU [color="#c46747",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
row=chip,
shape=box,
style="filled,setlinewidth(3)"];
IRQ -> CPU [color="#c46747",
style="filled,setlinewidth(3)",
weight=10];
}
{
node [color="#cfbf57ff",
height=0.5
style="filled,setlinewidth(3)",
];
edge [color="#cfbf57ff"];
HI [color="#cfbf57ff",
fillcolor=white,
fixedsize=true,
height=0.5,
label="human\ninterface",
row=func,
shape=box,
width=1];
char [color="#cfbf57ff",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label="char\ndevices",
row=usr,
shape=ellipse,
style="filled,setlinewidth(3)"];
HI -> HI_ [arrowhead="",
color="#cfbf57ff",
row=func,
style="filled,setlinewidth(3)",
weight=10];
input [color="#cfbf57ff",
fillcolor="#b2d3e4",
height=0.5,
label="input\nsubsystem",
shape=box,
style="filled,setlinewidth(3)"];
char -> input [color="#cfbf57ff",
style="filled,setlinewidth(3)",
weight=10];
F7 [color="#cfbf57ff",
fillcolor="#6a9ab1",
height=0.5,
label="HI class\ndrivers",
shape=box,
style="filled,setlinewidth(3)"];
input -> F7 [color="#cfbf57ff",
style="filled,setlinewidth(3)",
weight=10];
G7 [color="#cfbf57ff",
fillcolor="#71809b",
fontsize=10,
height=0.5,
label="HI\nperipherals\ndrivers",
shape=box,
style="filled,setlinewidth(3)"];
F7 -> G7 [color="#cfbf57ff",
style="filled,setlinewidth(3)",
weight=10];
H7 [color="#cfbf57ff",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
label="display, keyboard,\nmouse, audio",
row=chip,
shape=box,
style="filled,setlinewidth(3)"];
G7 -> H7 [color="#cfbf57ff",
style="filled,setlinewidth(3)",
weight=10];
}
subgraph xcluster_layers {
usr_;
D0;
E0;
F0;
G0;
H0;
functions [color=gray,
fillcolor=gray,
fixedsize=true,
height=0.5,
row=func,
shape=box,
style=dashed,
width=0.8];
layers [fillcolor=lightgray,
height=0.1,
shape=box,
style="filled,setlinewidth(0)",
width=0.5];
functions -> layers [style=invis,
weight=10];
usr [fillcolor="#d9e7eeff",
fixedsize=true,
height=0.5,
label="user space\ninterfaces",
row=usr,
shape=ellipse,
style="filled,setlinewidth(0)"];
layers -> usr [arrowhead="",
color=gray,
style="filled,setlinewidth(1)",
weight=10];
usr -> usr_ [arrowhead="",
color="#d9e7eeff",
minlen=2,
style="filled,setlinewidth(3)",
weight=10];
virt [fillcolor="#b2d3e4",
height=0.5,
label="virtual\nsubsystems",
shape=box,
style="filled,setlinewidth(0)"];
usr -> virt [color="#d9e7eeff",
style="filled,setlinewidth(3)",
weight=10];
virt -> D0 [arrowhead="",
color="#b2d3e4",
minlen=2,
style="filled,setlinewidth(3)",
weight=10];
bridges [fillcolor="#91b5c9",
height=0.5,
shape=octagon,
style="filled,setlinewidth(0)"];
virt -> bridges [color="#b2d3e4",
style="filled,setlinewidth(3)",
weight=10];
bridges -> E0 [arrowhead="",
color="#91b5c9",
minlen=2,
style="filled,setlinewidth(3)",
weight=""];
logical [fillcolor="#6a9ab1",
height=0.5,
shape=box,
style="filled,setlinewidth(0)"];
bridges -> logical [color="#91b5c9",
style="filled,setlinewidth(3)",
weight=10];
logical -> F0 [arrowhead="",
color="#6a9ab1",
minlen=2,
row=logical,
style="filled,setlinewidth(3)",
weight=""];
HWI [fillcolor="#71809b",
height=0.5,
label="hardware\ninterfaces",
shape=box,
style="filled,setlinewidth(0)"];
logical -> HWI [color="#6a9ab1",
row=logical,
style="filled,setlinewidth(3)",
weight=10];
HWI -> G0 [arrowhead="",
color="#71809b",
minlen=2,
row=HWI,
style="filled,setlinewidth(3)",
weight=""];
HW [fillcolor="#777777",
fontcolor=white,
height=0.5,
label="electronics,\nhardware",
row=chip,
shape=box,
style="filled,setlinewidth(0)"];
HWI -> HW [color="#71809b",
row=HWI,
style="filled,setlinewidth(3)",
weight=10];
HW -> H0 [arrowhead="",
color="#777777",
minlen=2,
row=chip,
style="filled,setlinewidth(3)",
weight=""];
}
subgraph mem {
node [color="#51bf5b",
height=0.5
];
edge [color="#51bf5b"];
PC;
mmap;
SW;
mmap -> SW [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=0];
log_mem [color="#51bf5b",
fillcolor="#6a9ab1",
height=0.5,
label="logical\nmemory",
shape=box,
style="filled,setlinewidth(3)"];
mmap -> log_mem [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=10];
PA;
H5 [color="#51bf5b",
fillcolor="#777777",
fontcolor=white,
fontsize=10,
height=0.5,
label="MMU, RAM",
row=chip,
shape=box,
style="filled,setlinewidth(3)"];
PA -> H5 [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=10];
log_mem -> PA [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=10];
memory [color="#51bf5b",
fillcolor=white,
fixedsize=true,
height=0.5,
row=func,
shape=box,
style="filled,setlinewidth(3)",
width=1];
MA [color="#51bf5b",
fillcolor="#d9e7ee",
fixedsize=true,
height=0.5,
label="memory\naccess",
row=usr,
shape=ellipse,
style="filled,setlinewidth(3)"];
memory -> memory_ [arrowhead="",
color="#51bf5b",
row=func,
style="filled,setlinewidth(3)",
weight=10];
VM [color="#51bf5b",
fillcolor="#b2d3e4",
height=0.5,
label="Virtual\nmemory",
shape=box,
style="filled,setlinewidth(3)"];
MA -> VM [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=10];
VM -> mmap [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=10];
}
}
{
graph [rank=same];
functions_;
system;
functions_ -> system;
networking;
system -> networking;
storage;
networking -> storage;
memory;
storage -> memory;
processing;
HI;
processing -> HI;
functions;
functions -> functions_ [arrowhead="",
color=gray,
style="",
weight=""];
memory -> processing;
}
{
graph [rank=same];
usr_;
SCI;
sock;
FS;
proc;
char;
usr;
MA;
}
{
edge [weight=10 style=invis];
system_ -> SCI
networking_ -> sock;
storage_ -> FS;
memory_ -> MA;
processing_ -> proc;
HI_ -> char;
}
{
graph [rank=same];
D0;
sysfs;
prot_fam;
VFS;
Tasks;
input;
virt;
VM;
}
{
graph [rank=same];
node [fontcolor=white];
E0;
DM;
NFS;
mmap;
sync;
bridges;
}
{
graph [rank=same];
F0;
log_sys;
log_prot;
logFS;
sched;
F7;
logical;
log_mem;
}
{
graph [rank=same];
G0;
bus_drv;
netif;
block;
PA;
IRQ;
G7;
HWI;
}
{
graph [rank=same];
H0;
H2;
net_hw;
H4;
CPU;
H7;
HW;
H5;
}
bottom [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
shape=plaintext];
H4 -> bottom [weight=""];
LKD [fontsize=20,
label="Linux kernel diagram",
shape=plain];
LKD -> storage;
}