Boost C++ Libraries: Ticket #3138: Interprocess dependency on sys/shm.h https://svn.boost.org/trac10/ticket/3138 <p> Since 1.39, boost/interprocess/mapped_region.hpp depends on sys/shm.h (from POSIX XSI). The QNX 6 operating system doesn't have this header and thus Interprocess no longer works. </p> <p> boost/interprocess/shared_memory_object.hpp only conditionally includes sys/shm.h, like this:<br /> #if defined(BOOST_INTERPROCESS_SYSTEM_V_SHARED_MEMORY_OBJECTS)<br /> # include &lt;sys/shm.h&gt; <em>System V shared memory...<br /> #elif defined(BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS)<br /> </em></p> <p> mapped_region.hpp uses a bunch of stuff from sys/shm.h though so the fix won't be quite that easy. </p> <p> Here are the rest of the errors from my NA-QNX641-qcc-gnu0x test runner:<br /> mapped_region.hpp:402: error: '::shmid_ds' has not been declared<br /> mapped_region.hpp:402: error: expected `;' before 'xsi_ds'<br /> mapped_region.hpp:403: error: '::shmctl' has not been declared<br /> mapped_region.hpp:403: error: 'IPC_STAT' was not declared in this scope<br /> mapped_region.hpp:403: error: 'xsi_ds' was not declared in this scope<br /> mapped_region.hpp:419: error: 'SHM_RDONLY' was not declared in this scope<br /> mapped_region.hpp:426: error: '::shmat' has not been declared<br /> mapped_region.hpp:552: error: '::shmdt' has not been declared </p> <p> Full log: <a class="ext-link" href="http://tinyurl.com/onnn2t"><span class="icon">​</span>http://tinyurl.com/onnn2t</a> </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/3138 Trac 1.4.3 Ion Gaztañaga Thu, 25 Jun 2009 16:18:40 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/3138#comment:1 https://svn.boost.org/trac10/ticket/3138#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Fixed for Boost 1.40 </p> Ticket Niklas Angare <li51ckf02@…> Sun, 28 Jun 2009 23:25:07 GMT status changed; resolution deleted https://svn.boost.org/trac10/ticket/3138#comment:2 https://svn.boost.org/trac10/ticket/3138#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">fixed</span> </li> </ul> <p> Thanks! You forgot to ifdef out the actual include but if I do that almost all interprocess tests pass on QNX 6.4.1. </p> <p> As a side note, there's a bug in the QNX kernel that I found when running the interprocess regression tests six months ago, that forces me to disable managed_mapped_file_test, managed_shared_memory_test and doc_managed_copy_on_write:<br /> <em>If you create a shared memory object, mmap() it with MAP_SHARED, create a synchronization object (e.g. a mutex) in it, and then mmap() with MAP_PRIVATE to the same offset in the shared object, then the application and some some programs such as pidin and shutdown may hang. (Ref# 63369)</em> </p> Ticket Niklas Angare <li51ckf02@…> Sun, 28 Jun 2009 23:26:52 GMT attachment set https://svn.boost.org/trac10/ticket/3138 https://svn.boost.org/trac10/ticket/3138 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">mapped_region.hpp.patch</span> </li> </ul> <p> Ugly patch to ifdef out the include </p> Ticket Ion Gaztañaga Fri, 07 Aug 2009 09:27:31 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/3138#comment:3 https://svn.boost.org/trac10/ticket/3138#comment:3 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Fixed for Boost 1.40 </p> Ticket