<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Embedded Linux on Fran Kuo | R&amp;D Leadership</title>
    <link>https://chenfu.ai/en/tags/embedded-linux/</link>
    <description>Recent content in Embedded Linux on Fran Kuo | R&amp;D Leadership</description>
    <generator>Hugo -- 0.157.0</generator>
    <language>en</language>
    <lastBuildDate>Sun, 30 Sep 2007 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://chenfu.ai/en/tags/embedded-linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[R&amp;D Notes] Troubleshooting Busybox 1.7.2 taskset.c Compilation Errors</title>
      <link>https://chenfu.ai/en/posts/%E5%B7%A5%E4%BD%9C%E9%BB%9E%E6%BB%B4-busybox-172-tasksetc%E7%B7%A8%E8%AD%AF%E7%94%A2%E7%94%9Ferror/</link>
      <pubDate>Sun, 30 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/%E5%B7%A5%E4%BD%9C%E9%BB%9E%E6%BB%B4-busybox-172-tasksetc%E7%B7%A8%E8%AD%AF%E7%94%A2%E7%94%9Ferror/</guid>
      <description>&lt;p&gt;While compiling Busybox 1.7.2 using the default config (&lt;code&gt;make defconfig&lt;/code&gt;) with a specific ARM toolchain, I encountered two specific compilation errors. One was related to the &lt;code&gt;route&lt;/code&gt; applet, and the other was in &lt;code&gt;taskset.c&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I resolved the &lt;code&gt;taskset.c&lt;/code&gt; issue by disabling it temporarily, but later found a proper fix. The root cause lies in a mismatch between uClibc (which Busybox is primarily designed for) and glibc. Specifically, the number of arguments for &lt;code&gt;sched_getaffinity&lt;/code&gt; and &lt;code&gt;sched_setaffinity&lt;/code&gt; differs between the two.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[R&amp;D Notes] Implementing Linux Daemons in Embedded Systems</title>
      <link>https://chenfu.ai/en/posts/%E5%B7%A5%E4%BD%9C%E9%BB%9E%E6%BB%B4-daemon%E6%87%89%E7%94%A8%E6%96%BClinux%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%B5%B1%E5%AF%A6%E4%BD%9C/</link>
      <pubDate>Wed, 19 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/%E5%B7%A5%E4%BD%9C%E9%BB%9E%E6%BB%B4-daemon%E6%87%89%E7%94%A8%E6%96%BClinux%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%B5%B1%E5%AF%A6%E4%BD%9C/</guid>
      <description>&lt;p&gt;Implementing Daemons in Embedded Linux systems is a fundamental task for long-running services. Based on the excellent &lt;em&gt;Linux Daemon Writing HOWTO&lt;/em&gt; by Devin Watson, I have refactored several processes in my current project to run as background services (daemons).&lt;/p&gt;
&lt;p&gt;By backgrounding these processes, we ensure they remain resident in the system without blocking the console or being tied to a specific session.&lt;/p&gt;
&lt;h3 id=&#34;core-implementation-pattern&#34;&gt;Core Implementation Pattern&lt;/h3&gt;
&lt;p&gt;The following C snippet demonstrates the standard procedure for &amp;ldquo;daemonizing&amp;rdquo; a process: &lt;code&gt;fork()&lt;/code&gt; from the parent, create a new session with &lt;code&gt;setsid()&lt;/code&gt;, change the working directory, and close standard file descriptors.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
