<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11962271</id><updated>2026-08-28T16:56:45.851+08:00</updated><category term="【學校、課業、論文】"/><category term="【Programming】"/><category term="【閒言閒語】"/><category term="【新東西、新發現】"/><category term="【Web Services and Advanced Internet Systems】"/><category term="【Windows應用】"/><category term="【Linux 應用】"/><category term="【汽車】"/><category term="【發表】"/><category term="【English】"/><category term="【Face Recognition】"/><category term="Android"/><category term="BCAA"/><category term="C"/><category term="FFMPEG"/><category term="Programming"/><category term="Protein"/><category term="RTSP rtsp"/><category term="carrier"/><category term="ethernet"/><category term="live"/><category term="network"/><category term="nmcli"/><category term="status"/><category term="wifi"/><category term="食物"/><title type='text'>Jack&#39;s Note</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>590</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11962271.post-5542263184916429705</id><published>2026-08-28T15:16:56.831+08:00</published><updated>2026-08-28T16:30:29.068+08:00</updated><title type='text'>vim 中文</title><content type='html'>&lt;p&gt;~/.vimrc&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;set&lt;/span&gt; encoding=utf-8&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;set&lt;/span&gt; fileencodings=utf-8,ucs-bom,big5,cp950,latin1&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;set&lt;/span&gt; termencoding=utf-8&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;set&lt;/span&gt; fencs=utf-8,big5
EOF&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/5542263184916429705/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/5542263184916429705' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5542263184916429705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5542263184916429705'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2026/08/vim.html' title='vim 中文'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-3698895048163920783</id><published>2026-08-28T15:16:34.422+08:00</published><updated>2026-08-28T16:56:45.851+08:00</updated><title type='text'>repomix</title><content type='html'>Tools&amp;nbsp;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;curl -fsSL https://deb.nodesource.com/setup_22.x | bash -&amp;nbsp;&lt;/li&gt;&lt;li&gt;apt-get install
-y nodejs&amp;nbsp;&lt;/li&gt;&lt;li&gt;node -v&lt;/li&gt;&lt;li&gt;npm install -g repomix&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;PDF to text&lt;/div&gt;&lt;div&gt;&lt;response-element class=&quot;no-md&quot; ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;code-block _nghost-ng-c959624051=&quot;&quot; class=&quot;ng-tns-c959624051-347 enable-luminous-code-block ng-star-inserted&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;code-block ng-tns-c959624051-347 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwjL796t2MKWAxUAAAAAHQAAAAAQpgU&quot; decode-data-ved=&quot;1&quot; jslog=&quot;223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_5c0fbc5a4f9751fd&amp;quot;,&amp;quot;c_a0cda0004f2d97e9&amp;quot;,null,&amp;quot;rc_a5983bd383ece9ce&amp;quot;,null,null,&amp;quot;zh&amp;quot;,null,1,null,null,1,0]]&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;formatted-code-block-internal-container ng-tns-c959624051-347&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;animated-opacity ng-tns-c959624051-347&quot;&gt;&lt;pre _ngcontent-ng-c959624051=&quot;&quot; class=&quot;ng-tns-c959624051-347&quot;&gt;&lt;code _ngcontent-ng-c959624051=&quot;&quot; class=&quot;code-container formatted ng-tns-c959624051-347&quot; data-test-id=&quot;code-content&quot; role=&quot;text&quot;&gt;apt-get install -y poppler-utils  &lt;span class=&quot;hljs-comment&quot;&gt;# 提供 pdftotext 指令&lt;br /&gt;&lt;/span&gt;&lt;response-element class=&quot;no-md&quot; ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;code-block _nghost-ng-c959624051=&quot;&quot; class=&quot;ng-tns-c959624051-348 enable-luminous-code-block ng-star-inserted&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;code-block ng-tns-c959624051-348 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwjL796t2MKWAxUAAAAAHQAAAAAQpwU&quot; decode-data-ved=&quot;1&quot; jslog=&quot;223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_5c0fbc5a4f9751fd&amp;quot;,&amp;quot;c_a0cda0004f2d97e9&amp;quot;,null,&amp;quot;rc_a5983bd383ece9ce&amp;quot;,null,null,&amp;quot;zh&amp;quot;,null,1,null,null,1,0]]&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;formatted-code-block-internal-container ng-tns-c959624051-348&quot;&gt;&lt;div _ngcontent-ng-c959624051=&quot;&quot; class=&quot;animated-opacity ng-tns-c959624051-348&quot;&gt;&lt;pre _ngcontent-ng-c959624051=&quot;&quot; class=&quot;ng-tns-c959624051-348&quot;&gt;&lt;code _ngcontent-ng-c959624051=&quot;&quot; class=&quot;code-container formatted ng-tns-c959624051-348&quot; data-test-id=&quot;code-content&quot; role=&quot;text&quot;&gt;pdftotext -layout docs/arch.pdf docs/arch_pdf.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EXCEL to text&lt;br /&gt;apt-get install -y csvkit  &lt;span class=&quot;hljs-comment&quot;&gt;# 提供 in2csv 指令&lt;br /&gt;&lt;/span&gt;in2csv docs/spec.xlsx &amp;gt; docs/spec_excel.csv
&lt;br /&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;h3 data-path-to-node=&quot;20&quot;&gt;&lt;/h3&gt;&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;h4 data-path-to-node=&quot;16&quot;&gt;&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/3698895048163920783/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/3698895048163920783' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3698895048163920783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3698895048163920783'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2026/08/repomix.html' title='repomix'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-1547866896899607322</id><published>2025-09-11T15:24:00.003+08:00</published><updated>2025-09-12T10:24:35.686+08:00</updated><title type='text'>wpewebkit</title><content type='html'>&lt;p&gt;BR2_PACKAGE_ICU [=y]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_JPEG [=y]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_LIBEPOXY [=n]&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_LIBGCRYPT [=n] &amp;amp;&amp;amp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;BR2_PACKAGE_HAS_LIBGLES [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_HAS_LIBEGL [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_HAS_LIBEGL_WAYLAND [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_LIBTASN1 [=n]&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_LIBXSLT [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_OPENJPEG [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_WAYLAND [=y]&lt;/p&gt;&lt;p&gt;&amp;nbsp;BR2_PACKAGE_WEBP [=n]&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_WEBP_DEMUX [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;BR2_PACKAGE_WPEBACKEND_FDO [=n]&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;libsigsegv&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;output/build/host-m4-1.4.18/lib/c-stack.c&lt;/p&gt;&lt;p&gt;#ifndef SIGSTKSZ&lt;/p&gt;&lt;div&gt;&lt;div&gt;#define SIGSTKSZ 16384&lt;/div&gt;&lt;div&gt;#endif&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#undef SIGSTKSZ&lt;/div&gt;&lt;div&gt;#define SIGSTKSZ 16384&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;output/build/host-fakeroot-1.20.2/communicate.h&lt;/div&gt;&lt;div&gt;&lt;div&gt;#if !defined(__GLIBC__) || __GLIBC__ &amp;gt;= 2 &amp;amp;&amp;amp; __GLIBC_MINOR__ &amp;gt;= 33&lt;/div&gt;&lt;div&gt;#define stat64 stat&lt;/div&gt;&lt;div&gt;#endif&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;package/fakeroot/fakeroot.mk&lt;/div&gt;&lt;div&gt;&lt;div&gt;FAKEROOT_VERSION = 1.37.1.2&lt;/div&gt;&lt;div&gt;FAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.gz&lt;/div&gt;&lt;div&gt;FAKEROOT_SITE = https://deb.debian.org/debian/pool/main/f/fakeroot&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 data-end=&quot;823&quot; data-start=&quot;787&quot;&gt;&lt;code data-end=&quot;823&quot; data-start=&quot;791&quot;&gt;package/fakeroot/fakeroot.hash&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;938&quot; data-start=&quot;824&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;sha256 959496928c8a676ec8377f665ff6a19a707bfad693325f9cc4a4126642f53224  fakeroot_1.37.1.2.orig.tar.gz&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;make host-libglib2 host-fakeroot
&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;--------------------&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;toolchain&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt; [*] Enable C++ support                                                                            │ │
&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;Build options ─────&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;libraries (shared only)  ---&amp;gt;  &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp;Target packages&amp;nbsp; ---&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Graphic applications&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BR2_PACKAGE_HAS_LIBGLES&lt;/div&gt;&lt;div&gt;BR2_PACKAGE_HAS_LIBEGL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/1547866896899607322/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/1547866896899607322' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1547866896899607322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1547866896899607322'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/09/blog-post.html' title='wpewebkit'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-7946140891872670895</id><published>2025-08-28T15:25:00.006+08:00</published><updated>2025-08-28T16:07:04.017+08:00</updated><title type='text'>Valgrind</title><content type='html'>&lt;p&gt;valgrind: failed to start tool &#39;massif&#39; for platform &#39;arm64-linux&#39;: No such file or directory&lt;/p&gt;&lt;p&gt;&amp;nbsp;export VALGRIND_LIB=/out/libexec/valgrind&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;v.sh&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/mnt/sd/v/out/bin/valgrind \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; --tool=massif \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; --massif-out-file=/mnt/sd/v/massif_ls.out \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; --time-unit=B \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; --heap=yes \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; --max-snapshots=500 \&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; vendor_3a_sample;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;OUTFILE=&quot;$1&quot;&lt;/p&gt;&lt;p&gt;echo &quot;Snapshot Total Useful Extra&quot;&lt;/p&gt;&lt;p&gt;awk &#39;&lt;/p&gt;&lt;p&gt;&amp;nbsp; /^snapshot=/ { snap=$0 }&lt;/p&gt;&lt;p&gt;&amp;nbsp; /^mem_heap_B=/ { heap=substr($0, index($0,&quot;=&quot;)+1) }&lt;/p&gt;&lt;p&gt;&amp;nbsp; /^mem_heap_extra_B=/ { extra=substr($0, index($0,&quot;=&quot;)+1)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; total=heap+extra&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; print snap, total, heap, extra&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&#39; &quot;$OUTFILE&quot;&lt;/p&gt;&lt;p&gt;~&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/7946140891872670895/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/7946140891872670895' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/7946140891872670895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/7946140891872670895'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/08/valgrind.html' title='Valgrind'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-8771442267770852301</id><published>2025-06-17T15:51:00.001+08:00</published><updated>2025-06-17T15:51:08.679+08:00</updated><title type='text'> gitlab-ci-local </title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;eval&amp;nbsp;.gitlab-ci.yml&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;TARGET_STAGE=daily gitlab-ci-local --variable TARGET_STAGE=daily&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;gitlab-ci-local&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/8771442267770852301/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/8771442267770852301' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8771442267770852301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8771442267770852301'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/06/gitlab-ci-local.html' title=' gitlab-ci-local '/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-5191898211281996225</id><published>2025-06-04T13:28:00.003+08:00</published><updated>2025-06-04T13:28:59.192+08:00</updated><title type='text'>SNMP介绍及使用，超有用，建议收藏！ </title><content type='html'>&lt;p&gt;&amp;nbsp;https://www.cnblogs.com/chegxy/p/14020233.html&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/5191898211281996225/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/5191898211281996225' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5191898211281996225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5191898211281996225'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/06/snmp.html' title='SNMP介绍及使用，超有用，建议收藏！ '/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-4354637661478410199</id><published>2025-05-20T15:12:00.000+08:00</published><updated>2025-05-20T15:12:26.517+08:00</updated><title type='text'>net snmp</title><content type='html'>&lt;p&gt;&amp;nbsp;/etc/snmp/snmpd.conf&lt;/p&gt;&lt;p&gt;rocommunity public&lt;/p&gt;&lt;p&gt;agentAddress udp:161&lt;/p&gt;&lt;p&gt;pass .1.3.6.1.4.1.55554 /bin/bash /snmp.sh&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;/snmp.sh&lt;/div&gt;&lt;div&gt;&lt;div&gt;#!/bin/bash&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;opt=$1&lt;/div&gt;&lt;div&gt;oid=$2&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;echo &quot;$(date) - called with opt=$opt oid=$oid&quot; &amp;gt;&amp;gt; /tmp/snmp_script.log&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;if [ &quot;$opt&quot; = &quot;-g&quot; ]; then&lt;/div&gt;&lt;div&gt;&amp;nbsp; case &quot;$oid&quot; in&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &quot;.1.3.6.1.4.1.55554.1.1.0&quot;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;$oid&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;INTEGER&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;1&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &quot;.1.3.6.1.4.1.55554.1.2.0&quot;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;$oid&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;STRING&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;IPCamModelX&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; *)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; exit 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; esac&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;elif [ &quot;$opt&quot; = &quot;-n&quot; ]; then&lt;/div&gt;&lt;div&gt;&amp;nbsp; # 簡單示範，回傳下一個 OID&lt;/div&gt;&lt;div&gt;&amp;nbsp; if [ &quot;$oid&quot; = &quot;.1.3.6.1.4.1.55554.1.1.0&quot; ]; then&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; echo &quot;.1.3.6.1.4.1.55554.1.2.0&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; echo &quot;STRING&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; echo &quot;IPCamModelX&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; else&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; exit 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; fi&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;elif [ &quot;$opt&quot; = &quot;-s&quot; ]; then&lt;/div&gt;&lt;div&gt;&amp;nbsp; # 如果要支援 set，這邊寫set邏輯&lt;/div&gt;&lt;div&gt;&amp;nbsp; exit 1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;else&lt;/div&gt;&lt;div&gt;&amp;nbsp; exit 1&lt;/div&gt;&lt;div&gt;fi&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Agent&lt;/p&gt;&lt;p&gt;&amp;nbsp;/usr/sbin/snmpd -V -f -Lo -C -c /etc/snmp/snmpd.conf -Dpass,persist,mib_modules&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Client&lt;/div&gt;&lt;div&gt;&lt;div&gt;snmpwalk -v2c -c public localhost .1.3.6.1.4.1.55554.1.1.0&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output&lt;/div&gt;&lt;div&gt;&lt;div&gt;iso.3.6.1.4.1.55554.1.1.0 = INTEGER: 1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/4354637661478410199/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/4354637661478410199' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/4354637661478410199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/4354637661478410199'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/05/net-snmp.html' title='net snmp'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-5254765584426343471</id><published>2025-05-16T10:43:00.007+08:00</published><updated>2025-05-16T10:43:48.103+08:00</updated><title type='text'>Pure RTSP over Websocket Player build in browser</title><content type='html'>&lt;p&gt;&amp;nbsp;https://anzal.hashnode.dev/a-beginners-guide-to-rtsp-streaming-with-websockets-using-nodejs-and-ffmpeg&lt;/p&gt;&lt;h1 class=&quot;leading-tight&quot; data-query=&quot;post-title&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: #09090b; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: white; font-family: &amp;quot;Suisse Intl&amp;quot;, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: inherit; font-weight: inherit; line-height: 1.25; margin: 0px; text-align: center;&quot;&gt;A Beginner’s Guide to RTSP Streaming with WebSockets Using Node.js and FFmpeg.&lt;/h1&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/5254765584426343471/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/5254765584426343471' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5254765584426343471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5254765584426343471'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/05/pure-rtsp-over-websocket-player-build.html' title='Pure RTSP over Websocket Player build in browser'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-8466140818514802219</id><published>2025-04-16T11:40:00.001+08:00</published><updated>2025-04-16T11:40:06.935+08:00</updated><title type='text'>内存泄漏定位工具之 valgrind</title><content type='html'>&lt;p&gt;&amp;nbsp;https://blog.csdn.net/weixin_45631738/article/details/129541098?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-129541098-blog-124682490.235^v43^pc_blog_bottom_relevance_base8&amp;amp;spm=1001.2101.3001.4242.2&amp;amp;utm_relevant_index=4&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/8466140818514802219/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/8466140818514802219' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8466140818514802219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8466140818514802219'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/04/valgrind.html' title='内存泄漏定位工具之 valgrind'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-2952991839026590170</id><published>2025-02-18T10:03:00.001+08:00</published><updated>2025-02-18T10:31:44.264+08:00</updated><title type='text'>Free scrum board</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Redmine&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://medium.com/dean-lin/redmine-plugins-themes-%E4%BB%8B%E7%B4%B9-%E9%82%A3%E4%BA%9B%E6%88%91%E6%88%90%E5%8A%9F%E6%93%B4%E5%85%85%E7%9A%84%E5%A4%96%E6%8E%9B-8cb2b583d6e8&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;Redmine Plugins &amp;amp; Themes 介紹：那些我成功安裝的外掛&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.redmine.org/plugins/redmine-dashboard&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Plugins Directory » Redmine Dashboard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://medium.com/dean-lin/%E5%A6%82%E4%BD%95%E7%94%A8-redmine-%E5%81%9A%E5%B0%88%E6%A1%88%E7%AE%A1%E7%90%86-%E9%AB%94%E9%A9%97%E5%BF%83%E5%BE%97-ffcc5506f25d&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;如何用 Redmine 做專案管理＆體驗心得&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh2IJwPr76fTbgxCwxogD1k5bplNr2zgPKp5uLXNnDvHKGkHUamb6k9e7VBoV9Rdz74se4rvjCoYvwcGhY6ltu6iCG3VB4ebgPox2G0RASLr4D0V94SsigpsEIHzNW2cuXIRwZwinawDRbe9J2Qyn4aEOUtwdZAXmTKWFdstxygcQ_uq4PVwwuG8A&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;881&quot; data-original-width=&quot;1651&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh2IJwPr76fTbgxCwxogD1k5bplNr2zgPKp5uLXNnDvHKGkHUamb6k9e7VBoV9Rdz74se4rvjCoYvwcGhY6ltu6iCG3VB4ebgPox2G0RASLr4D0V94SsigpsEIHzNW2cuXIRwZwinawDRbe9J2Qyn4aEOUtwdZAXmTKWFdstxygcQ_uq4PVwwuG8A&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;a href=&quot;https://test223.openproject.com/projects/your-scrum-project/work_packages&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;OpenProject&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgyafixVrfLDjB0EVR3adC1U491AbmQQBG_cZ6t21E456d4U3dap3GKwa4y8ViyhbWacNvxN7wrNtr_dHKAHubtKTC03WUXRTbnCihpeV4ykTP_XOc26lGDcbWWgQJagIqaoHeD4r5LYOz0SlI4iA4RubDB1Lx7P_-SAZiAMHawtfBwdxtv0r8ebg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;627&quot; data-original-width=&quot;1461&quot; height=&quot;137&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgyafixVrfLDjB0EVR3adC1U491AbmQQBG_cZ6t21E456d4U3dap3GKwa4y8ViyhbWacNvxN7wrNtr_dHKAHubtKTC03WUXRTbnCihpeV4ykTP_XOc26lGDcbWWgQJagIqaoHeD4r5LYOz0SlI4iA4RubDB1Lx7P_-SAZiAMHawtfBwdxtv0r8ebg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;a href=&quot;https://app.asana.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Asana&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj-4CoSuZMcAaStDjqQKcOxA_npn65SQ6-l0lbIABy_NhcjRCUoYKlo8_WrkFuCs4QeyAgDSztdqDGKcpzpeIfLiIyN0zY6NUzvz4_0Ahf6h1qEaFg-o2Gm9i37cm1JtGVu_vsX4DiSgXIfRUHgu5PX0MEuXG6N52oMiSlyXiPwTH17WwLbp3uU0w&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;472&quot; data-original-width=&quot;1442&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj-4CoSuZMcAaStDjqQKcOxA_npn65SQ6-l0lbIABy_NhcjRCUoYKlo8_WrkFuCs4QeyAgDSztdqDGKcpzpeIfLiIyN0zY6NUzvz4_0Ahf6h1qEaFg-o2Gm9i37cm1JtGVu_vsX4DiSgXIfRUHgu5PX0MEuXG6N52oMiSlyXiPwTH17WwLbp3uU0w&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;2G only&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;a href=&quot;https://gitlab.com/jack007.askey/c/-/boards&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Gitlab&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh5noGc1yc1LHEIwt_Pn52EhUgrYKw2lfzW2WlzmFEhf5J6VConxmxHCXSoXwkFxeqOsQsRO4XxYUnbgT8bFxX3fvKhmCPKQLBZ_yvI9CvXKF0yLFCWMNRc3HOsLkglLcatN6EdWsmYNeHlU3B2OtX5qrMrdPys_D2m2EGfoDuqV8H_qjWroHxVrA&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;551&quot; data-original-width=&quot;1442&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh5noGc1yc1LHEIwt_Pn52EhUgrYKw2lfzW2WlzmFEhf5J6VConxmxHCXSoXwkFxeqOsQsRO4XxYUnbgT8bFxX3fvKhmCPKQLBZ_yvI9CvXKF0yLFCWMNRc3HOsLkglLcatN6EdWsmYNeHlU3B2OtX5qrMrdPys_D2m2EGfoDuqV8H_qjWroHxVrA&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;JIRA&lt;/li&gt;&lt;ol&gt;&lt;li&gt;10G only&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/2952991839026590170/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/2952991839026590170' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2952991839026590170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2952991839026590170'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/02/free-scrum-board.html' title='Free scrum board'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEh2IJwPr76fTbgxCwxogD1k5bplNr2zgPKp5uLXNnDvHKGkHUamb6k9e7VBoV9Rdz74se4rvjCoYvwcGhY6ltu6iCG3VB4ebgPox2G0RASLr4D0V94SsigpsEIHzNW2cuXIRwZwinawDRbe9J2Qyn4aEOUtwdZAXmTKWFdstxygcQ_uq4PVwwuG8A=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-3407872637122118298</id><published>2025-01-20T19:33:00.008+08:00</published><updated>2025-01-21T14:46:42.737+08:00</updated><title type='text'>libevent timer</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://www.cnblogs.com/osbreak/p/17823102.html&quot;&gt;https://www.cnblogs.com/osbreak/p/17823102.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style=&quot;color: #3344bb; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;include&lt;/span&gt;&lt;span style=&quot;color: #3344bb; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;color: #3388aa; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;span class=&quot;hljs-meta&quot; style=&quot;color: #3344bb; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; margin: 0px; padding: 0px;&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;color: #3388aa; margin: 0px; padding: 0px;&quot;&gt;&amp;lt;event2/event.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;hljs-meta&quot; style=&quot;color: #3344bb; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; margin: 0px; padding: 0px;&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;color: #3388aa; margin: 0px; padding: 0px;&quot;&gt;&amp;lt;signal.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;namespace&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; std;

