summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-10-27 01:46:08 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-10-27 01:46:08 +0000
commit665c4bf764eb07e58e70393c08671a2dfcd834bb (patch)
tree904da9f9c29f230c8a697e3174769241a8449bfc
parent1acd573c5dd3cd1a32e18c93fc06a65dd1fa4a6d (diff)
downloadnuttx-5.12.tar.gz
nuttx-5.12.tar.bz2
nuttx-5.12.zip
Fix a signal trampoline bugnuttx-5.12
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3053 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/ChangeLog16
-rw-r--r--nuttx/Documentation/NuttX.html96
-rw-r--r--nuttx/ReleaseNotes23
-rw-r--r--nuttx/arch/arm/src/arm/up_fullcontextrestore.S9
-rw-r--r--nuttx/arch/arm/src/arm/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/arm/src/arm/up_sigdeliver.c35
-rw-r--r--nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/arm/src/cortexm3/up_sigdeliver.c31
-rw-r--r--nuttx/arch/avr/src/avr32/up_sigdeliver.c17
-rw-r--r--nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c2
-rw-r--r--nuttx/arch/sh/src/m16c/m16c_sigdeliver.c30
-rw-r--r--nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c2
-rw-r--r--nuttx/arch/sh/src/sh1/sh1_sigdeliver.c36
-rw-r--r--nuttx/arch/sim/src/up_schedulesigaction.c4
-rw-r--r--nuttx/arch/z16/src/common/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/z16/src/common/up_sigdeliver.c19
-rw-r--r--nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/ez80/ez80_sigdeliver.c21
-rw-r--r--nuttx/arch/z80/src/z8/z8_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/z8/z8_sigdeliver.c29
-rw-r--r--nuttx/arch/z80/src/z80/z80_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/z80/z80_sigdeliver.c29
-rwxr-xr-xnuttx/configs/sam3u-ek/nsh/defconfig87
-rwxr-xr-xnuttx/configs/sam3u-ek/ostest/defconfig87
24 files changed, 388 insertions, 197 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 982217c28..d9d73582e 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -1288,7 +1288,7 @@
test is ran repeatedly in a loop.
* configs/ez80f910200zco - Updated to used ZDS-II 4.11.1
-5.12 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
+5.12 2010-10-26 Gregory Nutt <spudmonkey@racsa.co.cr>
* arch/avr - Add a place to support AVR family processors.
* arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
@@ -1301,4 +1301,18 @@
lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
imaxabs().
* Add include/inttypes.h
+ * arch/hc/src/mc9s12ne64 - This hcs12 port grew a few more files. But it
+ is still a long way from complete.
+ * arch/*/src/*/*_sigdeliver.c - Fixed a serious error in the signal
+ trampoline logic. Essentially, interrupts are re-enabled while the
+ signal handler executes, but the logic to re-disable the interrupts
+ before returning from the signal handler trampoline was missing. Under
+ certain circumstances, this can cause stack corruption. This was
+ discovered by David Hewson on an ARM9 platform, but since the code
+ has been leveraged, the bug has been propogated from ARM to Cortex-M3,
+ AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 -- almost every architecture.
+ The correction has been incorporated for all architectures but only
+ verified on a few.
+
+5.13 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index dd767ff36..fe9110565 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
- <p>Last Updated: October 18, 2010</p>
+ <p>Last Updated: October 26, 2010</p>
</td>
</tr>
</table>
@@ -772,10 +772,10 @@
</tr>
</table>
-<p><b>nuttx-5.11 Release Notes</b>:
+<p><b>nuttx-5.12 Release Notes</b>:
<p>
- This 58<sup>th</sup> release of NuttX, Version 5.11, was made on October 1, 2010 and is available for download from the
+ This 59<sup>th</sup> release of NuttX, Version 5.12, was made on October 26, 2010 and is available for download from the
<a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a> website.
The change log associated with the release is available <a href="#currentrelease">here</a>.
Unreleased changes after this release are available in CVS.
@@ -785,26 +785,29 @@
This is primarily a bugfix release and includes some important corrections to the code:
<ul>
<li>
- One very important bug fixes a race condition that can occur using
- semaphores that can be awakened by signals. Under this particular
- race condition, a task could hang waiting for a semaphore.
- </li>
- <li>
- Corrections to lm3s8962 port contributed by Larry Arnold. That
- port is purported to work correctly with these changes in place.
+ Fixed an important error in the signal trampoline logic. Essentially,
+ interrupts are re-enabled while the signal handler executes, but the
+ logic to re-disable the interrupts before returning from the signal
+ handler trampoline was missing. Under certain circumstances, this
+ can cause stack corruption. This was discovered by David Hewson on
+ an ARM9 platform, but since the code has been leveraged, the bug has
+ been propogated from ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80,
+ Z8, and Z80 -- almost every architecture. The correction has been
+ incorporated for all architectures but only verified on a few.
</li>
</ul>
</p>
<p>
- Plus less critical bugfixes as detailed in the ChangeLog. New features
- include:
+ Other notable changes in NuttX-5.12 include:
<ul>
<li>
- * A new configuration to support the mbed.org LPC1768 board (Contributed
- by Dave Marples), and
+ A complete port for the AVR32 (AT91UC3B0256) is incorporated in the
+ source tree. Testing of this port is underway now. This release
+ was made before verifying this port in order to get the important
+ bugfix in place.
</li>
<li>
- * A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part.
+ Other miscellaneous bugfix and enhancements as noted in the ChangeLog.
</li>
</ul>
</p>
@@ -1342,7 +1345,8 @@
This port is currently under development.
All code is complete for the basic NuttX port including header files for all AT91UC3* peripherals.
Testing of this port is underway now.
- It is hoped that the first, released AVR32 port will appear in version 5.12 of NuttX, probably near the beginning of September, 2010.
+ The untest AVR32 is present in the 5.12 release of NuttX.
+ It is hoped that the first, verified AVR32 port will be released in version 5.13 of NuttX.
</p>
</ul>
</td>
@@ -1880,28 +1884,31 @@ Other memory:
</table>
<ul><pre>
-nuttx-5.11 2010-10-01 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
-
- * configs/ea3131/src/up_fillpage.c - Added new configuration item
- CONFIG_PAGING_BINPATH. If CONFIG_PAGING_BINPATH is defined, then it
- is the full path to a file on a mounted file system that contains
- a binary image of the NuttX executable. Pages will be filled by
- reading from offsets into this file that correspond to virtual
- fault addresses. up_fillpage.c implements logic to perform page
- files using the CONFIG_PAGING_BINPATH file.
- * configs/mbed - Add configuration to support the mbed.org LPC1768
- board (Contributed by Dave Marples).
- * sched/sem_wait.c and sem_waitirq.c - Eliminate a race condition
- that can occur when a semaphore wait is interrupt by a signal.
- (see email thread: http://tech.groups.yahoo.com/group/nuttx/message/530)
- * drivers/mtd/at45db.c - Add a driver for the Atmel AT45DB161D 4Mbit
- SPI FLASH part (untested on initial check-in).
- * arch/arm/src/lm3s and arch/arm/include/lm3s - Corrections for the
- lm3s8962 port contributed by Larry Arnold. That port is purported
- to work correctly with these changes in place.
- * examples/ostest/prioinherit.c - Need to reinitialize globals if
- test is ran repeatedly in a loop.
- * configs/ez80f910200zco - Updated to used ZDS-II 4.11.1
+nuttx-5.12 2010-10-26 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
+
+ * arch/avr - Add a place to support AVR family processors.
+ * arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
+ (all of the AVR32 is a work in progress).
+ * arch/avr/include/at91uc3 and arch/avr/src/at91uc3 - Add support
+ for the AT91 UC3A/B family of AVR32 MCUs.
+ * confgs/avr32dev1 - Add support for the Atmel AVR32DEV1 board featuring
+ the AT91UC3B0256 MCU. This board is produced by www.mcuzone.com.
+ * include/stdlib.h, lib/Makefile, lib/lib_abs.c, lib/lib_labs.c,
+ lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
+ imaxabs().
+ * Add include/inttypes.h
+ * arch/hc/src/mc9s12ne64 - This hcs12 port grew a few more files. But it
+ is still a long way from complete.
+ * arch/*/src/*/*_sigdeliver.c - Fixed a serious error in the signal
+ trampoline logic. Essentially, interrupts are re-enabled while the
+ signal handler executes, but the logic to re-disable the interrupts
+ before returning from the signal handler trampoline was missing. Under
+ certain circumstances, this can cause stack corruption. This was
+ discovered by David Hewson on an ARM9 platform, but since the code
+ has been leveraged, the bug has been propogated from ARM to Cortex-M3,
+ AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 -- almost every architecture.
+ The correction has been incorporated for all architectures but only
+ verified on a few.
pascal-2.0 2009-12-21 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
@@ -1931,18 +1938,7 @@ buildroot-1.8 2009-12-21 &lt;spudmonkey@racsa.co.cr&gt;
</table>
<ul><pre>
-nuttx-5.12 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
-
- * arch/avr - Add a place to support AVR family processors.
- * arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
- (all of the AVR32 is a work in progress).
- * arch/avr/include/at91uc3 and arch/avr/src/at91uc3 - Add support
- for the AT91 UC3A/B family of AVR32 MCUs.
- * confgs/avr32dev1 - Add support for the Atmel AVR32DEV1 board featuring
- the AT91UC3B0256 MCU. This board is produced by www.mcuzone.com.
- * include/stdlib.h, lib/Makefile, lib/lib_abs.c, lib/lib_labs.c,
- lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
- imaxabs().
+nuttx-5.13 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
pascal-2.1 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes
index e88b4d79e..f0f8aed4d 100644
--- a/nuttx/ReleaseNotes
+++ b/nuttx/ReleaseNotes
@@ -1431,3 +1431,26 @@ include:
* A new configuration to support the mbed.org LPC1768 board (Contributed
by Dave Marples), and
* A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part,
+
+nuttx-5.12
+^^^^^^^^^^
+
+This is the 59th release of NuttX. This is a critical bugfix release.
+
+ * Fixed an important error in the signal trampoline logic. Essentially,
+ interrupts are re-enabled while the signal handler executes, but the
+ logic to re-disable the interrupts before returning from the signal
+ handler trampoline was missing. Under certain circumstances, this
+ can cause stack corruption. This was discovered by David Hewson on
+ an ARM9 platform, but since the code has been leveraged, the bug has
+ been propogated from ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80,
+ Z8, and Z80 -- almost every architecture. The correction has been
+ incorporated for all architectures but only verified on a few.
+
+Other notable changes in NuttX-5.12:
+
+ * A complete port for the AVR32 (AT91UC3B0256) is incorporated in the
+ source tree. Testing of this port is underway now. This release
+ was made before verifying this port in order to get the important
+ bugfix in place.
+ * Other miscellaneous bugfix and enhancements as noted in the ChangeLog.
diff --git a/nuttx/arch/arm/src/arm/up_fullcontextrestore.S b/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
index c99337636..d0745ef5b 100644
--- a/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
+++ b/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
@@ -1,7 +1,7 @@
/**************************************************************************
* arch/arm/src/arm/up_fullcontextrestore.S
*
- * Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007, 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -95,9 +95,10 @@ up_fullcontextrestore:
/* Now we can restore the CPSR. We wait until we are completely
* finished with the context save data to do this. Restore the CPSR
- * may re-enable and interrupts and we couldt be in a context
- * where save structure is only protected by interrupts being disabled.
- */
+ * may re-enable and interrupts and we could be in a context
+ * where the save structure is only protected by interrupts being
+ * disabled.
+ */
ldr r1, [r0, #(4*REG_CPSR)] /* Fetch the stored CPSR value */
msr cpsr, r1 /* Set the CPSR */
diff --git a/nuttx/arch/arm/src/arm/up_schedulesigaction.c b/nuttx/arch/arm/src/arm/up_schedulesigaction.c
index 631296800..0dfb6e540 100644
--- a/nuttx/arch/arm/src/arm/up_schedulesigaction.c
+++ b/nuttx/arch/arm/src/arm/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/arm/up_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/arm/src/arm/up_sigdeliver.c b/nuttx/arch/arm/src/arm/up_sigdeliver.c
index a2358a044..f92f85e7e 100644
--- a/nuttx/arch/arm/src/arm/up_sigdeliver.c
+++ b/nuttx/arch/arm/src/arm/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/arm/up_sigdeliver.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -105,11 +104,9 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_CPSR] = rtcb->xcp.saved_cpsr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
- * signals.
+ /* Get a local copy of the sigdeliver function pointer. we do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -123,18 +120,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c b/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
index e4f4f51b4..879cd6715 100644
--- a/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
+++ b/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/cortexm3/up_schedulesigaction.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c b/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
index e350f126a..f05b7ce69 100644
--- a/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
+++ b/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/cortexm3/up_sigdeliver.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -106,11 +105,9 @@ void up_sigdeliver(void)
regs[REG_PRIMASK] = rtcb->xcp.saved_primask;
regs[REG_XPSR] = rtcb->xcp.saved_xpsr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
- * signals.
+ /* Get a local copy of the sigdeliver function pointer. We do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -124,13 +121,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/avr/src/avr32/up_sigdeliver.c b/nuttx/arch/avr/src/avr32/up_sigdeliver.c
index 599b6f0d0..aa3940b79 100644
--- a/nuttx/arch/avr/src/avr32/up_sigdeliver.c
+++ b/nuttx/arch/avr/src/avr32/up_sigdeliver.c
@@ -103,9 +103,9 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_SR] = rtcb->xcp.saved_sr;
- /* Get a local copy of the sigdeliver function pointer. We do this so tha
- * we can nullify the sigdeliver function point in the TCB and accept more
- * signal deliveries while processing the current pending signals.
+ /* Get a local copy of the sigdeliver function pointer. We do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -119,17 +119,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (becuase they may
- * alter errno), then restore the original errno that is needed by
- * the user logic (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c b/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
index ae53e4ff5..d921fca01 100644
--- a/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
+++ b/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/m16c/m16c_schedulesigaction.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c b/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
index 4493c28b4..848249721 100644
--- a/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
+++ b/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/m16c/m16c_sigdeliver.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint8_t regs[XCPTCONTEXT_SIZE];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -106,10 +105,9 @@ void up_sigdeliver(void)
regs[REG_PC+1] = rtcb->xcp.saved_pc[1];
regs[REG_FLG] = rtcb->xcp.saved_flg;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
+ /* Get a local copy of the sigdeliver function pointer. We do this so
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
* signals.
*/
@@ -124,13 +122,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c b/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
index 6e7ba34e8..4454195d6 100644
--- a/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
+++ b/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/sh1/sh1_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c b/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
index cddec6041..568b448e3 100644
--- a/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
+++ b/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -105,17 +104,16 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_SR] = rtcb->xcp.saved_sr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
+ /* Get a local copy of the sigdeliver function pointer. We do this so
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
* signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
rtcb->xcp.sigdeliver = NULL;
- /* Then restore the task interrupt statat. */
+ /* Then restore the task interrupt state. */
irqrestore(regs[REG_SR] & 0x000000f0);
@@ -123,18 +121,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/sim/src/up_schedulesigaction.c b/nuttx/arch/sim/src/up_schedulesigaction.c
index b22aa5252..ca61e8ddf 100644
--- a/nuttx/arch/sim/src/up_schedulesigaction.c
+++ b/nuttx/arch/sim/src/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* up_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -98,7 +98,7 @@
void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver)
{
- /* We don't have to anything complex of the simulated target */
+ /* We don't have to anything complex for the simulated target */
if (tcb == (_TCB*)g_readytorun.head)
{
diff --git a/nuttx/arch/z16/src/common/up_schedulesigaction.c b/nuttx/arch/z16/src/common/up_schedulesigaction.c
index e76a8c4ff..368b2ed54 100644
--- a/nuttx/arch/z16/src/common/up_schedulesigaction.c
+++ b/nuttx/arch/z16/src/common/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z16/src/common/up_sigdeliver.c b/nuttx/arch/z16/src/common/up_sigdeliver.c
index 85f3e972d..4ca05d17b 100644
--- a/nuttx/arch/z16/src/common/up_sigdeliver.c
+++ b/nuttx/arch/z16/src/common/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -95,8 +95,8 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
- rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
/* Save the real return state on the stack. */
@@ -125,17 +125,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may
- * alter errno), then restore the original errno that is needed by
- * the user logic (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
SIGNAL_RETURN(regs);
diff --git a/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c b/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
index 8c9a84260..ce48fe987 100644
--- a/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
+++ b/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/ez80/ez80_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c b/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
index 90fdf4c6b..86aaad2d5 100644
--- a/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
+++ b/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/ez80/ez80_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -106,8 +105,9 @@ void up_sigdeliver(void)
regs[XCPT_I] = rtcb->xcp.saved_i;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -121,12 +121,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/z80/src/z8/z8_schedulesigaction.c b/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
index 0a5b9c095..1f1a35471 100644
--- a/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
+++ b/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z8/z8_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/z8/z8_sigdeliver.c b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
index badb8a328..c5cf30aa6 100644
--- a/nuttx/arch/z80/src/z8/z8_sigdeliver.c
+++ b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z8/z8_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -86,10 +86,9 @@ static void z8_copystate(FAR chipreg_t *dest, FAR const chipreg_t *src)
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -109,7 +108,7 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
@@ -120,8 +119,9 @@ void up_sigdeliver(void)
regs[XCPT_IRQCTL] = rtcb->xcp.saved_irqctl;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -135,17 +135,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
z8_restorecontext(regs);
diff --git a/nuttx/arch/z80/src/z80/z80_schedulesigaction.c b/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
index 19ea6d6bc..24b12731c 100644
--- a/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
+++ b/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z80/z80_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/z80/z80_sigdeliver.c b/nuttx/arch/z80/src/z80/z80_sigdeliver.c
index 884a5c4b6..c6aa5ff3c 100644
--- a/nuttx/arch/z80/src/z80/z80_sigdeliver.c
+++ b/nuttx/arch/z80/src/z80/z80_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z80/z80_sigdeliver.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -71,10 +71,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -94,7 +93,7 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
@@ -105,8 +104,9 @@ void up_sigdeliver(void)
regs[XCPT_I] = rtcb->xcp.saved_i;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -120,17 +120,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
z80_restoreusercontext(regs);
diff --git a/nuttx/configs/sam3u-ek/nsh/defconfig b/nuttx/configs/sam3u-ek/nsh/defconfig
index 25854b145..a01555654 100755
--- a/nuttx/configs/sam3u-ek/nsh/defconfig
+++ b/nuttx/configs/sam3u-ek/nsh/defconfig
@@ -632,6 +632,93 @@ CONFIG_USBSTRG_VERSIONNO=0x0399
CONFIG_USBSTRG_REMOVABLE=y
#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+# Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+# Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+# Some YUV color formats requires support for multiple planes,
+# one for each color component. Unless you have such special
+# hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+# NX supports a variety of pixel depths. You can save some
+# memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+# If a pixel depth of less than 8-bits is used, then NX needs
+# to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_LCDDRIVER
+# By default, NX builds to use a framebuffer driver (see
+# include/nuttx/fb.h). If this option is defined, NX will
+# build to use an LCD driver (see include/nuttx/lcd.h).
+# CONFIG_LCD_MAXPOWER - The full-on power setting for an LCD device.
+# CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device.
+# CONFIG_NX_MOUSE
+# Build in support for mouse input
+# CONFIG_NX_KBD
+# Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+# Specifies with with of the border (in pixels) used with
+# framed windows. The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+# Specify the colors of the border used with framed windows.
+# CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+# is normally darker. The default is medium and dark grey,
+# respectively
+# CONFIG_NXTK_AUTORAISE
+# If set, a window will be raised to the top if the mouse position
+# is over a visible portion of the window. Default: A mouse
+# button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+# The number of bits in the character set. Current options are
+# only 7 and 8. The default is 7.
+# CONFIG_NXFONT_SANS
+# At present, there is only one font. But if there were were more,
+# then this option would select the sans serif font.
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+# Open the client message queues in blocking mode. In this case,
+# nx_eventhandler() will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+# Specifies the maximum number of messages that can fit in
+# the message queues. No additional resources are allocated, but
+# this can be set to prevent flooding of the client or server with
+# too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+# messages are pre-allocated).
+#
+CONFIG_NX=n
+CONFIG_NX_MULTIUSER=n
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=n
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=y
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_LCDDRIVER=y
+CONFIG_LCD_MAXPOWER=31
+CONFIG_LCD_MAXCONTRAST=1
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+#CONFIG_NXTK_BORDERCOLOR1
+#CONFIG_NXTK_BORDERCOLOR2
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONT_SANS=y
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
+#
# Settings for examples/uip
#
CONFIG_EXAMPLE_UIP_IPADDR=(10<<24|0<<16|0<<8|2)
diff --git a/nuttx/configs/sam3u-ek/ostest/defconfig b/nuttx/configs/sam3u-ek/ostest/defconfig
index 54706dcbd..8f42884b2 100755
--- a/nuttx/configs/sam3u-ek/ostest/defconfig
+++ b/nuttx/configs/sam3u-ek/ostest/defconfig
@@ -630,6 +630,93 @@ CONFIG_USBSTRG_VERSIONNO=0x0399
CONFIG_USBSTRG_REMOVABLE=y
#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+# Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+# Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+# Some YUV color formats requires support for multiple planes,
+# one for each color component. Unless you have such special
+# hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+# NX supports a variety of pixel depths. You can save some
+# memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+# If a pixel depth of less than 8-bits is used, then NX needs
+# to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_LCDDRIVER
+# By default, NX builds to use a framebuffer driver (see
+# include/nuttx/fb.h). If this option is defined, NX will
+# build to use an LCD driver (see include/nuttx/lcd.h).
+# CONFIG_LCD_MAXPOWER - The full-on power setting for an LCD device.
+# CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device.
+# CONFIG_NX_MOUSE
+# Build in support for mouse input
+# CONFIG_NX_KBD
+# Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+# Specifies with with of the border (in pixels) used with
+# framed windows. The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+# Specify the colors of the border used with framed windows.
+# CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+# is normally darker. The default is medium and dark grey,
+# respectively
+# CONFIG_NXTK_AUTORAISE
+# If set, a window will be raised to the top if the mouse position
+# is over a visible portion of the window. Default: A mouse
+# button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+# The number of bits in the character set. Current options are
+# only 7 and 8. The default is 7.
+# CONFIG_NXFONT_SANS
+# At present, there is only one font. But if there were were more,
+# then this option would select the sans serif font.
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+# Open the client message queues in blocking mode. In this case,
+# nx_eventhandler() will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+# Specifies the maximum number of messages that can fit in
+# the message queues. No additional resources are allocated, but
+# this can be set to prevent flooding of the client or server with
+# too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+# messages are pre-allocated).
+#
+CONFIG_NX=n
+CONFIG_NX_MULTIUSER=n
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=n
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=y
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_LCDDRIVER=y
+CONFIG_LCD_MAXPOWER=31
+CONFIG_LCD_MAXCONTRAST=1
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+#CONFIG_NXTK_BORDERCOLOR1
+#CONFIG_NXTK_BORDERCOLOR2
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONT_SANS=y
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
+#
# Settings for examples/uip
#
CONFIG_EXAMPLE_UIP_IPADDR=(10<<24|0<<16|0<<8|2)