git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@409 35acf78f-673a-0410-8e92-d51de3d6d3f4

master
gdisirio 2008-08-26 14:43:09 +00:00
parent d9d134c7ad
commit 3ae2e8ddb3
8 changed files with 105 additions and 4 deletions

View File

@ -77,11 +77,13 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
*** 0.7.0 *** *** 0.7.0 ***
- NEW: Memory Pools functionality added, this mechanism allows constant-time - NEW: Memory Pools functionality added, this mechanism allows constant-time
allocation/freeing of constant size objects. It can be used to dynamically allocation/freeing of constant size objects. It can be used to dynamically
allocate kernel objects like Semaphores, Mutexes, Threads etc it can also allocate kernel objects like Semaphores, Mutexes, Threads etc, of course it
handle application-defined objects. The allocator is, of course, thread-safe. is also possible to handle application-defined objects. The allocator is
thread-safe.
- NEW: Kernel-provided sbrk() function, it is used internally by the Memory - NEW: Kernel-provided sbrk() function, it is used internally by the Memory
Pools but can also be used by the C runtime. There is also an option to Pools but can also be used by the C runtime. There is also an option to
meke the Memory Pools use an user-provided sbrk() function. meke the Memory Pools use an user-provided sbrk() function.
- Added a Memory Pools test case to the test suite.
*** 0.6.10 *** *** 0.6.10 ***
- FIX: Fixed a case-sensitiveness error in lpc214x_ssp.c, it affected only - FIX: Fixed a case-sensitiveness error in lpc214x_ssp.c, it affected only

View File

@ -6,4 +6,4 @@ KERNSRC = ../../src/chinit.c ../../src/chdebug.c \
../../src/chsem.c ../../src/chmtx.c \ ../../src/chsem.c ../../src/chmtx.c \
../../src/chevents.c ../../src/chmsg.c \ ../../src/chevents.c ../../src/chmsg.c \
../../src/chsleep.c ../../src/chqueues.c \ ../../src/chsleep.c ../../src/chqueues.c \
../../src/chserial.c ../../src/chpools.c ../../src/chserial.c ../../src/chmempools.c

View File

@ -24,6 +24,7 @@
#include "testsem.h" #include "testsem.h"
#include "testmtx.h" #include "testmtx.h"
#include "testmsg.h" #include "testmsg.h"
#include "testpools.h"
#include "testbmk.h" #include "testbmk.h"
/* /*
@ -34,10 +35,15 @@ static const struct testcase *tests[] = {
&testrdy2, &testrdy2,
&testsem1, &testsem1,
&testsem2, &testsem2,
#ifdef CH_USE_MUTEXES
&testmtx1, &testmtx1,
&testmtx2, &testmtx2,
&testmtx3, &testmtx3,
#endif
&testmsg1, &testmsg1,
#ifdef CH_USE_MEMPOOLS
&testpools1,
#endif
&testbmk1, &testbmk1,
&testbmk2, &testbmk2,
&testbmk3, &testbmk3,

View File

@ -1,3 +1,4 @@
# List of all the ChibiOS/RT test files. # List of all the ChibiOS/RT test files.
TESTSRC = ../../test/test.c ../../test/testrdy.c ../../test/testsem.c \ TESTSRC = ../../test/test.c ../../test/testrdy.c ../../test/testsem.c \
../../test/testmtx.c ../../test/testmsg.c ../../test/testbmk.c ../../test/testmtx.c ../../test/testmsg.c ../../test/testpools.c \
../../test/testbmk.c

View File

@ -21,6 +21,8 @@
#include "test.h" #include "test.h"
#ifdef CH_USE_MUTEXES
#define ALLOWED_DELAY 5 #define ALLOWED_DELAY 5
static Mutex m1, m2; static Mutex m1, m2;
@ -219,3 +221,5 @@ const struct testcase testmtx3 = {
mtx3_teardown, mtx3_teardown,
mtx3_execute mtx3_execute
}; };
#endif /* CH_USE_MUTEXES */

63
test/testpools.c Normal file
View File

@ -0,0 +1,63 @@
/*
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
This file is part of ChibiOS/RT.
ChibiOS/RT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/RT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <ch.h>
#include "test.h"
#ifdef CH_USE_MEMPOOLS
static MemoryPool mp1;
static char *pools1_gettest(void) {
return "Memory Pools, allocation and enqueuing test";
}
static void pools1_setup(void) {
chPoolInit(&mp1, UserStackSize(THREADS_STACK_SIZE));
}
static void pools1_teardown(void) {
}
static void pools1_execute(void) {
int i;
/* Adding the WAs to the pool. */
for (i = 0; i < 5; i++)
chPoolFree(&mp1, wa[i]);
/* Empting the pool again. */
for (i = 0; i < 5; i++)
test_assert(chPoolAlloc(&mp1, FALSE) != NULL, "pool list empty");
/* Now must be empty. */
test_assert(chPoolAlloc(&mp1, FALSE) == NULL, "pool list not empty");
}
const struct testcase testpools1 = {
pools1_gettest,
pools1_setup,
pools1_teardown,
pools1_execute
};
#endif /* CH_USE_MEMPOOLS */

25
test/testpools.h Normal file
View File

@ -0,0 +1,25 @@
/*
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
This file is part of ChibiOS/RT.
ChibiOS/RT is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/RT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TESTPOOLS_H_
#define _TESTPOOLS_H_
extern const struct testcase testpools1;
#endif /* _TESTPOOLS_H_ */