Separate CVS parsing logic from tools/mksyscall.c; Create tools/mksymtab.c to create symbol tables from CSV files

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5075 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2012-09-01 15:33:33 +00:00
parent 092d15a74a
commit 8b768dc6fa
23 changed files with 852 additions and 346 deletions
+4
View File
@@ -3243,3 +3243,7 @@
for testing the changes to the uIP web server (see apps/ChangeLog.txt). for testing the changes to the uIP web server (see apps/ChangeLog.txt).
* lib/stdio/lib_perror.c: Remove CONFIG_LIBC_PERROR_DEVNAME. What was I * lib/stdio/lib_perror.c: Remove CONFIG_LIBC_PERROR_DEVNAME. What was I
thinking? Arbitrary streams cannot be shared by different tasks. thinking? Arbitrary streams cannot be shared by different tasks.
* tools/mksyscall.c, csvparser.c, and csvparser.h: Separate CSV parsing
logic from mksyscall.c into files where it can be shared.
* tools/mksymtab.c: Add a tool that can be used to convert a CSV file
into a NuttX-style symbol table.
-1
View File
@@ -8,7 +8,6 @@
<tr align="center" bgcolor="#e4e4e4"> <tr align="center" bgcolor="#e4e4e4">
<td> <td>
<h1><big><font color="#3c34ec"><i>On-Demand Paging</i></font></big></h1> <h1><big><font color="#3c34ec"><i>On-Demand Paging</i></font></big></h1>
<h2><font color="#dc143c">&gt;&gt;&gt; Under Construction &lt;&lt;&lt;</font></h2>
<p>Last Updated: August 12, 2010</p> <p>Last Updated: August 12, 2010</p>
</td> </td>
</tr> </tr>
+49 -12
View File
@@ -9,8 +9,7 @@
<tr align="center" bgcolor="#e4e4e4"> <tr align="center" bgcolor="#e4e4e4">
<td> <td>
<h1><big><font color="#3c34ec"><i>NXFLAT</i></font></big></h1> <h1><big><font color="#3c34ec"><i>NXFLAT</i></font></big></h1>
<h2><font color="#dc143c">&gt;&gt;&gt; Under Construction &lt;&lt;&lt;</font></h2> <p>Last Updated: September 1, 2012</p>
<p>Last Updated: June 29, 2012</p>
</td> </td>
</tr> </tr>
</table> </table>
@@ -90,7 +89,13 @@
<tr> <tr>
<td><br></td> <td><br></td>
<td> <td>
<a href="#making">1.4 Making an NXFLAT module</a> <a href="#mksymtab">1.4 mksymtab</a>
</td>
</tr>
<tr>
<td><br></td>
<td>
<a href="#making">1.5 Making an NXFLAT module</a>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -122,7 +127,7 @@
<a name="overview"><h1>1.0 Overview</h1></a> <a name="overview"><h1>1.0 Overview</h1></a>
</td> </td>
</tr> </tr>
</table>f </table>
<a name="functionality"><h2>1.1 Functionality</h2></a> <a name="functionality"><h2>1.1 Functionality</h2></a>
@@ -386,7 +391,41 @@ any following arguments.
debug output is enabled [Default: no verbose output]. debug output is enabled [Default: no verbose output].
</pre></ul> </pre></ul>
<a name="making"><h2>1.4 Making an NXFLAT module</h2></a> <a name="mksymtab"><h2>1.4 mksymtab</h2></a>
<p>
There is a small helper program available in <code>nuttx/tools</code> call <code>mksymtab</code>.
<code>mksymtab</code> can be sued to generate symbol tables for the NuttX base code that would be usable by the typical NXFLAT application.
<code>mksymtab</code> builds symbol tables from common-separated value (CSV) files.
In particular, the CSV files:
</p>
<ol>
<li>
<code>nuttx/syscall/syscall.csv</code> that describes the NuttX RTOS interface, and
</li>
<li>
<code>nuttx/lib/lib/csv</code> that describes the NuttX C library interface.
</li>
</ol>
<ul><pre>
USAGE: ./mksymtab &lt;cvs-file&gt; &lt;symtab-file&gt;
Where:
&lt;cvs-file&gt; : The path to the input CSV file
&lt;symtab-file&gt;: The path to the output symbol table file
-d : Enable debug output
</pre></ul>
<p>
For example,
</p>
<ul><pre>
cd nuttx/tools
cat ../syscall/syscall.csv ../lib/lib.csv | sort >tmp.csv
./mksymtab.exe tmp.csv tmp.c
</pre></ul>
<a name="making"><h2>1.5 Making an NXFLAT module</h2></a>
<p> <p>
Below is a snippet from an NXFLAT make file (simplified from NuttX Below is a snippet from an NXFLAT make file (simplified from NuttX
@@ -639,8 +678,7 @@ any following arguments.
<p> <p>
<ul><pre> <ul><pre>
ldr r1, .L0 <-- Fetch the offset to 'x' ldr r1, .L0 <-- Fetch the offset to 'x'
ldr r0, [r10, r1] <-- Load the value of 'x' with PIC ldr r0, [r10, r1] <-- Load the value of 'x' with PIC offset`
offset
... ...
.L0: .word x <-- Offset to 'x' .L0: .word x <-- Offset to 'x'
</pre></ul> </pre></ul>
@@ -652,8 +690,7 @@ any following arguments.
<ul><pre> <ul><pre>
ldr r1, .L0 <-- Fetch the offset to the GOT entry ldr r1, .L0 <-- Fetch the offset to the GOT entry
ldr r1, [r10,r1] <-- Fetch the (relocated) address ldr r1, [r10,r1] <-- Fetch the (relocated) address of 'x' from the GOT
of 'x' from the GOT
ldr r0, [r1, #0] <-- Fetch the value of 'x' ldr r0, [r1, #0] <-- Fetch the value of 'x'
... ...
.L1 .word x(GOT) <-- Offset to entry in the GOT .L1 .word x(GOT) <-- Offset to entry in the GOT
@@ -667,9 +704,9 @@ any following arguments.
execution time. execution time.
</p> </p>
<p> <p>
NXFLAT (like <a href="http://xflat.sourceforge.net/">XFLAT</a>) can work even better with NXFLAT (like <a href="http://xflat.sourceforge.net/">XFLAT</a>) can work even better without
the GOT. the GOT.
Patches again older version of GCC exist to eliminate the GOT indirections. Patches against older version of GCC exist to eliminate the GOT indirections.
Several are available <a href="http://xflat.cvs.sourceforge.net/viewvc/xflat/xflat/gcc/">here</a> Several are available <a href="http://xflat.cvs.sourceforge.net/viewvc/xflat/xflat/gcc/">here</a>
if you are inspired to port them to a new GCC version. if you are inspired to port them to a new GCC version.
</p> </p>
@@ -735,7 +772,7 @@ any following arguments.
<a href="http://xflat.cvs.sourceforge.net/viewvc/*checkout*/xflat/xflat/gcc/README?revision=1.1.1.1">XFLAT discussion</a>. <a href="http://xflat.cvs.sourceforge.net/viewvc/*checkout*/xflat/xflat/gcc/README?revision=1.1.1.1">XFLAT discussion</a>.
</p> </p>
<p> <p>
Patches again older version of GCC exist to correct this GCC behavior. Patches against older version of GCC exist to correct this GCC behavior.
Several are available <a href="http://xflat.cvs.sourceforge.net/viewvc/xflat/xflat/gcc/">here</a> Several are available <a href="http://xflat.cvs.sourceforge.net/viewvc/xflat/xflat/gcc/">here</a>
if you are inspired to port them to a new GCC version. if you are inspired to port them to a new GCC version.
</p> </p>
+24
View File
@@ -7,6 +7,7 @@ Table of Contents
o Summary of Files o Summary of Files
o Supported Architectures o Supported Architectures
o Configuring NuttX o Configuring NuttX
o Building Symbol Tables
Board-Specific Configurations Board-Specific Configurations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1805,3 +1806,26 @@ command line like:
cd tools cd tools
./configure.sh -a <app-dir> <board-name>/<config-dir> ./configure.sh -a <app-dir> <board-name>/<config-dir>
Building Symbol Tables
^^^^^^^^^^^^^^^^^^^^^^
Symbol tables are needed at several of the binfmt interfaces in order to bind
a module to the base code. These symbol tables can be tricky to create and
will probably have to be tailored for any specific application, balancing
the number of symbols and the size of the symbol table against the symbols
required by the applications.
The top-level System.map file is one good source of symbol information
(which, or course, was just generated from the top-level nuttx file
using the GNU 'nm' tool).
There are also common-separated value (CSV) values in the source try that
provide information about symbols. In particular:
nuttx/syscall/syscall.csv - Describes the NuttX RTOS interface, and
nuttx/lib/lib.csv - Describes the NuttX C library interface.
There is a tool at nuttx/tools/mksymtab that will use these CSV files as
input to generate a generic symbol table. See nuttx/tools/README.txt for
more information about using the mksymtab tool.
+2
View File
@@ -80,3 +80,5 @@ Each type field has a format as follows:
cannot cast a union sigval to a uinptr_t either. Rather, we need cannot cast a union sigval to a uinptr_t either. Rather, we need
to cast a specific union member fieldname to uintptr_t. to cast a specific union member fieldname to uintptr_t.
NOTE: The tool mksymtab can be used to generate a symbol table from this CSV
file. See nuttx/tools/README.txt for further details about the use of mksymtab.
+168 -168
View File
@@ -1,170 +1,170 @@
"_inet_ntoa","#include <arpa/inet.h>","#if !defined(CONFIG_NET_IPv6) && !defined(CONFIG_CAN_PASS_STRUCTS)","FAR char","in_addr_t" "_inet_ntoa","arpa/inet.h","!defined(CONFIG_NET_IPv6) && !defined(CONFIG_CAN_PASS_STRUCTS)","FAR char","in_addr_t"
"abort","#include <stdlib.h>","","void" "abort","stdlib.h","","void"
"abs","#include <stdlib.h>","","int","int" "abs","stdlib.h","","int","int"
"asprintf","#include <stdio.h>","","int","FAR char **","const char *","..." "asprintf","stdio.h","","int","FAR char **","const char *","..."
"avsprintf","#include <stdio.h>","","int","FAR char **","const char *","va_list" "avsprintf","stdio.h","","int","FAR char **","const char *","va_list"
"b16atan2","#include <fixedmath.h>","","b16_t","b16_t","b16_t" "b16atan2","fixedmath.h","","b16_t","b16_t","b16_t"
"b16cos","#include <fixedmath.h>","","b16_t","b16_t" "b16cos","fixedmath.h","","b16_t","b16_t"
"b16divb16","#include <fixedmath.h>","","b16_t","b16_t","b16_t" "b16divb16","fixedmath.h","","b16_t","b16_t","b16_t"
"b16mulb16","#include <fixedmath.h>","","b16_t","b16_t","b16_t" "b16mulb16","fixedmath.h","","b16_t","b16_t","b16_t"
"b16sin","#include <fixedmath.h>","","b16_t","b16_t" "b16sin","fixedmath.h","","b16_t","b16_t"
"b16sqr","#include <fixedmath.h>","","b16_t","b16_t" "b16sqr","fixedmath.h","","b16_t","b16_t"
"basename","#include <libgen.h>","","FAR char","FAR char *" "basename","libgen.h","","FAR char","FAR char *"
"cfgetspeed","#include <termios.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","speed_t","FAR const struct termios *" "cfgetspeed","termios.h","CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","speed_t","FAR const struct termios *"
"cfsetspeed","#include <termios.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","FAR struct termios *","speed_t" "cfsetspeed","termios.h","CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","FAR struct termios *","speed_t"
"chdir","#include <unistd.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char *" "chdir","unistd.h","CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char *"
"crc32","#include <crc32.h>","","uint32_t","FAR const uint8_t *","size_t" "crc32","crc32.h","","uint32_t","FAR const uint8_t *","size_t"
"crc32part","#include <crc32.h>","","uint32_t","FAR const uint8_t *","size_t","uint32_t" "crc32part","crc32.h","","uint32_t","FAR const uint8_t *","size_t","uint32_t"
"dbg","#include <debug.h>","#if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG)","int","const char *","..." "dbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG)","int","const char *","..."
"dbg_enable","#include <debug.h>","#ifdef CONFIG_DEBUG_ENABLE","void","bool" "dbg_enable","debug.h","defined(CONFIG_DEBUG_ENABLE)","void","bool"
"dirname","#include <libgen.h>","","FAR char","FAR char *" "dirname","libgen.h","","FAR char","FAR char *"
"dq_addafter","#include <queue.h>","","void","FAR dq_entry_t *","FAR dq_entry_t *","FAR dq_queue_t *" "dq_addafter","queue.h","","void","FAR dq_entry_t *","FAR dq_entry_t *","FAR dq_queue_t *"
"dq_addbefore","#include <queue.h>","","void","FAR dq_entry_t *","FAR dq_entry_t *","FAR dq_queue_t *" "dq_addbefore","queue.h","","void","FAR dq_entry_t *","FAR dq_entry_t *","FAR dq_queue_t *"
"dq_addfirst","#include <queue.h>","","void","FAR dq_entry_t *","dq_queue_t *" "dq_addfirst","queue.h","","void","FAR dq_entry_t *","dq_queue_t *"
"dq_addlast","#include <queue.h>","","void","FAR dq_entry_t *","dq_queue_t *" "dq_addlast","queue.h","","void","FAR dq_entry_t *","dq_queue_t *"
"dq_rem","#include <queue.h>","","void","FAR dq_entry_t *","dq_queue_t *" "dq_rem","queue.h","","void","FAR dq_entry_t *","dq_queue_t *"
"dq_remfirst","#include <queue.h>","","FAR dq_entry_t","dq_queue_t *" "dq_remfirst","queue.h","","FAR dq_entry_t","dq_queue_t *"
"dq_remlast","#include <queue.h>","","FAR dq_entry_t","dq_queue_t *" "dq_remlast","queue.h","","FAR dq_entry_t","dq_queue_t *"
"ether_ntoa","#include <netinet/ether.h>","","FAR char","FAR const struct ether_addr *" "ether_ntoa","netinet/ether.h","","FAR char","FAR const struct ether_addr *"
"fclose","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *" "fclose","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *"
"fdopen","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR FILE","int","FAR const char *" "fdopen","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR FILE","int","FAR const char *"
"fflush","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *" "fflush","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *"
"fgetc","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *" "fgetc","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *"
"fgetpos","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR fpos_t *" "fgetpos","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR fpos_t *"
"fgets","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR char","FAR char *","int","FAR FILE *" "fgets","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR char","FAR char *","int","FAR FILE *"
"fileno","#include <stdio.h>","","int","FAR FILE *" "fileno","stdio.h","","int","FAR FILE *"
"fopen","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR FILE","FAR const char *","FAR const char *" "fopen","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR FILE","FAR const char *","FAR const char *"
"fprintf","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR const char *","..." "fprintf","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR const char *","..."
"fputc","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","int c","FAR FILE *" "fputc","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","int c","FAR FILE *"
"fputs","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *","FAR FILE *" "fputs","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *","FAR FILE *"
"fread","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","size_t","FAR void *","size_t","size_t","FAR FILE *" "fread","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","size_t","FAR void *","size_t","size_t","FAR FILE *"
"fseek","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","long int","int" "fseek","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","long int","int"
"fsetpos","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR fpos_t *" "fsetpos","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","FAR fpos_t *"
"ftell","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","long","FAR FILE *" "ftell","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","long","FAR FILE *"
"fwrite","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","size_t","FAR const void *","size_t","size_t","FAR FILE *" "fwrite","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","size_t","FAR const void *","size_t","size_t","FAR FILE *"
"getcwd","#include <unistd.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON)","FAR char","FAR char *","size_t" "getcwd","unistd.h","CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON)","FAR char","FAR char *","size_t"
"getopt","#include <unistd.h>","","int","int","FAR char *const[]","FAR const char *" "getopt","unistd.h","","int","int","FAR char *const[]","FAR const char *"
"getoptargp","#include <unistd.h>","","FAR char *" "getoptargp","unistd.h","","FAR char *"
"getoptindp","#include <unistd.h>","","int" "getoptindp","unistd.h","","int"
"getoptoptp","#include <unistd.h>","","int" "getoptoptp","unistd.h","","int"
"gets","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR char","FAR char *" "gets","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","FAR char","FAR char *"
"gmtime","#include <time.h>","","struct tm","const time_t *" "gmtime","time.h","","struct tm","const time_t *"
"gmtime_r","#include <time.h>","","FAR struct tm","FAR const time_t *","FAR struct tm *" "gmtime_r","time.h","","FAR struct tm","FAR const time_t *","FAR struct tm *"
"htonl","#include <arpa/inet.h>","","uint32_t","uint32_t" "htonl","arpa/inet.h","","uint32_t","uint32_t"
"htons","#include <arpa/inet.h>","","uint16_t","uint16_t" "htons","arpa/inet.h","","uint16_t","uint16_t"
"imaxabs","#include <stdlib.h>","","intmax_t","intmax_t" "imaxabs","stdlib.h","","intmax_t","intmax_t"
"inet_addr","#include <arpa/inet.h>","","in_addr_t","FAR const char " "inet_addr","arpa/inet.h","","in_addr_t","FAR const char "
"inet_ntoa","#include <arpa/inet.h>","#if !defined(CONFIG_NET_IPv6) && defined(CONFIG_CAN_PASS_STRUCTS)","FAR char","struct in_addr" "inet_ntoa","arpa/inet.h","!defined(CONFIG_NET_IPv6) && defined(CONFIG_CAN_PASS_STRUCTS)","FAR char","struct in_addr"
"inet_ntop","#include <arpa/inet.h>","","FAR const char","int","FAR const void *","FAR char *","socklen_t" "inet_ntop","arpa/inet.h","","FAR const char","int","FAR const void *","FAR char *","socklen_t"
"inet_pton","#include <arpa/inet.h>","","int","int","FAR const char *","FAR void *" "inet_pton","arpa/inet.h","","int","int","FAR const char *","FAR void *"
"labs","#include <stdlib.h>","","long int","long int" "labs","stdlib.h","","long int","long int"
"lib_dumpbuffer","#include <debug.h>","","void","FAR const char *","FAR const uint8_t *","unsigned int" "lib_dumpbuffer","debug.h","","void","FAR const char *","FAR const uint8_t *","unsigned int"
"lib_lowprintf","#include <debug.h>","","int","FAR const char *","..." "lib_lowprintf","debug.h","","int","FAR const char *","..."
"lib_rawprintf","#include <debug.h>","","int","FAR const char *","..." "lib_rawprintf","debug.h","","int","FAR const char *","..."
"llabs","#include <stdlib.h>","#ifdef CONFIG_HAVE_LONG_LONG","long long int","long long int" "llabs","stdlib.h","defined(CONFIG_HAVE_LONG_LONG)","long long int","long long int"
"lldbg","#include <debug.h>","#if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..." "lldbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..."
"llvdbg","#include <debug.h>","#if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..." "llvdbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..."
"match","","","int","const char *","const char *" "match","","","int","const char *","const char *"
"memccpy","#include <string.h>","","FAR void","FAR void *","FAR const void *","int c","size_t" "memccpy","string.h","","FAR void","FAR void *","FAR const void *","int c","size_t"
"memchr","#include <string.h>","","FAR void","FAR const void *","int c","size_t" "memchr","string.h","","FAR void","FAR const void *","int c","size_t"
"memcmp","#include <string.h>","","int","FAR const void *","FAR const void *","size_t" "memcmp","string.h","","int","FAR const void *","FAR const void *","size_t"
"memcpy","#include <string.h>","","FAR void","FAR void *","FAR const void *","size_t" "memcpy","string.h","","FAR void","FAR void *","FAR const void *","size_t"
"memmove","#include <string.h>","","FAR void","FAR void *","FAR const void *","size_t" "memmove","string.h","","FAR void","FAR void *","FAR const void *","size_t"
"memset","#include <string.h>","","FAR void","FAR void *","int c","size_t" "memset","string.h","","FAR void","FAR void *","int c","size_t"
"mktime","#include <time.h>","","time_t","const struct tm *" "mktime","time.h","","time_t","const struct tm *"
"mq_getattr","#include <mqueue.h>","#ifndef CONFIG_DISABLE_MQUEUE","int","mqd_t","struct mq_attr *" "mq_getattr","mqueue.h","!defined(CONFIG_DISABLE_MQUEUE)","int","mqd_t","struct mq_attr *"
"mq_setattr","#include <mqueue.h>","#ifndef CONFIG_DISABLE_MQUEUE","int","mqd_t","const struct mq_attr *","struct mq_attr *" "mq_setattr","mqueue.h","!defined(CONFIG_DISABLE_MQUEUE)","int","mqd_t","const struct mq_attr *","struct mq_attr *"
"ntohl","#include <arpa/inet.h>","","uint32_t","uint32_t" "ntohl","arpa/inet.h","","uint32_t","uint32_t"
"ntohs","#include <arpa/inet.h>","","uint16_t","uint16_t" "ntohs","arpa/inet.h","","uint16_t","uint16_t"
"perror","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","void","FAR const char *" "perror","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","void","FAR const char *"
"printf","#include <stdio.h>","","int","const char *","..." "printf","stdio.h","","int","const char *","..."
"pthread_attr_destroy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *" "pthread_attr_destroy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *"
"pthread_attr_getinheritsched","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR const pthread_attr_t *","FAR int *" "pthread_attr_getinheritsched","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR const pthread_attr_t *","FAR int *"
"pthread_attr_getschedparam","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","FAR struct sched_param *" "pthread_attr_getschedparam","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","FAR struct sched_param *"
"pthread_attr_getschedpolicy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","int *" "pthread_attr_getschedpolicy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","int *"
"pthread_attr_getstacksize","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","FAR long *" "pthread_attr_getstacksize","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","FAR long *"
"pthread_attr_init","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *" "pthread_attr_init","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *"
"pthread_attr_setinheritsched","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","int" "pthread_attr_setinheritsched","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","int"
"pthread_attr_setschedparam","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","FAR const struct sched_param *" "pthread_attr_setschedparam","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","FAR const struct sched_param *"
"pthread_attr_setschedpolicy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","int" "pthread_attr_setschedpolicy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","int"
"pthread_attr_setstacksize","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_attr_t *","long" "pthread_attr_setstacksize","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_attr_t *","long"
"pthread_barrierattr_destroy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_barrierattr_t *" "pthread_barrierattr_destroy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_barrierattr_t *"
"pthread_barrierattr_getpshared","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR const pthread_barrierattr_t *","FAR int *" "pthread_barrierattr_getpshared","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR const pthread_barrierattr_t *","FAR int *"
"pthread_barrierattr_init","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_barrierattr_t *" "pthread_barrierattr_init","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_barrierattr_t *"
"pthread_barrierattr_setpshared","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_barrierattr_t *","int" "pthread_barrierattr_setpshared","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_barrierattr_t *","int"
"pthread_condattr_destroy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_condattr_t *" "pthread_condattr_destroy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_condattr_t *"
"pthread_condattr_init","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_condattr_t *" "pthread_condattr_init","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_condattr_t *"
"pthread_mutexattr_destroy","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_mutexattr_t *" "pthread_mutexattr_destroy","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_mutexattr_t *"
"pthread_mutexattr_getpshared","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_mutexattr_t *","FAR int *" "pthread_mutexattr_getpshared","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_mutexattr_t *","FAR int *"
"pthread_mutexattr_gettype","#include <pthread.h>","#if !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES)","int","const pthread_mutexattr_t *","int *" "pthread_mutexattr_gettype","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES)","int","const pthread_mutexattr_t *","int *"
"pthread_mutexattr_init","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_mutexattr_t *" "pthread_mutexattr_init","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_mutexattr_t *"
"pthread_mutexattr_setpshared","#include <pthread.h>","#ifndef CONFIG_DISABLE_PTHREAD","int","FAR pthread_mutexattr_t *","int " "pthread_mutexattr_setpshared","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_mutexattr_t *","int "
"pthread_mutexattr_settype","#include <pthread.h>","#if !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES)","int","pthread_mutexattr_t *","int" "pthread_mutexattr_settype","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES)","int","pthread_mutexattr_t *","int"
"puts","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *" "puts","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *"
"qsort","#include <stdlib.h>","","void","void *","size_t","size_t","int(*)(const void *","const void *)" "qsort","stdlib.h","","void","void *","size_t","size_t","int(*)(const void *","const void *)"
"rand","#include <stdlib.h>","","int" "rand","stdlib.h","","int"
"readdir_r","#include <dirent.h>","#if CONFIG_NFILE_DESCRIPTORS > 0","int","FAR DIR *","FAR struct dirent *","FAR struct dirent **" "readdir_r","dirent.h","CONFIG_NFILE_DESCRIPTORS > 0","int","FAR DIR *","FAR struct dirent *","FAR struct dirent **"
"rint","","","double_t","double_t" "rint","","","double_t","double_t"
"sched_get_priority_max","#include <sched.h>","","int","int" "sched_get_priority_max","sched.h","","int","int"
"sched_get_priority_min","#include <sched.h>","","int","int" "sched_get_priority_min","sched.h","","int","int"
"sem_getvalue","#include <semaphore.h>","","int","FAR sem_t *","FAR int *" "sem_getvalue","semaphore.h","","int","FAR sem_t *","FAR int *"
"sem_init","#include <semaphore.h>","","int","FAR sem_t *","int","unsigned int" "sem_init","semaphore.h","","int","FAR sem_t *","int","unsigned int"
"sigaddset","#include <signal.h>","#ifndef CONFIG_DISABLE_SIGNALS","int","FAR sigset_t *","int" "sigaddset","signal.h","!defined(CONFIG_DISABLE_SIGNALS)","int","FAR sigset_t *","int"
"sigdelset","#include <signal.h>","#ifndef CONFIG_DISABLE_SIGNALS","int","FAR sigset_t *","int" "sigdelset","signal.h","!defined(CONFIG_DISABLE_SIGNALS)","int","FAR sigset_t *","int"
"sigemptyset","#include <signal.h>","#ifndef CONFIG_DISABLE_SIGNALS","int","FAR sigset_t *" "sigemptyset","signal.h","!defined(CONFIG_DISABLE_SIGNALS)","int","FAR sigset_t *"
"sigfillset","#include <signal.h>","#ifndef CONFIG_DISABLE_SIGNALS","int","FAR sigset_t *" "sigfillset","signal.h","!defined(CONFIG_DISABLE_SIGNALS)","int","FAR sigset_t *"
"sigismember","#include <signal.h>","#ifndef CONFIG_DISABLE_SIGNALS","int","FAR const sigset_t *","int" "sigismember","signal.h","!defined(CONFIG_DISABLE_SIGNALS)","int","FAR const sigset_t *","int"
"snprintf","#include <stdio.h>","","int","FAR char *","size_t","const char *","..." "snprintf","stdio.h","","int","FAR char *","size_t","const char *","..."
"sprintf","#include <stdio.h>","","int","FAR char *","const char *","..." "sprintf","stdio.h","","int","FAR char *","const char *","..."
"sq_addafter","#include <queue.h>","","void","FAR sq_entry_t *","FAR sq_entry_t *","FAR sq_queue_t *" "sq_addafter","queue.h","","void","FAR sq_entry_t *","FAR sq_entry_t *","FAR sq_queue_t *"
"sq_addfirst","#include <queue.h>","","void","FAR sq_entry_t *","sq_queue_t *" "sq_addfirst","queue.h","","void","FAR sq_entry_t *","sq_queue_t *"
"sq_addlast","#include <queue.h>","","void","FAR sq_entry_t *","sq_queue_t *" "sq_addlast","queue.h","","void","FAR sq_entry_t *","sq_queue_t *"
"sq_rem","#include <queue.h>","","void","FAR sq_entry_t *","sq_queue_t *" "sq_rem","queue.h","","void","FAR sq_entry_t *","sq_queue_t *"
"sq_remafter","#include <queue.h>","","FAR sq_entry_t","FAR sq_entry_t *","sq_queue_t *" "sq_remafter","queue.h","","FAR sq_entry_t","FAR sq_entry_t *","sq_queue_t *"
"sq_remfirst","#include <queue.h>","","FAR sq_entry_t","sq_queue_t *" "sq_remfirst","queue.h","","FAR sq_entry_t","sq_queue_t *"
"sq_remlast","#include <queue.h>","","FAR sq_entry_t","sq_queue_t *" "sq_remlast","queue.h","","FAR sq_entry_t","sq_queue_t *"
"srand","#include <stdlib.h>","","void","unsigned int" "srand","stdlib.h","","void","unsigned int"
"sscanf","#include <stdio.h>","","int","const char *","const char *","..." "sscanf","stdio.h","","int","const char *","const char *","..."
"strcasecmp","#include <string.h>","","int","FAR const char *","FAR const char *" "strcasecmp","string.h","","int","FAR const char *","FAR const char *"
"strcasestr","#include <string.h>","","FAR char","FAR const char *","FAR const char *" "strcasestr","string.h","","FAR char","FAR const char *","FAR const char *"
"strcat","#include <string.h>","","FAR char","FAR char *","FAR const char *" "strcat","string.h","","FAR char","FAR char *","FAR const char *"
"strchr","#include <string.h>","","FAR char","FAR const char *","int" "strchr","string.h","","FAR char","FAR const char *","int"
"strcmp","#include <string.h>","","int","FAR const char *","FAR const char *" "strcmp","string.h","","int","FAR const char *","FAR const char *"
"strcpy","#include <string.h>","","FAR char","char *","FAR const char *" "strcpy","string.h","","FAR char","char *","FAR const char *"
"strcspn","#include <string.h>","","size_t","FAR const char *","FAR const char *" "strcspn","string.h","","size_t","FAR const char *","FAR const char *"
"strdup","#include <string.h>","","FAR char","FAR const char *" "strdup","string.h","","FAR char","FAR const char *"
"strerror","#include <string.h>","","FAR const char","int" "strerror","string.h","","FAR const char","int"
"strftime","#include <time.h>","","size_t","char *","size_t","const char *","const struct tm *" "strftime","time.h","","size_t","char *","size_t","const char *","const struct tm *"
"strlen","#include <string.h>","","size_t","FAR const char *" "strlen","string.h","","size_t","FAR const char *"
"strncasecmp","#include <string.h>","","int","FAR const char *","FAR const char *","size_t" "strncasecmp","string.h","","int","FAR const char *","FAR const char *","size_t"
"strncat","#include <string.h>","","FAR char","FAR char *","FAR const char *","size_t" "strncat","string.h","","FAR char","FAR char *","FAR const char *","size_t"
"strncmp","#include <string.h>","","int","FAR const char *","FAR const char *","size_t" "strncmp","string.h","","int","FAR const char *","FAR const char *","size_t"
"strncpy","#include <string.h>","","FAR char","char *","FAR const char *","size_t" "strncpy","string.h","","FAR char","char *","FAR const char *","size_t"
"strndup","#include <string.h>","","FAR char","FAR const char *","size_t" "strndup","string.h","","FAR char","FAR const char *","size_t"
"strnlen","#include <string.h>","","size_t","FAR const char *","size_t" "strnlen","string.h","","size_t","FAR const char *","size_t"
"strpbrk","#include <string.h>","","FAR char","FAR const char *","FAR const char *" "strpbrk","string.h","","FAR char","FAR const char *","FAR const char *"
"strrchr","#include <string.h>","","FAR char","FAR const char *","int" "strrchr","string.h","","FAR char","FAR const char *","int"
"strspn","#include <string.h>","","size_t","FAR const char *","FAR const char *" "strspn","string.h","","size_t","FAR const char *","FAR const char *"
"strstr","#include <string.h>","","FAR char","FAR const char *","FAR const char *" "strstr","string.h","","FAR char","FAR const char *","FAR const char *"
"strtod","#include <stdlib.h>","","double_t","const char *str","char **endptr" "strtod","stdlib.h","","double_t","const char *str","char **endptr"
"strtok","#include <string.h>","","FAR char","FAR char *","FAR const char *" "strtok","string.h","","FAR char","FAR char *","FAR const char *"
"strtok_r","#include <string.h>","","FAR char","FAR char *","FAR const char *","FAR char **" "strtok_r","string.h","","FAR char","FAR char *","FAR const char *","FAR char **"
"strtol","#include <string.h>","","long","const char *","char **","int" "strtol","string.h","","long","const char *","char **","int"
"strtoll","#include <stdlib.h>","#ifdef CONFIG_HAVE_LONG_LONG","long long","const char *nptr","char **endptr","int base" "strtoll","stdlib.h","defined(CONFIG_HAVE_LONG_LONG)","long long","const char *nptr","char **endptr","int base"
"strtoul","#include <stdlib.h>","","unsigned long","const char *","char **","int" "strtoul","stdlib.h","","unsigned long","const char *","char **","int"
"strtoull","#include <stdlib.h>","#ifdef CONFIG_HAVE_LONG_LONG","unsigned long long","const char *","char **","int" "strtoull","stdlib.h","defined(CONFIG_HAVE_LONG_LONG)","unsigned long long","const char *","char **","int"
"tcflush","#include <termios.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","int" "tcflush","termios.h","CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","int"
"tcgetattr","#include <termios.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","FAR struct termios *" "tcgetattr","termios.h","CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","FAR struct termios *"
"tcsetattr","#include <termios.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","int","FAR const struct termios *" "tcsetattr","termios.h","CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS)","int","int","int","FAR const struct termios *"
"telldir","#include <dirent.h>","#if CONFIG_NFILE_DESCRIPTORS > 0","off_t","FAR DIR *" "telldir","dirent.h","CONFIG_NFILE_DESCRIPTORS > 0","off_t","FAR DIR *"
"time","#include <time.h>","","time_t","time_t *" "time","time.h","","time_t","time_t *"
"ub16divub16","#include <fixedmath.h>","","ub16_t","ub16_t","ub16_t" "ub16divub16","fixedmath.h","","ub16_t","ub16_t","ub16_t"
"ub16mulub16","#include <fixedmath.h>","","ub16_t","ub16_t","ub16_t" "ub16mulub16","fixedmath.h","","ub16_t","ub16_t","ub16_t"
"ub16sqr","#include <fixedmath.h>","","ub16_t","ub16_t" "ub16sqr","fixedmath.h","","ub16_t","ub16_t"
"ungetc","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","int","FAR FILE *" "ungetc","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","int","FAR FILE *"
"vdbg","#include <debug.h>","#if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE)","int","const char *","..." "vdbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE)","int","const char *","..."
"vfprintf","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","const char *","va_list" "vfprintf","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR FILE *","const char *","va_list"
"vprintf","#include <stdio.h>","#if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *","va_list" "vprintf","stdio.h","CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0","int","FAR const char *","va_list"
"vsnprintf","#include <stdio.h>","","int","FAR char *","size_t","const char *","va_list" "vsnprintf","stdio.h","","int","FAR char *","size_t","const char *","va_list"
"vsprintf","#include <stdio.h>","","int","FAR char *","const char *","va_list" "vsprintf","stdio.h","","int","FAR char *","const char *","va_list"
"vsscanf","#include <stdio.h>","","int","char *","const char *","va_list" "vsscanf","stdio.h","","int","char *","const char *","va_list"
1 _inet_ntoa #include <arpa/inet.h> arpa/inet.h #if !defined(CONFIG_NET_IPv6) && !defined(CONFIG_CAN_PASS_STRUCTS) !defined(CONFIG_NET_IPv6) && !defined(CONFIG_CAN_PASS_STRUCTS) FAR char in_addr_t
2 abort #include <stdlib.h> stdlib.h void
3 abs #include <stdlib.h> stdlib.h int int
4 asprintf #include <stdio.h> stdio.h int FAR char **
5 avsprintf #include <stdio.h> stdio.h int FAR char **
6 b16atan2 #include <fixedmath.h> fixedmath.h b16_t b16_t
7 b16cos #include <fixedmath.h> fixedmath.h b16_t b16_t
8 b16divb16 #include <fixedmath.h> fixedmath.h b16_t b16_t
9 b16mulb16 #include <fixedmath.h> fixedmath.h b16_t b16_t
10 b16sin #include <fixedmath.h> fixedmath.h b16_t b16_t
11 b16sqr #include <fixedmath.h> fixedmath.h b16_t b16_t
12 basename #include <libgen.h> libgen.h FAR char FAR char *
13 cfgetspeed #include <termios.h> termios.h #if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) speed_t FAR const struct termios *
14 cfsetspeed #include <termios.h> termios.h #if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) int FAR struct termios *
15 chdir #include <unistd.h> unistd.h #if CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON) CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON) int FAR const char *
16 crc32 #include <crc32.h> crc32.h uint32_t FAR const uint8_t *
17 crc32part #include <crc32.h> crc32.h uint32_t FAR const uint8_t *
18 dbg #include <debug.h> debug.h #if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) int const char *
19 dbg_enable #include <debug.h> debug.h #ifdef CONFIG_DEBUG_ENABLE defined(CONFIG_DEBUG_ENABLE) void bool
20 dirname #include <libgen.h> libgen.h FAR char FAR char *
21 dq_addafter #include <queue.h> queue.h void FAR dq_entry_t *
22 dq_addbefore #include <queue.h> queue.h void FAR dq_entry_t *
23 dq_addfirst #include <queue.h> queue.h void FAR dq_entry_t *
24 dq_addlast #include <queue.h> queue.h void FAR dq_entry_t *
25 dq_rem #include <queue.h> queue.h void FAR dq_entry_t *
26 dq_remfirst #include <queue.h> queue.h FAR dq_entry_t dq_queue_t *
27 dq_remlast #include <queue.h> queue.h FAR dq_entry_t dq_queue_t *
28 ether_ntoa #include <netinet/ether.h> netinet/ether.h FAR char FAR const struct ether_addr *
29 fclose #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
30 fdopen #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 FAR FILE int
31 fflush #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
32 fgetc #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
33 fgetpos #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
34 fgets #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 FAR char FAR char *
35 fileno #include <stdio.h> stdio.h int FAR FILE *
36 fopen #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 FAR FILE FAR const char *
37 fprintf #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
38 fputc #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int int c
39 fputs #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR const char *
40 fread #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 size_t FAR void *
41 fseek #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
42 fsetpos #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
43 ftell #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 long FAR FILE *
44 fwrite #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 size_t FAR const void *
45 getcwd #include <unistd.h> unistd.h #if CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON) CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_ENVIRON) FAR char FAR char *
46 getopt #include <unistd.h> unistd.h int int
47 getoptargp #include <unistd.h> unistd.h FAR char *
48 getoptindp #include <unistd.h> unistd.h int
49 getoptoptp #include <unistd.h> unistd.h int
50 gets #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 FAR char FAR char *
51 gmtime #include <time.h> time.h struct tm const time_t *
52 gmtime_r #include <time.h> time.h FAR struct tm FAR const time_t *
53 htonl #include <arpa/inet.h> arpa/inet.h uint32_t uint32_t
54 htons #include <arpa/inet.h> arpa/inet.h uint16_t uint16_t
55 imaxabs #include <stdlib.h> stdlib.h intmax_t intmax_t
56 inet_addr #include <arpa/inet.h> arpa/inet.h in_addr_t FAR const char
57 inet_ntoa #include <arpa/inet.h> arpa/inet.h #if !defined(CONFIG_NET_IPv6) && defined(CONFIG_CAN_PASS_STRUCTS) !defined(CONFIG_NET_IPv6) && defined(CONFIG_CAN_PASS_STRUCTS) FAR char struct in_addr
58 inet_ntop #include <arpa/inet.h> arpa/inet.h FAR const char int
59 inet_pton #include <arpa/inet.h> arpa/inet.h int int
60 labs #include <stdlib.h> stdlib.h long int long int
61 lib_dumpbuffer #include <debug.h> debug.h void FAR const char *
62 lib_lowprintf #include <debug.h> debug.h int FAR const char *
63 lib_rawprintf #include <debug.h> debug.h int FAR const char *
64 llabs #include <stdlib.h> stdlib.h #ifdef CONFIG_HAVE_LONG_LONG defined(CONFIG_HAVE_LONG_LONG) long long int long long int
65 lldbg #include <debug.h> debug.h #if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_ARCH_LOWPUTC) !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_ARCH_LOWPUTC) int const char *
66 llvdbg #include <debug.h> debug.h #if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_ARCH_LOWPUTC) !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_ARCH_LOWPUTC) int const char *
67 match int const char *
68 memccpy #include <string.h> string.h FAR void FAR void *
69 memchr #include <string.h> string.h FAR void FAR const void *
70 memcmp #include <string.h> string.h int FAR const void *
71 memcpy #include <string.h> string.h FAR void FAR void *
72 memmove #include <string.h> string.h FAR void FAR void *
73 memset #include <string.h> string.h FAR void FAR void *
74 mktime #include <time.h> time.h time_t const struct tm *
75 mq_getattr #include <mqueue.h> mqueue.h #ifndef CONFIG_DISABLE_MQUEUE !defined(CONFIG_DISABLE_MQUEUE) int mqd_t
76 mq_setattr #include <mqueue.h> mqueue.h #ifndef CONFIG_DISABLE_MQUEUE !defined(CONFIG_DISABLE_MQUEUE) int mqd_t
77 ntohl #include <arpa/inet.h> arpa/inet.h uint32_t uint32_t
78 ntohs #include <arpa/inet.h> arpa/inet.h uint16_t uint16_t
79 perror #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 void FAR const char *
80 printf #include <stdio.h> stdio.h int const char *
81 pthread_attr_destroy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
82 pthread_attr_getinheritsched #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR const pthread_attr_t *
83 pthread_attr_getschedparam #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
84 pthread_attr_getschedpolicy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
85 pthread_attr_getstacksize #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
86 pthread_attr_init #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
87 pthread_attr_setinheritsched #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
88 pthread_attr_setschedparam #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
89 pthread_attr_setschedpolicy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
90 pthread_attr_setstacksize #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_attr_t *
91 pthread_barrierattr_destroy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_barrierattr_t *
92 pthread_barrierattr_getpshared #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR const pthread_barrierattr_t *
93 pthread_barrierattr_init #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_barrierattr_t *
94 pthread_barrierattr_setpshared #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_barrierattr_t *
95 pthread_condattr_destroy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_condattr_t *
96 pthread_condattr_init #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_condattr_t *
97 pthread_mutexattr_destroy #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_mutexattr_t *
98 pthread_mutexattr_getpshared #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_mutexattr_t *
99 pthread_mutexattr_gettype #include <pthread.h> pthread.h #if !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES) !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES) int const pthread_mutexattr_t *
100 pthread_mutexattr_init #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_mutexattr_t *
101 pthread_mutexattr_setpshared #include <pthread.h> pthread.h #ifndef CONFIG_DISABLE_PTHREAD !defined(CONFIG_DISABLE_PTHREAD) int FAR pthread_mutexattr_t *
102 pthread_mutexattr_settype #include <pthread.h> pthread.h #if !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES) !defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_MUTEX_TYPES) int pthread_mutexattr_t *
103 puts #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR const char *
104 qsort #include <stdlib.h> stdlib.h void void *
105 rand #include <stdlib.h> stdlib.h int
106 readdir_r #include <dirent.h> dirent.h #if CONFIG_NFILE_DESCRIPTORS > 0 CONFIG_NFILE_DESCRIPTORS > 0 int FAR DIR *
107 rint double_t double_t
108 sched_get_priority_max #include <sched.h> sched.h int int
109 sched_get_priority_min #include <sched.h> sched.h int int
110 sem_getvalue #include <semaphore.h> semaphore.h int FAR sem_t *
111 sem_init #include <semaphore.h> semaphore.h int FAR sem_t *
112 sigaddset #include <signal.h> signal.h #ifndef CONFIG_DISABLE_SIGNALS !defined(CONFIG_DISABLE_SIGNALS) int FAR sigset_t *
113 sigdelset #include <signal.h> signal.h #ifndef CONFIG_DISABLE_SIGNALS !defined(CONFIG_DISABLE_SIGNALS) int FAR sigset_t *
114 sigemptyset #include <signal.h> signal.h #ifndef CONFIG_DISABLE_SIGNALS !defined(CONFIG_DISABLE_SIGNALS) int FAR sigset_t *
115 sigfillset #include <signal.h> signal.h #ifndef CONFIG_DISABLE_SIGNALS !defined(CONFIG_DISABLE_SIGNALS) int FAR sigset_t *
116 sigismember #include <signal.h> signal.h #ifndef CONFIG_DISABLE_SIGNALS !defined(CONFIG_DISABLE_SIGNALS) int FAR const sigset_t *
117 snprintf #include <stdio.h> stdio.h int FAR char *
118 sprintf #include <stdio.h> stdio.h int FAR char *
119 sq_addafter #include <queue.h> queue.h void FAR sq_entry_t *
120 sq_addfirst #include <queue.h> queue.h void FAR sq_entry_t *
121 sq_addlast #include <queue.h> queue.h void FAR sq_entry_t *
122 sq_rem #include <queue.h> queue.h void FAR sq_entry_t *
123 sq_remafter #include <queue.h> queue.h FAR sq_entry_t FAR sq_entry_t *
124 sq_remfirst #include <queue.h> queue.h FAR sq_entry_t sq_queue_t *
125 sq_remlast #include <queue.h> queue.h FAR sq_entry_t sq_queue_t *
126 srand #include <stdlib.h> stdlib.h void unsigned int
127 sscanf #include <stdio.h> stdio.h int const char *
128 strcasecmp #include <string.h> string.h int FAR const char *
129 strcasestr #include <string.h> string.h FAR char FAR const char *
130 strcat #include <string.h> string.h FAR char FAR char *
131 strchr #include <string.h> string.h FAR char FAR const char *
132 strcmp #include <string.h> string.h int FAR const char *
133 strcpy #include <string.h> string.h FAR char char *
134 strcspn #include <string.h> string.h size_t FAR const char *
135 strdup #include <string.h> string.h FAR char FAR const char *
136 strerror #include <string.h> string.h FAR const char int
137 strftime #include <time.h> time.h size_t char *
138 strlen #include <string.h> string.h size_t FAR const char *
139 strncasecmp #include <string.h> string.h int FAR const char *
140 strncat #include <string.h> string.h FAR char FAR char *
141 strncmp #include <string.h> string.h int FAR const char *
142 strncpy #include <string.h> string.h FAR char char *
143 strndup #include <string.h> string.h FAR char FAR const char *
144 strnlen #include <string.h> string.h size_t FAR const char *
145 strpbrk #include <string.h> string.h FAR char FAR const char *
146 strrchr #include <string.h> string.h FAR char FAR const char *
147 strspn #include <string.h> string.h size_t FAR const char *
148 strstr #include <string.h> string.h FAR char FAR const char *
149 strtod #include <stdlib.h> stdlib.h double_t const char *str
150 strtok #include <string.h> string.h FAR char FAR char *
151 strtok_r #include <string.h> string.h FAR char FAR char *
152 strtol #include <string.h> string.h long const char *
153 strtoll #include <stdlib.h> stdlib.h #ifdef CONFIG_HAVE_LONG_LONG defined(CONFIG_HAVE_LONG_LONG) long long const char *nptr
154 strtoul #include <stdlib.h> stdlib.h unsigned long const char *
155 strtoull #include <stdlib.h> stdlib.h #ifdef CONFIG_HAVE_LONG_LONG defined(CONFIG_HAVE_LONG_LONG) unsigned long long const char *
156 tcflush #include <termios.h> termios.h #if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) int int
157 tcgetattr #include <termios.h> termios.h #if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) int int
158 tcsetattr #include <termios.h> termios.h #if CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_SERIAL_TERMIOS) int int
159 telldir #include <dirent.h> dirent.h #if CONFIG_NFILE_DESCRIPTORS > 0 CONFIG_NFILE_DESCRIPTORS > 0 off_t FAR DIR *
160 time #include <time.h> time.h time_t time_t *
161 ub16divub16 #include <fixedmath.h> fixedmath.h ub16_t ub16_t
162 ub16mulub16 #include <fixedmath.h> fixedmath.h ub16_t ub16_t
163 ub16sqr #include <fixedmath.h> fixedmath.h ub16_t ub16_t
164 ungetc #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int int
165 vdbg #include <debug.h> debug.h #if !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) !defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) int const char *
166 vfprintf #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR FILE *
167 vprintf #include <stdio.h> stdio.h #if CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 int FAR const char *
168 vsnprintf #include <stdio.h> stdio.h int FAR char *
169 vsprintf #include <stdio.h> stdio.h int FAR char *
170 vsscanf #include <stdio.h> stdio.h int char *
+4
View File
@@ -108,6 +108,10 @@ Each type field has a format as follows:
cannot cast a union sigval to a uinptr_t either. Rather, we need cannot cast a union sigval to a uinptr_t either. Rather, we need
to cast a specific union member fieldname to uintptr_t. to cast a specific union member fieldname to uintptr_t.
NOTE: This CSV file is used both to support the generate of trap information,
but also for the generation of symbol tables. See nuttx/tools/README.txt
and nuttx/lib/README.txt for further information.
Auto-Generated Files Auto-Generated Files
==================== ====================
+1 -1
View File
@@ -2,7 +2,7 @@
# Makefile.export # Makefile.export
# #
# Copyright (C) 2011 Gregory Nutt. All rights reserved. # Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+7 -2
View File
@@ -58,8 +58,13 @@ mkversion: mkconfig.c cfgparser.c
# mksyscall - Convert a CSV file into syscall stubs and proxies # mksyscall - Convert a CSV file into syscall stubs and proxies
mksyscall: mksyscall.c mksyscall: mksyscall.c csvparser.c
@gcc $(CFLAGS) -o mksyscall mksyscall.c @gcc $(CFLAGS) -o mksyscall mksyscall.c csvparser.c
# mksymtab - Convert a CSV file into a symbol table
mksymtab: mksymtab.c csvparser.c
@gcc $(CFLAGS) -o mksymtab mksymtab.c csvparser.c
# bdf-converter - Converts a BDF font to the NuttX font format # bdf-converter - Converts a BDF font to the NuttX font format
+21 -1
View File
@@ -67,7 +67,7 @@ mkversion.c, cfgparser.c, and cfgparser.h
.version file in the top level directory into include/nuttx/version.h. .version file in the top level directory into include/nuttx/version.h.
version.h provides version information that can be included by C files. version.h provides version information that can be included by C files.
mksyscall.c mksyscall.c, cvsparser.c, and cvsparser.h
This is a C file that is used to build mksyscall program. The mksyscall This is a C file that is used to build mksyscall program. The mksyscall
program is used during the initial NuttX build by the logic in the top- program is used during the initial NuttX build by the logic in the top-
@@ -89,6 +89,26 @@ mksyscall.c
accept this CVS file as input and generate all of the required proxy or accept this CVS file as input and generate all of the required proxy or
stub files as output. See syscall/README.txt for additonal information. stub files as output. See syscall/README.txt for additonal information.
mksymtab.c, cvsparser.c, and cvsparser.h
This is a C file that is used to build symbol tables from common-separated
value (CSV) files. This tool is not used during the NuttX build, but
can be used as needed to generate files.
USAGE: ./mksymtab <cvs-file> <symtab-file>
Where:
<cvs-file> : The path to the input CSV file
<symtab-file>: The path to the output symbol table file
-d : Enable debug output
Example:
cd nuttx/tools
cat ../syscall/syscall.csv ../lib/lib.csv | sort >tmp.csv
./mksymtab.exe tmp.csv tmp.c
pic32mx pic32mx
This directory contains build tools used only for PIC32MX platforms This directory contains build tools used only for PIC32MX platforms
+1 -1
View File
@@ -2,7 +2,7 @@
* tools/cfgpaser.h * tools/cfgpaser.h
* *
* Copyright (C) 2007-2011 Gregory Nutt. All rights reserved. * Copyright (C) 2007-2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
+1 -1
View File
@@ -2,7 +2,7 @@
# configure.sh # configure.sh
# #
# Copyright (C) 2007, 2008, 2011 Gregory Nutt. All rights reserved. # Copyright (C) 2007, 2008, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+205
View File
@@ -0,0 +1,205 @@
/****************************************************************************
* tools/csvparser.c
*
* Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include "csvparser.h"
/****************************************************************************
* Definitions
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
bool g_debug;
char g_line[LINESIZE+1];
char g_parm[MAX_FIELDS][MAX_PARMSIZE];
int g_lineno;
/****************************************************************************
* Private Functions
****************************************************************************/
static char *skip_space(char *ptr)
{
while (*ptr && isspace((int)*ptr)) ptr++;
return ptr;
}
static char *copy_parm(char *src, char *dest)
{
char *start = src;
int i;
for (i = 0; i < MAX_PARMSIZE; i++)
{
if (*src == '"')
{
*dest = '\0';
return src;
}
else if (*src == '\n' || *src == '\0')
{
fprintf(stderr, "%d: Unexpected end of line: \"%s\"\n", g_lineno, start);
exit(4);
}
else
{
*dest++ = *src++;
}
}
fprintf(stderr, "%d: Parameter too long: \"%s\"\n", g_lineno, start);
exit(3);
}
static char *find_parm(char *ptr)
{
char *start = ptr;
if (*ptr != '"')
{
fprintf(stderr, "%d: I'm confused: \"%s\"\n", g_lineno, start);
exit(5);
}
ptr++;
ptr = skip_space(ptr);
if (*ptr == '\n' || *ptr == '\0')
{
return NULL;
}
else if (*ptr != ',')
{
fprintf(stderr, "%d: Expected ',': \"%s\"\n", g_lineno, start);
exit(6);
}
ptr++;
ptr = skip_space(ptr);
if (*ptr != '"')
{
fprintf(stderr, "%d: Expected \": \"%s\"\n", g_lineno, start);
exit(7);
}
ptr++;
return ptr;
}
/****************************************************************************
* Public Functions
****************************************************************************/
char *read_line(FILE *stream)
{
char *ptr;
for (;;)
{
g_line[LINESIZE] = '\0';
if (!fgets(g_line, LINESIZE, stream))
{
return NULL;
}
else
{
g_lineno++;
if (g_debug)
{
printf("Line: %s\n", g_line);
}
ptr = skip_space(g_line);
if (*ptr && *ptr != '#' && *ptr != '\n')
{
return ptr;
}
}
}
}
int parse_csvline(char *ptr)
{
int nparms;
int i;
/* Format "arg1","arg2","arg3",... Spaces will be tolerated outside of the
* quotes. Any initial spaces have already been skipped so the first thing
* should be '"'.
*/
if (*ptr != '"')
{
fprintf(stderr, "%d: Bad line: \"%s\"\n", g_lineno, g_line);
exit(2);
}
ptr++;
nparms = 0;
do
{
ptr = copy_parm(ptr, &g_parm[nparms][0]);
nparms++;
ptr = find_parm(ptr);
}
while (ptr);
if (g_debug)
{
printf("Parameters: %d\n", nparms);
for (i = 0; i < nparms; i++)
{
printf(" Parm%d: \"%s\"\n", i+1, g_parm[i]);
}
}
return nparms;
}
+76
View File
@@ -0,0 +1,76 @@
/****************************************************************************
* tools/csvparser.h
*
* Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#ifndef __TOOLS_CSVPARSER_H
#define __TOOLS_CSVPARSER_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdbool.h>
#include <limits.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define LINESIZE (PATH_MAX > 256 ? PATH_MAX : 256)
#define MAX_FIELDS 16
#define MAX_PARMSIZE 128
#define NAME_INDEX 0
#define HEADER_INDEX 1
#define COND_INDEX 2
#define RETTYPE_INDEX 3
#define PARM1_INDEX 4
/****************************************************************************
* Public Data
****************************************************************************/
extern bool g_debug;
extern char g_line[LINESIZE+1];
extern char g_parm[MAX_FIELDS][MAX_PARMSIZE];
extern int g_lineno;
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
char *read_line(FILE *stream);
int parse_csvline(char *ptr);
#endif /* __TOOLS_CSVPARSER_H */
+1 -1
View File
@@ -2,7 +2,7 @@
# tools/define.sh # tools/define.sh
# #
# Copyright (C) 2011 Gregory Nutt. All rights reserved. # Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+1 -1
View File
@@ -3,7 +3,7 @@
# tools/indent.sh # tools/indent.sh
# #
# Copyright (C) 2008, 2010 Gregory Nutt. All rights reserved. # Copyright (C) 2008, 2010 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+1 -1
View File
@@ -3,7 +3,7 @@
# tools/link.sh # tools/link.sh
# #
# Copyright (C) 2008 Gregory Nutt. All rights reserved. # Copyright (C) 2008 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+1 -1
View File
@@ -3,7 +3,7 @@
# tools/mkdeps.sh # tools/mkdeps.sh
# #
# Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. # Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+1 -1
View File
@@ -2,7 +2,7 @@
# tools/mknulldeps.sh # tools/mknulldeps.sh
# #
# Copyright (C) 2008 Gregory Nutt. All rights reserved. # Copyright (C) 2008 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+1 -1
View File
@@ -3,7 +3,7 @@
# tools/mkromfsimg.sh # tools/mkromfsimg.sh
# #
# Copyright (C) 2008, 2011 Gregory Nutt. All rights reserved. # Copyright (C) 2008, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr> # Author: Gregory Nutt <gnutt@nuttx.org>
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
+277
View File
@@ -0,0 +1,277 @@
/****************************************************************************
* tools/mksymtab.c
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include "csvparser.h"
/****************************************************************************
* Definitions
****************************************************************************/
#define MAX_HEADER_FILES 500
/****************************************************************************
* Private Types
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
static const char *g_hdrfiles[MAX_HEADER_FILES];
static int nhdrfiles;
/****************************************************************************
* Private Functions
****************************************************************************/
static void show_usage(const char *progname)
{
fprintf(stderr, "USAGE: %s <cvs-file> <symtab-file>\n\n", progname);
fprintf(stderr, "Where:\n\n");
fprintf(stderr, " <cvs-file> : The path to the input CSV file\n");
fprintf(stderr, " <symtab-file>: The path to the output symbol table file\n");
fprintf(stderr, " -d : Enable debug output\n");
exit(EXIT_FAILURE);
}
static bool check_hdrfile(const char *hdrfile)
{
int i;
for (i = 0; i < nhdrfiles; i++)
{
if (strcmp(g_hdrfiles[i], hdrfile) == 0)
{
return true;
}
}
return false;
}
static void add_hdrfile(const char *hdrfile)
{
if (!check_hdrfile(hdrfile))
{
if (nhdrfiles > MAX_HEADER_FILES)
{
fprintf(stderr, "ERROR: Too man header files. Increase MAX_HEADER_FILES\n");
exit(EXIT_FAILURE);
}
g_hdrfiles[nhdrfiles] = strdup(hdrfile);
nhdrfiles++;
}
}
/****************************************************************************
* Public Functions
****************************************************************************/
int main(int argc, char **argv, char **envp)
{
char *csvpath;
char *symtab;
char *terminator;
char *ptr;
bool cond;
FILE *instream;
FILE *outstream;
int ch;
int i;
/* Parse command line options */
g_debug = false;
while ((ch = getopt(argc, argv, ":d")) > 0)
{
switch (ch)
{
case 'd' :
g_debug = true;
break;
case '?' :
fprintf(stderr, "Unrecognized option: %c\n", optopt);
show_usage(argv[0]);
case ':' :
fprintf(stderr, "Missing option argument, option: %c\n", optopt);
show_usage(argv[0]);
break;
fprintf(stderr, "Unexpected option: %c\n", ch);
show_usage(argv[0]);
}
}
if (optind >= argc)
{
fprintf(stderr, "Missing <cvs-file> and <symtab-file>\n");
show_usage(argv[0]);
}
csvpath = argv[optind];
optind++;
if (optind >= argc)
{
fprintf(stderr, "Missing <symtab-file>\n");
show_usage(argv[0]);
}
symtab = argv[optind];
optind++;
if (optind < argc)
{
fprintf(stderr, "Unexpected garbage at the end of the line\n");
show_usage(argv[0]);
}
/* Open the CSV file for reading */
instream = fopen(csvpath, "r");
if (!instream)
{
fprintf(stderr, "open %s failed: %s\n", csvpath, strerror(errno));
exit(EXIT_FAILURE);
}
/* Open the Symbol table file for writing */
outstream = fopen(symtab, "w");
if (!outstream)
{
fprintf(stderr, "open %s failed: %s\n", csvpath, strerror(errno));
exit(EXIT_FAILURE);
}
/* Get all of the header files that we need to include */
while ((ptr = read_line(instream)) != NULL)
{
/* Parse the line from the CVS file */
int nargs = parse_csvline(ptr);
if (nargs < PARM1_INDEX)
{
fprintf(stderr, "Only %d arguments found: %s\n", nargs, g_line);
exit(EXIT_FAILURE);
}
/* Add the header file to the list of header files we need to include */
add_hdrfile(g_parm[HEADER_INDEX]);
}
/* Back to the beginning */
rewind(instream);
/* Output up-front file boilerplate */
fprintf(outstream, "/* %s: Auto-generated symbol table. Do not edit */\n\n", symtab);
fprintf(outstream, "#include <nuttx/config.h>\n");
fprintf(outstream, "#include <nuttx/symtab.h>\n\n");
/* Output all of the require header files */
for (i = 0; i < nhdrfiles; i++)
{
fprintf(outstream, "#include <%s>\n", g_hdrfiles[i]);
}
/* Now the symbol table itself */
fprintf(outstream, "\nstruct symtab_s g_symtab[] =\n");
fprintf(outstream, "{\n");
/* Parse each line in the CVS file */
terminator = "";
while ((ptr = read_line(instream)) != NULL)
{
/* Parse the line from the CVS file */
int nargs = parse_csvline(ptr);
if (nargs < PARM1_INDEX)
{
fprintf(stderr, "Only %d arguments found: %s\n", nargs, g_line);
exit(EXIT_FAILURE);
}
/* Output any conditional compilation */
cond = (g_parm[COND_INDEX] && strlen(g_parm[COND_INDEX]) > 0);
if (cond)
{
fprintf(outstream, "%s#if %s\n", terminator, g_parm[COND_INDEX]);
terminator = "";
}
/* Output the symbol table entry */
fprintf(outstream, "%s { \"%s\", (FAR const void *)%s }",
terminator, g_parm[NAME_INDEX], g_parm[NAME_INDEX]);
terminator = ",\n";
if (cond)
{
fprintf(outstream, "%s#endif", terminator);
terminator = "\n";
}
}
fprintf(outstream, "\n};\n");
/* Close the CSV and symbol table files and exit */
fclose(instream);
fclose(outstream);
return EXIT_SUCCESS;
}
+5 -152
View File
@@ -1,8 +1,8 @@
/**************************************************************************** /****************************************************************************
* tools/mksyscall.c * tools/mksyscall.c
* *
* Copyright (C) 2011 Gregory Nutt. All rights reserved. * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@@ -41,174 +41,26 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <limits.h>
#include <ctype.h>
#include <unistd.h> #include <unistd.h>
#include <getopt.h>
#include <errno.h> #include <errno.h>
#include "csvparser.h"
/**************************************************************************** /****************************************************************************
* Definitions * Definitions
****************************************************************************/ ****************************************************************************/
#define LINESIZE (PATH_MAX > 256 ? PATH_MAX : 256)
#define MAX_FIELDS 16
#define MAX_PARMSIZE 128
#define NAME_INDEX 0
#define HEADER_INDEX 1
#define COND_INDEX 2
#define RETTYPE_INDEX 3
#define PARM1_INDEX 4
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
****************************************************************************/ ****************************************************************************/
static bool g_debug;
static bool g_inline; static bool g_inline;
static char g_line[LINESIZE+1];
static char g_parm[MAX_FIELDS][MAX_PARMSIZE];
static FILE *g_stubstream; static FILE *g_stubstream;
static int g_lineno;
/**************************************************************************** /****************************************************************************
* Private Functions * Private Functions
****************************************************************************/ ****************************************************************************/
static char *skip_space(char *ptr)
{
while (*ptr && isspace(*ptr)) ptr++;
return ptr;
}
static char *read_line(FILE *stream)
{
char *ptr;
for (;;)
{
g_line[LINESIZE] = '\0';
if (!fgets(g_line, LINESIZE, stream))
{
return NULL;
}
else
{
g_lineno++;
if (g_debug)
{
printf("Line: %s\n", g_line);
}
ptr = skip_space(g_line);
if (*ptr && *ptr != '#' && *ptr != '\n')
{
return ptr;
}
}
}
}
static char *copy_parm(char *src, char *dest)
{
char *start = src;
int i;
for (i = 0; i < MAX_PARMSIZE; i++)
{
if (*src == '"')
{
*dest = '\0';
return src;
}
else if (*src == '\n' || *src == '\0')
{
fprintf(stderr, "%d: Unexpected end of line: \"%s\"\n", g_lineno, start);
exit(4);
}
else
{
*dest++ = *src++;
}
}
fprintf(stderr, "%d: Parameter too long: \"%s\"\n", g_lineno, start);
exit(3);
}
static char *find_parm(char *ptr)
{
char *start = ptr;
if (*ptr != '"')
{
fprintf(stderr, "%d: I'm confused: \"%s\"\n", g_lineno, start);
exit(5);
}
ptr++;
ptr = skip_space(ptr);
if (*ptr == '\n' || *ptr == '\0')
{
return NULL;
}
else if (*ptr != ',')
{
fprintf(stderr, "%d: Expected ',': \"%s\"\n", g_lineno, start);
exit(6);
}
ptr++;
ptr = skip_space(ptr);
if (*ptr != '"')
{
fprintf(stderr, "%d: Expected \": \"%s\"\n", g_lineno, start);
exit(7);
}
ptr++;
return ptr;
}
static int parse_csvline(char *ptr)
{
int nparms;
int i;
/* Format "arg1","arg2","arg3",... Spaces will be tolerated outside of the
* quotes. Any initial spaces have already been skipped so the first thing
* should be '"'.
*/
if (*ptr != '"')
{
fprintf(stderr, "%d: Bad line: \"%s\"\n", g_lineno, g_line);
exit(2);
}
ptr++;
nparms = 0;
do
{
ptr = copy_parm(ptr, &g_parm[nparms][0]);
nparms++;
ptr = find_parm(ptr);
}
while (ptr);
if (g_debug)
{
printf("Parameters: %d\n", nparms);
for (i = 0; i < nparms; i++)
{
printf(" Parm%d: \"%s\"\n", i+1, g_parm[i]);
}
}
return nparms;
}
static bool is_vararg(const char *type, int index, int nparms) static bool is_vararg(const char *type, int index, int nparms)
{ {
if (strcmp(type,"...") == 0) if (strcmp(type,"...") == 0)
@@ -719,6 +571,7 @@ static void show_usage(const char *progname)
fprintf(stderr, "\t-p : Generate proxies\n"); fprintf(stderr, "\t-p : Generate proxies\n");
fprintf(stderr, "\t-s : Generate stubs\n"); fprintf(stderr, "\t-s : Generate stubs\n");
fprintf(stderr, "\t-i : Generate proxies as static inline functions\n"); fprintf(stderr, "\t-i : Generate proxies as static inline functions\n");
fprintf(stderr, "\t-d : Enable debug output\n");
exit(1); exit(1);
} }
+1 -1
View File
@@ -2,7 +2,7 @@
* tools/mkversion.c * tools/mkversion.c
* *
* Copyright (C) 2011 Gregory Nutt. All rights reserved. * Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions