Create sched_ufree and sched_kfree from sched_free; Use user-accessible heap to allocae stacks
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5725 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
e47c64204c
commit
3dc5b1fa9f
@ -1,4 +1,4 @@
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* up_idle.c
|
||||
*
|
||||
* Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
|
||||
@ -33,7 +33,7 @@
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* Included Files
|
||||
************************************************************************/
|
||||
|
||||
@ -44,27 +44,27 @@
|
||||
|
||||
#include "up_internal.h"
|
||||
|
||||
/************************************************************
|
||||
* Private Definitions
|
||||
/************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* Private Data
|
||||
************************************************************************/
|
||||
|
||||
#if defined(CONFIG_ARCH_LEDS) && defined(CONFIG_ARCH_BRINGUP)
|
||||
static /**************** g_ledtoggle = 0;
|
||||
static uint8_t g_ledtoggle = 0;
|
||||
#endif
|
||||
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************
|
||||
/************************************************************************
|
||||
* Name: up_idle
|
||||
*
|
||||
* Description:
|
||||
@ -93,4 +93,3 @@ void up_idle(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -149,9 +149,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -95,7 +95,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -108,9 +108,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (FAR void *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (FAR void *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (FAR void *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (FAR void *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -92,7 +92,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -94,7 +94,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -107,9 +107,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (FAR void *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (FAR void *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (FAR void *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (FAR void *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -89,7 +89,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -104,9 +104,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -72,7 +72,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr && tcb->adj_stack_size != stack_size)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -125,9 +125,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -123,7 +123,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
|
||||
/* Allocate the memory for the stack */
|
||||
|
||||
uint32_t *stack_alloc_ptr = (uint32_t*)kmalloc(adj_stack_size);
|
||||
uint32_t *stack_alloc_ptr = (uint32_t*)kumalloc(adj_stack_size);
|
||||
if (stack_alloc_ptr) {
|
||||
/* This is the address of the last word in the allocation */
|
||||
|
||||
@ -161,7 +161,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr) {
|
||||
kfree(dtcb->stack_alloc_ptr);
|
||||
kufree(dtcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
|
@ -91,7 +91,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -104,9 +104,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -96,7 +96,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
|
||||
/* Allocate the memory for the stack */
|
||||
|
||||
uint32_t *stack_alloc_ptr = (uint32_t*)kmalloc(adj_stack_size);
|
||||
uint32_t *stack_alloc_ptr = (uint32_t*)kumalloc(adj_stack_size);
|
||||
if (stack_alloc_ptr)
|
||||
{
|
||||
/* This is the address of the last word in the allocation */
|
||||
|
@ -93,7 +93,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -106,9 +106,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -92,7 +92,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -105,9 +105,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
@ -91,7 +91,7 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
{
|
||||
/* Yes.. free it */
|
||||
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
tcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
@ -104,9 +104,9 @@ int up_create_stack(struct tcb_s *tcb, size_t stack_size)
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kzalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kuzalloc(stack_size);
|
||||
#else
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kmalloc(stack_size);
|
||||
tcb->stack_alloc_ptr = (uint32_t *)kumalloc(stack_size);
|
||||
#endif
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!tcb->stack_alloc_ptr)
|
||||
|
@ -71,7 +71,7 @@ void up_release_stack(struct tcb_s *dtcb)
|
||||
{
|
||||
if (dtcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(dtcb->stack_alloc_ptr);
|
||||
sched_ufree(dtcb->stack_alloc_ptr);
|
||||
dtcb->stack_alloc_ptr = NULL;
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
|
||||
|
||||
if (tcb->stack_alloc_ptr)
|
||||
{
|
||||
sched_free(tcb->stack_alloc_ptr);
|
||||
sched_ufree(tcb->stack_alloc_ptr);
|
||||
}
|
||||
|
||||
/* Save the stack allocation */
|
||||
|
Loading…
Reference in New Issue
Block a user