From 7ff6115b8b913d848b8fe76daf72ca0b4bbf2548 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 20 Nov 2008 20:01:13 +0000 Subject: 2008-11-20 Joel Sherrill * score/include/rtems/score/heap.h, score/include/rtems/score/protectedheap.h, score/include/rtems/score/wkspace.h, score/src/heap.c, score/src/heapallocate.c, score/src/heapallocatealigned.c, score/src/heapextend.c, score/src/heapresizeblock.c, score/src/heapsizeofuserarea.c, score/src/pheapgetblocksize.c, score/src/wkspace.c: Revert use of ssize_t. This type is not guaranteed to be able to represent a positive number greater than the size of a single allocatable object. We needed a type that is able to represent the size of a pool of multiple allocatable objects or potentially nearly all memory. --- cpukit/ChangeLog | 14 ++++++++++++++ cpukit/score/include/rtems/score/heap.h | 18 ++++++++---------- cpukit/score/include/rtems/score/protectedheap.h | 4 ++-- cpukit/score/include/rtems/score/wkspace.h | 6 +++--- cpukit/score/src/heap.c | 11 ++++++----- cpukit/score/src/heapallocate.c | 2 +- cpukit/score/src/heapallocatealigned.c | 2 +- cpukit/score/src/heapextend.c | 2 +- cpukit/score/src/heapresizeblock.c | 2 +- cpukit/score/src/heapsizeofuserarea.c | 2 +- cpukit/score/src/pheapgetblocksize.c | 2 +- cpukit/score/src/wkspace.c | 6 +++--- 12 files changed, 42 insertions(+), 29 deletions(-) diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 2b07ea6158..49bf76404c 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,17 @@ +2008-11-20 Joel Sherrill + + * score/include/rtems/score/heap.h, + score/include/rtems/score/protectedheap.h, + score/include/rtems/score/wkspace.h, score/src/heap.c, + score/src/heapallocate.c, score/src/heapallocatealigned.c, + score/src/heapextend.c, score/src/heapresizeblock.c, + score/src/heapsizeofuserarea.c, score/src/pheapgetblocksize.c, + score/src/wkspace.c: Revert use of ssize_t. This type is not + guaranteed to be able to represent a positive number greater than the + size of a single allocatable object. We needed a type that is able to + represent the size of a pool of multiple allocatable objects or + potentially nearly all memory. + 2008-11-20 Joel Sherrill * libcsupport/src/newlibc_exit.c, score/src/threadhandler.c: Do not diff --git a/cpukit/score/include/rtems/score/heap.h b/cpukit/score/include/rtems/score/heap.h index 78c15522fd..0587852d78 100644 --- a/cpukit/score/include/rtems/score/heap.h +++ b/cpukit/score/include/rtems/score/heap.h @@ -31,8 +31,6 @@ #ifndef _RTEMS_SCORE_HEAP_H #define _RTEMS_SCORE_HEAP_H -#include - /** * @defgroup ScoreHeap Heap Handler * @@ -264,7 +262,7 @@ typedef struct { uint32_t _Heap_Initialize( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t page_size ); @@ -283,7 +281,7 @@ uint32_t _Heap_Initialize( Heap_Extend_status _Heap_Extend( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t *amount_extended ); @@ -298,7 +296,7 @@ Heap_Extend_status _Heap_Extend( */ void *_Heap_Allocate( Heap_Control *the_heap, - ssize_t size + size_t size ); /** @@ -317,7 +315,7 @@ void *_Heap_Allocate( */ void *_Heap_Allocate_aligned( Heap_Control *the_heap, - ssize_t size, + size_t size, uint32_t alignment ); @@ -338,7 +336,7 @@ void *_Heap_Allocate_aligned( bool _Heap_Size_of_user_area( Heap_Control *the_heap, void *starting_address, - ssize_t *size + size_t *size ); /** @@ -366,7 +364,7 @@ bool _Heap_Size_of_user_area( Heap_Resize_status _Heap_Resize_block( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t *old_mem_size, uint32_t *avail_mem_size ); @@ -451,8 +449,8 @@ void _Heap_Get_free_information( * * @return This method returns block size on success, 0 if overflow occured. */ -extern ssize_t _Heap_Calc_block_size( - ssize_t size, +extern size_t _Heap_Calc_block_size( + size_t size, uint32_t page_size, uint32_t min_size ); diff --git a/cpukit/score/include/rtems/score/protectedheap.h b/cpukit/score/include/rtems/score/protectedheap.h index 508e548354..78c2abc3d2 100644 --- a/cpukit/score/include/rtems/score/protectedheap.h +++ b/cpukit/score/include/rtems/score/protectedheap.h @@ -54,7 +54,7 @@ extern "C" { static inline uint32_t _Protected_heap_Initialize( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t page_size ) { @@ -128,7 +128,7 @@ void *_Protected_heap_Allocate_aligned( bool _Protected_heap_Get_block_size( Heap_Control *the_heap, void *starting_address, - ssize_t *size + size_t *size ); /** diff --git a/cpukit/score/include/rtems/score/wkspace.h b/cpukit/score/include/rtems/score/wkspace.h index 36fa34b420..b4047c56fa 100644 --- a/cpukit/score/include/rtems/score/wkspace.h +++ b/cpukit/score/include/rtems/score/wkspace.h @@ -52,7 +52,7 @@ SCORE_EXTERN Heap_Control _Workspace_Area; /* executive heap header */ */ void _Workspace_Handler_initialization( void *starting_address, - ssize_t size + size_t size ); /** @brief Allocate Memory from Workspace @@ -66,7 +66,7 @@ void _Workspace_Handler_initialization( * @return a pointer to the requested memory or NULL. */ void *_Workspace_Allocate( - ssize_t size + size_t size ); /** @brief Free Memory to the Workspace @@ -94,7 +94,7 @@ bool _Workspace_Free( * @return If successful, the starting address of the allocated memory */ void *_Workspace_Allocate_or_fatal_error( - ssize_t size + size_t size ); #ifndef __RTEMS_APPLICATION__ diff --git a/cpukit/score/src/heap.c b/cpukit/score/src/heap.c index 8c55b06ecd..042dc6d604 100644 --- a/cpukit/score/src/heap.c +++ b/cpukit/score/src/heap.c @@ -111,10 +111,11 @@ static uint32_t instance = 0; * +--------------------------------+ <- end = begin + size * */ + uint32_t _Heap_Initialize( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t page_size ) { @@ -206,10 +207,10 @@ uint32_t _Heap_Initialize( * Convert user requested 'size' of memory block to the block size. * Return block size on success, 0 if overflow occured */ -ssize_t _Heap_Calc_block_size( - ssize_t size, - uint32_t page_size, - uint32_t min_size) +size_t _Heap_Calc_block_size( + size_t size, + uint32_t page_size, + uint32_t min_size) { uint32_t block_size = size + HEAP_BLOCK_USED_OVERHEAD; _Heap_Align_up(&block_size, page_size); diff --git a/cpukit/score/src/heapallocate.c b/cpukit/score/src/heapallocate.c index 6432556fc5..418ee758fc 100644 --- a/cpukit/score/src/heapallocate.c +++ b/cpukit/score/src/heapallocate.c @@ -36,7 +36,7 @@ void *_Heap_Allocate( Heap_Control *the_heap, - ssize_t size + size_t size ) { uint32_t the_size; diff --git a/cpukit/score/src/heapallocatealigned.c b/cpukit/score/src/heapallocatealigned.c index 6ac1425063..3fda404490 100644 --- a/cpukit/score/src/heapallocatealigned.c +++ b/cpukit/score/src/heapallocatealigned.c @@ -131,7 +131,7 @@ Heap_Block *block_allocate( void *_Heap_Allocate_aligned( Heap_Control *the_heap, - ssize_t size, + size_t size, uint32_t alignment ) { diff --git a/cpukit/score/src/heapextend.c b/cpukit/score/src/heapextend.c index 0e0329f4e6..73eb91f127 100644 --- a/cpukit/score/src/heapextend.c +++ b/cpukit/score/src/heapextend.c @@ -38,7 +38,7 @@ Heap_Extend_status _Heap_Extend( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t *amount_extended ) { diff --git a/cpukit/score/src/heapresizeblock.c b/cpukit/score/src/heapresizeblock.c index 760d49bc39..49460f9767 100644 --- a/cpukit/score/src/heapresizeblock.c +++ b/cpukit/score/src/heapresizeblock.c @@ -47,7 +47,7 @@ Heap_Resize_status _Heap_Resize_block( Heap_Control *the_heap, void *starting_address, - ssize_t size, + size_t size, uint32_t *old_mem_size, uint32_t *avail_mem_size ) diff --git a/cpukit/score/src/heapsizeofuserarea.c b/cpukit/score/src/heapsizeofuserarea.c index 136389e878..c1555d2ccc 100644 --- a/cpukit/score/src/heapsizeofuserarea.c +++ b/cpukit/score/src/heapsizeofuserarea.c @@ -42,7 +42,7 @@ bool _Heap_Size_of_user_area( Heap_Control *the_heap, void *starting_address, - ssize_t *size + size_t *size ) { Heap_Block *the_block; diff --git a/cpukit/score/src/pheapgetblocksize.c b/cpukit/score/src/pheapgetblocksize.c index 6baa8f5632..029ef7b2c7 100644 --- a/cpukit/score/src/pheapgetblocksize.c +++ b/cpukit/score/src/pheapgetblocksize.c @@ -19,7 +19,7 @@ bool _Protected_heap_Get_block_size( Heap_Control *the_heap, void *starting_address, - ssize_t *size + size_t *size ) { bool status; diff --git a/cpukit/score/src/wkspace.c b/cpukit/score/src/wkspace.c index 591427cb64..ebb71f3297 100644 --- a/cpukit/score/src/wkspace.c +++ b/cpukit/score/src/wkspace.c @@ -27,7 +27,7 @@ */ void _Workspace_Handler_initialization( void *starting_address, - ssize_t size + size_t size ) { uint32_t memory_available; @@ -61,7 +61,7 @@ void _Workspace_Handler_initialization( * _Workspace_Allocate */ void *_Workspace_Allocate( - ssize_t size + size_t size ) { return _Heap_Allocate( &_Workspace_Area, size ); @@ -81,7 +81,7 @@ bool _Workspace_Free( * _Workspace_Allocate_or_fatal_error */ void *_Workspace_Allocate_or_fatal_error( - ssize_t size + size_t size ) { void *memory; -- cgit v1.2.3