From b08e148cbeaa56ff68a00a1c228fb0430f02fbe2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Feb 2023 12:02:25 +0100 Subject: [PATCH] Update mux documentation --- doc/dev/fig/mux.pdf | Bin 18130 -> 0 bytes doc/dev/fig/mux.svg | 306 ++++++++++----------- doc/dev/fig/mux1.svg | 628 +++++++++++++++++++++++++++++++++++++++++++ doc/dev/mux.md | 42 +-- 4 files changed, 798 insertions(+), 178 deletions(-) delete mode 100644 doc/dev/fig/mux.pdf create mode 100644 doc/dev/fig/mux1.svg diff --git a/doc/dev/fig/mux.pdf b/doc/dev/fig/mux.pdf deleted file mode 100644 index 8a6e88bee34a57b19d8e4ba13484a8dc8ccaf186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18130 zcmcJ$1y~*1vMn445ZrZPLb;`j zxyhq78R6aZHuBb-wcL$nWWZeCIYH9RAIR?P`D()Z=0>kg_APnunG$2<5bGW?)^4Yr zmB&wdes0pg`&tls>-G>UN{y86bc|Q?lH%0~d&(UhuagPU?`5=}6rOXK{+O5&4w3p$ zr2T>aOTR9in0{=u&h~9d;+KIn>??hv4|7Ex6O%ATu^qJWR@iZ1kQgTl7v19$+DY5f zmm9I-mtJtxf=G5kpmyw{J{wvTdkn%1x|$+VGbU*%nd%b}vZmz`z9V>nJ0Qhg4TK*& zZe_{Qhe<;;FtXEi=j{-cymecj&aN&L(gKHCM>e10jxLWX8w1xhSJU2cG_$-A-JU$* zHNLE_X&y^+9cv-bIQ8n18A=pgb>O|k-qh|Eei*h9u`}J2bEVb*13+c%(^0FW)Ln^g znH|J~!HNWWSuoXt225*w-bErG=xTotZcmAY_;dV}TJ2pdIG&^0SIT&4Id*E%%KR!U z>V#<8+B1VMFO@7yo~*vbG`8@`jqy@E0|gfE%9kBLbB`Q`CrTa6P!Z#UvUB@3hcUko z)iT5y>dK?lWA<79tc;?@@PI9DG#pzSUkImbNy|4-i$l@VVBk}`Vqu1HQAArc!?>9& z5f5>Wl}`3cOrx+{`drLjd2u{sz5bApU||PKQbmVP%?5#^vDlknj1H9qlK3i>Pz)|c z?NbO!O2IE+>$8bWa(k!O!Y5G)C}8g!g$1tS7wiWgegGJK?mLFoYv3OpN36xsGm1=F z^;Y448cZ4_{6gLxKfuNukEZEMPM8Ar8ClWSQ4Ck$FgOJ!WB}y7f`+>#$2i8#_WF&l z$)WRB_7Qg_H{LEm_}sg`k0cTAac+=A`Q*UxQ_*1S+%=(v-NbhJRjh8)&^Saj;OYbW zIzB|A68R&RWxt0YMpyEY5g!c2R#u|u?4@8NE_B2|2`~};oR*2F2-1`l_k$4%w>*y^ zZU&@;Xviyc!jRX#&eVYINxz!N-qi)sTykVWon>zcS^FSVfq|zCfuv>o}`bEsd>bZV2u=uS&6!Vfk*@-3mN?}=3%1^>q%b^^5?UWet=_J zE=H1*G3kQQ4N`It&QDh(<`aDDf8r9XOKHWLbwci$LY)mb(u6k2P$N?4 z|CJC}4uXmuj9hdFQ$UuZHQH2H9HnpQ0jR6bN)tN>B@)w272N{i5+e{SL@>~_#A>(? zUK$*8#dwrDuA`YdK8II(X&$*{eALU7jY2mhm#F zbp^1UYNREx`skx1U)(YWn=q_bT5PajMzPe8B6d~2M--zzma|h`UNBufC(xNvxISl| zqh-!S2vT|Fs37%j(n}7(`gojs4Tq|L0ylJ1GpCj3P%v1eF27X%U#g`nInl{=pXee_uKUIt4yctT*oFzpzZ zTA?rM5)AwHP7x`T!Dlo#nytEvmBo3O&rGhH&}deeFbg`HMk-AZFbley4Z7LTXl9r& zb2`~ZDn$@5$5k?^RXob5DdJy)d6ki{EVGZ;gE;C%78~rluEpH?@wgq8njE^(>+c$B z<#JBTE@ro)tl2-W*tMfS0Ta0QqPYuxkvcyla2H$-Iy@%{uUO7v>oaR8_cDccN9q+^ zlE~(cEZo?!SxothfDZ$^tSm zGQKIiHR=CKZNDWmK^F&Md570T2H@a$6TJS>=+eG605tr(03d)yU-$L%HNCx_`2CYc z$lA)`Z`wvwv{bYJra#l;n*k##;H!xFPtogjum6Aa&+=FQ02&2X8$$q%w4Rx~gXM3d z`6Jh|{&^*h6ae_!2_aKEdj|l+AIJay`ImF79p0A~1$-mDkR_}X1xytSf)*d1q@V>e z2*MgtTwKj;=fu+dhfBwUy;xPa{mzXg{*E#$k`oyn0F2*E5Cj5gldn?M>E17hG;mKP z*KF7`!WjETt^Bzw=Uy9Ds1-ad2=Stl*eoYinJ__OP?`P?#I)7$l9fd-T`QX z3-&H)1d=AA#B0i^rO8~^Feg**o;Z+wtQOb7G0Xf}MZF#lg@>udfM+7*OF)_Z8b`UdImR%s_>} zllq7H_6TRD%{l*s<>PRXyym{|^Yyj7dBF#pK-i$aKAa)hA4K7r3Ey^HT(D+yQgOl< zK5s#-+%Dk0yL!w;Pp?GY`nBb_`;op-ibU>l#^niK>(tHe;*n2@dV-+uYt+J8PhkNn zJl!LXwC5KBe`!)=azxZJ?^8ZgI3hY7Bjyl~I4sxdJ`uUq{sH#jC%x_dfgQxL!aL8D zO7EEYCB(V=`XXADFHh&>tT8fn@ra2Np(2on=)vy-yc34=mCC2&tpwnikEh zeNVD`ubsruv?-*Sy9X&Q&6T!)KS?~LQPOYbxvk$iM9m@UxGE?w&!_73D@SnmgP9rK zdXoJ`U0vykuIWSM38_7(}9A^DzgxSW`yy=nD%SZ!hcHsGXO8%^G z4tXs%cbbd#^0X&-ob*qQ=g3?a$4ssVWMo7N>j=zaDj7?o*v2s|cfK zNDq`D#qo~LGcbBkWbvaTi8lA?MyoYojQG`ufjX2G`O8I*PEkHQs96L`vpgRomm$2Z=DK55D8%oK;&2rTw)okp#N zo@u!5i8QMq5zzc*AJWy5x|0`?e+-qlr`#By}KQRJtLYg1tq8L7BspkYkbQk?}++r8Huj zsH^F!S%Dm1cgAxnxEPpB_z)tpsSCqlGNaM>*Rvm|OGM&~#zA zjL?^56YN9R#{+IH1ltz_<e z2`wPVKN$#D4tGuBx!^!!J0Iufrp1P^ugY2Z6|PkezF(xdQ&=F#4f)`Vn3^=?*N??B z{CMZ`m1=!rrjnJLM^9s#MF(d&eOXgpM~${y z*~c@TirdWx>%PwEdIyknKIad=a&}-ISwz6>lCIHIsiz>3$7O7;eh%zB7gsFOP-`H9 zo*qRB-Nsl8XJ8=)SJ~ylY2jm)GbWah2w)Nlwf2@=&Tg_`c1e<)yVG3q` z7X7Z=SDFL%Cry!T-ZK23u)K`0Wlg`L?;h3Z$0d^Qr?$5s>C4HDBH9{m|%q$bhskF15mDM_?X2r`j7~UN+}I?~iYlr<>Bt zK*Uxg5^6On#M!rWloA`Y(@z;v91h|MF3(=92|bJ|*4hS^@0UI|_g-6DVO{F`5qkTY z)7~!Jr|X}qRhxz^1d{hR1MPQlhwZb$5AAUQrO)5%-7LtI$%hruuJ&n>!_u@40SSA* z*a}-Mfg4VOPwxxmJcAD9g)U%w#Neh+VQN)aOL32JfBoo26^ zkGA^^o^0wyO@A;%Q*LT(_&vCM zs%|B9uWY<7dPP*RzGv2eg}hmhrn$wOY${=JFOYJD@)KdukE6KhO)Z=w`+Mi3nN2NT zOq1xUNijB@R>YSx#)@wvZsre{T?=7rq$ek*=2NUHQ%Bq$t!H(G@47#p#ifXh9E_ z7pS$)=_#RN22TxGkhDH+6;Uv{Dp&^?QaXv35s%UFJ^8VHr;|-C8kZ5L5~ut` z1)q?GNMgmLD%n8$BldW7yjP)c$TYG}=sU6qwvaH*<%NL0bARPP^42I+BJMmcQ{{YS z-V_6QGVvvd8Mi$5PQL-~WH;`gBMsO6fefxKVUO{G%;OVfBwOZepTBXXIkzTftF zE){bD4^YwtNYhiioHpk-iI*%Kj!0a#(7t@iLE2ya*2mL!EYo8t5Xsaunm?sg6j>5c zMfkdwgjmJtzt^m6LN==4Se2KTNAMbnV}+Yq(}t05os*FfQxOL3XOLpp-t$!gE~wT@LC`zX zhw=S&FY+WxZZ<>NAb3Ao2r3?qlmkwmY>hZLx*2cGtM|qVIa#8}jHWJyCFB%y2qbel z3}h)&Cf^j`!s!TIQ^nJbV`Z6~d8ZSfCW|OqpR>Wc$=4yISRu#5a1Q#uB_dx-d*3~n z<77@0hZo0;<`0xQ*Rapp9`p8s)$^o_qt`SC7S7dMB)0^d=%m7Znsxkvdk^g%al+J= zr&MBvim@MR77B*$OdeAp5WMe|A2ei+DKeAIeQJJCn3oz$MW{oDmlMtaPRVM(F&1OD z!P}<+uV>X3t3O;bS~ptQpSXWW((BbSB4cg#l5duKlFC~ns>8Td~Xtu!E ztBHXK3V?Nn52E_j z<9ZUBhsix%PhTeC%5N{`up$*_pRC=VyWFq5K5nL=hVM4Yhi9W@!f1>lP(I;nzQS-; z29$grP*h)-+?M$iac-$XJH0xPa~&91L5nWK=5l2X4BxxA&aRK+`yyOk3v_Sl&zkn8 z)>>V5l2N)@9mu|VsNgBoZ)}$ppf6 zzAN)*!+q!O+o*Eaqut}~IC{3>TV9c&1*g^9&gU|s#Bl9Tu6eCGb3Mq zWL}D#b2UKmZ;det9$+1*>nyUYQD9r3mm^1NrI4M&G5UZx#aJ>N;E!BlA430)c(NNW z;&(`cB->{`z@peldrawGRwjL zCaj3*NAaLbp8|jGQ)m*?Zi6>++31E4lBV3V(_elRe1aWw-{^hHY&j zxVPissnuyO*gHKaW_Y^^MSJ;(jD*emnKcV(6May1U35#ICZHr*GL4!I$&H)7a=6+r z*y(K`la8MiHB7JHv>alW!;~g#YA8z&HZm(TSgQBMTzDbULWMDf!cn(Nmu|lLMr14G zLBfS@Ou}iWdu!9;$0b%cgVXEFVFQ2Oh<0w(ckG}8NK0H6ZLXQsRgO?OK8F+!6k36X zLDMXcz?mWsb|6ywI+(EO*7qwV>;wG`eCwTO%aDpR<-mbZwbRjjz1}-c_c*yJFZs5? zxbIvmGHNxt6LU1r_lnC}btCw7;soQB*_{Dc#A5<3&5jX#iEQCkj_(}fT5;~#mK}o# z?~$1snAV2ZZNv+NIq(ft!hNJ98*B6#U{m&Gp1S2vam&z^`H^gQn|M^HMtyqEj2YR|)K)U_f>D2ehys2GmG--6FSZ7*!Jl>(=2* z3*w;E01)*jX~m5^ih?!a( zo5IJeW?w0O2-q)&vw0mB1bHq^$9cNW_}P(U*K|T09i@4vE*CG|hDwMJ8I@|3is3`( z$uv#r(XZ~$QdJneByy`;?@n~rbdDn_WPu>*T8r6&q2q51+bOmHlq>IcO-jDJM=Vu- zzIUddu2hsiEfn3_PAMtz8#LTcEIX7RQH$Hyu9+IVcGihD&VAyG2G>T&BNuvKL}#Sg z#W(5;xFbAx>Ys>zI(YOLKzozN1a5u4z+wAtddvl;FruMb5 z9Qo7m2(w6i_E84XjHzvZe1qcSbYW&WC&g2Cd9lOY1!{Uy&Zj97p8GaIt++`fjE6BK z-x$){RX8}6SXXc3a}KQmXB$?Gtcms;+|JqQ+AwD&!c&2`EAOvoWNPrTyF!Cu-+7gr z9ouas!v$84lGQ{Tl=}U^x~fDBegH{?--IDf$%V`>0yiHwgPseNb3rr z>3Z;*lBAYdfyn{orGjxyQv5~R=j~q)?l~>{^#`Y@u0-#JTMTa}UoJ&5Zh1T?xsdQ~ z{hGyLE+(CeDnV*Llu{kt zJ0~`f{I%>6{h7?-EFe;+gh-;B^P`u8yR zK8YWSnTFi4n!+el(Q-}|aHWXpcYmmsD>sRK%sDV8e~L@6j4EsEE4M_lsmdp%LKFA% zn9FaKSc4|g(Im7lGvk>@fVI(>uBsRU6VfJZ@%6ViJD5fgJ?f;8kV&V^tr$lE<Z{+9t#gzqyDE7IIA@KQO72n%*kA1|qw-M9w&Z;rah>|mag z&WmQV69V^O8g{HRQwEgAl_hBu5Pc~0M;5lS6A^J(ezr_^(SyFzK?g2}7W-KxRB~)H ziPTTu-OxdWVOJNN6epG(V16hO^hqQ!U_}8FS2X;OCjS!l~GJ^?{|yPt|3 z&k*jf|1;aVt(N=V+4)clBZLYhRqMo|m2s;ZE&m0(;3Xvx7Uw0?$OeKQ>a%TDzv3(% z3eL;4*-H z)jmr3phGM3^-1^WF6f%7*biMiLI)zzel0$(edK1|+96#JVK&EUhaK`Bq1xVK5T&t- z>dQRt)Uoke4yIJS&A!1)&c*3Xn%MWAgZw3jsC22=0jB^|v!(V?v5GF&Md6MCRg8|# zjQAMMJV-;^>Et{WidfvP4EjforO*cnZ0;zscJFDN{E;Ez3v60bmL(~gY^`5A#x>YA z`FeZ+MGBs~iH+9r?Mw9`i%}LD*#yX9((CLimWB8YV}`4}ufFc|ZmLK_B&|DUOQym7 zst#c%*@Y&#Z7~Y5FlV%*zBC8WXd~A(n|WoupwYs^XRGSJjCVj=-Z?JZ5Imhsb0iAi z#GI;R=t6fq(6k7#?CTza%ocgi>ZOt{%NFuFfS2)!{+cqeTceF7-n_hp=+&D|iB66d zGTKl@VikdpS(D)%K9l72+C_yzhPbz@^g11EFFSS zyq1=G!VX@HHYx^vw>#6|LhAyzhT92*HR@1F4dt0qW23QT*AJ?~(ALr}>oUFPMVgnT zjj!$Q5yL4PhY^+`91y#iJjxp&q!lDJG!UlGyZHj2~P!!_fRi2->Lt1}E|EUbNLEN3UE^Jf1h>lA@fT{%QKA2+(AYce*s0~1XA^b3d)vK?W7=Bx)p zn7`=Wa<$~P@?Yk|EX=)umJv21#-r1+*WBI9)XH*lge~Z3@c&|*~k$I+M zCv~4hbWX>?B{4o!>@qQTjn?74=r>j}_;tgHra?{NK%JovtIwWrAf3%3qWk3&;L%#7 zL$!zs4HKem0;4N%d$`v>sYSo{fil4414Ei4O+%Rf;+fW`>*aG?xYYOiHd#-6XB=Sb z`&Uj(2A;~e_}S9>z0N_q`n~(T+yq29VlSP+S&FUvOoyTcgfB;!6KERXJsPp&6J=^@ z$X&6pYH4SuUbl?kUd7&-!2?b z8?8QPmLwV<&m^HeR%sKzXoA4G==Z8L-76w@eh1Yi?*0n;OtK*c{isd)SPx1KbK3** zQiH+84Uq|Ti(>ua0Muw<3D;JGMGxu@kj}XU2gwxZ9t7n=KFjt-086X%zB$sreE|KT zztN7uLb`DU9g*qOtId}!)kO|+3e7^kfdgULb^E_7eG zKCGVxdBVGZ2YBU!Uqid7cHx4w;#7%uiL;kK=A$f{2B2SNBU=}jdEByJDzSgz0&V!N8wNcAwWy)HnF_9;l7)>&QRyxDsoX=}dC?>Qj;hLQ71*KG z)l#F;@e`v=y=VCOc;B#D22JP7b*~zTxzf$1Iat}x_Y*lO6Kim#N-4J#q-6}e z{7`BoeF&c!ZsWXnM;JOZy6E5%p;ZX7RCuzUlKaE%=t0qF0tN46;!m~&y;R6_e7x_J zl8ghJDMpdb9AHMRdvuv*Uw-z3-(k z=;{2UkfIHJxgjw;JJX}kY&vm%ex!vK7J|ZH?HLyi>Q^&IhY;s2d12ceZI+FU(IRfPj-*C>3L+cV9fB;{&tP>3m0WE?~o7EYIVB+)q zblleY@jgGti2OFzVzO1lR1${yS?f7c~HcV(?Iq2~5+J zuN8u`F(gw-~8WL%v>k~F;?ai9T2-t&O)vlkScR%(p z73io-BP)sor~*3~Xt+zNtamq*9hcFK(>Njsb(a<*hU2lu54c%)fp_Hvcc15{GhS#c zcD|^4zc__GBa}>Qh`hmx{{(}70}=ng8<~Mjz&DMzCh%Wy@SiXu0Qkm!`kzsqH04?& zmuV4??@%de`gv<^+1~s5Y)m(OdvALIQqyz+6-@4v2=n5}lGY0@f^XZLmW)H)=*sEE zTHrb}7S$F`x^%@*n6%rla!Gbi`IWU;vv8Zk>a_J9ud=r!g^!EVDpe!OR83+1XwR6n z&GIfglWTC7GBbX@t#;dKr42nR9A*=kwWfMN(S$v#!=pE2~u%yqf%y?RMw*YXvsmzC$25)k=J$WKqm!ayj< zM99ZV$j3w|C`8E1O32Fim$s0urKyE0fI~=7NQjme2xMYmW)k9MWc-as@Wz}owg=GD z{iV*wXYB$|2T%cN>1Y8|3`}$YATujH07yqq2hjXYOVmNv!c?Ev%GkmXK>M47*IwW7 zm59Jf$MReAZOCtJDmwb#hrzFFBVuT3Y~t{nncsBe9Skj%04%>>|JD%sv+*|RS9IO* zwc|GkUhZ#%g*Rry+pY3X5B+Y>QP1Hw3WI{3qv4zPev|U)+8h4Hk@%l^>y6pKZ=!4W zr#~cg|7Zj0{@_0RBOn0aznF-ERa zH48J4mi287{8!sQl$hw5sOjiw8JJiB|Lx(M!M`c}ZlC_u04tDz_BE1!?~sXwftr?u zj+Xw-$xN&))N~AVK$bU32opV!nuVT`mHw^4%*;T|N=rx2@HSvN*4M_X7W3P@f8UrH zSg2nI_q&LRmY$lHj`??GrdMT_H=}R-3ML@!t4&sxS2N77=2_`q?K1%WF@`@a{=R3V zecLku>8P1m=~#c8JOec|6C)EHBY=^Cm73+PQ!)ME%htcGf8(Rz z%K(30@4&w=_&+%)e{p&KBm4F592Dl)weSxP%ABgZ3hF}ry8Ha`Wm@v3zx@Ve8mYAG zduYBkyI71|Z_rSP=v)A4QBi`O>^R%$I8vBjyUd9F0EC zM*LjehuCuF43oF z$&ldiwB4ZA>tM05)rlS3ss`gglV+5*ssLXY`)pUJbblpn&LHX^tID#l?Li+xAna%F zpa!>%NqfAHkuP8nD@upK+TJA*J2t#T<-$xKCpwJQ#aG0&zGm@+%Ij8hQ65X4Zin@l){O`BYI;kVG?QcUvQRPB!*M9a~Ny6&6e<} zBFkb*r*X+6%j8baMJuouoX{s_tOLRVO-{Xbp}CeF*bMF3CQ7IDI5pYR3kn5=78xH~ zu0Ni*@sGu7cAhcZX#Rj1y)%5OI6Z8B@3*_s5mHMKir#7KVneDuC9gWu-ph@U5Y|G8 zd(Yef`fG!P+(CoZqE>B`#ONyqv5*gau*;1rYv+ek(IE}J&>VsRdn_Hol3^(yfvp(q z3^jb9_V%bf!}6u3WD0>#feR#bUU)NR`oQT`0iy*HX7FN?@>c=qVu$*+t zwj4L98|_Y4&#uRiyN~9Hiigi>DWm%JjC*Q7PSSU>h)~jK$5^RKx|+W=la&mpew^E} z2>rgdf@~-e)<#2jKo&{q;7|A&J4#@l^*iA*_5dOrxaGvBmWWlp#>JDvYo~{d8|T6U zTat4%Gv^=Ivn{hdvuO$uB{vcw_ig9$BoA>Wdk1I+YjT}v>PXk$uIj=ixH|JE)UTY( z2S*sfzLNoMRwA!!7J7c}S_iCoET37eThq)@pFDn>sE4=mz}NV-l{oX{d}wh!T>|w{ zOGJdlu1mfpySkp}vAcScQ!U&*Z?Od2`S3Z5ks!0_;+JIJx9xbaQZTKk99bC#tl3j^ zwE$wi$gUt1?gQm`){yIYSKI7+^EE5$Qs%*tpro4caP=H}wGcT$yQ6O@M8k(`O>)ul zj_pT-Uy@R5uUb|XTh9A3@m8xIn>YHdlDIn;7@BPCmq`nmhBCRDnjYZQ_+v#2((ob8xSR-x+G4f+53eNdg)fyA9mrEw_iLm$@A8z>r97#(^s#JIqM)D5X)K?6#aAH1D3(+)S2+Zo53N>5;)g_+1wK}358-Mv|#Qn+#rR2^xDRJ9@ERHTG5DWqOBn7FTl^?agfDI zUr5yJ;L7pS1&7T7tsu+LA4(BGO;2bOk`qB}Bn-&Q8lX&;7xzPz^q}9i3(x>64@**i z9PXnlrfe1}LNd=w*&)dmwTQ(kmmE?LDBn^tHNU{sjcOA99_OLLLW!FQPnwA+6-=7< zamYBJc1!ip;(~ZH)-b1m8LMx$yq>!RT-qK|8W8klE-9=GkxP6kz7Gt9_vmbxuukAqu(Ve-6|{-M=TSL3$#`SbH`+?@E=sV;GQXM53d_LtoK>cZz9 zhEp#RcyzU>fdvVJoq!x2utD#4hWdi`HEE@5Z{ws&sgdz8y`We-`5>tj&sP7jjW_G#MZ)8If4Hhu3U6@}>ODB`V4; z)fms|_c(=`R-p_fp#RRuQH6D{N=Vn1E~q!f61+WPo{iueglE_kF3zrlfY4%@?^KrX zd=`lwonWeT)Ll!SMtDhjDhfMurkz3YDA309`=L)AJH9MC2u}w+?Wa*~#+9K|V|e(Vvx^^YsI@rx(n_c| zl0t`C{c@&w7}^9&8xI`4O7HFu^&Rh_InnR$s@cS|17K8xmZ-=~!qxPAJc>m-dD)RP zueT=Vo{op8DWQbSlcg%RF+X4xEQElPVxC*+xG_}FgnYEg2mcYc>`Nr#ry&EK;=7kc zZ1TD8kiY%GvdIgzcc2dvei3M;G(A4@9Q5F|x}WN4Woh9Ai_M(O&B1yLp>11d*Q~@m z%*<|M>4q$Q4gQojj~HW|X+GqP)locj!@wGb4C|Gf;cXE0E>ruWxeaOo<(*72pE~Cn z<~jx&2CaTnIWDpjuo1LcXgWpsQnq8VB@803iyljjitg|`IEW_;Gdcu#))O*V;^Z4O zflW@e?Y6@v*&1c@|7*;cBdUne|6)yz0@Le6}Rwfrq%<)?;;styN2touXa?!kc67dT*=_lwk<# z3dXZ^_faZ|H-xaP-1!pXh5D1&H!}_xF{?}TS;46s#}0g|Jdn=)A>G=iSF@u6n5`5L z6obuU=@i@1Px}(S`9+l0p^YG$Dw`dI-?uBh#b$B3I10YhRKXEBAa>=871vemFURIe zg-SQB`c41GpCR4rjodXh`?Iaab(Nk~_F~shK@`2pYiuI&M=*Odl{<;g3-3;r&Q~6D zwnjcTo}@DyKN}KL3%4Hf!q+0=B_q|f^thQPQO=^@akAO`087=*FI(0f!dRp)$vRTz zU66hx%o3j|>zx{cG?gfXk5}%Euy6=OuJm^J=@*0+z_sjok3KRy^3uTiMcnA_hod=k z<~NNxJDgUM7t^!&w&L2$*4f9Uqq^PV@%B|g@Tj4qHP>ewSzh+l>z|iFieI#XYVh_y zBQCEY?5%@nH^zeSn!@I0JTo0f_^QWN%B-(Nj$<7ugpeg=fwcJ|2^P>~26$Jr6 z!Xaug)e)az?{~$Wp6po6d4d*QyLhw(A4^-z3-oypMs=;`j8{3umAP6u8zj#CG-efP z?tQ?YHf(Gnr@Elr_HNE4a(8)y7-k#xK|X_oa-0o;7wqNqYm zF21_Acf6Z&_fX=FNqhF5sATh%HUzD`jF&eAHCIY>^ncHN3Zbpz%Wm%*3I=W*>6puG zLueb~qyRNTj`Q(_;yhg`JD}4_t#PAx^!Q=&*jaKch1JDv;I4&m|3@eAXwI;-b%q0) z*GAY0J4u`NWudh3=Vywfo6jvR9{s259#US$Pb*tCb1+31d_m(QFn2H}(j-_oX{I8) zfwZP|Y&!QSd=hfd$el?9!2->qIo&3Ra^XV!4JNaxAu;tlr3NcHXmhka-s63vBx@cc zvHr3%!1YjNsUlmkVq}ufj>u_h_m@cXKm_%$oPp)NoKNJ9lEQ_wp^5Ss`D|LFD8`{j zzkUV&+A^{&ESffUdFsV+&x6E z+qPS_tQmvloaKx)ki*DBVv&Fg-!WF|`;a4+6Q(m%x*i=UTbv2>Sl`&U>}adp!z-iZ zS}OJ}v%RtwnxmP__8wbq)#vWvimieKkG(NJ8K$1r@7Oy9C|F1u=E~EGXu5j7WFitM z0W?j5!fZ{Dr1pXc?;Ae5VcR$7)TWbw++yHCgdp8Nx;V#~^T&(i<_xlylY}%2 zY>R*obqd(qiI>57MqZwnxFcoH1-foWbID! ze(0Uk=;_|Y9Z>R`pfOo37z8+dG(al~UcJ1u?3jRDCbqSO%NAg-+Y^{rhTLt#Rq#X+ zxo`jehD%YUhFgDgtFZOr3*rSTF7?xynz;SBHS@&DRv~sKgQ?rR-^<#?RRz??NOumr z4$pXqdDQVsB&!36`$JpCNSNr-ZeJRmr3G(HKrDU+V?Ua!`qQVa_Hz)gs*PN0kE26Z z`~9cDiXzxA9zU}@KzjX4^8JJvA?7H&$?m@LxL8rI>4#vt6HSW+9(bsUetI1~(G7|7 z63%JH&bSlaxl2%B{Q9#9bGqIs(mB4M)+-+@7na2Uc?}9he#%IU4tm}Q3u$-6N z9iqWP30K$M9eZ~#%iWvzR7oeFW)rRI*2~OBLK!)?ni7Kvp9;PNqr99Vgd35@a@oO; zNPmObq54TRElGEtCahJc-lTxdDuPS;6+<{Orv3HngDG01*5o2%gvCd8|Lxt|pOk64 z$V(v~Dd>O2C{-kXCYsx!a>{VnR4u*MCaj!vy5L%p9Jj6grY*{j5(m%G`b{mP>ZaJ| zn+7y%mIstHU!q=!kHU3_n-;&jHA(-DcY(BiA-X~_!gS^oh#jh7$GhD#+K%e4*g2^# zcwd4u1=#|31E8n7>u0Dt_&8IiTz(8`b@)wr1RIf^7MIKZxURgAQ%vICZ1y;>EgO4D>qoR{VGh;pQV=JA zEo=lH8GCMJkAR+p^Aid!p=l!CO>Xc@#UYdVDra7mu!X}792{!m8MV^)-hp2{JPW-a zJn+8EZ44G~UqXwoaB{bN8TeLqqdeNxaYwA8sJ0mKbTc7BOp#&}_RwZdlc}Yba*dA6 ze9ZHedBLLD@nu=q?{G_EmFbEB2aU~wy6Jh&4ix*#c-Dd+}CLi`FFO%J}2Jv&;^{Ucl1{zWBx`a(u;wV9#C!N9jP z`m^3UvNJ}$tW?Bj0^jhDBl={L@7cK5exdqfR9US=Y{-XS)FTn#@HBRc27^0~rBpsz z3u*?y?Zu+hq>;Tq0rh+G`c;Xg`V=obHPmemh%wzj&-AdcPyF%3Yz)f#BJ;Wt3|#Qv z1rf8Lc%M4=bbmT~gku5p-qdWeVrEGCy%z7NI+Gq}+9ND;<7J5Yc{(jFL#;FNe1&x{ zt7-+$;DSo0JMMX{OzD!s%vd>p=UxNu#PM#KUBjXk7Ki#a5_UatQ=QHtPWLELr9m-} zs`^X-i-WpXKW37;H=>Gf8OKnHfr$lV^+4R@;sEpP z2NixuEME`Lck?4v6(4b-dexxjIk0uid(Ldq6F9NG**?$asMIrWeCo!>R2r!g3rvWS zsU=9A^VbFU(idc+%rrL`Nv|qX(;J!2Qu7V!K^$1VDbolPB#7VqWSB0aMo>L1Ko+yn{i({PTeLwY5WFA1VS|X$WIJsC zgNiL=sNdt`yV1DpA{)@pvDr4DC|QW$PD$qetYmX(?f^XNJGz}+H5ILQc2uc_$WN}FT zHZTw~9Uq1>7^yvL5WEp1F3h&YiwrOXu2Wkd_VI5kBs|hwsK;B|;fSR{ivT?RK-=5f zCMg?7J_iMF!65u$Q$tx08?|mEOr1z~0Npzzx<$jP)pw=Dp{j;e8)b=Pv?DsPygitC zQi$h%dN7beK2TD$&^pmTiV>q0smYCPEKH0FU&HrNR9vWC;TVQGX&;L~OrlA*y|1Uv z3an@1zZ~;EcVE6(M)kSInV@L#2Ge=iLD^Jm9@6$1XJ(zn;5 z!oP~{HDx8OdjYWRm!CaW;1xx_la%`tNUjnGd73PF@jw^wt3eVR;=g!dD5uxGzde7< zFg)Ix<#b-7l4%&%joYsf0I1b4fnQN~@gYq)n0=9^2(lPid}8EPW3 zz$_#vSu#rVm04!nM)5CMRF7#~sx}f{d+(0Wr#!0McbdHZ(a2NszI-Po_NvUZCa|5+ zHI?vEcnj__koHDN-WqN})Q8LK0YAdq$uYCMV<2fD1wCb7G|mC{lpR4Hpv={&tC$4& zA7b;jsziF)ze4kh$^0h>&qe)z022L=y!F2e68#pk-!a@j zF`@qkBzlYSf3^Kr*wDZ9{|x~8*Qx&-NB@VA%v;z0A5`Q`^#2xj`3Lgy?{Lf8W9}bt z%iDE24qFui5|Z=_nc1UeQAfD|Exv-?*wI5@N}N zj^76gqsJS3(u0^#B#>1g*3-2-6NtCk-)oGw9K;(yTi}TbDH+xedVh96c{R?!g!b-g zKArFx064ZCo*G_X2BS_KkvR6{UN`?FGd}>1p!8U3L`FmIXj|bZm8#PcR+@W}U0kw| zq9b|1*AoTEoxFem+zGQ~@ zg!%Y{`1tww#GIf;>uh|erhX3vXA0Qdc}KKZ>kTH1A8k_%TK(O}fA~G(`FoKfPB0`u zA`^3T)d%thYf$7!3jiOQ0SEef!eAXe2h9&C_MF3A@7|r~A!Po$H|!mB?HpX}UMC7< PW_hJ{5EBbZ3qk)c?l`DQ diff --git a/doc/dev/fig/mux.svg b/doc/dev/fig/mux.svg index 8f272f7..2bc5cf1 100644 --- a/doc/dev/fig/mux.svg +++ b/doc/dev/fig/mux.svg @@ -2,9 +2,9 @@ + originx="-5.2916663" + originy="-23.812499" /> @@ -68,14 +68,23 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-5.2916665,-7.9375)"> + transform="translate(-5.2916665,-23.8125)"> + - nanos6.thread0.subsystem - thread0.state - mux0 - - nanos6.thread0.subsystem.run - cpu0.th_running + id="tspan2727">cpu0.th_runningvalue=0 mux1 + x="61.100502" + y="72.721657">mux0 cpu0 cpu1 cpu2 cpu3 thread0 + x="130.6277" + y="133.23389">thread0 thread1 + x="130.67334" + y="138.5023">thread1 thread2 + x="130.62769" + y="143.81721">thread2 thread3 + x="130.67332" + y="149.08563">thread3 CPU: Nanos6 subsystem of the RUNNING thread Thread: Nanos6 subsystem of the ACTIVE thread + x="127.12749" + y="125.13274">Thread: Nanos6 subsystem of the ACTIVE thread thread0.state + id="tspan3201">thread0.statevalue=Running mux2 + x="61.146149" + y="141.49007">mux1 thread0 thread1 thread2 thread3 Thread: Thread state thread0.state thread1.state thread2.state thread3.state @@ -602,8 +575,8 @@ id="rect4212" width="5.2916636" height="5.2916675" - x="246.0625" - y="145.52083" + x="177.27083" + y="145.52081" rx="1.4210855e-14" ry="7.1054274e-15" /> + style="fill:#ff0000;stroke:#ff0000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:0.8, 0.4;stroke-dashoffset:0;stroke-opacity:1" + d="M 153.45833,39.687501 V 174.625" + id="path3425" + sodipodi:nodetypes="cc" /> nanos6.cpu0.subsystem.run + + diff --git a/doc/dev/fig/mux1.svg b/doc/dev/fig/mux1.svg new file mode 100644 index 0000000..61fe06d --- /dev/null +++ b/doc/dev/fig/mux1.svg @@ -0,0 +1,628 @@ + + + + + + + + + + + + + + + + + + + nanos6.thread0.subsystem + + + + + + + + cpu0.th_runningvalue=null + + mux0 + cpu0 + cpu1 + + + + + cpu2 + cpu3 + + + + thread0 + thread1 + + thread2 + thread3 + + CPU: Nanos6 subsystem of the RUNNING thread + Thread: Nanos6 subsystem of the ACTIVE thread + + + thread0.statevalue=Cooling + mux1 + nanos6.thread0.subsystem.act + + + thread0 + thread1 + + thread2 + thread3 + + Thread: Thread state + + thread0.state + thread1.state + + + + + + + + thread2.state + thread3.state + + + + + nanos6.cpu0.subsystem.run + + + + + + diff --git a/doc/dev/mux.md b/doc/dev/mux.md index 28847f8..63b226c 100644 --- a/doc/dev/mux.md +++ b/doc/dev/mux.md @@ -18,30 +18,38 @@ selected. This allows a multiplexer to act as a filter too. ## Tracking The typical use of multiplexers is to implement the tracking modes of channels. -As an example, the following diagram shows three multiplexers used to implement +As an example, the following diagram shows two multiplexers used to implement the subsystem view of [Nanos6](../nanos6): -![Patch bay](fig/mux.svg) +![Mux example](fig/mux.svg) -The first mux0 uses the thread state channel to filter the value of the -subsystem channel and only pass it to the output when the thread is in the -Running state (green). Then the filtered subsystem channel is connected to an -input of a second mux (mux1) which selects the current input of the thread -running in the CPU0. The output *nanos6.cpu.subsystem.run* is then connected to -the Paraver timeline in the row corresponding to the CPU0, which shows the -subsystem of the currently running thread. +The first mux0 selects the input corresponding to the thread running in that +CPU (thread0), and forwards the value to the output. If no thread is running the +output is set to null. The output channel *nanos6.cpu0.subsystem.run* is then +connected to the Paraver timeline in the row corresponding to the CPU0, which +shows the subsystem of the currently **running** thread. -The Nanos6 subsystem channel is also connected to the mux2, which forwards the -value to the output only when the thread state is Active. The output is directly -connected to the Paraver row assigned to that thread. This channels shows the -subsystem of the thread by only when is active (not paused nor dead). You can -see that the subsystem is shown in the thread0 at the current time (red dotted -line) when in the CPU0 the subsystem has been hidden when the thread stops being -in the Running state (yellow). +The Nanos6 subsystem channel is also connected to the second mux1, which forwards the +value to the output only when the thread state is **Active** (not paused or +dead). The output is directly connected to the Paraver row assigned to that +thread. This view shows the subsystem of the thread when is active. + +![Mux example](fig/mux1.svg) + +Notice that when the thread0 is no longer Running (switches to the Cooling +state shown in yellow) the CPU subsystem timeline no longer shows the subsystem, +as the mux0 is not selecting any input (because there are no threads in the CPU0 +in the Running state at that moment). + +However, the thread view still shows the subsystem, as the thread0 is still +active (not paused yet). The mux1 is still selecting the thread subsystem +channel as input. + +## Separation of concerns Multiplexers allow models to interact with each other in a controlled way. In the example, the blue channel (*nanos6.thread0.subsystem*) is directly modified by the Nanos6 model when a new event is received. While the red channels are -controled by the ovni model. The rest of the channels are automatically updated +controlled by the ovni model. The rest of the channels are automatically updated in the propagation phase of the [bay](../patchbay) allowing the ovni model to modify the Nanos6 Paraver view of the subsystems.