Debugging: Add code to print backtrace for guest on SIGSEGV
[nativeclient.git] / documentation / index.dox
blobff10e872595de95d1e7cf43b67661b6b9656f765
1 /** \mainpage Native Client API Reference Documentation
3  This reference documentation describes the APIs
4  that untrusted Native Client (NaCl) modules can use.
5  For additional documentation and information
6  about Native Client, see the
7  <a href="../../../README.html">README</a>.
9  On this page:
10  <ul>
11  <li> @ref locations </li>
12  <li> @ref modules </li>
13  <li> @ref about </li>
14  </ul>
16  \section locations SDK file locations
18  <p>
19  The Native Client SDK is under
20  <code>nacl/googleclient/third_party/nacl_sdk/<em>platform</em>/sdk/nacl-sdk</code>,
21  where <code><em>platform</em></code> is
22  <code>linux</code>,
23  <code>mac</code>, or
24  <code>windows</code>.
25  The SDK doesn't depend on the rest of the Native Client build;
26  you can copy the <code>nacl-sdk</code> directory
27  anywhere you like,
28  as long as you avoid spaces in the pathname.
29  </p>
31  <p>
32  The following table
33  shows where you can find some commonly used files in the SDK.
34  </p>
36 <table
37  style="border-collapse: collapse;">
38   <caption>
39     File locations in the SDK
40   </caption>
41   <tr>
42     <th scope="col">Type of file</th>
43     <th scope="col">Location</th>
44     <th scope="col">Typical file</th>
45     <th scope="col">Example of use</th>
46   </tr>
47   <tr>
48     <td>Include</td>
49     <td><code>nacl/include/</code></td>
50     <td><code>nacl/include/nacl/nacl_av.h</code></td>
51     <td>In code: <br>
52         <code>&nbsp;&nbsp;\#include &lt;nacl/nacl_av.h></code>
53     </td>
54   </tr>
55   <tr>
56     <td>Library</td>
57     <td><code>nacl/lib/</code></td>
58     <td><code>nacl/lib/libav.a</code></td>
59     <td>When compiling: <br>
60         <code>&nbsp;&nbsp;... -lav ...</code></td>
61   </tr>
62   <tr>
63     <td>Tool</td>
64     <td><code>bin/</code></td>
65     <td><code>bin/nacl-g++</code></td>
66     <td>At the command line: <br>
67         <code>&nbsp;&nbsp;<em>sdk_dir</em>/bin/nacl-g++ *.cc ...</code></td>
68   </tr>
69 </table>
72  \section modules API categories
74  The Native Client APIs fall into three general categories:
76  <ul>
77    <li> Standard APIs that are supported but not documented here
78      <ul>
79        <li> <a href="http://sourceware.org/newlib/libc.html">Newlib C library</a>
80             (included by default)
81             </li>
82        <li> <a href="http://sourceware.org/newlib/libm.html">Newlib math library</a>
83             (<code>-lm</code>)
84             </li>
85        <li> <a href="http://gcc.gnu.org/libstdc++/">GNU standard C++ library</a>
86             (included by default when you compile using <code>nacl-g++</code>)
87             </li>
88        <li> A subset of
89             <a href="https://developer.mozilla.org/en/Gecko_Plugin_API_Reference">NPAPI</a>
90             (<code>-lgoogle_nacl_npruntime</code>);
91             for information on the differences, see
92             <a href="../../../documentation/npapi.html">NPAPI Support</a>
93             </li>
94      </ul>
95    </li>
97    <li> <a href="group___libraries.html">Libraries</a>
98         defined by Native Client
99      <ul>
100        <li> <a href="group__audio__video.html">Basic Multimedia Interface</a>
101             (<code>-lav</code>):
102             A basic audio/video library;
103             requires SRPC
104             </li>
105        <li> IMC
106             (<code>-lgoogle_nacl_imc</code> for C++,
107             <code>-lgoogle_nacl_imc_c</code> for C):
108             A low-level inter-module communication library;
109             you should usually use SRPC instead
110             </li>
111        <li> <a href="group___n_p_a_p_i.html">NPAPI Extensions</a>
112             (<code>-lgoogle_nacl_npruntime</code>):
113             Native Client extensions to NPAPI
114             </li>
115        <li> <a href="group___pthread.html">Pthread</a>
116             (<code>-lpthread</code>):
117             A thread library based on POSIX threads
118             </li>
119        <li> <a href="group___s_r_p_c.html">SRPC</a>
120             (<code>-lsrpc</code>):
121             Simple remote procedure call API;
122             lets a Native Client module communicate with JavaScript code
123             or with other Native Client modules
124             </li>
125        <li> Unimplemented POSIX
126             (<code>-lunimpl</code>):
127             A library to help you compile even if your code
128             uses calls that Native Client doesn't implement;
129             useful when porting
130             <span class="pending">[PENDING: link to porting guide]</span>
131             </li>
132      </ul>
133    </li>
135    <li> <a href="group__syscalls.html">Service Runtime Calls</a>
136         supported by Native Client
137         </li>
138  </ul>
140  <b>Note:</b>
141  You can't use SRPC and NPAPI together; pick one.
143  \section about About this doc
145  <p>
146  The tabs at the top of each page
147  take you to the following sections.
148  </p>
150  <ul>
151  <li> <b>Main Page</b>: This page </li>
152  <li> <a href="modules.html"><b>Modules</b></a>:
153       Lets you find API by functional area
154       &mdash; for example,
155       <a href="group___libraries.html">Libraries</a> or
156       <a href="group__syscalls.html">Service Runtime Calls</a>.
157       </li> <!--
158  <li> <a href="namespaces.html"><b>Namespaces</b></a>:
159       List of C++ namespaces in Native Client.
160       </li> -->
161  <li> <a href="annotated.html"><b>Data Structures</b></a>:
162       List of data structures in Native Client.
163       </li>
164  <li> <a href="files.html"><b>Files</b></a>:
165       The header files used to generate this documentation,
166       with file descriptions and links to generated doc.
167       Don't miss the <a href="globals.html">File member index</a>.
168       </li>
169  </ul>
170  */