2011-09-13 17:44:24 +00:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
|
|
<head>
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
|
|
|
<title>QNX</title>
|
|
|
|
|
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
|
|
|
|
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
|
|
|
|
<link rel="start" href="index.html" title="Berkeley DB Installation and Build Guide" />
|
|
|
|
|
<link rel="up" href="build_unix.html" title="Chapter 7. Building Berkeley DB for UNIX/POSIX" />
|
|
|
|
|
<link rel="prev" href="build_unix_macosx.html" title="Mac OS X" />
|
|
|
|
|
<link rel="next" href="build_unix_sco.html" title="SCO" />
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div xmlns="" class="navheader">
|
|
|
|
|
<div class="libver">
|
2012-11-14 21:35:20 +00:00
|
|
|
|
<p>Library Version 11.2.5.3</p>
|
2011-09-13 17:44:24 +00:00
|
|
|
|
</div>
|
|
|
|
|
<table width="100%" summary="Navigation header">
|
|
|
|
|
<tr>
|
|
|
|
|
<th colspan="3" align="center">QNX</th>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td width="20%" align="left"><a accesskey="p" href="build_unix_macosx.html">Prev</a> </td>
|
|
|
|
|
<th width="60%" align="center">Chapter 7.
|
|
|
|
|
Building Berkeley DB for UNIX/POSIX
|
|
|
|
|
</th>
|
|
|
|
|
<td width="20%" align="right"> <a accesskey="n" href="build_unix_sco.html">Next</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
<hr />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="sect1" lang="en" xml:lang="en">
|
|
|
|
|
<div class="titlepage">
|
|
|
|
|
<div>
|
|
|
|
|
<div>
|
|
|
|
|
<h2 class="title" style="clear: both"><a id="build_unix_qnx"></a>QNX</h2>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="orderedlist">
|
|
|
|
|
<ol type="1">
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>To what versions of QNX has DB been ported?</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>Berkeley DB has been ported to the QNX Neutrino technology which is commonly
|
|
|
|
|
referred to as QNX RTP (Real-Time Platform). Berkeley DB has not been
|
|
|
|
|
ported to earlier versions of QNX, such as QNX 4.25.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>Building Berkeley DB shared libraries fails.</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>The <code class="filename">/bin/sh</code> utility distributed with some QNX releases drops
|
|
|
|
|
core when running the GNU libtool script (which is used to build Berkeley DB
|
|
|
|
|
shared libraries). There are two workarounds for this problem: First,
|
|
|
|
|
only build static libraries. You can disable building shared libraries
|
|
|
|
|
by specifying the configuration flag when
|
|
|
|
|
configuring Berkeley DB.</p>
|
|
|
|
|
<p>Second, build Berkeley DB using an alternate shell. QNX distributions include
|
|
|
|
|
an accessories disk with additional tools. One of the included tools
|
|
|
|
|
is the GNU bash shell, which is able to run the libtool script. To
|
|
|
|
|
build Berkeley DB using an alternate shell, move <code class="filename">/bin/sh</code> aside, link
|
|
|
|
|
or copy the alternate shell into that location, configure, build and
|
|
|
|
|
install Berkeley DB, and then replace the original shell utility.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>Are there any QNX filesystem issues?</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>Berkeley DB generates temporary files for use in transactionally
|
|
|
|
|
protected file system operations. Due to the filename length limit of
|
|
|
|
|
48 characters in the QNX filesystem, applications that are using
|
|
|
|
|
transactions should specify a database name that is at most 43 characters.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>What are the implications of QNX's requirement to use
|
|
|
|
|
<code class="literal">shm_open</code>(2) in order to use <code class="literal">mmap</code>(2)?</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>QNX requires that files mapped with <code class="literal">mmap</code>(2) be opened using
|
|
|
|
|
<code class="literal">shm_open</code>(2). There are other places in addition to the
|
|
|
|
|
environment shared memory regions, where Berkeley DB tries to memory map files
|
|
|
|
|
if it can.</p>
|
|
|
|
|
<p>The memory pool subsystem normally attempts to use <code class="literal">mmap</code>(2)
|
|
|
|
|
even when using private memory, as indicated by the <a href="../api_reference/C/envopen.html#envopen_DB_PRIVATE" class="olink">DB_PRIVATE</a> flag
|
|
|
|
|
to <a href="../api_reference/C/envopen.html" class="olink">DB_ENV->open()</a>. In the case of QNX, if an application is
|
|
|
|
|
using private memory, Berkeley DB will not attempt to map the memory and will
|
|
|
|
|
instead use the local cache.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>What are the implications of QNX's mutex implementation using
|
|
|
|
|
microkernel resources?</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>On QNX, the primitives implementing mutexes consume system resources.
|
|
|
|
|
Therefore, if an application unexpectedly fails, those resources could
|
|
|
|
|
leak. Berkeley DB solves this problem by always allocating mutexes in the
|
|
|
|
|
persistent shared memory regions. Then, if an application fails,
|
|
|
|
|
running recovery or explicitly removing the database environment by
|
|
|
|
|
calling the <a href="../api_reference/C/envremove.html" class="olink">DB_ENV->remove()</a> method will allow Berkeley DB to release those
|
|
|
|
|
previously held mutex resources. If an application specifies the
|
|
|
|
|
<a href="../api_reference/C/envopen.html#envopen_DB_PRIVATE" class="olink">DB_PRIVATE</a> flag (choosing not to use persistent shared memory),
|
|
|
|
|
and then fails, mutexes allocated in that private memory may leak their
|
|
|
|
|
underlying system resources. Therefore, the <a href="../api_reference/C/envopen.html#envopen_DB_PRIVATE" class="olink">DB_PRIVATE</a> flag
|
|
|
|
|
should be used with caution on QNX.</p>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<span class="bold">
|
|
|
|
|
<strong>The make clean command fails to execute when building the Berkeley DB SQL interface.</strong>
|
|
|
|
|
</span>
|
|
|
|
|
<p>Remove the build directory manually to clean up and proceed. </p>
|
|
|
|
|
</li>
|
|
|
|
|
</ol>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="navfooter">
|
|
|
|
|
<hr />
|
|
|
|
|
<table width="100%" summary="Navigation footer">
|
|
|
|
|
<tr>
|
|
|
|
|
<td width="40%" align="left"><a accesskey="p" href="build_unix_macosx.html">Prev</a> </td>
|
|
|
|
|
<td width="20%" align="center">
|
|
|
|
|
<a accesskey="u" href="build_unix.html">Up</a>
|
|
|
|
|
</td>
|
|
|
|
|
<td width="40%" align="right"> <a accesskey="n" href="build_unix_sco.html">Next</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td width="40%" align="left" valign="top">Mac OS X </td>
|
|
|
|
|
<td width="20%" align="center">
|
|
|
|
|
<a accesskey="h" href="index.html">Home</a>
|
|
|
|
|
</td>
|
|
|
|
|
<td width="40%" align="right" valign="top"> SCO</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|