&lt;/span&gt;&lt;span class=&quot;hljs-function&quot; style=&quot;font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot; style=&quot;color: #990000; margin: 0px; padding: 0px;&quot;&gt;timer&lt;/span&gt;&lt;span class=&quot;hljs-params&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;(&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;int&lt;/span&gt; sockfd, &lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;short&lt;/span&gt; what, &lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;void&lt;/span&gt;* arg)&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;{
	cout &amp;lt;&amp;lt; &lt;/span&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;color: #dd1144; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;&quot;[timer2]&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; &amp;lt;&amp;lt; endl;
}

&lt;/span&gt;&lt;span class=&quot;hljs-function&quot; style=&quot;font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;hljs-title&quot; style=&quot;color: #990000; margin: 0px; padding: 0px;&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;hljs-params&quot; style=&quot;margin: 0px; padding: 0px;&quot;&gt;(&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;int&lt;/span&gt; argc, &lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; margin: 0px; padding: 0px;&quot;&gt;char&lt;/span&gt;* argv[])&lt;/span&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;{
	event_base* base = &lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_base_new&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;();
	
	&lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;color: #999988; font-family: monospace; font-size: 12px; font-style: italic; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;// 持久事件&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
	event *ev = &lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_new&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;(base,&lt;/span&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;-1&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;,EV_PERSIST,timer,&lt;/span&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;);
	&lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;color: #999988; font-family: monospace; font-size: 12px; font-style: italic; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;//超时优化性能优化，默认event 用二叉堆存储（完全二叉树） 插入删除O（logn）&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;color: #999988; font-family: monospace; font-size: 12px; font-style: italic; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;//优化到双向队列 插入删除O（1）&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; timeval tv_in = {&lt;/span&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;};
	&lt;/span&gt;&lt;span class=&quot;hljs-type&quot; style=&quot;color: #445588; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; timeval *t;
	t = &lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_base_init_common_timeout&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;(base,&amp;amp;tv_in);
	&lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_add&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;(ev3,t3); &lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;color: #999988; font-family: monospace; font-size: 12px; font-style: italic; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;// 性能优化：插入性能 O(1)&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;

	&lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;color: #999988; font-family: monospace; font-size: 12px; font-style: italic; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;// 进入事件主循环&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;
	&lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_base_dispatch&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;(base);
	&lt;/span&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: #397300; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;event_base_free&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;(base);
	&lt;/span&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;color: #009999; font-family: monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: monospace; font-size: 12px; white-space: pre;&quot;&gt;;
}&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/3407872637122118298/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/3407872637122118298' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3407872637122118298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3407872637122118298'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/01/libevent-timer.html' title='libevent timer'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-2960584177690279060</id><published>2025-01-06T15:49:00.003+08:00</published><updated>2025-01-06T15:49:18.200+08:00</updated><title type='text'>valgrind compilation</title><content type='html'>&lt;p&gt;&amp;nbsp;https://blog.csdn.net/HZHejo/article/details/124682490&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/2960584177690279060/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/2960584177690279060' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2960584177690279060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2960584177690279060'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/01/valgrind-compilation.html' title='valgrind compilation'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-3454633404051237028</id><published>2025-01-06T14:47:00.000+08:00</published><updated>2025-01-06T14:47:08.462+08:00</updated><title type='text'>Check libraries dependence</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ref:&amp;nbsp;https://albert-oma.blogspot.com/&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14.85px;&quot;&gt;check libraries dependence:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14.85px;&quot;&gt;$ arm-linux-gnueabihf-readelf -d ./gst-launch-1.0&lt;/span&gt;&lt;/p&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14.85px;&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/3454633404051237028/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/3454633404051237028' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3454633404051237028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/3454633404051237028'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2025/01/check-libraries-dependence.html' title='Check libraries dependence'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-8562097681904518937</id><published>2024-12-11T09:34:00.003+08:00</published><updated>2024-12-11T10:32:09.274+08:00</updated><title type='text'>Virtual memory related</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.cnblogs.com/LoyenWang/p/11965787.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;Linux内存管理之vmap与vmalloc&lt;/a&gt;&amp;nbsp;圖文並茂 , 針對vmap_area&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://gitmind.com/app/docs/mqueygc3&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;mmap system call 後, 進kernel 的流程&lt;/a&gt;&amp;nbsp;gitmind 自畫&lt;/p&gt;&lt;p&gt;https://elixir.free-electrons.com/linux/v5.10.230/source/mm/util.c 方便追code, 含各版本&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://docs.kernel.org/arch/arm64/memory.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;AArch64 Linux memory layout&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/8562097681904518937/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/8562097681904518937' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8562097681904518937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8562097681904518937'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/12/virtual-memory-related.html' title='Virtual memory related'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-7198278029707743886</id><published>2024-12-09T09:30:00.005+08:00</published><updated>2024-12-09T09:30:41.810+08:00</updated><title type='text'>用 LD_PRELOAD 替換動態連結的函式庫</title><content type='html'>&lt;p&gt;用 LD_PRELOAD 替換動態連結的函式庫&lt;/p&gt;&lt;p&gt;https://jasonblog.github.io/note/fcamel/04.html&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/7198278029707743886/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/7198278029707743886' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/7198278029707743886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/7198278029707743886'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/12/ldpreload.html' title='用 LD_PRELOAD 替換動態連結的函式庫'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-2900235455033507584</id><published>2024-11-25T13:58:00.008+08:00</published><updated>2024-11-25T18:13:54.292+08:00</updated><title type='text'>TFAT</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Power Fail Safe FAT File System&lt;/div&gt;&lt;div&gt;https://elinux.org/images/5/54/Elc2011_munegowda.pdf&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;TI-LFAT and TI-LExFAT :&lt;/div&gt;&lt;div&gt;https://www.researchgate.net/publication/271722839_Design_and_Implementation_of_Log_Structured_FAT_and_ExFAT_File_Systems&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;KFAT:&lt;/div&gt;&lt;div&gt;https://www.researchgate.net/publication/344581895_KFAT_LOG-BASED_TRANSACTIONAL_FAT_FILESYSTEM_FOR_EMBEDDED_MOBILE_SYSTEMS&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;TFS4:&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;https://elinux.org/images/5/54/Elc2011_munegowda.pdf&lt;/li&gt;&lt;li&gt;https://bitsavers.computerhistory.org/components/samsung/flash/TFS4_v1.5.0_Porting_Guide_20060502.pdf&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdFs_Kgbajlyjrosarfu2ia85R28HqX-1HDato8P2NWzUi5z368PMa_FsY6U2H-HWrnBBD7cGSriZ8OnVBkkNVkB7HtpcPSjNcpjvh-B8spUYvyJ2_as1JL0UIxklzS0d9vsnlrjpJvnwSbXom1WhgQbs9tWStJ-R_lS-ILFr8PdZpoRS3Y5kVBw&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;654&quot; data-original-width=&quot;573&quot; height=&quot;378&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdFs_Kgbajlyjrosarfu2ia85R28HqX-1HDato8P2NWzUi5z368PMa_FsY6U2H-HWrnBBD7cGSriZ8OnVBkkNVkB7HtpcPSjNcpjvh-B8spUYvyJ2_as1JL0UIxklzS0d9vsnlrjpJvnwSbXom1WhgQbs9tWStJ-R_lS-ILFr8PdZpoRS3Y5kVBw=w331-h378&quot; width=&quot;331&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ExFAT&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;https://events.static.linuxfound.org/images/stories/pdf/lceu11_munegowda_s.pdf&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Renesas:. (not Transaction)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: rgba(42, 40, 157, 0.1); color: #1c1c1c; font-family: &amp;quot;Open Sans&amp;quot;, Helvetica, Arial, &amp;quot;Lucida Grande&amp;quot;, &amp;quot;Nimbus Sans L&amp;quot;, &amp;quot;sans-serif&amp;quot;; font-size: 16px; letter-spacing: 0.1px;&quot;&gt;TFAT V.4.02 (FatFs R0.13c) for RX family allows to the format feature for SD memory card and USB memory in addition to eMMC and Serial Flash memory.&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&amp;nbsp;https://www.renesas.com/en/document/apn/rx-family-open-source-fat-file-system-m3s-tfat-tiny-module-using-firmware-integration-technology?language=en&amp;amp;srsltid=AfmBOootRvzRHDCmHPSjqznUcYY8yXmaEfAfhSOP7xiem1jOCZ-Jukhm&lt;/li&gt;&lt;li&gt;https://www.renesas.com/en/software-tool/fat-file-system-m3s-tfat-tiny-rx-family#overview&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/2900235455033507584/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/2900235455033507584' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2900235455033507584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2900235455033507584'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/11/tfat.html' title='TFAT'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhdFs_Kgbajlyjrosarfu2ia85R28HqX-1HDato8P2NWzUi5z368PMa_FsY6U2H-HWrnBBD7cGSriZ8OnVBkkNVkB7HtpcPSjNcpjvh-B8spUYvyJ2_as1JL0UIxklzS0d9vsnlrjpJvnwSbXom1WhgQbs9tWStJ-R_lS-ILFr8PdZpoRS3Y5kVBw=s72-w331-h378-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-1006046971741818420</id><published>2024-10-08T17:46:00.005+08:00</published><updated>2024-10-08T17:46:31.394+08:00</updated><title type='text'>github Permission denied (publickey)的简单解决方法</title><content type='html'>&lt;p&gt;&amp;nbsp;https://blog.csdn.net/m0_65465945/article/details/134202945&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.执行 ssh-keygen -t rsa -C &quot;你的git注册邮箱&quot;，在 .ssh 目录下会生成以下3个文件：&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; （1）id_rsa，&amp;nbsp; &amp;nbsp; （2）id_rsa.pub，&amp;nbsp; &amp;nbsp; （3）known_hosts&lt;/p&gt;&lt;p&gt;2.在浏览器登录github，在Settings界面点击左边的 SSH and GPG keys，然后复制&amp;nbsp; id_rsa.pub 文件的内容到SSH keys，点击Add SSH key即可。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 执行 ssh -T git@github.com，就能看到成功了。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/1006046971741818420/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/1006046971741818420' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1006046971741818420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1006046971741818420'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/10/github-permission-denied-publickey.html' title='github Permission denied (publickey)的简单解决方法'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-8274705550431442375</id><published>2024-09-25T10:56:00.004+08:00</published><updated>2024-09-25T10:58:27.670+08:00</updated><title type='text'>[English Skills] 進階英文 - 天啊！符號們怎麼唸啊？(下)</title><content type='html'>&lt;p&gt;https://chipersonalbranding.blogspot.com/2017/09/english-skills.html&amp;nbsp;&lt;/p&gt;&lt;p&gt;https://chipersonalbranding.blogspot.com/2018/04/english-skills.html&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/8274705550431442375/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/8274705550431442375' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8274705550431442375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8274705550431442375'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/09/english-skills.html' title='[English Skills] 進階英文 - 天啊！符號們怎麼唸啊？(下)'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-2570723452814114891</id><published>2024-09-25T10:52:00.007+08:00</published><updated>2024-09-25T10:53:32.383+08:00</updated><title type='text'>pthread, sem_wait, mutex, atmoic, concurrent-programs, sysprog21</title><content type='html'>&lt;p&gt;&amp;nbsp;https://www.cnblogs.com/WindSun/p/11441234.html&lt;/p&gt;&lt;p&gt;https://hackmd.io/@sysprog/concurrency-atomics#wait-free-amp-lock-free&lt;/p&gt;&lt;nav aria-labelledby=&quot;repos-header-breadcrumb--wide-heading&quot; class=&quot;Box-sc-g0xbh4-0 fzFXnm&quot; data-testid=&quot;breadcrumbs&quot; id=&quot;repos-header-breadcrumb--wide&quot; style=&quot;background-color: white; box-sizing: border-box; max-width: 100%;&quot;&gt;&lt;ol class=&quot;Box-sc-g0xbh4-0 iMnkmv&quot; style=&quot;box-sizing: border-box; color: #1f2328; display: inline-block; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; list-style: none; margin-bottom: 0px; margin-top: 0px; max-width: 100%; padding-left: 0px;&quot;&gt;&lt;li class=&quot;Box-sc-g0xbh4-0 ghzDag&quot; style=&quot;box-sizing: border-box; display: inline-block; max-width: 100%;&quot;&gt;&lt;a class=&quot;Link__StyledLink-sc-14289xe-0 iuEHTz&quot; data-testid=&quot;breadcrumbs-repo-link&quot; href=&quot;https://github.com/sysprog21/concurrent-programs/tree/master&quot; style=&quot;background-color: transparent; box-sizing: border-box; font-weight: 600; text-decoration-line: none;&quot; sx=&quot;[object Object]&quot;&gt;concurrent-programs&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;Box-sc-g0xbh4-0 ghzDag&quot; style=&quot;box-sizing: border-box; display: inline-block; max-width: 100%;&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span style=&quot;color: #1f2328; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Noto Sans, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;&quot;&gt;https://github.com/sysprog21/concurrent-programs/tree/master?tab=readme-ov-file&lt;/span&gt;&lt;/div&gt;&lt;/nav&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/2570723452814114891/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/2570723452814114891' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2570723452814114891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2570723452814114891'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/09/pthread-semwait-mutex.html' title='pthread, sem_wait, mutex, atmoic, concurrent-programs, sysprog21'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-5231305218688871884</id><published>2024-09-16T18:59:00.003+08:00</published><updated>2024-09-16T18:59:51.689+08:00</updated><title type='text'>ring buffer</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://pandaychen.github.io/2022/04/05/A-LINIX-C-BASED-RING-BUFFER-ANALYSIS/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;熊喵君的博客&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/sysprog21/concurrent-programs/tree/master/ringbuf-shm&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Jserv&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/5231305218688871884/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/5231305218688871884' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5231305218688871884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/5231305218688871884'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/09/ring-buffer.html' title='ring buffer'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-1699232590450556034</id><published>2024-09-06T14:17:00.002+08:00</published><updated>2024-09-06T14:20:52.712+08:00</updated><title type='text'>指定時間的類型</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; color: #111111; font-family: Menlo, Monaco, monospace; font-size: 17px; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;clock_getres&lt;/code&gt;&lt;span face=&quot;&amp;quot;Lucida Grande&amp;quot;, Tahoma, Verdana, Arial, &amp;quot;sans-serif&amp;quot;, 微軟正黑體, 蘋果儷中黑, &amp;quot;儷黑 Pro&amp;quot;, 新細明體&quot; style=&quot;background-color: #f1f1f1; color: #111111; font-size: 17px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span face=&quot;&amp;quot;Lucida Grande&amp;quot;, Tahoma, Verdana, Arial, &amp;quot;sans-serif&amp;quot;, 微軟正黑體, 蘋果儷中黑, &amp;quot;儷黑 Pro&amp;quot;, 新細明體&quot; style=&quot;background-color: #f1f1f1; color: #111111; font-size: 17px;&quot;&gt;的第一個參數是&lt;b&gt;指定時間的類型&lt;/b&gt;，常見的類型有：&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;-webkit-font-smoothing: antialiased; background-color: #f1f1f1; border: 0px; box-sizing: border-box; color: #111111; font-family: &amp;quot;Lucida Grande&amp;quot;, Tahoma, Verdana, Arial, &amp;quot;sans-serif&amp;quot;, 微軟正黑體, 蘋果儷中黑, &amp;quot;儷黑 Pro&amp;quot;, 新細明體; font-size: 17px; line-height: 28.9px; list-style-image: initial; list-style-position: initial; margin: 0px 0px 1.5em 1.5em; padding: 0px;&quot;&gt;&lt;/ul&gt;&lt;p&gt;https://blog.gtwang.org/programming/measure-the-execution-time-in-c-language/2/#google_vignette&lt;/p&gt;&lt;ul style=&quot;-webkit-font-smoothing: antialiased; background-color: #f1f1f1; border: 0px; box-sizing: border-box; color: #111111; font-family: &amp;quot;Lucida Grande&amp;quot;, Tahoma, Verdana, Arial, &amp;quot;sans-serif&amp;quot;, 微軟正黑體, 蘋果儷中黑, &amp;quot;儷黑 Pro&amp;quot;, 新細明體; font-size: 17px; line-height: 28.9px; list-style-image: initial; list-style-position: initial; margin: 0px 0px 1.5em 1.5em; padding: 0px;&quot;&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0.5em 0px; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_REALTIME&lt;/code&gt;：系統的實際時間（wall-clock time）。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px 0px 0.5em; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_REALTIME_COARSE&lt;/code&gt;：系統的實際時間（wall-clock time），取得速度快，但精確度校低。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px 0px 0.5em; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_MONOTONIC&lt;/code&gt;：單調遞增時間（monotonic time），這個時間會非常穩定的持續遞增，不會因為系統時間改變而有變動，適合用於測量程式執行效能。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px 0px 0.5em; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_MONOTONIC_COARSE&lt;/code&gt;：與&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_MONOTONIC&lt;/code&gt;&amp;nbsp;類似，取得速度快，但精確度校低。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px 0px 0.5em; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_MONOTONIC_RAW&lt;/code&gt;：與&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_MONOTONIC&lt;/code&gt;&amp;nbsp;類似，但是它是從硬體時鐘所讀取出來的值。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px 0px 0.5em; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_PROCESS_CPUTIME_ID&lt;/code&gt;：程式行程的 CPU time，這個時間包含所有的執行序所花費的時間。&lt;/li&gt;&lt;li style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-family: inherit; line-height: 28.9px; margin: 0px; padding: 0px; text-align: left;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; line-height: 1; margin: 0px; padding: 2px 4px;&quot;&gt;CLOCK_THREAD_CPUTIME_ID&lt;/code&gt;：程式單一執行序所耗費的時間。&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;p style=&quot;background-color: #fefef2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.5; margin: 10px auto; padding: 0px;&quot;&gt;https://www.cnblogs.com/memo-store/p/5658277.html&lt;/p&gt;&lt;p style=&quot;background-color: #fefef2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.5; margin: 10px auto; padding: 0px;&quot;&gt;&amp;nbsp;CLOCK_REALTIME，可以理解为wall time，即是实际的时间。用户可以使用命令（date）或是系统调用去修改。如果使用了NTP， 也会被NTP修改。当系统休眠（suspend）时，仍然会运行的（系统恢复时，kernel去作补偿）。&lt;/p&gt;&lt;p style=&quot;background-color: #fefef2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.5; margin: 10px auto; padding: 0px;&quot;&gt;CLOCK_MONTONIC，是单调时间，即从某个时间点开始到现在过去的时间。用户不能修改这个时间，但是当系统进入休眠（suspend）时，CLOCK_MONOTONIC是不会增加的。&lt;/p&gt;&lt;p style=&quot;background-color: #fefef2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.5; margin: 10px auto; padding: 0px;&quot;&gt;CLOCK_MONOTONIC_RAW，和CLOCK_MONOTONIC类似，但不同之处是MONOTONIC_RAW不会受到NTP的影响。CLOCK_MONOTONIC会受到NTP的影响并不是说NTP会去修改CLOCK_MONOTONIC，使其不连续，而是说当NTP server 和本地的时钟硬件之间有问题，NTP会影响到CLOCK_MONOTONIC的频率，但是MONOTONIC_RAW则不会受其影响。 其区别可以参考 Difference between&amp;nbsp;&lt;a href=&quot;http://popularubuntuquestions.com/what-is-the-difference-between-clock_monotonic-clock_monotonic_raw/&quot; rel=&quot;noopener nofollow&quot; style=&quot;color: #075db3; margin: 0px; padding: 0px;&quot; target=&quot;_blank&quot;&gt;MONOTONIC and MONOTONIC_RAW&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;background-color: #fefef2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.5; margin: 10px auto; padding: 0px;&quot;&gt;CLOCK_BOOTTIME，与CLOCK_MONOTONIC类似，但是当suspend时，会依然增加。可以参考LWN的这篇文章 introduce&amp;nbsp;&lt;a href=&quot;https://lwn.net/Articles/420142/&quot; rel=&quot;noopener nofollow&quot; style=&quot;color: #075db3; margin: 0px; padding: 0px;&quot; target=&quot;_blank&quot;&gt;CLOCK_BOOTTIME&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/1699232590450556034/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/1699232590450556034' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1699232590450556034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/1699232590450556034'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/09/blog-post.html' title='指定時間的類型'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-4601461802941315084</id><published>2024-09-06T11:26:00.003+08:00</published><updated>2024-09-06T11:26:50.501+08:00</updated><title type='text'>Lens Calculator and Resolution Simulator</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 class=&quot;MuiTypography-root jss28 MuiTypography-h3&quot; style=&quot;background-color: white; box-sizing: border-box; color: #2b3380; font-family: Roboto, Helvetica, Arial, sans-serif; font-size: 1.5rem; line-height: 1.167; margin: 0px 1.5rem 12px 0px; padding: 0px; white-space-collapse: preserve-breaks;&quot;&gt;&lt;a href=&quot;https://www.theiatech.com/calculator/main?focalLength=100&amp;amp;horizontalResolution=1600&amp;amp;inEditMode=false&amp;amp;languageCode=zh-TW&amp;amp;lensId=9&amp;amp;locationParameter=height&amp;amp;locationValue=0&amp;amp;pixelPitchUm=3.3605&amp;amp;sceneIndex=0&amp;amp;setupParameter=distance&amp;amp;setupValue=200&amp;amp;unitId=1&amp;amp;verticalResolution=1200&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Lens Calculator and Resolution Simulator&lt;/a&gt;&lt;/h3&gt;&lt;div class=&quot;MuiBox-root jss35 jss30&quot; style=&quot;background-color: white; box-sizing: border-box; color: #212529; display: flex; flex-direction: column; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, &amp;quot;Noto Sans&amp;quot;, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; margin: 0px; padding: 0px;&quot;&gt;&lt;div class=&quot;MuiInputBase-root MuiOutlinedInput-root&quot; style=&quot;align-items: center; border-radius: 4px; box-sizing: border-box; color: rgba(0, 0, 0, 0.87); cursor: text; display: inline-flex; font-family: Roboto, Helvetica, Arial, sans-serif; font-size: 1rem; letter-spacing: 0.00938em; line-height: 1.1876em; margin: 0px; padding: 0px; position: relative;&quot;&gt;&lt;div aria-haspopup=&quot;listbox&quot; class=&quot;MuiSelect-root jss33 MuiSelect-select MuiSelect-selectMenu MuiSelect-outlined MuiInputBase-input MuiOutlinedInput-input&quot; role=&quot;button&quot; style=&quot;-webkit-tap-highlight-color: transparent; animation-duration: 10ms; animation-name: mui-auto-fill-cancel; appearance: none; background: none; border-radius: 4px; border: 0px; box-sizing: content-box; color: currentcolor; cursor: pointer; font: inherit; height: auto; letter-spacing: inherit; margin: 0px; min-height: 1.1876em; min-width: 16px; overflow: hidden; padding: 18.5px 32px 18.5px 14px; text-overflow: ellipsis; text-wrap: nowrap; user-select: none; width: 1013px;&quot; tabindex=&quot;0&quot;&gt;&lt;p class=&quot;MuiTypography-root jss32 MuiTypography-body1&quot; style=&quot;box-sizing: border-box; color: #727272; font-size: 1rem; hyphens: auto; letter-spacing: 0.00938em; line-height: 1.5; margin: 0px; padding: 0px; text-align: justify; white-space: pre-line;&quot;&gt;Resolution...&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/4601461802941315084/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/4601461802941315084' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/4601461802941315084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/4601461802941315084'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/09/lens-calculator-and-resolution-simulator.html' title='Lens Calculator and Resolution Simulator'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-8241394564344082149</id><published>2024-08-21T17:32:00.003+08:00</published><updated>2024-08-21T17:34:04.777+08:00</updated><title type='text'>ssh-keygen ECDH</title><content type='html'>ssh-keygen -t ed25519&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/8241394564344082149/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/8241394564344082149' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8241394564344082149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/8241394564344082149'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/08/ssh-keygen-ecdsa.html' title='ssh-keygen ECDH'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-2424940807917649786</id><published>2024-08-13T17:13:00.007+08:00</published><updated>2024-08-15T14:09:01.498+08:00</updated><title type='text'>Modbus Gateway</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlkZaluRGscF-U2fWM83m0D7xBp1OEbKTIE1gwFoPzatDVLDXuNx9aQIgJNSZE4bUW6ieRxziv9781zSGRx0btGT2Cu13Qdy7KCO4aeWaVPmfAs6kZjya7a0dW7N-4ByJfKJy3VdOLBiGsr9tKNOVoZqx3OZUjjx8xty8KJoJm3pAoR1TJXs3yrA&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;478&quot; data-original-width=&quot;1154&quot; height=&quot;262&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjlkZaluRGscF-U2fWM83m0D7xBp1OEbKTIE1gwFoPzatDVLDXuNx9aQIgJNSZE4bUW6ieRxziv9781zSGRx0btGT2Cu13Qdy7KCO4aeWaVPmfAs6kZjya7a0dW7N-4ByJfKJy3VdOLBiGsr9tKNOVoZqx3OZUjjx8xty8KJoJm3pAoR1TJXs3yrA=w631-h262&quot; width=&quot;631&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;https://www.amplified.com.au/g3-series&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Reference:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://www.moxa.com/tw/products/industrial-computing/iiot-gateways/ready-to-deploy-iiot-gateways/aig-101-series#resources&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;MOXA&amp;nbsp;AIG-101 系列&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://cdn-cms.azureedge.net/getmedia/9f618c22-77be-4893-97cf-1483eb719a4f/moxa-aig-101-series-manual-v2.1.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;AIG-101 Series User Manual&lt;/a&gt;&amp;nbsp;含485設定頁面&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.moxa.com/tw/videos/ready-to-deploy-iiot-gateways-bridge-the-gap-between-ot-and-it-systems-with-ease&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;以開箱即用的 IIoT 閘道器，將 OT 與 IT 系統輕鬆合一&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.amplified.com.au/g3-series&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Amplified Engineering&amp;nbsp;g3-series&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.amplified.com.au/products-faq&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Products-faq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.amplified.com.au/_files/ugd/918126_b103c53384584dddb4206e5a1091b102.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;configuration&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;https://iqflow.io/products/iqeg-500-iot-edge-gateway&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;IQEG-500 物聯網智慧邊緣運算閘道資料記錄器&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.twcloud.org.tw/files/file_pool/1/0o179567088153514816/802.11ah%20product%20portfolio_2024.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;802.11AH&amp;nbsp;PRODUCT PORTFOLIO&lt;/a&gt;&amp;nbsp;by&amp;nbsp;雲協&amp;nbsp;2024/05&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://linovision.com/collections/rs485-iot-sensors/products/versatile-outdoor-sensor-temperature-humidity-co2-light-sensor#ks&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;rs485-iot-sensors&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/2424940807917649786/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/2424940807917649786' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2424940807917649786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/2424940807917649786'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/08/modbus-gateway.html' title='Modbus Gateway'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjlkZaluRGscF-U2fWM83m0D7xBp1OEbKTIE1gwFoPzatDVLDXuNx9aQIgJNSZE4bUW6ieRxziv9781zSGRx0btGT2Cu13Qdy7KCO4aeWaVPmfAs6kZjya7a0dW7N-4ByJfKJy3VdOLBiGsr9tKNOVoZqx3OZUjjx8xty8KJoJm3pAoR1TJXs3yrA=s72-w631-h262-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11962271.post-6694105378514920629</id><published>2024-08-09T15:30:00.007+08:00</published><updated>2024-08-15T19:50:16.059+08:00</updated><title type='text'>Secure Boot</title><content type='html'>&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Term:&lt;/h3&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;ARM TrustZone: 一種實現 TEE 的硬件技術。&lt;/li&gt;&lt;li&gt;OP-TEE (Optimized Trusted Execution Environment) : 一種基於 ARM TrustZone 的 TEE 開源實現。&lt;/li&gt;&lt;li&gt;REE (Rich Execution Environment) 是我們日常使用的系統環境，負責運行一般的應用程序。&lt;/li&gt;&lt;li&gt;TEE (Trusted Execution Environment) 是一個安全隔離的環境，用於保護敏感數據和關鍵應用。&lt;/li&gt;&lt;li&gt;CA (Client Application)是運行在 REE 中的應用程序，需要調用 TEE 中的 TA 的服務。&lt;/li&gt;&lt;li&gt;TA (Trusted Application) 是運行在 TEE 中的應用程序，提供具體的安全功能。&lt;/li&gt;&lt;li&gt;privilege mode:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;SVC(Supervisor Call): 当用户空间通过系统调用陷入到内核空间的时候，则最终会通过SVC指令进入到内核空间&lt;/li&gt;&lt;li&gt;HVC(Hypervisor Call): 当在ARMv8-A架构下，normal world, EL1尝试去访问 EL2的时候，则会陷入到虚拟化层的，其中是通过HVC指令&lt;/li&gt;&lt;li&gt;SMC(Secure Moniter Call): 用于切换noramal world 和 secure world使用。&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;a href=&quot;https://wiki.csie.ncku.edu.tw/embedded/ARMv8#%E5%AE%89%E5%85%A8%E6%80%A7%E7%8B%80%E6%85%8B-security-state&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ARMv8-A_Architecture_Reference_Manual P.1408&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;ARMv8-A架構定義了四個例外層級，分別為EL0到EL3，其中數字越大代表特權(privilege)越大。 (Exception Level)&lt;/li&gt;&lt;ol&gt;&lt;li&gt;EL0: 無特權模式(unprivileged)&lt;/li&gt;&lt;li&gt;EL1: 作業系統核心模式(OS kernel mode)&lt;/li&gt;&lt;li&gt;EL2: 虛擬機器監視器模式(Hypervisor mode)&lt;/li&gt;&lt;li&gt;EL3: TrustZone® monitor mode&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;要提升到較高層級需要透過exceptions(如: 中斷、page faults等)。&lt;/li&gt;&lt;ol&gt;&lt;li&gt;EL0 =&amp;gt; EL1: SVC (system call)&lt;/li&gt;&lt;li&gt;EL1 =&amp;gt; EL2: HVC (hypervisor call)&lt;/li&gt;&lt;li&gt;EL2 =&amp;gt; EL3: SMC (secure monitor call)&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;br&gt;&lt;/ol&gt;----------------------------------------&lt;br&gt;&lt;br&gt;Boot Flow&lt;div&gt;&lt;div&gt;bl1: MASKROM &lt;/div&gt;&lt;div&gt;bl2: Loader&lt;/div&gt;&lt;div&gt;bl31: ARM TRUST Firmware &lt;/div&gt;&lt;div&gt;bl32: OP-TEE OS&lt;/div&gt;&lt;div&gt;bl33: U-boot&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Reference:&lt;br&gt;&lt;br&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://www.cnblogs.com/han-guang-xue/p/17825453.html&quot;&gt;TrustZone-OPTEE 编译调试笔记&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.796t.com/content/1547457317.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;什麼是OPTEE-OS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.cnblogs.com/han-guang-xue/p/17825453.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;TrustZone-OPTEE 编译调试笔记&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;代码导读1: REE-&amp;gt;TEE 调用, RA-&amp;gt;TA 调用&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;a href=&quot;https://www.cnblogs.com/arnoldlu/p/14175126.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://wiki.csie.ncku.edu.tw/embedded/ARMv8#%E4%BE%8B%E5%A4%96%E5%B1%A4%E7%B4%9A-exception-levels&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ARMv8架構介紹&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;http://g9677606.blogspot.com/2024/08/secure-boot.html#more&quot;&gt;閱讀更多 »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://g9677606.blogspot.com/feeds/6694105378514920629/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11962271/6694105378514920629' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/6694105378514920629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11962271/posts/default/6694105378514920629'/><link rel='alternate' type='text/html' href='http://g9677606.blogspot.com/2024/08/secure-boot.html' title='Secure Boot'/><author><name>Jack</name><uri>http://www.blogger.com/profile/12670818999851665171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>