{"id":497,"date":"2005-10-27T11:45:01","date_gmt":"2005-10-27T01:45:01","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=497"},"modified":"2005-10-27T11:45:01","modified_gmt":"2005-10-27T01:45:01","slug":"rml-on-gcc-extensions-and-making-them-portable","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2005\/10\/27\/rml-on-gcc-extensions-and-making-them-portable\/","title":{"rendered":"rml on GCC extensions (and making them portable)"},"content":{"rendered":"<p><a href=\"http:\/\/rlove.org\/log\/2005102601\">Blog | rml<\/a> talks about a bunch of useful GCC extensions.<\/p>\n<p>We generally don&#8217;t use this within mysql code. Due (no doubt) to portability issues. Maybe we should look closer at it these days. I wonder if we&#8217;d get any noticable improvement in NDB by adding it to our ndbrequire\/ndbassert and CRASH_INSERTION tests. In some areas of code we do have a number of asserts.<\/p>\n<p>The place to play is ndb\/src\/kernel\/vm\/pc.hpp<\/p>\n<p>as actually triggering a ndbassert or ndbrequire is something that should never happen, unlikely() is a good thing to put there.<\/p>\n<p>Interestingly enough, this is probably the place we also want to play with for dtrace. either that or with EXECUTE_DIRECT (and another place that <a href=\"http:\/\/mikaelronstrom.blogspot.com\/\">Mikael<\/a> mentioned on IRC last night.<\/p>\n<p>My next task is to get qemu network interface working so i can get the source across to my VM of Solaris 10 and then start playing.<\/p>\n<p>Of course, the other option is to actually install it somewhere (or shell out for vmware). It would be a lot faster then though.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Blog | rml talks about a bunch of useful GCC extensions. We generally don&#8217;t use this within mysql code. Due (no doubt) to portability issues. Maybe we should look closer at it these days. I wonder if we&#8217;d get any &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2005\/10\/27\/rml-on-gcc-extensions-and-making-them-portable\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[14],"tags":[],"class_list":["post-497","post","type-post","status-publish","format-standard","hentry","category-mysql"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-81","jetpack-related-posts":[{"id":499,"url":"https:\/\/www.flamingspork.com\/blog\/2005\/10\/27\/__packed-2\/","url_meta":{"origin":497,"position":0},"title":"__packed","author":"Stewart Smith","date":"2005-10-27","format":false,"excerpt":"Blog | rml struct __packed s { ... }This attribute tells GCC that a type or variable should be packed into memory, using the minimum amount of space possible, potentially disregarding alignment requirements. If specified on a struct or union, all variables therein are so packed. If specified on just\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3901,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/11\/12\/preliminary-mysql-cluster-benchmark-results-on-power8\/","url_meta":{"origin":497,"position":1},"title":"Preliminary MySQL Cluster benchmark results on POWER8","author":"Stewart Smith","date":"2014-11-12","format":false,"excerpt":"Yesterday, I got the basics going for MySQL Cluster on POWER. Today, I finished up a couple more patches to improve performance and ran some benchmarks. This is on a 3.7Ghz POWER8 machine with non-balanced memory (only 2 of the 4 NUMA nodes have memory, so we have less total\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":754,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/10\/26\/mysql-ndb-team-trees-up-on-bkbitsnet\/","url_meta":{"origin":497,"position":2},"title":"mysql NDB team trees up on bkbits.net","author":"Stewart Smith","date":"2006-10-26","format":false,"excerpt":"If you head over here: mysql on bkbits.net you can get a copy of the NDB team trees. This is where we push stuff before it hits the main MySQL trees so that we can get some extra testing in (also for when pulling from the main tree). So you\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":828,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/04\/27\/experimental-ndb-patches\/","url_meta":{"origin":497,"position":3},"title":"Experimental NDB Patches","author":"Stewart Smith","date":"2007-04-27","format":false,"excerpt":"I've just put up the current \"add node\" patch... which is like, totally experimental and kills kittens... but could be interesting for people to have a look at as it progresses. Still lots of work before production ready - but people here at the MySQL Conf have said they're interested\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":800,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/03\/10\/code-size-of-an-engine-versus-test-suite\/","url_meta":{"origin":497,"position":4},"title":"Code size of an engine versus test suite","author":"Stewart Smith","date":"2007-03-10","format":false,"excerpt":"If you count the lines of code in the MySQL Cluster (NDB) test suite (mysql-5.1\/storage\/ndb\/test - and exclude the old ODBC stuff) you come up with about 104000 lines of code. This is in contrast to the approximate other 350,000 lines of code for the NDB engine (excluding the handler,\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3304,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/05\/13\/the-mysql-cluster-storage-engine\/","url_meta":{"origin":497,"position":5},"title":"The MySQL Cluster storage engine","author":"Stewart Smith","date":"2013-05-13","format":false,"excerpt":"This is one close to my heart. I've recently written on other storage engines:\u00c2\u00a0Where are they now: MySQL Storage Engines,\u00c2\u00a0The MERGE storage engine: not dead, just resting\u00e2\u20ac\u00a6. or forgotten\u00c2\u00a0and The MEMORY storage engine. Today, it's the turn of MySQL Cluster. Like InnoDB, MySQL Cluster started outside of MySQL. Those of\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=497"}],"version-history":[{"count":0,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/497\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}