<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Software Integrity Ltd</title>
	<atom:link href="http://software-integrity.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://software-integrity.com/blog</link>
	<description>Realtime and Embedded Software</description>
	<lastBuildDate>Thu, 03 Jun 2010 10:34:07 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>Comment on Free Money! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/05/27/free-money/comment-page-1/#comment-487</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 03 Jun 2010 10:34:07 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=638#comment-487</guid>
		<description>I&#039;ve corrected the one I knew about, but the prize remains on offer, for the time being, to anyone who can find any others.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve corrected the one I knew about, but the prize remains on offer, for the time being, to anyone who can find any others.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on New version of dynamic memory software for C++ by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/05/09/new-version-of-dynamic-memory-software-for-c/comment-page-1/#comment-473</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 13 May 2010 18:08:53 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=633#comment-473</guid>
		<description>Thanks for the recommendation, Monte. I use VC++ a lot for developing and prototyping my code, even though it is invariably destined for some embedded system using a different tool chain. Memory leaks are hard to find, and tools to find them tend to exist only for IT-type toolchains - another good reason to use such toolchains for prototyping and initial debugging, where possible.

My code, which you can download if you wish, can&#039;t detect or prevent the coding errors which cause memory leaks but definitely can get rid of the fragmentation problem inherent in all heap (variable block size) allocation systems. No tool can help you with this! IT programmers can generally ignore fragmentation and get away with it; embedded programmers most certainly cannot.

