<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:osnews="http://www.osnews.com/rss2#">
	<channel>
		<title>OSNews: </title>
		<link>http://www.osnews.com/story/19476/Synthesis_An_Efficient_Implementation_of_Fundamental_OS_Services</link>
		<description>Exploring the Future of Computing</description>
		<language>en-us</language>
		<copyright>Copyright 2001-2012, David Adams</copyright>
		<webMaster>adam+nospam@osnews.com</webMaster>
		<lastBuildDate>Wed, 15 Feb 2012 10:33:59 GMT</lastBuildDate>
		<image>
			<url>http://www.osnews.com/images/osnews.gif</url>
			<title>OSNews.com</title>
			<link>http://www.osnews.com</link>
		</image>
		<item>
			<title>Duplicated code?</title>
			<link>http://www.osnews.com/thread?305114</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305114</guid>
			<description>It seems to me like this design results in the duplication of the same code several times.  I'm not sure how this is an advantage over a more traditional function-pointer based object system (in which you can still often pull the same runtime specialization tricks through vptr jamming).</description>
			<pubDate>Sat, 15 Mar 2008 03:24:00 GMT</pubDate>
			<author>donotreply@osnews.com (PlatformAgnostic)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>MS _InterlockedCompareExchange() - why the addl step ?</title>
			<link>http://www.osnews.com/thread?305120</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305120</guid>
			<description>I have done some coding myself using inline assembler and the CMPXCHG instruction, since the Microsoft C++ x86 intrinsic does not seem to directly expose the actual compare-and-swap power of CMPXCHG.  The Google query (( _InterlockedCompareExchange  CMPXCHG )) finds as the 8th  hit an &quot;HP OpenVMS systems&quot; article explaining &quot;But there are also new builtins with names and signatures matching those provided by Intel's IA64 compiler, _InterlockedCompareExchange*. Instead of returning a status value, these return the value fetched. If it matches the comparison value passed in, then the new value was stored; otherwise the store did not take place&quot;<br />
So in other words with JUST the x86 to worry about, the ZF already says if the CMPXCHG worked or not.  Evidently InterlockedCompareExchange() was designed to be compatible with other architectures, perhaps the Alpha works that way, I don't know.  But it's a plausible explanation of why if you call InterlockedCompareExchange() primitive rather than just using the CMPXCHG directly, you then need the additional comparison to know if it worked or not - those other architectures might not set a flag, and Wintel in the days of NT wanted to be compatible with all of them.<br />
<br />
Or if there is some other explanation, it would be worth the embarrassment to know the real story !</description>
			<pubDate>Sat, 15 Mar 2008 05:32:00 GMT</pubDate>
			<author>donotreply@osnews.com (pg--az)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: _InterlockedCompareExchange() -Instant Google Index</title>
			<link>http://www.osnews.com/thread?305122</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305122</guid>
			<description>As of Right Now, the Google query (( _InterlockedCompareExchange CMPXCHG )) returns the parent post as the #1 hit - I was checking to see if I had any typos.  Either OSnews is getting special treatment or Google's web-crawlers operate way faster than I had intuitively thought !</description>
			<pubDate>Sat, 15 Mar 2008 06:10:00 GMT</pubDate>
			<author>donotreply@osnews.com (pg--az)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: _InterlockedCompareExchange() -Instant Google Index</title>
			<link>http://www.osnews.com/thread?305128</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305128</guid>
			<description>I'd expect the compiler to do the optimization you describe when the intrinsic version is in use in the way you describe.  I'm going to find out why this is not happening at some point.<br />
<br />
The API is written like it is because many times people are interested in the old value even when the exchange fails (sometimes this old value is useful when recomputing and retrying the cmpxchg).</description>
			<pubDate>Sat, 15 Mar 2008 09:20:00 GMT</pubDate>
			<author>donotreply@osnews.com (PlatformAgnostic)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: _InterlockedCompareExchange() design</title>
			<link>http://www.osnews.com/thread?305176</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305176</guid>
			<description>&gt;&gt; The API is written like it is because many times people are interested in the old value even when the exchange fail</description>
			<pubDate>Sat, 15 Mar 2008 18:49:00 GMT</pubDate>
			<author>donotreply@osnews.com (pg--az)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Nice thesis</title>
			<link>http://www.osnews.com/thread?305645</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?305645</guid>
			<description>Impressive results and very smart OS implementation. I had a lot of pleasure reading it. It would be nice to have it working on Amiga computers but sadly CAS/CAS2/TAS  instructions are not supported due to fixed cycle bus sharing with hardware chipset. <img src="/images/emo/sad.gif" alt=";)" />  Maybe it could run on Atari hardware ?</description>
			<pubDate>Wed, 19 Mar 2008 10:11:00 GMT</pubDate>
			<author>donotreply@osnews.com (Tcheko)</author>
			<category>Comments</category>
		</item>
	</channel>
</rss>

