From 21f2738e02dd053cd9a9d3760e32b1c15677264c Mon Sep 17 00:00:00 2001 From: patacongo Date: Mon, 7 Jan 2013 23:09:09 +0000 Subject: Disable the vfork() OS test... it fails git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5489 42af7a65-404d-4744-a932-0658087f49c3 --- apps/examples/ostest/vfork.c | 10 ++++++++++ nuttx/arch/arm/src/common/up_vfork.c | 10 +++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/apps/examples/ostest/vfork.c b/apps/examples/ostest/vfork.c index 6c83047e3..8657f0ceb 100644 --- a/apps/examples/ostest/vfork.c +++ b/apps/examples/ostest/vfork.c @@ -47,6 +47,16 @@ #include "ostest.h" +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Disabled this test for now. There are some issues with the vfork + * implementation. +*/ + +#undef CONFIG_ARCH_HAVE_VFORK + /**************************************************************************** * Private Data ****************************************************************************/ diff --git a/nuttx/arch/arm/src/common/up_vfork.c b/nuttx/arch/arm/src/common/up_vfork.c index 2e3c2d4a1..3da602679 100644 --- a/nuttx/arch/arm/src/common/up_vfork.c +++ b/nuttx/arch/arm/src/common/up_vfork.c @@ -169,7 +169,11 @@ pid_t up_vfork(struct vfork_s *context) return (pid_t)ERROR; } - /* How much of the parent's stack was utilized? */ + /* How much of the parent's stack was utilized? The ARM uses + * a push-down stack so that the current stack pointer should + * be lower than the initial, adjusted stack pointer. The + * stack usage should be the difference between those two. + */ DEBUGASSERT((uint32_t)parent->adj_stack_ptr > context->sp); stackutil = (uint32_t)parent->adj_stack_ptr - context->sp; @@ -177,7 +181,7 @@ pid_t up_vfork(struct vfork_s *context) svdbg("stacksize:%d stackutil:%d\n", stacksize, stackutil); /* Make some feeble effort to perserve the stack contents. This is - * feeble because the stack surely contains invalid pointer and other + * feeble because the stack surely contains invalid pointers and other * content that will not work in the child context. However, if the * user follows all of the caveats of vfor() usage, even this feeble * effort is overkill. @@ -204,7 +208,7 @@ pid_t up_vfork(struct vfork_s *context) svdbg("New stack base:%08x SP:%08x FP:%08x\n", child->adj_stack_ptr, newsp, newfp); - /* Update the stack pointer, frame pointer, and voltile registers. When + /* Update the stack pointer, frame pointer, and voltile registers. When * the child TCB was initialized, all of the values were set to zero. * up_initial_state() altered a few values, but the return value in R0 * should be cleared to zero, providing the indication to the newly started -- cgit v1.2.3