summaryrefslogtreecommitdiff
path: root/docs/installation/build_unix_qnx.html
blob: 086426cf7951af6af52e3a0166de0a6ca9b59318 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?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">
        <p>Library Version 12.1.6.1</p>
      </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-&gt;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-&gt;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>