Actually, I lied. The &lt;em&gt;Managed&lt;/em&gt; class and its associated smart &lt;em&gt;Ptr&lt;/em&gt; class are now part of my software bundle and proper use of these can help greatly to prevent memory leaks.</description>
		<content:encoded><![CDATA[<p>Thanks for the recommendation, Monte. I use VC++ a lot for developing and prototyping my code, even though it is invariably destined for some embedded system using a different tool chain. Memory leaks are hard to find, and tools to find them tend to exist only for IT-type toolchains &#8211; another good reason to use such toolchains for prototyping and initial debugging, where possible.</p>
<p>My code, which you can download if you wish, can&#8217;t detect or prevent the coding errors which cause memory leaks but definitely can get rid of the fragmentation problem inherent in all heap (variable block size) allocation systems. No tool can help you with this! IT programmers can generally ignore fragmentation and get away with it; embedded programmers most certainly cannot.</p>
<p>Actually, I lied. The <em>Managed</em> class and its associated smart <em>Ptr</em> class are now part of my software bundle and proper use of these can help greatly to prevent memory leaks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on New version of dynamic memory software for C++ by Monte</title>
		<link>http://software-integrity.com/blog/2010/05/09/new-version-of-dynamic-memory-software-for-c/comment-page-1/#comment-472</link>
		<dc:creator>Monte</dc:creator>
		<pubDate>Thu, 13 May 2010 15:31:01 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=633#comment-472</guid>
		<description>The best tool to avoid memory leaks in C++ apps is Deleaker ( http://deleaker.com/ )</description>
		<content:encoded><![CDATA[<p>The best tool to avoid memory leaks in C++ apps is Deleaker ( <a href="http://deleaker.com/" rel="nofollow">http://deleaker.com/</a> )</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on New version of dynamic memory software for C++ by Prasanth</title>
		<link>http://software-integrity.com/blog/2010/05/09/new-version-of-dynamic-memory-software-for-c/comment-page-1/#comment-469</link>
		<dc:creator>Prasanth</dc:creator>
		<pubDate>Mon, 10 May 2010 03:21:30 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=633#comment-469</guid>
		<description>Appreciate your efforts!</description>
		<content:encoded><![CDATA[<p>Appreciate your efforts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Subscribers by Peter Bushell</title>
		<link>http://software-integrity.com/blog/members/comment-page-1/#comment-466</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Fri, 30 Apr 2010 12:42:30 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?page_id=480#comment-466</guid>
		<description>&lt;a href=&quot;#comment-465&quot; rel=&quot;nofollow&quot;&gt;@Bulla Singh &lt;/a&gt; 
Will do, but later today. (My day is just beginning, as I am delivering a course in Costa Rica). Have you tried subscribing yourself? It should be quicker. I&#039;ll check later to see if you succeeded and, if not, I&#039;ll add you to the list myself.

Thank you for your interest.</description>
		<content:encoded><![CDATA[<p><a href="#comment-465" rel="nofollow">@Bulla Singh </a><br />
Will do, but later today. (My day is just beginning, as I am delivering a course in Costa Rica). Have you tried subscribing yourself? It should be quicker. I&#8217;ll check later to see if you succeeded and, if not, I&#8217;ll add you to the list myself.</p>
<p>Thank you for your interest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Subscribers by Bulla Singh</title>
		<link>http://software-integrity.com/blog/members/comment-page-1/#comment-465</link>
		<dc:creator>Bulla Singh</dc:creator>
		<pubDate>Fri, 30 Apr 2010 10:11:24 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?page_id=480#comment-465</guid>
		<description>Please add me to your list. Thanks.</description>
		<content:encoded><![CDATA[<p>Please add me to your list. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-110</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Sat, 06 Feb 2010 09:27:29 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-110</guid>
		<description>&lt;a href=&quot;#comment-107&quot; rel=&quot;nofollow&quot;&gt;@David Stonier-Gibson &lt;/a&gt;
David, thank you for contributing to the debate. I sense a touch of the Devil&#039;s Advocate, which is healthy.

The three basic principles which guided me in the design of SKC++ were that it should be:

-  Easy to learn
-  Easy to use
-  Difficult to misuse

My own experience and that of other engineers that I have asked about it is that we like to reserve our time and creativity for the challenge facing us. We don&#039;t want to waste too much time learning how a tool works, or agonising about its options; that should not be part of the challenge. I regard SKC++ primarily as a tool for Application Engineers.

Richness does have its place and there is an argument that you appeal to a greater market if you provide all the traditional, &quot;expected&quot; features as well as any new ones. However, my mission these days is not to sell millions of copies of SKC++ (though more than one or two would be nice), but to distil decades of experience into what I do and deliver only the best bits, thereby making my small contribution to improving embedded software quality. (For the historical enlightenment of those starting out in the profession, I might occasionally blog about the less good bits, but that&#039;s another subject.)

Of course the problem with Occam&#039;s Razor is that you can slice off too much. But to counter that by adding redundant features &quot;just in case&quot; is cowardice. There&#039;s a thin line somewhere in between and that&#039;s why I threw the Semaphore argument open.

Here are some other arguments for the lean approach:

-  Quicker to market (though I still haven&#039;t got there)
-  Less to go wrong
-  Easier to add features, on demand, than to take them away after publication

Who knows, I might make more money adding redundant features for traditionalists (or others stuck in their ways by choice or by circumstance) than I make from the basic product!</description>
		<content:encoded><![CDATA[<p><a href="#comment-107" rel="nofollow">@David Stonier-Gibson </a><br />
David, thank you for contributing to the debate. I sense a touch of the Devil&#8217;s Advocate, which is healthy.</p>
<p>The three basic principles which guided me in the design of SKC++ were that it should be:</p>
<p>-  Easy to learn<br />
-  Easy to use<br />
-  Difficult to misuse</p>
<p>My own experience and that of other engineers that I have asked about it is that we like to reserve our time and creativity for the challenge facing us. We don&#8217;t want to waste too much time learning how a tool works, or agonising about its options; that should not be part of the challenge. I regard SKC++ primarily as a tool for Application Engineers.</p>
<p>Richness does have its place and there is an argument that you appeal to a greater market if you provide all the traditional, &#8220;expected&#8221; features as well as any new ones. However, my mission these days is not to sell millions of copies of SKC++ (though more than one or two would be nice), but to distil decades of experience into what I do and deliver only the best bits, thereby making my small contribution to improving embedded software quality. (For the historical enlightenment of those starting out in the profession, I might occasionally blog about the less good bits, but that&#8217;s another subject.)</p>
<p>Of course the problem with Occam&#8217;s Razor is that you can slice off too much. But to counter that by adding redundant features &#8220;just in case&#8221; is cowardice. There&#8217;s a thin line somewhere in between and that&#8217;s why I threw the Semaphore argument open.</p>
<p>Here are some other arguments for the lean approach:</p>
<p>-  Quicker to market (though I still haven&#8217;t got there)<br />
-  Less to go wrong<br />
-  Easier to add features, on demand, than to take them away after publication</p>
<p>Who knows, I might make more money adding redundant features for traditionalists (or others stuck in their ways by choice or by circumstance) than I make from the basic product!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Subscribers by Peter Bushell</title>
		<link>http://software-integrity.com/blog/members/comment-page-1/#comment-109</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Sat, 06 Feb 2010 09:16:18 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?page_id=480#comment-109</guid>
		<description>&lt;a href=&quot;#comment-106&quot; rel=&quot;nofollow&quot;&gt;@lrreiche &lt;/a&gt; 

Thanks for your comment about DO-178B. I&#039;ve moved it to the Software Download page (link above), and have replied to it there.</description>
		<content:encoded><![CDATA[<p><a href="#comment-106" rel="nofollow">@lrreiche </a> </p>
<p>Thanks for your comment about DO-178B. I&#8217;ve moved it to the Software Download page (link above), and have replied to it there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by David Stonier-Gibson</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-107</link>
		<dc:creator>David Stonier-Gibson</dc:creator>
		<pubDate>Fri, 05 Feb 2010 21:34:51 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-107</guid>
		<description>Peter, a slightly different angle on the debate: If you are attempting to make the leanest possible system, and feature X can be eliminated, then consider eliminating it. If OTOH you want to make a rich system that gives users a choice of how they go about things, then consider including the feature even if it is &quot;redundant&quot;.

Getting a product accepted is about the user experience. That applies as much to an RTOS as to a toy like an iPad. Have you ever stood behind someone while they use a program you are a hot shot at, say Excel, and suddenly notice them doing something in quite a different way to how you would? That&#039;s richness.

The other argument in favour of richness is that it gives uses more opportunities to perhaps use the product in ways you, the maker, didn&#039;t anticipate. Which of course in an RTOS may not always be a Good Thing :-)

David Stonier-Gibson http://splatco.com</description>
		<content:encoded><![CDATA[<p>Peter, a slightly different angle on the debate: If you are attempting to make the leanest possible system, and feature X can be eliminated, then consider eliminating it. If OTOH you want to make a rich system that gives users a choice of how they go about things, then consider including the feature even if it is &#8220;redundant&#8221;.</p>
<p>Getting a product accepted is about the user experience. That applies as much to an RTOS as to a toy like an iPad. Have you ever stood behind someone while they use a program you are a hot shot at, say Excel, and suddenly notice them doing something in quite a different way to how you would? That&#8217;s richness.</p>
<p>The other argument in favour of richness is that it gives uses more opportunities to perhaps use the product in ways you, the maker, didn&#8217;t anticipate. Which of course in an RTOS may not always be a Good Thing <img src='http://software-integrity.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>David Stonier-Gibson <a href="http://splatco.com" rel="nofollow">http://splatco.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Subscribers by Peter Bushell</title>
		<link>http://software-integrity.com/blog/members/comment-page-1/#comment-99</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 28 Jan 2010 14:38:01 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?page_id=480#comment-99</guid>
		<description>Now that automatic registration is working, I&#039;ve deleted the comments via which early subscribers requested registration.

To those people:
You are still registered, of course, and I have changed nothing in your user accounts!</description>
		<content:encoded><![CDATA[<p>Now that automatic registration is working, I&#8217;ve deleted the comments via which early subscribers requested registration.</p>
<p>To those people:<br />
You are still registered, of course, and I have changed nothing in your user accounts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by David Thompson</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-96</link>
		<dc:creator>David Thompson</dc:creator>
		<pubDate>Wed, 20 Jan 2010 14:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-96</guid>
		<description>&lt;a href=&quot;#comment-93&quot; rel=&quot;nofollow&quot;&gt;@Peter Bushell  &lt;/a&gt; 
Surprisingly I came across rendezvous recently disguised under the term &quot;synchronous events&quot;, which, when explained, was something like &quot;I send you an event/message, you do something (whilst I wait) and then send me another event/message in response&quot;. So your kernel will cover this kind of pattern perfectly adequately.</description>
		<content:encoded><![CDATA[<p><a href="#comment-93" rel="nofollow">@Peter Bushell  </a><br />
Surprisingly I came across rendezvous recently disguised under the term &#8220;synchronous events&#8221;, which, when explained, was something like &#8220;I send you an event/message, you do something (whilst I wait) and then send me another event/message in response&#8221;. So your kernel will cover this kind of pattern perfectly adequately.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-95</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Tue, 19 Jan 2010 19:35:48 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-95</guid>
		<description>&lt;a href=&quot;#comment-91&quot; rel=&quot;nofollow&quot;&gt;@Dave Banham &lt;/a&gt; 
I looked at OSE some time ago, and Sciopta after reading your comment. While I like their approach in general, they both exhibit two things which I&#039;m trying to counter:

- Too many system calls
- Written in C

</description>
		<content:encoded><![CDATA[<p><a href="#comment-91" rel="nofollow">@Dave Banham </a><br />
I looked at OSE some time ago, and Sciopta after reading your comment. While I like their approach in general, they both exhibit two things which I&#8217;m trying to counter:</p>
<p>- Too many system calls<br />
- Written in C</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-94</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Tue, 19 Jan 2010 19:30:01 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-94</guid>
		<description>Jim &amp; Niall...

My sentiments, exactly. I mentioned the semaphore only because I imagined many people would expect to see such a thing in any RTOS. I appear to have been wrong about that, happily!</description>
		<content:encoded><![CDATA[<p>Jim &#038; Niall&#8230;</p>
<p>My sentiments, exactly. I mentioned the semaphore only because I imagined many people would expect to see such a thing in any RTOS. I appear to have been wrong about that, happily!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-93</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Tue, 19 Jan 2010 17:53:32 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-93</guid>
		<description>&lt;a href=&quot;#comment-82&quot; rel=&quot;nofollow&quot;&gt;@David Thompson &lt;/a&gt; 
Perhaps the concept of a rendezvous in Ada came about because the humble semaphore was in vogue at about the time the language was invented! I reluctantly have to conclude that the vanilla SKC++ won&#039;t be a good candidate for an Ada run-time system.

However, the inner heart of the kernel (downgraded to C), plus a semaphore (easy to code), plus some nasty POSIX, probably, would do the job :-)</description>
		<content:encoded><![CDATA[<p><a href="#comment-82" rel="nofollow">@David Thompson </a><br />
Perhaps the concept of a rendezvous in Ada came about because the humble semaphore was in vogue at about the time the language was invented! I reluctantly have to conclude that the vanilla SKC++ won&#8217;t be a good candidate for an Ada run-time system.</p>
<p>However, the inner heart of the kernel (downgraded to C), plus a semaphore (easy to code), plus some nasty POSIX, probably, would do the job <img src='http://software-integrity.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Dave Banham</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-91</link>
		<dc:creator>Dave Banham</dc:creator>
		<pubDate>Sun, 17 Jan 2010 16:27:59 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-91</guid>
		<description>Have you had a look at the Enea OSE and Scipota RTOS API&#039;s. I&#039;m no expert but I believe that they are very message centric and do not provide the lower level primitives found in most other RTOS&#039;.</description>
		<content:encoded><![CDATA[<p>Have you had a look at the Enea OSE and Scipota RTOS API&#8217;s. I&#8217;m no expert but I believe that they are very message centric and do not provide the lower level primitives found in most other RTOS&#8217;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Niall Cooling</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-87</link>
		<dc:creator>Niall Cooling</dc:creator>
		<pubDate>Tue, 12 Jan 2010 14:38:16 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-87</guid>
		<description>I think it&#039;s great to remove semaphores from SKC++ for all the reasons you&#039;ve recounted, and hopefully it&#039;ll get people to think about what they&#039;re doing rather than how they&#039;re doing it.</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s great to remove semaphores from SKC++ for all the reasons you&#8217;ve recounted, and hopefully it&#8217;ll get people to think about what they&#8217;re doing rather than how they&#8217;re doing it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Jim Cooling</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-83</link>
		<dc:creator>Jim Cooling</dc:creator>
		<pubDate>Fri, 08 Jan 2010 16:46:08 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-83</guid>
		<description>Just a personal point of view  -  I don&#039;t necessarily expect this to be a consensus opinion.

I&#039;m not sure how useful it is to look at items like semaphores, mutexs, etc. in isolation.  The primary question for the designer is &#039;what is the software trying to achieve?&#039; (e.g., passing information between concurrent units, synchronization of operations or protection of operations/data).  The next question: what is the &#039;best&#039; way of doing this?  Final question: what are the pros/cons of the chosen technique(s)?

Semaphores, mutexs, protected objects etc. are enabling mechanisms; their qualities should be assessed from this point of view.</description>
		<content:encoded><![CDATA[<p>Just a personal point of view  &#8211;  I don&#8217;t necessarily expect this to be a consensus opinion.</p>
<p>I&#8217;m not sure how useful it is to look at items like semaphores, mutexs, etc. in isolation.  The primary question for the designer is &#8216;what is the software trying to achieve?&#8217; (e.g., passing information between concurrent units, synchronization of operations or protection of operations/data).  The next question: what is the &#8216;best&#8217; way of doing this?  Final question: what are the pros/cons of the chosen technique(s)?</p>
<p>Semaphores, mutexs, protected objects etc. are enabling mechanisms; their qualities should be assessed from this point of view.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by David Thompson</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-82</link>
		<dc:creator>David Thompson</dc:creator>
		<pubDate>Fri, 08 Jan 2010 08:21:30 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-82</guid>
		<description>I was going to argue that counting semaphores must be needed for some architectures (maybe a pool of dedicated hardware processors) but thinking about it you can reproduce the behaviour at the application level with the features you provide.

Since I grew up with Ada however, I should make a case for rendezvous. There are certainly cases where the fact that you can exchange data between tasks __in both directions__ is very useful, and can avoid some of the anti-patterns you have mentioned - like loops of events going between tasks (A triggers B triggers C triggers A, etc.).

But as always, you are right - these situations normally occur because the architect hasn&#039;t thought about it enough.</description>
		<content:encoded><![CDATA[<p>I was going to argue that counting semaphores must be needed for some architectures (maybe a pool of dedicated hardware processors) but thinking about it you can reproduce the behaviour at the application level with the features you provide.</p>
<p>Since I grew up with Ada however, I should make a case for rendezvous. There are certainly cases where the fact that you can exchange data between tasks __in both directions__ is very useful, and can avoid some of the anti-patterns you have mentioned &#8211; like loops of events going between tasks (A triggers B triggers C triggers A, etc.).</p>
<p>But as always, you are right &#8211; these situations normally occur because the architect hasn&#8217;t thought about it enough.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-80</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 07 Jan 2010 22:24:13 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-80</guid>
		<description>&lt;a href=&quot;#comment-79&quot; rel=&quot;nofollow&quot;&gt;@Michael Barr &lt;/a&gt; 
Thanks for your comment, Michael.

In SKC++ the efficiency of the semaphore for signalling (actually slightly better) is obtained by using a bare event flag, without the overhead of an accompanying message where none is needed. However, I&#039;ve stuck my neck out by providing &lt;strong&gt;no&lt;/strong&gt; autonomous object which can stand in for a semaphore (say, for a rendezvous); both event groups and message queues are tied to and are effectively part of the particular tasks which wait at them.</description>
		<content:encoded><![CDATA[<p><a href="#comment-79" rel="nofollow">@Michael Barr </a><br />
Thanks for your comment, Michael.</p>
<p>In SKC++ the efficiency of the semaphore for signalling (actually slightly better) is obtained by using a bare event flag, without the overhead of an accompanying message where none is needed. However, I&#8217;ve stuck my neck out by providing <strong>no</strong> autonomous object which can stand in for a semaphore (say, for a rendezvous); both event groups and message queues are tied to and are effectively part of the particular tasks which wait at them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: No semaphores! by Michael Barr</title>
		<link>http://software-integrity.com/blog/2010/01/07/skc-no-semaphores/comment-page-1/#comment-79</link>
		<dc:creator>Michael Barr</dc:creator>
		<pubDate>Thu, 07 Jan 2010 20:27:08 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=464#comment-79</guid>
		<description>Your proposal is generally sound.  I certainly agree with the following aspects of what you said:

1.  That mutexes are superior to semaphores for mutual exclusion in a system with deadlines.  Only the mutex can prevent a priority inversion.

2.  That rendezvous is a bad idea.  If you are having that kind of coupling between two tasks, there is probably a more elegant solution to your overall software architecture.  It probably involves the passing of event ids via message queues.

In most respects, a message queue and a semaphore are identical constructs.  The message is always the same (whatever is agreed by sender and receiver) in the case of a semaphore.  This means the semaphore implementation is a more efficient subcase of the message queue.  If you don&#039;t care about the efficiency of the empty-message subcase of message queues, you can use a message queue for anything you would use a semaphore for (even rendezvous).

I&#039;ve written a few things on mutexes vs. semaphores in my blog at http://www.embeddedgurus.net/barr-code.  In addition, I&#039;m the host of a webinar on that subject at http://www.techonline.com.</description>
		<content:encoded><![CDATA[<p>Your proposal is generally sound.  I certainly agree with the following aspects of what you said:</p>
<p>1.  That mutexes are superior to semaphores for mutual exclusion in a system with deadlines.  Only the mutex can prevent a priority inversion.</p>
<p>2.  That rendezvous is a bad idea.  If you are having that kind of coupling between two tasks, there is probably a more elegant solution to your overall software architecture.  It probably involves the passing of event ids via message queues.</p>
<p>In most respects, a message queue and a semaphore are identical constructs.  The message is always the same (whatever is agreed by sender and receiver) in the case of a semaphore.  This means the semaphore implementation is a more efficient subcase of the message queue.  If you don&#8217;t care about the efficiency of the empty-message subcase of message queues, you can use a message queue for anything you would use a semaphore for (even rendezvous).</p>
<p>I&#8217;ve written a few things on mutexes vs. semaphores in my blog at <a href="http://www.embeddedgurus.net/barr-code" rel="nofollow">http://www.embeddedgurus.net/barr-code</a>.  In addition, I&#8217;m the host of a webinar on that subject at <a href="http://www.techonline.com" rel="nofollow">http://www.techonline.com</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Prototype Task Class by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/10/06/skc-prototype-task-class/comment-page-1/#comment-59</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Fri, 20 Nov 2009 11:33:37 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=155#comment-59</guid>
		<description>I shamelessly updated the original article today (20/11/09). My previous comment, a &lt;em&gt;corrigendum&lt;/em&gt;, then became irrelevant, so I deleted that, as well!</description>
		<content:encoded><![CDATA[<p>I shamelessly updated the original article today (20/11/09). My previous comment, a <em>corrigendum</em>, then became irrelevant, so I deleted that, as well!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Message-Passing Classes by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/11/05/skc-message-passing-classes/comment-page-1/#comment-56</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 05 Nov 2009 22:21:54 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=358#comment-56</guid>
		<description>Correction...

Can&#039;t overload class names (template and non-template) like I did with &lt;em&gt;MessgePtr&lt;/em&gt; in the diagram. That works only for functions!

Update...

I corrected the article (and updated this comment) on 09 November 2009. The rules of blogging are breakable; the rules of C++ are not!</description>
		<content:encoded><![CDATA[<p>Correction&#8230;</p>
<p>Can&#8217;t overload class names (template and non-template) like I did with <em>MessgePtr</em> in the diagram. That works only for functions!</p>
<p>Update&#8230;</p>
<p>I corrected the article (and updated this comment) on 09 November 2009. The rules of blogging are breakable; the rules of C++ are not!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Message-Passing Principles by Anonymous</title>
		<link>http://software-integrity.com/blog/2009/11/02/skc-message-passing-principles/comment-page-1/#comment-55</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 05 Nov 2009 10:30:59 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=328#comment-55</guid>
		<description>You&#039;re right, shared-memory approaches are not good for parallel processing, so if the kernel avoids/solves it cleanly, then moving to multiprocessor/core will be eased.</description>
		<content:encoded><![CDATA[<p>You&#8217;re right, shared-memory approaches are not good for parallel processing, so if the kernel avoids/solves it cleanly, then moving to multiprocessor/core will be eased.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Message-Passing Principles by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/11/02/skc-message-passing-principles/comment-page-1/#comment-54</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 05 Nov 2009 09:42:35 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=328#comment-54</guid>
		<description>Yes, this is the only flaw, as far as I know, with direct message-passing. Up to now, I haven&#039;t seen such task-pools used a lot and that weighed into my decision to go for the direct approach. I suppose the task-pool concept might become more popular with the inevitable rise of multicore and transparent multiprocessing (tasks - not necessarily identical - queueing for processors), though most of that stuff should be hidden from view within the kernel and should not influence what is provided at application level.

As you say, an intermediate task provides a solution, when needed. However, I&#039;m thinking hard just now about synchronisation approaches for SKC++ and I&#039;m sure there&#039;s a more efficient solution lurking in there, somewhere.</description>
		<content:encoded><![CDATA[<p>Yes, this is the only flaw, as far as I know, with direct message-passing. Up to now, I haven&#8217;t seen such task-pools used a lot and that weighed into my decision to go for the direct approach. I suppose the task-pool concept might become more popular with the inevitable rise of multicore and transparent multiprocessing (tasks &#8211; not necessarily identical &#8211; queueing for processors), though most of that stuff should be hidden from view within the kernel and should not influence what is provided at application level.</p>
<p>As you say, an intermediate task provides a solution, when needed. However, I&#8217;m thinking hard just now about synchronisation approaches for SKC++ and I&#8217;m sure there&#8217;s a more efficient solution lurking in there, somewhere.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Message-Passing Principles by Anonymous</title>
		<link>http://software-integrity.com/blog/2009/11/02/skc-message-passing-principles/comment-page-1/#comment-53</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 05 Nov 2009 08:41:20 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=328#comment-53</guid>
		<description>In general, what you are touching on is the problem of shared memory and message passing (and pass-by-value) is an attempt to avoid it.

But if you only allow direct message-passing, how will you implement a task-pool concept (dare I say &quot;pattern&quot;)? That&#039;s where I can can have X (identical) tasks all waiting on one message queue. I guess I would need an additional mediator/coordinator task?</description>
		<content:encoded><![CDATA[<p>In general, what you are touching on is the problem of shared memory and message passing (and pass-by-value) is an attempt to avoid it.</p>
<p>But if you only allow direct message-passing, how will you implement a task-pool concept (dare I say &#8220;pattern&#8221;)? That&#8217;s where I can can have X (identical) tasks all waiting on one message queue. I guess I would need an additional mediator/coordinator task?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Event Handling by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/10/14/skc-event-handling/comment-page-1/#comment-52</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Wed, 04 Nov 2009 17:10:17 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=234#comment-52</guid>
		<description>Timeout on the open question.

The answer is embodied in my more recent article &quot;SKC++: Pause for Thought&quot;.

(No, I still haven&#039;t dealt with mutual exclusion but it was at least mentioned in that article.)</description>
		<content:encoded><![CDATA[<p>Timeout on the open question.</p>
<p>The answer is embodied in my more recent article &#8220;SKC++: Pause for Thought&#8221;.</p>
<p>(No, I still haven&#8217;t dealt with mutual exclusion but it was at least mentioned in that article.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Pause for Thought by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/10/27/skc-pause-for-thought/comment-page-1/#comment-51</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Tue, 03 Nov 2009 08:07:07 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=280#comment-51</guid>
		<description>&lt;a href=&quot;#comment-50&quot; rel=&quot;nofollow&quot;&gt;@David Stonier-Gibson &lt;/a&gt; 
While C++ has advantages in medium to large embedded projects, things can get complicated and explanations even more so! I confess that this article is quite hard to follow. However, my aim is to encapsulate as much of the necessary complexity as I can inside SKC++ in order to make things simpler for the user. Once I&#039;ve broken the back of SKC++ itself, I&#039;ll come up with some practical examples to demonstrate this simplicity of use.

As you are doubtless aware, I have agreed with you elsewhere (on a LinkedIn discussion) that co-operative multitasking is often to be preferred in systems where pre-emption is definitely not needed. A co-operative system, although its partitioning suggests concurrency, is actually sequential in operation. Therefore it is much less finicky about programming practices, making it much less error-prone. With my teaching hat on, though, I always encourage the type of programming which is safe in a pre-emptive environment. That way, people&#039;s skills are more transferable.

Perhaps I can deal with your final point by saying that it will be possible to turn pre-emption off in SKC++!</description>
		<content:encoded><![CDATA[<p><a href="#comment-50" rel="nofollow">@David Stonier-Gibson </a><br />
While C++ has advantages in medium to large embedded projects, things can get complicated and explanations even more so! I confess that this article is quite hard to follow. However, my aim is to encapsulate as much of the necessary complexity as I can inside SKC++ in order to make things simpler for the user. Once I&#8217;ve broken the back of SKC++ itself, I&#8217;ll come up with some practical examples to demonstrate this simplicity of use.</p>
<p>As you are doubtless aware, I have agreed with you elsewhere (on a LinkedIn discussion) that co-operative multitasking is often to be preferred in systems where pre-emption is definitely not needed. A co-operative system, although its partitioning suggests concurrency, is actually sequential in operation. Therefore it is much less finicky about programming practices, making it much less error-prone. With my teaching hat on, though, I always encourage the type of programming which is safe in a pre-emptive environment. That way, people&#8217;s skills are more transferable.</p>
<p>Perhaps I can deal with your final point by saying that it will be possible to turn pre-emption off in SKC++!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SKC++: Pause for Thought by David Stonier-Gibson</title>
		<link>http://software-integrity.com/blog/2009/10/27/skc-pause-for-thought/comment-page-1/#comment-50</link>
		<dc:creator>David Stonier-Gibson</dc:creator>
		<pubDate>Mon, 02 Nov 2009 19:06:09 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=280#comment-50</guid>
		<description>Peter, I confess I don&#039;t fully understand all the above because my background experience hasn&#039;t given me the language required. I do get the general drift. 

One insight I find very interesting and valuable, though, is your observation about different kinds of programmers, System and Application. I myself pontificate in the shower these days about preemptive vs cooperative O/Ss and the target audience. I believe for an iPhone preemptive is a necessary evil, because anyone can squirt a new app into it at any time. For small, static (i.e. the program is frozen at Flash time) highly deterministic embedded controls, I vote cooperative (this is my domain).

So, I think maybe you should add one more bullet point to your September 9 post &quot;Simplifying RTOS&quot;

* Failing to properly define the target audience.

IMHO anything that tries to be all things to all people winds up a mess.

David Stonier-Gibson http://splatco.com</description>
		<content:encoded><![CDATA[<p>Peter, I confess I don&#8217;t fully understand all the above because my background experience hasn&#8217;t given me the language required. I do get the general drift. </p>
<p>One insight I find very interesting and valuable, though, is your observation about different kinds of programmers, System and Application. I myself pontificate in the shower these days about preemptive vs cooperative O/Ss and the target audience. I believe for an iPhone preemptive is a necessary evil, because anyone can squirt a new app into it at any time. For small, static (i.e. the program is frozen at Flash time) highly deterministic embedded controls, I vote cooperative (this is my domain).</p>
<p>So, I think maybe you should add one more bullet point to your September 9 post &#8220;Simplifying RTOS&#8221;</p>
<p>* Failing to properly define the target audience.</p>
<p>IMHO anything that tries to be all things to all people winds up a mess.</p>
<p>David Stonier-Gibson <a href="http://splatco.com" rel="nofollow">http://splatco.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Tasks or Threads: what&#8217;s in a name? by Peter Bushell</title>
		<link>http://software-integrity.com/blog/2009/10/02/tasks-or-threads-whats-in-a-name/comment-page-1/#comment-22</link>
		<dc:creator>Peter Bushell</dc:creator>
		<pubDate>Thu, 15 Oct 2009 07:07:13 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=181#comment-22</guid>
		<description>Thanks for your supportive comment, David. I had a preliminary look at your Acter model just now and will go back to it later.

I have another, rather different idea for talking to multiple tasks in a structured way, but it will be a little while before it reaches this blog. I&#039;ll let you know when!</description>
		<content:encoded><![CDATA[<p>Thanks for your supportive comment, David. I had a preliminary look at your Acter model just now and will go back to it later.</p>
<p>I have another, rather different idea for talking to multiple tasks in a structured way, but it will be a little while before it reaches this blog. I&#8217;ll let you know when!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Tasks or Threads: what&#8217;s in a name? by David Stonier-Gibson</title>
		<link>http://software-integrity.com/blog/2009/10/02/tasks-or-threads-whats-in-a-name/comment-page-1/#comment-21</link>
		<dc:creator>David Stonier-Gibson</dc:creator>
		<pubDate>Thu, 15 Oct 2009 05:55:02 +0000</pubDate>
		<guid isPermaLink="false">http://software-integrity.com/blog/?p=181#comment-21</guid>
		<description>Peter, I have used the term Task for more years than I care to remember. Only recently, as a consequence of employing younger software engineers, has the term &#039;thread&#039; woven its way into our company vocabulary. Thanks for helping unravel the confusion (sorry! sorry!).

I think task is more descriptive of the idea that this is something that does something, on its own cognizance, to contribute to the overall objectives of the system.

I have recently been developing the concept of Acters. An Acter is a unit of program roughly equivalent to an object, but it contains one or more tasks (usually FSMs), some shared data an several methods to interface to the outside world. More at http://www.splatco.com/acter_model_1.htm</description>
		<content:encoded><![CDATA[<p>Peter, I have used the term Task for more years than I care to remember. Only recently, as a consequence of employing younger software engineers, has the term &#8216;thread&#8217; woven its way into our company vocabulary. Thanks for helping unravel the confusion (sorry! sorry!).</p>
<p>I think task is more descriptive of the idea that this is something that does something, on its own cognizance, to contribute to the overall objectives of the system.</p>
<p>I have recently been developing the concept of Acters. An Acter is a unit of program roughly equivalent to an object, but it contains one or more tasks (usually FSMs), some shared data an several methods to interface to the outside world. More at <a href="http://www.splatco.com/acter_model_1.htm" rel="nofollow">http://www.splatco.com/acter_model_1.htm</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
