URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/rtems/c/src/tests/itrontests
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/itronhello/itronhello.scn
0,0 → 1,3
*** ITRON HELLO WORLD TEST *** |
Hello World |
*** END OF ITRON HELLO WORLD TEST *** |
/itronhello/itronhello.doc
0,0 → 1,23
# |
# $Id: itronhello.doc,v 1.3 1999/11/17 16:47:47 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
This file describes the directives and concepts tested by this test set. |
|
test set name: itronhello |
|
directives: |
cre_tsk, sta_tsk |
|
concepts: |
|
a. Verifies the initial itron task can be created and started. |
|
|
/itronhello/init.c
0,0 → 1,33
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:09 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
|
void ITRON_Init( void ) |
{ |
printf( "\n\n*** ITRON HELLO WORLD TEST ***\n" ); |
printf( "Hello World\n" ); |
printf( "*** END OF ITRON HELLO WORLD TEST ***\n" ); |
exit( 0 ); |
} |
/itronhello/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:09 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itronhello |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itronhello/system.h
0,0 → 1,39
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:09 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 1 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itrontask01/itrontask01.scn
0,0 → 1,18
*** ITRON TASK TEST 1 *** |
TA1 - rtems_clock_get - 09:00:00 12/31/1988 |
TA2 - rtems_clock_get - 09:00:00 12/31/1988 |
TA3 - rtems_clock_get - 09:00:00 12/31/1988 |
TA1 - rtems_clock_get - 09:00:05 12/31/1988 |
TA2 - rtems_clock_get - 09:00:10 12/31/1988 |
TA1 - rtems_clock_get - 09:00:10 12/31/1988 |
TA3 - rtems_clock_get - 09:00:15 12/31/1988 |
TA1 - rtems_clock_get - 09:00:15 12/31/1988 |
TA2 - rtems_clock_get - 09:00:20 12/31/1988 |
TA1 - rtems_clock_get - 09:00:20 12/31/1988 |
TA1 - rtems_clock_get - 09:00:25 12/31/1988 |
TA3 - rtems_clock_get - 09:00:30 12/31/1988 |
TA1 - rtems_clock_get - 09:00:30 12/31/1988 |
TA2 - rtems_clock_get - 09:00:30 12/31/1988 |
*** END OF ITRON TASK TEST 1 *** |
|
NOTE: The order of the prints at each time interval is irrelevant. |
/itrontask01/itrontask01.doc
0,0 → 1,61
# |
# $Id: itrontask01.doc,v 1.4 1999/11/17 16:47:52 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
This file describes the directives and concepts tested by this test set. |
This test is based upon the test in sp01. |
|
test set name: itrontask01 |
|
directives: |
cre_tsk, exd_tsk, get_tid, sta_tsk |
|
concepts: XXX verify |
|
a. Verifies system can create and start both the executive's system |
initialization and idle task. |
|
b. Verifies executive can swap between three application tasks at the |
same priority and the executive's internal idle task. |
|
c. Verifies can print strings to the CRT on port 2 of the mvme136 board |
using Print and Println in the board support package. |
|
d. Verifies interrupt handler can handle a task switch from an interrupt |
as specified with the i_return directive. |
|
e. Verifies executive initialization performed correctly. |
|
f. Verifies the executive trap handler except for the halt function. |
|
g. Verifies that a task can get the task identification number of itself. |
|
a. Verifies exd_tsk |
|
b. Verifies get_tid |
|
notes: |
|
rtems clock directives should change to itron clock directives when |
the clock directives are merged. |
|
change rtems task wake after to itron routines. |
|
output: |
"TA1" is printed once every 5 seconds. |
"TA2" is printed once every 10 seconds. |
"TA3" is printed once every 15 seconds. |
|
|
|
|
|
|
|
/itrontask01/init.c
0,0 → 1,71
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
|
void ITRON_Init( void ) |
{ |
rtems_time_of_day time; |
ER status; |
T_CTSK pk_ctsk; |
|
puts( "\n\n*** ITRON TASK TEST 1 ***" ); |
|
/* |
* XXX - Change this to an itron clock !! |
*/ |
|
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 ); |
status = rtems_clock_set( &time ); |
directive_failed( status, "rtems_clock_set" ); |
|
pk_ctsk.exinf = NULL; |
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.itskpri = 1; |
pk_ctsk.task = Task_2_through_4; |
|
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE * 2; |
status = cre_tsk( 2, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA1" ); |
|
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE * 2; |
status = cre_tsk( 3, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA2" ); |
|
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE * 3; |
status = cre_tsk( 4, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA3" ); |
|
status = sta_tsk( 2, 0 ); |
directive_failed( status, "sta_tsk of TA1" ); |
|
status = sta_tsk( 3, 0 ); |
directive_failed( status, "sta_tsk of TA1" ); |
|
status = sta_tsk( 4, 0 ); |
directive_failed( status, "sta_tsk of TA1" ); |
|
exd_tsk(); |
directive_failed( 0, "exd_tsk" ); |
} |
/itrontask01/task1.c
0,0 → 1,54
/* Task_1_through_3 |
* |
* This routine serves as a test task. It verifies the basic task |
* switching capabilities of the executive. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task1.c,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Task_2_through_4() |
{ |
ID tid; |
int tid_index; |
rtems_time_of_day time; |
ER status; |
char name[30]; |
|
status = get_tid( &tid ); |
directive_failed( status, "get_tid"); |
|
tid_index = tid - 1; /* account for init tasks */ |
|
sprintf(name, "TA%d", tid_index); |
|
while( FOREVER ) { |
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); |
directive_failed( status, "rtems_clock_get" ); |
|
if ( time.second >= 35 ) { |
puts( "*** END OF ITRON TASK TEST 1 ***" ); |
exit( 0 ); |
} |
|
printf(name); |
print_time( " - rtems_clock_get - ", &time, "\n" ); |
|
status = rtems_task_wake_after( tid_index * 5 * TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after" ); |
} |
} |
|
/itrontask01/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:10 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itrontask01 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c task1.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itrontask01/system.h
0,0 → 1,40
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
void Task_2_through_4(); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 4 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
/* end of include file */ |
|
|
|
/itrontask02/itrontask02.scn
0,0 → 1,80
*** ITRON TASK TEST 2 *** |
Init - cre_tsk - Dormant Task |
Init - cre_tsk - Non-Dormant Task |
NON-DORMANT - Sleep for 2 minutes |
|
*** Create Task Errors *** |
Init - cre_tsk - access violation ( id less than -4) - E_OACV |
Init - cre_tsk - bad id (between 0 and -4) - E_ID |
Init - cre_tsk - cannot create TSK_SELF - E_ID |
Init - cre_tsk - invalid id; id already exists - E_OBJ |
Init - cre_tsk - tskatr is invalid - E_RSATR |
Init - cre_tsk - pk_ctsk is invalid - E_PAR |
Init - cre_tsk - itskpri is 0 - E_PAR |
Init - cre_tsk - itskpri is 257 - E_PAR |
Init - cre_tsk - stksz is invalid - E_PAR |
Init - cre_tsk - task is invalid - E_PAR |
|
*** Delete Task Errors *** |
Init - del_tsk - cannot delete TSK_SELF - E_OBJ |
Init - del_tsk - task is not DORMANT - E_OBJ |
Init - del_tsk - task does not exist - E_NOEXS |
Init - del_tsk - access violation ( id less than -4) - E_OACV |
Init - del_tsk - cannot delete TSK_SELF - E_OBJ |
Init - del_tsk - bad id (between 0 and -4) - E_ID |
|
*** Start Task Errors *** |
Init - sta_tsk - access violation ( id less than -4) - E_OACV |
Init - sta_tsk - bad id (between 0 and -4) - E_ID |
Init - sta_tsk - cannot start TSK_SELF - E_OBJ |
Init - sta_tsk - task is not DORMANT - E_OBJ |
Init - sta_tsk - task does not exist - E_NOEXS |
|
*** Terminate Other Task Errors *** |
Init - ter_tsk - bad id (between 0 and -4) - E_ID |
Init - ter_tsk - cannot terminate TSK_SELF (0) - E_OBJ |
Init - ter_tsk - task is not DORMANT - E_OBJ |
Init - ter_tsk - task does not exist - E_NOEXS |
Init - ter_tsk - access violation ( id less than -4) - E_OACV |
|
*** Change Priority Task Errors *** |
Init - chg_pri - bad id (between 0 and -4) - E_ID |
Init - chg_pri - task is DORMANT - E_OBJ |
Init - chg_pri - task does not exist - E_NOEXS |
Init - chg_pri - access violation ( id less than -4) - E_OACV |
Init - chg_pri - invalid priority - E_PAR |
|
*** Rotate Ready Queue Errors *** |
Init - rot_rdq - priority -1 - E_PAR |
Init - rot_rdq - priority 257 - E_PAR |
|
*** Reference Task Status Errors *** |
Init - ref_tsk - bad id (between 0 and -4) - E_ID |
Init - ref_tsk - task does not exist - E_NOEXS |
Init - ref_tsk - access violation ( id less than -4) - E_OACV |
Init - ref_tsk - packet address is bad - E_PAR |
|
*** Suspend Task Errors *** |
Init - sus_tsk - access violation ( id less than -4) - E_OACV |
Init - sus_tsk - bad id (between 0 and -4) - E_ID |
Init - sus_tsk - cannot suspend SELF - E_OBJ |
Init - sus_tsk - task does not exist - E_NOEXS |
|
*** Resume Task Errors *** |
Init - rsm_tsk - access violation ( id less than -4) - E_OACV |
Init - rsm_tsk - bad id (between 0 and -4) - E_ID |
Init - rsm_tsk - cannot resume SELF - E_OBJ |
Init - rsm_tsk - task is DORMANT - E_OBJ |
Init - rsm_tsk - task is NON_DORMANT not suspended - E_OK |
Init - rsm_tsk - task does not exist - E_NOEXS |
|
*** Forcibly Resume Task Errors *** |
Init - frsm_tsk - access violation ( id less than -4) - E_OACV |
Init - frsm_tsk - bad id (between 0 and -4) - E_ID |
Init - frsm_tsk - cannot forcibly resume SELF - E_OBJ |
Init - frsm_tsk - task is DORMANT - E_OBJ |
Init - frsm_tsk - task does not exist - E_NOEXS |
Init - frsm_tsk - task is NON_DORMANT not suspended - E_OK |
|
*** END OF ITRON TASK TEST 2 *** |
|
/itrontask02/init.c
0,0 → 1,580
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
#include <assert.h> |
|
void ITRON_Init( void ) |
{ |
|
/* |
* Status Codes for these errors |
* |
* |
* E_OK - Normal Completion |
* |
* E_NOMEM - Insufficient memory (Memory for control block and/or user |
* stack cannot be allocated) |
* |
* E_ID - Invalid ID Number (tskid was invalid or could not be used) |
* |
* E_RSATR - Reserved attribute (tskatr was invalid or could not be used) |
* |
* E_OBJ - Invalid object state (a task of the same ID already exists) |
* |
* E_OACV - Object access violation (A tskid less than -4 was specified |
* from a user task. This is implementation dependent.) |
* |
* E_PAR - Parameter error (pk_ctsk, task, itskpri and/or stksz is invalid) |
* |
* E_NOEXS - Object does not exist (the task specified by tskid does not |
* exist) |
* |
* E_CTX - Context error (issued from task-independent portions or a task |
* in dispatch disabled state) |
* |
* |
* |
* Network Specific Errors (ITRON calls these Connection Function Errors) |
* |
* EN_OBJNO - An object number which could not be accessed on the target |
* node is specified. |
* |
* EN_CTXID - Specified an object on another node when the system call |
* was issued from a task in dispatch disabled state or from |
* a task-independent portion |
* |
* EN_PAR - A value outside the range supported by the target node and/or |
* transmission packet format was specified as a parameter |
* (a value outside supported range was specified for exinf, |
* tskatr, task, itskpri and/or stksz) |
* |
* EN_RPAR - A value outside the range supported by the requesting node |
* and/or transmission packet format was returned as a return |
* parameter (a value outside supported range was returned for |
* exinf, tskpri and/or tskstat) |
* |
*/ |
|
|
rtems_time_of_day time; |
ER status; |
T_CTSK pk_ctsk; |
T_RTSK pk_rtsk; /* Reference Task Packet */ |
|
|
puts( "\n\n*** ITRON TASK TEST 2 ***\n" ); |
|
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 ); |
status = rtems_clock_set( &time ); |
directive_failed( status, "rtems_clock_set" ); |
|
|
/* |
* Set My priority to 8 so that dummy tasks will be |
* forced to run when started. |
*/ |
|
status = chg_pri( TSK_SELF, 8 ); |
fatal_directive_status( status, E_OK, "chg_pri of TSK_SELF"); |
status = ref_tsk( &pk_rtsk, TSK_SELF ); |
fatal_directive_status( status, E_OK, "ref_tsk of TSK_SELF"); |
fatal_directive_status( pk_rtsk.tskpri, 8, "task priority of SELF"); |
|
/* |
* Create and verify a DORMANT task. |
*/ |
|
pk_ctsk.exinf = NULL; |
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.itskpri = 1; |
pk_ctsk.task = Dormant_task; |
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE; |
|
puts( "Init - cre_tsk - Dormant Task" ); |
status = cre_tsk( DORMANT_TASK_ID, &pk_ctsk ); |
fatal_directive_status( status, E_OK, "cre_tsk of DORMANT"); |
status = ref_tsk( &pk_rtsk, DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OK, "ref_tsk of DORMANT"); |
fatal_directive_status( pk_rtsk.tskstat, TTS_DMT, "task state of DORMANT"); |
|
/* |
* Create, Start and verify a not DORMANT task. |
*/ |
|
pk_ctsk.task = Non_Dormant_task; |
puts( "Init - cre_tsk - Non-Dormant Task" ); |
status = cre_tsk( NON_DORMANT_TASK_ID, &pk_ctsk ); |
fatal_directive_status( status, E_OK, "cre_tsk of NON_DORMANT"); |
status = sta_tsk( NON_DORMANT_TASK_ID, 1 ); |
status = ref_tsk( &pk_rtsk, NON_DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OK, "ref_tsk of NON_DORMANT"); |
fatal_directive_status( pk_rtsk.tskstat,TTS_WAI,"task state of NON_DORMANT"); |
|
|
/* |
* Bad ID errors |
*/ |
|
puts( "\n*** Create Task Errors ***" ); |
|
puts( "Init - cre_tsk - access violation ( id less than -4) - E_OACV" ); |
status = cre_tsk( -5, &pk_ctsk ); |
fatal_directive_status( status, E_OACV, "cre_tsk of -5"); |
|
puts( "Init - cre_tsk - bad id (between 0 and -4) - E_ID" ); |
status = cre_tsk( -2, &pk_ctsk ); |
fatal_directive_status( status, E_ID, "cre_tsk of -2"); |
|
puts( "Init - cre_tsk - cannot create TSK_SELF - E_ID" ); |
status = cre_tsk( TSK_SELF, &pk_ctsk ); |
fatal_directive_status( status, E_ID, "cre_tsk of TSK_SELF"); |
|
puts( "Init - cre_tsk - invalid id; id already exists - E_OBJ" ); |
status = cre_tsk( 1, &pk_ctsk ); |
fatal_directive_status( status, E_OBJ, "cre_tsk of 1"); |
|
/* |
* Bad task attribute errors |
*/ |
|
pk_ctsk.tskatr = -1; |
puts( "Init - cre_tsk - tskatr is invalid - E_RSATR" ); |
status = cre_tsk( 5, &pk_ctsk ); |
fatal_directive_status( status, E_RSATR, "cre_tsk with tskatr of -1"); |
|
puts( "Init - cre_tsk - pk_ctsk is invalid - E_PAR" ); |
status = cre_tsk( 5, NULL ); |
fatal_directive_status( status, E_PAR, "cre_tsk with NULL discription"); |
|
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.itskpri = 0; |
puts( "Init - cre_tsk - itskpri is 0 - E_PAR" ); |
status = cre_tsk( 5, &pk_ctsk ); |
fatal_directive_status( status, E_PAR, "cre_tsk with priority of 0"); |
pk_ctsk.itskpri = 257; /* XXX Design parameter not requirement. */ |
puts( "Init - cre_tsk - itskpri is 257 - E_PAR" ); |
status = cre_tsk( 5, &pk_ctsk ); |
fatal_directive_status( status, E_PAR, "cre_tsk with priority of 257"); |
|
pk_ctsk.stksz = -1; |
puts( "Init - cre_tsk - stksz is invalid - E_PAR" ); |
status = cre_tsk( 5, &pk_ctsk ); |
fatal_directive_status( status, E_PAR, "cre_tsk with size of -1"); |
|
pk_ctsk.task = NULL; |
puts( "Init - cre_tsk - task is invalid - E_PAR" ); |
status = cre_tsk( 5, &pk_ctsk ); |
fatal_directive_status( status, E_PAR, "cre_tsk with null task identifier"); |
|
|
#if (0) |
/* these errors can not be generated for cre_tsk at this time */ |
fatal_directive_status( status, E_NOMEM, ""); |
fatal_directive_status( status, EN_OBJNO, ""); |
fatal_directive_status( status, EN_CTXID, ""); |
fatal_directive_status( status, EN_PAR, ""); |
#endif |
|
puts( "\n\n*** Delete Task Errors ***" ); |
|
/* |
* Reset structure |
*/ |
|
pk_ctsk.exinf = NULL; |
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.itskpri = 1; |
pk_ctsk.task = Dormant_task; |
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE; |
|
|
puts( "Init - del_tsk - cannot delete TSK_SELF - E_OBJ" ); |
status = del_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "del_tsk with SELF"); |
|
puts( "Init - del_tsk - task is not DORMANT - E_OBJ" ); |
status = del_tsk( NON_DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OBJ, "del_tsk NON_DORMANT"); |
|
puts( "Init - del_tsk - task does not exist - E_NOEXS" ); |
status = del_tsk( 5 ); |
fatal_directive_status( status, E_NOEXS, "del_tsk 5"); |
|
puts( "Init - del_tsk - access violation ( id less than -4) - E_OACV" ); |
status = del_tsk( -5 ); |
fatal_directive_status( status, E_OACV, "del_tsk -5"); |
|
puts( "Init - del_tsk - cannot delete TSK_SELF - E_OBJ" ); |
status = del_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "del_tsk self"); |
|
puts( "Init - del_tsk - bad id (between 0 and -4) - E_ID" ); |
status = del_tsk( -3 ); |
fatal_directive_status( status, E_ID, "del_tsk -3"); |
|
#if (0) |
/* these errors can not be generated for del_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "del_tsk "); |
fatal_directive_status( status, EN_CTXID, "del_tsk "); |
#endif |
|
|
puts( "\n\n*** Start Task Errors ***" ); |
|
puts( "Init - sta_tsk - access violation ( id less than -4) - E_OACV" ); |
status = sta_tsk( -5, 1 ); |
fatal_directive_status( status, E_OACV, "sta_tsk of -5"); |
|
puts( "Init - sta_tsk - bad id (between 0 and -4) - E_ID" ); |
status = sta_tsk( -2, 1 ); |
fatal_directive_status( status, E_ID, "sta_tsk of -2"); |
|
puts( "Init - sta_tsk - cannot start TSK_SELF - E_OBJ" ); |
status = sta_tsk( TSK_SELF, 1 ); |
fatal_directive_status( status, E_OBJ, "sta_tsk of self"); |
|
puts( "Init - sta_tsk - task is not DORMANT - E_OBJ" ); |
status = sta_tsk( NON_DORMANT_TASK_ID, 1 ); |
fatal_directive_status( status, E_OBJ, "sta_tsk NON_DORMANT"); |
|
puts( "Init - sta_tsk - task does not exist - E_NOEXS" ); |
status = sta_tsk( 5, 1 ); |
fatal_directive_status( status, E_NOEXS, "5"); |
|
#if (0) |
/* these errors can not be generated for sta_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "sta_tsk"); |
fatal_directive_status( status, EN_CTXID, "sta_tsk"); |
fatal_directive_status( status, EN_PAR, "sta_tsk"); |
#endif |
|
|
#if (0) |
/* these errors can not be tested at this time */ |
puts( "\n\n*** Exit Task Errors ***" ); |
puts( "Init - ext_tsk - context error - E_CTX" ); |
status = ext_tsk( ); |
fatal_directive_status( status, E_CTX, "ext_tsk "); |
|
puts( "\n\n*** Exit and Delete Task Errors ***" ); |
puts( "Init - exd_tsk - context error - E_CTX" ); |
status = exd_tsk( ); |
fatal_directive_status( status, E_CTX, "exd_tsk"); |
#endif |
|
|
puts( "\n\n*** Terminate Other Task Errors ***" ); |
|
puts( "Init - ter_tsk - bad id (between 0 and -4) - E_ID" ); |
status = ter_tsk( -2 ); |
fatal_directive_status( status, E_ID, "ter_tsk of -2"); |
|
puts( "Init - ter_tsk - cannot terminate TSK_SELF (0) - E_OBJ" ); |
status = ter_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "ter_tsk of self"); |
|
puts( "Init - ter_tsk - task is not DORMANT - E_OBJ" ); |
status = ter_tsk( DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OBJ, "ter_tsk DORMANT"); |
|
puts( "Init - ter_tsk - task does not exist - E_NOEXS" ); |
status = ter_tsk( 5 ); |
fatal_directive_status( status, E_NOEXS, "ter_tsk of 5"); |
|
puts( "Init - ter_tsk - access violation ( id less than -4) - E_OACV" ); |
status = ter_tsk( -5 ); |
fatal_directive_status( status, E_OACV, "ter_tsk of -5"); |
|
#if (0) |
/* these errors can not be generated for ter_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "ter_tsk"); |
fatal_directive_status( status, EN_CTXID, "ter_tsk"); |
#endif |
|
|
#if (0) |
status = dis_dsp( ); |
fatal_directive_status( status, E_CTX, "dis_dsp"); |
|
status = ena_dsp( ); |
fatal_directive_status( status, E_CTX, "ena_dsp"); |
#endif |
|
puts( "\n\n*** Change Priority Task Errors ***" ); |
|
puts( "Init - chg_pri - bad id (between 0 and -4) - E_ID" ); |
status = chg_pri( -2, 1 ); |
fatal_directive_status( status, E_ID, "chg_pri of -2"); |
|
/* Call from task independent portion to cause E_OBJ |
puts( "Init - chg_pri - change priority of TSK_SELF - E_OBJ" ); |
status = chg_pri( XXX - INTERRUPT, 1 ); |
assert( status == E_OBJ ); |
*/ |
|
puts( "Init - chg_pri - task is DORMANT - E_OBJ" ); |
status = chg_pri( DORMANT_TASK_ID, 1 ); |
fatal_directive_status( status, E_OBJ, "chg_pri of DORMANT"); |
|
puts( "Init - chg_pri - task does not exist - E_NOEXS" ); |
status = chg_pri( 5, 1 ); |
fatal_directive_status( status, E_NOEXS, "chg_pri of 5"); |
|
puts( "Init - chg_pri - access violation ( id less than -4) - E_OACV" ); |
status = chg_pri( -5, 1 ); |
fatal_directive_status( status, E_OACV, "chg_pri of -5"); |
|
puts( "Init - chg_pri - invalid priority - E_PAR" ); |
status = chg_pri( 1, -1 ); |
fatal_directive_status( status, E_PAR, "chg_pri with priority of -1"); |
|
#if (0) |
/* these errors can not be generated for chg_pri at this time */ |
fatal_directive_status( status, EN_OBJNO, "chg_pri"); |
fatal_directive_status( status, EN_CTXID, "chg_pri"); |
fatal_directive_status( status, EN_PAR, "chg_pri"); |
#endif |
|
/* This gave me a nasty-gram |
* "core_find_mapping() - access to unmaped address, attach a default map |
* to handle this - addr=0x80002098 nr_bytes=0x4 processor=0x40134008 |
* cia=0xc744" |
*/ |
|
puts( "\n\n*** Rotate Ready Queue Errors ***" ); |
puts( "Init - rot_rdq - priority -1 - E_PAR" ); |
status = rot_rdq( -1 ); |
fatal_directive_status( status, E_PAR, "rot_rdq -1"); |
puts( "Init - rot_rdq - priority 257 - E_PAR" ); |
status = rot_rdq( 257 ); |
fatal_directive_status( status, E_PAR, "rot_rdq 256"); |
|
/* XXX - This routine is not coded */ |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - E_OK" ); |
status = rel_wai( 1 ); |
fatal_directive_status( status, E_OK, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - E_ID" ); |
status = E_ID; |
fatal_directive_status( status, E_ID, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - E_NOEXS" ); |
status = E_NOEXS; |
fatal_directive_status( status, E_NOEXS, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - E_OACV" ); |
status = E_OACV; |
fatal_directive_status( status, E_OACV, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - E_OBJ" ); |
status = E_OBJ; |
fatal_directive_status( status, E_OBJ, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - EN_OBJNO" ); |
status = EN_OBJNO; |
fatal_directive_status( status, EN_OBJNO, "rel_wai"); |
|
puts( "Init - rel_rdq - XXX Add when rel_wai coded - EN_CTXID" ); |
status = EN_CTXID; |
fatal_directive_status( status, EN_CTXID, "rel_wai"); |
|
|
puts( "\n\n*** Reference Task Status Errors ***" ); |
puts( "Init - ref_tsk - bad id (between 0 and -4) - E_ID" ); |
status = ref_tsk( &pk_rtsk, -2 ); |
fatal_directive_status( status, E_ID, "ref_tsk -2"); |
|
/* XXX Call from task independent portion to cause E_ID |
puts( "Init - ref_tsk - reference INTERRUPT - E_ID" ); |
status = ref_tsk( &pk_rtsk, TSK_SELF ); |
assert( status == E_ID ); |
*/ |
|
puts( "Init - ref_tsk - task does not exist - E_NOEXS" ); |
status = ref_tsk( &pk_rtsk, 5 ); |
fatal_directive_status( status, E_NOEXS, "ref_tsk 5"); |
|
puts( "Init - ref_tsk - access violation ( id less than -4) - E_OACV" ); |
status = ref_tsk( &pk_rtsk, -5 ); |
fatal_directive_status( status, E_OACV, "ref_tsk -5"); |
|
puts( "Init - ref_tsk - packet address is bad - E_PAR" ); |
status = ref_tsk( NULL, 1 ); |
fatal_directive_status( status, E_PAR, "ref_tsk SELF with NULL descriptor"); |
|
#if (0) |
/* these errors can not be generated for ref_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "ref_tsk"); |
fatal_directive_status( status, EN_CTXID, "ref_tsk"); |
fatal_directive_status( status, EN_RPAR, "ref_tsk"); |
#endif |
|
puts( "\n\n*** Suspend Task Errors ***" ); |
|
puts( "Init - sus_tsk - access violation ( id less than -4) - E_OACV" ); |
status = sus_tsk( -5 ); |
fatal_directive_status( status, E_OACV, "sus_tsk of -5"); |
|
puts( "Init - sus_tsk - bad id (between 0 and -4) - E_ID" ); |
status = sus_tsk( -2 ); |
fatal_directive_status( status, E_ID, "sus_tsk of -2"); |
|
puts( "Init - sus_tsk - cannot suspend SELF - E_OBJ" ); |
status = sus_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "sus_tsk of self"); |
|
puts( "Init - sus_tsk - task does not exist - E_NOEXS" ); |
status = sus_tsk( 5 ); |
fatal_directive_status( status, E_NOEXS, "sus_tsk of 5"); |
|
/* XXX - We support nested suspends and will never return this error. |
puts( "Init - sus_tsk - no support for nested SUSPENDS - E_QOVR" ); |
status = sus_tsk( 1 ); |
fatal_directive_status( status, E_QOVR, "sus_tsk"); |
*/ |
|
/* XXX - Can not test this. |
puts( "Init - sus_tsk - exceeded limit for nested SUSPENDS - E_QOVR" ); |
status = sus_tsk( 1 ); |
fatal_directive_status( status, E_QOVR, "sus_tsk"); |
*/ |
|
#if (0) |
/* these errors can not be generated for sus_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "sus_tsk"); |
fatal_directive_status( status, EN_CTXID, "sus_tsk"); |
#endif |
|
|
puts( "\n\n*** Resume Task Errors ***" ); |
|
puts( "Init - rsm_tsk - access violation ( id less than -4) - E_OACV" ); |
status = rsm_tsk( -5 ); |
fatal_directive_status( status, E_OACV, "rsm_tsk -5"); |
|
puts( "Init - rsm_tsk - bad id (between 0 and -4) - E_ID" ); |
status = rsm_tsk( -2 ); |
fatal_directive_status( status, E_ID, "rsm_tsk -2"); |
|
puts( "Init - rsm_tsk - cannot resume SELF - E_OBJ" ); |
status = rsm_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "rsm_tsk self"); |
|
puts( "Init - rsm_tsk - task is DORMANT - E_OBJ" ); |
status = rsm_tsk( DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OBJ, "rsm_tsk DORMANT"); |
|
puts( "Init - rsm_tsk - task is NON_DORMANT not suspended - E_OK" ); |
status = rsm_tsk( NON_DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OK, "rsm_tsk NON_DORMANT"); |
|
puts( "Init - rsm_tsk - task does not exist - E_NOEXS" ); |
status = rsm_tsk( 5 ); |
fatal_directive_status( status, E_NOEXS, "rms_tsk 5"); |
|
#if (0) |
/* these errors can not be generated for rsm_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "rsm_tsk"); |
fatal_directive_status( status, EN_CTXID, "rsm_tsk"); |
#endif |
|
|
puts( "\n\n*** Forcibly Resume Task Errors ***" ); |
|
puts( "Init - frsm_tsk - access violation ( id less than -4) - E_OACV" ); |
status = frsm_tsk( -5 ); |
fatal_directive_status( status, E_OACV, "frsm_tsk -5"); |
|
puts( "Init - frsm_tsk - bad id (between 0 and -4) - E_ID" ); |
status = frsm_tsk( -2 ); |
fatal_directive_status( status, E_ID, "frsm_tsk -2"); |
|
puts( "Init - frsm_tsk - cannot forcibly resume SELF - E_OBJ" ); |
status = frsm_tsk( TSK_SELF ); |
fatal_directive_status( status, E_OBJ, "frsm_tsk self"); |
|
puts( "Init - frsm_tsk - task is DORMANT - E_OBJ" ); |
status = frsm_tsk( DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OBJ, "frsm_tsk DORMANT"); |
|
puts( "Init - frsm_tsk - task does not exist - E_NOEXS" ); |
status = frsm_tsk( 5 ); |
fatal_directive_status( status, E_NOEXS, "frsm_tsk 5"); |
|
puts( "Init - frsm_tsk - task is NON_DORMANT not suspended - E_OK" ); |
status = frsm_tsk( NON_DORMANT_TASK_ID ); |
fatal_directive_status( status, E_OK, "frsm_tsk NON_DORMANT"); |
|
#if (0) |
/* these errors can not be generated for frsm_tsk at this time */ |
fatal_directive_status( status, EN_OBJNO, "frsm_tsk"); |
fatal_directive_status( status, EN_CTXID, "frsm_tsk"); |
#endif |
|
|
#if (0) |
XXXXX - FIX ME |
/* these directives are not coded */ |
slp_tsk( ); |
fatal_directive_status( status, E_OK, ""); |
fatal_directive_status( status, E_PAR, ""); |
fatal_directive_status( status, E_RLWAI, ""); |
fatal_directive_status( status, E_TMOUT, ""); |
fatal_directive_status( status, E_CTX, ""); |
|
|
tslp_tsk( TMO ); |
fatal_directive_status( status, E_OK, ""); |
fatal_directive_status( status, E_PAR, ""); |
fatal_directive_status( status, E_RLWAI, ""); |
fatal_directive_status( status, E_TMOUT, ""); |
fatal_directive_status( status, E_CTX, ""); |
|
wup_tsk( ID ); |
fatal_directive_status( status, E_OK, ""); |
fatal_directive_status( status, E_ID, ""); |
fatal_directive_status( status, E_NOEXS, ""); |
fatal_directive_status( status, E_OACV, ""); |
fatal_directive_status( status, E_OBJ, ""); |
fatal_directive_status( status, E_QOVR, ""); |
fatal_directive_status( status, EN_OBJNO, ""); |
fatal_directive_status( status, EN_CTXID, ""); |
|
|
can_tsk( INT, ID ); |
fatal_directive_status( status, E_OK, ""); |
fatal_directive_status( status, E_ID, ""); |
fatal_directive_status( status, E_NOEXS, ""); |
fatal_directive_status( status, E_OACV, ""); |
fatal_directive_status( status, E_OBJ, ""); |
fatal_directive_status( status, EN_OBJNO, ""); |
fatal_directive_status( status, EN_CTXID, ""); |
fatal_directive_status( status, EN_RPAR, ""); |
#endif |
|
puts( "*** END OF ITRON TASK TEST 2 ***" ); |
exit( 0 ); |
} |
/itrontask02/itrontask02.doc
0,0 → 1,34
# |
# $Id: itrontask02.doc,v 1.3 1999/11/17 16:47:53 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
This file describes the directives and concepts tested by this test set. |
This test forces and verifies error conditions for the task and task |
synchronization managers.. |
|
test set name: itrontask02 |
|
directives: |
chg_pri cre_tsk del_tsk dis_dsp ena_dsp exd_tsk ext_tsk |
frsm_tsk get_tid ref_tsk rel_wai rot_rdq rsm_tsk slp_tsk |
sta_tsk sus_tsk ter_tsk tslp_tsk wup_tsk |
|
concepts: |
|
a. Verification of error codes from all task and task synchronization |
commands. |
|
notes: |
Unimplementted functions are stubbed out and should be added when |
the functions are finished. |
|
output: |
Name of command and expected error code. |
Test asserts when an unexpected error code or an error does not occur. |
/itrontask02/dormant.c
0,0 → 1,44
/* Dormant |
* |
* This routine serves as two test tasks. |
* It has one dormant and one sleeping tasks. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: dormant.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <assert.h> |
#include "system.h" |
|
void Dormant_task() |
{ |
puts( "DORMANT - ext_tsk - going to DORMANT state" ); |
ext_tsk( ); |
|
puts( "ERROR==>ext_tsk of DORMANT returned" ); |
assert(0); |
} |
|
|
void Non_Dormant_task() |
{ |
ER status; |
|
while (TRUE) { |
puts( "NON-DORMANT - Sleep for 2 minutes" ); |
status = rtems_task_wake_after( 120*TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after" ); |
} |
} |
|
/itrontask02/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:11 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itrontask02 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c dormant.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itrontask02/system.h
0,0 → 1,47
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
void Dormant_task(); |
void Non_Dormant_task(); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 5 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
#define DORMANT_TASK_ID 2 |
#define NON_DORMANT_TASK_ID 3 |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
|
|
|
|
|
/itronmbf01/itronmbf01.scn
0,0 → 1,71
*** ITRONMBF01 -- ITRON MESSAGE BUFFER TEST *** |
Init - cre_mbf - NULL pk_cmbf returns E_PAR |
Init - cre_mbf - negative values for bufsz returns E_PAR |
Init - cre_mbf - negative values for maxmsz returns E_PAR |
Init - cre_mbf - bufsz < maxmsz returns E_PAR |
Init - cre_mbf - bad id (less than -4) - E_OACV |
Init - cre_mbf - bad id (between 0 and -4) - E_ID |
Init - cre_mbf - bad id (0) - E_ID |
Init - cre_mbf - bad id (too great) - E_ID |
Init - cre_mbf - create mbf 1 TA_TFIFO - E_OK |
Init - cre_mbf - create mbf 1 again - E_OBJ |
Init - cre_mbf - create mbf 2 TA_TPRI - E_OK |
Init - del_mbf - bad id (less than -4) - E_OACV |
Init - del_mbf - bad id (between 0 and -4) - E_ID |
Init - del_mbf - bad id (0) - E_ID |
Init - del_mbf - bad id (too great) - E_ID |
Init - del_mbf - E_OK |
Init - psnd_mbf - bad id (less than -4) - E_OACV |
Init - psnd_mbf - bad id (between 0 and -4) - E_ID |
Init - psnd_mbf - bad id (0) - E_ID |
Init - psnd_mbf - bad id (too great) - E_ID |
Init - psnd_mbf - msg == 0, E_PAR |
Init - psnd_mbf - msgsz too big - E_PAR |
Init - psnd_mbf - msgsz <0 - E_PAR |
Init - psnd_mbf - E_OK |
Init - ref_mbf - bad id (less than -4) - E_OACV |
Init - ref_mbf - bad id (between 0 and -4) - E_ID |
Init - ref_mbf - bad id (0) - E_ID |
Init - ref_mbf - bad id (too great) - E_ID |
Init - ref_mbf - NULL pk_mbf returns E_PAR |
Init - ref_mbf - mbf 1 - E_OK |
Init - mbf 1 msgsz = 100 |
Init - mbf 1 frbufsz = 400 |
Init - mbf 1 waiting tasks = 0 |
Init - mbf 1 sending tasks = 0 |
Init - rcv_mbf - bad id (less than -4) - E_OACV |
Init - rcv_mbf - bad id (between 0 and -4) - E_ID |
Init - rcv_mbf - bad id (0) - E_ID |
Init - rcv_mbf - bad id (too great) - E_ID |
Init - rcv_mbf - NULL msg returns E_PAR |
Init - rcv_mbf - NULL p_msgsz returns E_PAR |
Init - rcv_mbf -- OK |
Message:[This is test message 1], length:100 |
Init - ref_mbf - bad id (less than -4) - E_OACV |
Init - ref_mbf - bad id (between 0 and -4) - E_ID |
Init - ref_mbf - bad id (0) - E_ID |
Init - ref_mbf - bad id (too great) - E_ID |
Init - ref_mbf - NULL pk_mbf returns E_PAR |
Init - ref_mbf - mbf 1 - E_OK |
Init - mbf 1 msgsz = 0 |
Init - mbf 1 frbufsz = 600 |
Init - mbf 1 waiting tasks = 0 |
Init - mbf 1 sending tasks = 0 |
Init - prcv_mbf - bad id (less than -4) - E_OACV |
Init - prcv_mbf - bad id (between 0 and -4) - E_ID |
Init - prcv_mbf - bad id (0) - E_ID |
Init - prcv_mbf - bad id (too great) - E_ID |
Init - prcv_mbf - NULL msg returns E_PAR |
Init - prcv_mbf - NULL p_msgsz returns E_PAR |
Init - prcv_mbf -- E_TMOUT |
Init - trcv_mbf - bad id (less than -4) - E_OACV |
Init - trcv_mbf - bad id (between 0 and -4) - E_ID |
Init - trcv_mbf - bad id (0) - E_ID |
Init - trcv_mbf - bad id (too great) - E_ID |
Init - trcv_mbf - NULL msg returns E_PAR |
Init - trcv_mbf - NULL p_msgsz returns E_PAR |
Init - trcv_mbf - tmout <-2 returns E_PAR |
Init - trcv_mbf -- E_TMOUT |
Init - starting to block at Fri Jan 01 00:00:00 1988 |
Init - time out at Fri Jan 01 00:00:01 1988 |
*** ITRONMBF01 --- ITRON MESSAGE BUFFER TEST *** |
/itronmbf01/init.c
0,0 → 1,367
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
#include <assert.h> |
|
/* |
* The following is hopefully temporary. |
*/ |
|
#include <time.h> |
|
#define put_time(_s) \ |
do { \ |
time_t a_time_t; \ |
a_time_t = time( 0 ); \ |
printf( "%s%s", _s, ctime( &a_time_t ) ); \ |
} while(0) |
|
|
|
void TestCre(); |
void TestDel(); |
void TestPsnd(); |
void TestRef(); |
void TestTrcv(); |
void TestRcv(); |
void TestPrcv(); |
|
void ITRON_Init( void ) |
{ |
printf( "\n\n*** ITRONMBF01 -- ITRON MESSAGE BUFFER TEST ***\n" ); |
|
TestCre(); |
TestDel(); |
TestPsnd(); |
TestRef(); |
TestRcv(); |
TestRef(); |
TestPrcv(); |
TestTrcv(); |
|
printf("\n\n*** ITRONMBF01 --- ITRON MESSAGE BUFFER TEST ***\n"); |
exit(0); |
} |
|
void TestCre() |
{ |
ER status; |
T_CMBF pk_cmbf; |
|
/* |
* Exercise cre_mbf - this code seems to exercise every path. |
*/ |
|
puts( "Init - cre_mbf - NULL pk_cmbf returns E_PAR" ); |
status = cre_mbf( 1, NULL ); |
assert( status == E_PAR ); |
|
puts( "Init - cre_mbf - negative values for bufsz returns E_PAR" ); |
pk_cmbf.bufsz = -1; |
pk_cmbf.maxmsz = 100; |
pk_cmbf.mbfatr = 0; |
pk_cmbf.exinf = NULL; |
status = cre_mbf( 1, &pk_cmbf ); |
assert( status == E_PAR ); |
|
puts( "Init - cre_mbf - negative values for maxmsz returns E_PAR" ); |
pk_cmbf.bufsz = 100; |
pk_cmbf.maxmsz = -1; |
status = cre_mbf( 1, &pk_cmbf ); |
assert( status == E_PAR ); |
|
puts( "Init - cre_mbf - bufsz < maxmsz returns E_PAR" ); |
pk_cmbf.bufsz = 100; |
pk_cmbf.maxmsz = 101; |
status = cre_mbf( 1, &pk_cmbf ); |
assert( status == E_PAR ); |
|
/* |
* Now run through all the bad ID errors |
*/ |
|
pk_cmbf.bufsz = 200; |
pk_cmbf.maxmsz = 30; |
puts( "Init - cre_mbf - bad id (less than -4) - E_OACV" ); |
status = cre_mbf( -5, &pk_cmbf ); |
assert( status == E_OACV ); |
|
puts( "Init - cre_mbf - bad id (between 0 and -4) - E_ID" ); |
status = cre_mbf( -4, &pk_cmbf ); |
assert( status == E_ID ); |
|
puts( "Init - cre_mbf - bad id (0) - E_ID" ); |
status = cre_mbf( 0, &pk_cmbf ); |
assert( status == E_ID ); |
|
puts( "Init - cre_mbf - bad id (too great) - E_ID" ); |
status = cre_mbf( CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1, &pk_cmbf ); |
assert( status == E_ID ); |
|
puts( "Init - cre_mbf - create mbf 1 TA_TFIFO - E_OK" ); |
pk_cmbf.bufsz = 600; |
pk_cmbf.maxmsz = 200; |
pk_cmbf.mbfatr = TA_TFIFO; |
status = cre_mbf( 1, &pk_cmbf ); |
assert( status == E_OK ); |
|
puts( "Init - cre_mbf - create mbf 1 again - E_OBJ" ); |
status = cre_mbf( 1, &pk_cmbf ); |
assert( status == E_OBJ ); |
|
puts( "Init - cre_mbf - create mbf 2 TA_TPRI - E_OK" ); |
pk_cmbf.bufsz = 600; |
pk_cmbf.maxmsz = 200; |
pk_cmbf.mbfatr = TA_TPRI; |
status = cre_mbf( 2, &pk_cmbf ); |
assert( status == E_OK ); |
} |
|
void TestDel() |
{ |
ER status; |
|
/* |
* Generate all the bad id errors for del_mbf |
*/ |
|
puts( "Init - del_mbf - bad id (less than -4) - E_OACV" ); |
status = del_mbf( -5 ); |
assert( status == E_OACV ); |
|
puts( "Init - del_mbf - bad id (between 0 and -4) - E_ID" ); |
status = del_mbf( -4 ); |
assert( status == E_ID ); |
|
puts( "Init - del_mbf - bad id (0) - E_ID" ); |
status = del_mbf( 0 ); |
assert( status == E_ID ); |
|
puts( "Init - del_mbf - bad id (too great) - E_ID" ); |
status = del_mbf( CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1 ); |
assert( status == E_ID ); |
|
|
puts("Init - del_mbf - E_OK" ); |
status = del_mbf(2); |
assert(status == E_OK); |
} |
|
void TestPsnd() |
{ |
ER status; |
char msg[100] = "This is test message 1"; |
|
/* |
* Generate all the bad id errors for psnd_mbf |
*/ |
|
puts( "Init - psnd_mbf - bad id (less than -4) - E_OACV" ); |
status = psnd_mbf(-5, msg, sizeof(msg)); |
assert( status == E_OACV ); |
|
puts( "Init - psnd_mbf - bad id (between 0 and -4) - E_ID" ); |
status = psnd_mbf(-4, msg, sizeof(msg)); |
assert( status == E_ID ); |
|
puts( "Init - psnd_mbf - bad id (0) - E_ID" ); |
status = psnd_mbf(0, msg, sizeof(msg)); |
assert( status == E_ID ); |
|
puts( "Init - psnd_mbf - bad id (too great) - E_ID" ); |
status = psnd_mbf(CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1, msg, |
sizeof(msg)); |
assert( status == E_ID ); |
|
puts( "Init - psnd_mbf - msg == 0, E_PAR" ); |
status = psnd_mbf(1, 0, sizeof(msg)); |
assert( status == E_PAR ); |
|
puts( "Init - psnd_mbf - msgsz too big - E_PAR" ); |
status = psnd_mbf(1, msg, 300); |
assert( status == E_PAR ); |
|
puts( "Init - psnd_mbf - msgsz <0 - E_PAR" ); |
status = psnd_mbf(1, msg, -10); |
assert( status == E_PAR ); |
|
puts( "Init - psnd_mbf - E_OK" ); |
status = psnd_mbf(1, msg, sizeof(msg)); |
assert( status == E_OK ); |
} |
|
void TestRef() |
{ |
ER status; |
T_RMBF pk_rmbf; |
|
puts( "Init - ref_mbf - bad id (less than -4) - E_OACV" ); |
status = ref_mbf(&pk_rmbf, -5); |
assert( status == E_OACV ); |
|
puts( "Init - ref_mbf - bad id (between 0 and -4) - E_ID" ); |
status = ref_mbf(&pk_rmbf, -4); |
assert( status == E_ID ); |
|
puts( "Init - ref_mbf - bad id (0) - E_ID" ); |
status = ref_mbf(&pk_rmbf, 0); |
assert( status == E_ID ); |
|
puts( "Init - ref_mbf - bad id (too great) - E_ID" ); |
status = ref_mbf(&pk_rmbf, |
CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1); |
assert( status == E_ID ); |
|
puts( "Init - ref_mbf - NULL pk_mbf returns E_PAR" ); |
status = ref_mbf( NULL, 1 ); |
assert( status == E_PAR ); |
|
puts( "Init - ref_mbf - mbf 1 - E_OK" ); |
status = ref_mbf( &pk_rmbf, 1 ); |
assert( status == E_OK ); |
|
printf( "Init - mbf 1 msgsz = %d\n", pk_rmbf.msgsz ); |
printf( "Init - mbf 1 frbufsz = %d\n", pk_rmbf.frbufsz ); |
printf( "Init - mbf 1 waiting tasks = %d\n", pk_rmbf.wtsk ); |
printf( "Init - mbf 1 sending tasks = %d\n", pk_rmbf.stsk); |
} |
|
void TestRcv() |
{ |
ER status; |
char buffer[200]; |
int s; |
|
puts( "Init - rcv_mbf - bad id (less than -4) - E_OACV" ); |
status = rcv_mbf(buffer, &s, -5); |
assert( status == E_OACV ); |
|
puts( "Init - rcv_mbf - bad id (between 0 and -4) - E_ID" ); |
status = rcv_mbf(buffer, &s, -4); |
assert( status == E_ID ); |
|
puts( "Init - rcv_mbf - bad id (0) - E_ID" ); |
status = rcv_mbf(buffer, &s, 0); |
assert( status == E_ID ); |
|
puts( "Init - rcv_mbf - bad id (too great) - E_ID" ); |
status = rcv_mbf(buffer, &s, CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1); |
assert( status == E_ID ); |
|
puts( "Init - rcv_mbf - NULL msg returns E_PAR" ); |
status = rcv_mbf(NULL, &s, 1); |
assert( status == E_PAR ); |
|
puts( "Init - rcv_mbf - NULL p_msgsz returns E_PAR" ); |
status = rcv_mbf(buffer, 0, 1); |
assert( status == E_PAR ); |
|
puts("Init - rcv_mbf -- OK"); |
status = rcv_mbf(buffer, &s, 1); |
assert(status == E_OK); |
printf("Message:[%s], length:%d\n", buffer, s); |
} |
|
|
void TestPrcv() |
{ |
ER status; |
char buffer[200]; |
int s; |
|
puts( "Init - prcv_mbf - bad id (less than -4) - E_OACV" ); |
status = prcv_mbf(buffer, &s, -5); |
assert( status == E_OACV ); |
|
puts( "Init - prcv_mbf - bad id (between 0 and -4) - E_ID" ); |
status = prcv_mbf(buffer, &s, -4); |
assert( status == E_ID ); |
|
puts( "Init - prcv_mbf - bad id (0) - E_ID" ); |
status = prcv_mbf(buffer, &s, 0); |
assert( status == E_ID ); |
|
puts( "Init - prcv_mbf - bad id (too great) - E_ID" ); |
status = prcv_mbf(buffer, &s, CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1); |
assert( status == E_ID ); |
|
puts( "Init - prcv_mbf - NULL msg returns E_PAR" ); |
status = prcv_mbf(NULL, &s, 1); |
assert( status == E_PAR ); |
|
puts( "Init - prcv_mbf - NULL p_msgsz returns E_PAR" ); |
status = prcv_mbf(buffer, 0, 1); |
assert( status == E_PAR ); |
|
puts("Init - prcv_mbf -- E_TMOUT"); |
status = prcv_mbf(buffer, &s, 1); |
assert(status == E_TMOUT); |
} |
|
|
void TestTrcv() |
{ |
ER status; |
char buffer[200]; |
int s; |
|
puts( "Init - trcv_mbf - bad id (less than -4) - E_OACV" ); |
status = trcv_mbf(buffer, &s, -5, 5000); |
assert( status == E_OACV ); |
|
puts( "Init - trcv_mbf - bad id (between 0 and -4) - E_ID" ); |
status = trcv_mbf(buffer, &s, -4, 5000); |
assert( status == E_ID ); |
|
puts( "Init - trcv_mbf - bad id (0) - E_ID" ); |
status = trcv_mbf(buffer, &s, 0, 5000); |
assert( status == E_ID ); |
|
puts( "Init - trcv_mbf - bad id (too great) - E_ID" ); |
status = trcv_mbf(buffer, &s, |
CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS + 1, |
5000); |
assert( status == E_ID ); |
|
puts( "Init - trcv_mbf - NULL msg returns E_PAR" ); |
status = trcv_mbf(NULL, &s, 1, 5000); |
assert( status == E_PAR ); |
|
puts( "Init - trcv_mbf - NULL p_msgsz returns E_PAR" ); |
status = trcv_mbf(buffer, 0, 1, 5000); |
assert( status == E_PAR ); |
|
puts( "Init - trcv_mbf - tmout <-2 returns E_PAR" ); |
status = trcv_mbf(buffer, &s, 1, -2); |
assert( status == E_PAR ); |
|
puts("\nInit - trcv_mbf -- E_TMOUT"); |
put_time( "Init - starting to block at "); |
status = trcv_mbf(buffer, &s, 1, 1000); |
assert(status == E_TMOUT); |
put_time( "Init - time out at "); |
} |
|
|
/itronmbf01/itronmbf01.doc
0,0 → 1,12
# |
# $Id: itronmbf01.doc,v 1.2 1999/11/17 16:47:48 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
|
/itronmbf01/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:10 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itronmbf01 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itronmbf01/system.h
0,0 → 1,40
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 1 |
#define CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS 10 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
#define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE (4 * RTEMS_MINIMUM_STACK_SIZE) |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itronsem01/itronsem01.scn
0,0 → 1,61
*** ITRONSEM01 -- ITRON SEMAPHORE TEST *** |
Init - cre_sem - NULL pk_sem returns E_PAR |
Init - cre_sem - isemcnt > maxsem returns E_PAR |
Init - cre_sem - maxsem of 0 returns E_PAR |
Init - cre_sem - bad id (less than -4) - E_OACV |
Init - cre_sem - bad id (between 0 and -4) - E_ID |
Init - cre_sem - bad id (0) - E_ID |
Init - cre_sem - bad id (too great) - E_ID |
Init - cre_sem - create semaphore 1 TA_TFIFO - E_OK |
Init - cre_sem - create semaphore 1 again - E_OBJ |
Init - cre_sem - create semaphore 2 TA_TPRI - E_OK |
Init - del_sem - bad id (less than -4) - E_OACV |
Init - del_sem - bad id (between 0 and -4) - E_ID |
Init - del_sem - bad id (0) - E_ID |
Init - del_sem - bad id (too great) - E_ID |
Init - sig_sem - bad id (less than -4) - E_OACV |
Init - sig_sem - bad id (between 0 and -4) - E_ID |
Init - sig_sem - bad id (0) - E_ID |
Init - sig_sem - bad id (too great) - E_ID |
Init - preq_sem - bad id (less than -4) - E_OACV |
Init - preq_sem - bad id (between 0 and -4) - E_ID |
Init - preq_sem - bad id (0) - E_ID |
Init - preq_sem - bad id (too great) - E_ID |
Init - wai_sem - bad id (less than -4) - E_OACV |
Init - wai_sem - bad id (between 0 and -4) - E_ID |
Init - wai_sem - bad id (0) - E_ID |
Init - wai_sem - bad id (too great) - E_ID |
Init - twai_sem - bad id (less than -4) - E_OACV |
Init - twai_sem - bad id (between 0 and -4) - E_ID |
Init - twai_sem - bad id (0) - E_ID |
Init - twai_sem - bad id (too great) - E_ID |
Init - ref_sem - bad id (less than -4) - E_OACV |
Init - ref_sem - bad id (between 0 and -4) - E_ID |
Init - ref_sem - bad id (0) - E_ID |
Init - ref_sem - bad id (too great) - E_ID |
Init - preq_sem - semaphore 1 available (count --> 1) - E_OK |
Init - preq_sem - semaphore 1 available (count --> 0) - E_OK |
Init - preq_sem - semaphore 1 unavailable - E_TMOUT |
Init - sig_sem - semaphore 1 (count --> 1) - E_OK |
Init - twai_sem(TMO_POL) - semaphore 1 available (count --> 0) - E_OK |
Init - twai_sem(TMO_POL) - semaphore 1 available - E_TMOUT |
Init - twai_sem - semaphore 1 unavailable - 1 second E_TMOUT |
Init - starting to block at Fri Jan 01 00:00:00 1988 |
Init - timed out at Fri Jan 01 00:00:01 1988 |
Init - twai_sem - semaphore 1 unavailable - timeout completed |
Init - sig_sem - semaphore 1 (count --> 1) - E_OK |
Init - sig_sem - semaphore 1 (count --> 2) - E_OK |
Init - sig_sem - semaphore 1 (count --> 3) - E_OK |
Init - sig_sem - semaphore 1 (count > maximum) - E_QOVR |
Init - ref_sem - NULL pk_sem returns E_PAR |
Init - ref_sem - semaphore 1 - E_OK |
Init - semaphore 1 count = 4 |
Init - semaphore 1 waiting tasks = 0 |
Init - preq_sem - semaphore 1 (count --> 2) - E_OK |
Init - ref_sem - semaphore 1 - E_OK |
Init - semaphore 1 count = 3 |
Init - semaphore 1 waiting tasks = 0 |
Init - del_sem - semaphore 1 deleted - E_OK |
Init - XXX need other tasks to complete the test XXX |
Init - dly_tsk - 1 second to let other task run |
*** END OF ITRONSEM01 -- ITRON SEMAPHORE TEST *** |
/itronsem01/init.c
0,0 → 1,332
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
|
/* |
* The following is hopefully temporary. |
*/ |
|
#include <time.h> |
|
#define put_time(_s) \ |
do { \ |
time_t a_time_t; \ |
a_time_t = time( 0 ); \ |
printf( "%s%s", _s, ctime( &a_time_t ) ); \ |
} while(0) |
|
void ITRON_Init( void ) |
{ |
ER status; |
T_CSEM pk_csem; |
T_RSEM pk_rsem; |
|
printf( "\n\n*** ITRONSEM01 -- ITRON SEMAPHORE TEST ***\n" ); |
|
/* |
* Exercise cre_sem - this code seems to exercise every path. |
*/ |
|
puts( "Init - cre_sem - NULL pk_sem returns E_PAR" ); |
status = cre_sem( 1, NULL ); |
assert( status == E_PAR ); |
|
puts( "Init - cre_sem - isemcnt > maxsem returns E_PAR" ); |
pk_csem.sematr = 0; |
pk_csem.isemcnt = 3; |
pk_csem.maxsem = 2; |
status = cre_sem( 1, &pk_csem ); |
assert( status == E_PAR ); |
|
puts( "Init - cre_sem - maxsem of 0 returns E_PAR" ); |
pk_csem.isemcnt = 0; |
pk_csem.maxsem = 0; |
status = cre_sem( 1, &pk_csem ); |
assert( status == E_PAR ); |
|
/* |
* Now run through all the bad ID errors |
*/ |
|
pk_csem.isemcnt = 2; |
pk_csem.maxsem = 3; |
puts( "Init - cre_sem - bad id (less than -4) - E_OACV" ); |
status = cre_sem( -5, &pk_csem ); |
assert( status == E_OACV ); |
|
puts( "Init - cre_sem - bad id (between 0 and -4) - E_ID" ); |
status = cre_sem( -4, &pk_csem ); |
assert( status == E_ID ); |
|
puts( "Init - cre_sem - bad id (0) - E_ID" ); |
status = cre_sem( 0, &pk_csem ); |
assert( status == E_ID ); |
|
puts( "Init - cre_sem - bad id (too great) - E_ID" ); |
status = cre_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1, &pk_csem ); |
assert( status == E_ID ); |
|
puts( "Init - cre_sem - create semaphore 1 TA_TFIFO - E_OK" ); |
pk_csem.isemcnt = 2; |
pk_csem.maxsem = 3; |
pk_csem.sematr = TA_TFIFO; |
status = cre_sem( 1, &pk_csem ); |
assert( status == E_OK ); |
|
puts( "Init - cre_sem - create semaphore 1 again - E_OBJ" ); |
status = cre_sem( 1, &pk_csem ); |
assert( status == E_OBJ ); |
|
puts( "Init - cre_sem - create semaphore 2 TA_TPRI - E_OK" ); |
pk_csem.isemcnt = 2; |
pk_csem.maxsem = 3; |
pk_csem.sematr = TA_TPRI; |
status = cre_sem( 2, &pk_csem ); |
assert( status == E_OK ); |
|
/* |
* Generate all the bad id errors for del_sem |
*/ |
|
puts( "Init - del_sem - bad id (less than -4) - E_OACV" ); |
status = del_sem( -5 ); |
assert( status == E_OACV ); |
|
puts( "Init - del_sem - bad id (between 0 and -4) - E_ID" ); |
status = del_sem( -4 ); |
assert( status == E_ID ); |
|
puts( "Init - del_sem - bad id (0) - E_ID" ); |
status = del_sem( 0 ); |
assert( status == E_ID ); |
|
puts( "Init - del_sem - bad id (too great) - E_ID" ); |
status = del_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1 ); |
assert( status == E_ID ); |
|
/* |
* Generate all the bad id errors for sig_sem |
*/ |
|
puts( "Init - sig_sem - bad id (less than -4) - E_OACV" ); |
status = sig_sem( -5 ); |
assert( status == E_OACV ); |
|
puts( "Init - sig_sem - bad id (between 0 and -4) - E_ID" ); |
status = sig_sem( -4 ); |
assert( status == E_ID ); |
|
puts( "Init - sig_sem - bad id (0) - E_ID" ); |
status = sig_sem( 0 ); |
assert( status == E_ID ); |
|
puts( "Init - sig_sem - bad id (too great) - E_ID" ); |
status = wai_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1 ); |
assert( status == E_ID ); |
|
/* |
* Generate all the bad id errors for preq_sem |
*/ |
|
puts( "Init - preq_sem - bad id (less than -4) - E_OACV" ); |
status = preq_sem( -5 ); |
assert( status == E_OACV ); |
|
puts( "Init - preq_sem - bad id (between 0 and -4) - E_ID" ); |
status = preq_sem( -4 ); |
assert( status == E_ID ); |
|
puts( "Init - preq_sem - bad id (0) - E_ID" ); |
status = preq_sem( 0 ); |
assert( status == E_ID ); |
|
puts( "Init - preq_sem - bad id (too great) - E_ID" ); |
status = preq_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1 ); |
assert( status == E_ID ); |
|
/* |
* Generate all the bad id errors for wai_sem |
*/ |
|
puts( "Init - wai_sem - bad id (less than -4) - E_OACV" ); |
status = wai_sem( -5 ); |
assert( status == E_OACV ); |
|
puts( "Init - wai_sem - bad id (between 0 and -4) - E_ID" ); |
status = wai_sem( -4 ); |
assert( status == E_ID ); |
|
puts( "Init - wai_sem - bad id (0) - E_ID" ); |
status = wai_sem( 0 ); |
assert( status == E_ID ); |
|
puts( "Init - wai_sem - bad id (too great) - E_ID" ); |
status = wai_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1 ); |
assert( status == E_ID ); |
|
/* |
* Generate all the bad id errors for twai_sem |
*/ |
|
puts( "Init - twai_sem - bad id (less than -4) - E_OACV" ); |
status = twai_sem( -5, 1000 ); |
assert( status == E_OACV ); |
|
puts( "Init - twai_sem - bad id (between 0 and -4) - E_ID" ); |
status = twai_sem( -4, 1000 ); |
assert( status == E_ID ); |
|
puts( "Init - twai_sem - bad id (0) - E_ID" ); |
status = twai_sem( 0, 1000 ); |
assert( status == E_ID ); |
|
puts( "Init - twai_sem - bad id (too great) - E_ID" ); |
status = twai_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1, 1000 ); |
assert( status == E_ID ); |
|
/* |
* Generate all the bad id errors for ref_sem |
*/ |
|
puts( "Init - ref_sem - bad id (less than -4) - E_OACV" ); |
status = ref_sem( -5, &pk_rsem ); |
assert( status == E_OACV ); |
|
puts( "Init - ref_sem - bad id (between 0 and -4) - E_ID" ); |
status = ref_sem( -4, &pk_rsem ); |
assert( status == E_ID ); |
|
puts( "Init - ref_sem - bad id (0) - E_ID" ); |
status = ref_sem( 0, &pk_rsem ); |
assert( status == E_ID ); |
|
puts( "Init - ref_sem - bad id (too great) - E_ID" ); |
status = ref_sem( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES + 1, &pk_rsem ); |
assert( status == E_ID ); |
|
/* |
* Exercise preq_sem (and sig_sem a little) |
*/ |
|
|
puts( "Init - preq_sem - semaphore 1 available (count --> 1) - E_OK" ); |
status = preq_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - preq_sem - semaphore 1 available (count --> 0) - E_OK" ); |
status = preq_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - preq_sem - semaphore 1 unavailable - E_TMOUT" ); |
status = preq_sem( 1 ); |
assert( status == E_TMOUT ); |
|
puts( "Init - sig_sem - semaphore 1 (count --> 1) - E_OK" ); |
status = sig_sem( 1 ); |
assert( status == E_OK ); |
|
puts("Init - twai_sem(TMO_POL) - semaphore 1 available (count --> 0) - E_OK"); |
status = twai_sem( 1, TMO_POL ); |
assert( status == E_OK ); |
|
puts( "Init - twai_sem(TMO_POL) - semaphore 1 available - E_TMOUT" ); |
status = twai_sem( 1, TMO_POL ); |
assert( status == E_TMOUT ); |
|
/* |
* Exercise twai_sem |
*/ |
|
puts( "Init - twai_sem - semaphore 1 unavailable - 1 second E_TMOUT" ); |
put_time( "Init - starting to block at "); |
status = twai_sem( 1, 1000 ); |
assert( status == E_TMOUT ); |
put_time( "Init - timed out at "); |
puts( "Init - twai_sem - semaphore 1 unavailable - timeout completed" ); |
|
/* |
* Now let's test exceed the maximum count of semaphore 1 |
*/ |
|
puts( "Init - sig_sem - semaphore 1 (count --> 1) - E_OK" ); |
status = sig_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - sig_sem - semaphore 1 (count --> 2) - E_OK" ); |
status = sig_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - sig_sem - semaphore 1 (count --> 3) - E_OK" ); |
status = sig_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - sig_sem - semaphore 1 (count > maximum) - E_QOVR" ); |
status = sig_sem( 1 ); |
assert( status == E_OK ); |
|
/* |
* Exercise ref_sem |
*/ |
|
puts( "Init - ref_sem - NULL pk_sem returns E_PAR" ); |
status = ref_sem( 1, NULL ); |
assert( status == E_PAR ); |
|
puts( "Init - ref_sem - semaphore 1 - E_OK" ); |
status = ref_sem( 1, &pk_rsem ); |
assert( status == E_OK ); |
printf( "Init - semaphore 1 count = %d\n", pk_rsem.semcnt ); |
printf( "Init - semaphore 1 waiting tasks = %d\n", pk_rsem.wtsk ); |
|
puts( "Init - preq_sem - semaphore 1 (count --> 2) - E_OK" ); |
status = preq_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - ref_sem - semaphore 1 - E_OK" ); |
status = ref_sem( 1, &pk_rsem ); |
assert( status == E_OK ); |
printf( "Init - semaphore 1 count = %d\n", pk_rsem.semcnt ); |
printf( "Init - semaphore 1 waiting tasks = %d\n", pk_rsem.wtsk ); |
|
|
/* |
* Exercise del_sem |
*/ |
|
/* XXX really want another task blocking on the semaphore XXX */ |
|
puts( "Init - del_sem - semaphore 1 deleted - E_OK" ); |
status = del_sem( 1 ); |
assert( status == E_OK ); |
|
puts( "Init - XXX need other tasks to complete the test XXX" ); |
|
puts( "Init - dly_tsk - 1 second to let other task run" ); |
status = dly_tsk( 1000 ); |
assert( status == E_OK ); |
|
printf( "*** END OF ITRONSEM01 -- ITRON SEMAPHORE TEST ***\n" ); |
exit( 0 ); |
} |
/itronsem01/itronsem01.doc
0,0 → 1,12
# |
# $Id: itronsem01.doc,v 1.2 1999/11/17 16:47:51 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
|
/itronsem01/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:10 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itronsem01 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itronsem01/system.h
0,0 → 1,40
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
#include <assert.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 1 |
#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES 10 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itrontask03/itrontask03.scn
0,0 → 1,21
*** ITRON TASK TEST 3 *** |
INIT - Create and Start PREEMPT |
PREEMPT - ref_tsk validation |
PREEMPT - chg_pri increment priority |
PREEMPT - ext_tsk - going to DORMANT state |
INIT - rot_rdq - no tasks at this priority |
INIT - ref_tsk PREEMPT - Validate DORMANT STATE |
PREEMPT - ref_tsk validation |
PREEMPT - exd_tsk - Exit and Delete task |
INIT - rot_rdq - yielding processor |
INIT - ref_tsk PREEMPT - Validate no longer exists |
INIT - suspending TA2 while middle task on a ready chain |
TA1 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_wake_after - sleep 1 minute |
TA3 - rtems_task_wake_after - sleep 5 seconds |
TA1 - chg_pri - set TA3's priority to 2 |
TA1 - sus_tsk - suspend TA2 |
TA1 - - delete TA2 |
TA1 - rtems_task_wake_after - sleep for 5 seconds |
TA3 - exd_tsk - exit and delete self |
*** ITRON TASK TEST 3 *** |
/itrontask03/init.c
0,0 → 1,144
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
#include <assert.h> |
|
void ITRON_Init( void ) |
{ |
ER status; |
T_CTSK pk_ctsk; |
T_RTSK pk_rtsk; |
|
pk_ctsk.exinf = NULL; |
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE; |
pk_ctsk.itskpri = PREEMPT_PRIORITY; |
pk_ctsk.task = Preempt_task; |
|
puts( "\n\n*** ITRON TASK TEST 3 ***" ); |
|
/* |
* Create and start the Preempt task the first time. |
* Verify that it is dormant when it comes back. |
*/ |
|
puts( "INIT - Create and Start PREEMPT" ); |
status = chg_pri( TSK_SELF, (PREEMPT_PRIORITY+2) ); |
directive_failed( status, "chg_pri of SELF" ); |
|
status = cre_tsk( PREEMPT_TASK_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of RTEMS_PREEMPT" ); |
|
status = sta_tsk( PREEMPT_TASK_ID, 0 ); |
directive_failed( status, "sta_tsk of RTEMS_PREEMPT" ); |
puts( "INIT - rot_rdq - no tasks at this priority" ); |
status = rot_rdq( 1 ); |
directive_failed( status, "rot_rdq" ); |
|
puts( "INIT - ref_tsk PREEMPT - Validate DORMANT STATE" ); |
status = ref_tsk( &pk_rtsk, PREEMPT_TASK_ID ); |
directive_failed( status, "INIT - ref_tsk of RTEMS_PREEMPT"); |
fatal_directive_status(pk_rtsk.tskstat,TTS_DMT,"tskstat of PREEMPT"); |
|
/* |
* Restart the Preempt Task. |
*/ |
|
status = sta_tsk( PREEMPT_TASK_ID, 0 ); |
directive_failed( status, "sta_tsk of RTEMS_PREEMPT" ); |
puts( "INIT - rot_rdq - yielding processor" ); |
status = rot_rdq( 1 ); |
directive_failed( status, "rot_rdq" ); |
puts( "INIT - ref_tsk PREEMPT - Validate no longer exists" ); |
status = ref_tsk( &pk_rtsk, PREEMPT_TASK_ID ); |
fatal_directive_status( status, E_NOEXS, "tskstat of PREEMPT"); |
status = chg_pri( TSK_SELF, PREEMPT_PRIORITY ); |
directive_failed( status, "chg_pri of SELF" ); |
|
/* |
* XXX |
*/ |
|
pk_ctsk.itskpri = 3; |
pk_ctsk.task = Task_1; |
status = cre_tsk( TA1_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA1" ); |
|
pk_ctsk.task = Task_2; |
status = cre_tsk( TA2_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA2" ); |
|
pk_ctsk.task = Task_3; |
status = cre_tsk( TA3_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA3" ); |
|
status = sta_tsk( TA1_ID, 0 ); |
directive_failed( status, "sta_tsk of TA1" ); |
status = sta_tsk( TA2_ID, 0 ); |
directive_failed( status, "sta_tsk of TA2" ); |
status = sta_tsk( TA3_ID, 0 ); |
directive_failed( status, "sta_tsk of TA3" ); |
|
status = ref_tsk( &pk_rtsk, TA1_ID); |
directive_failed( status, "INIT - ref_tsk of TA1"); |
fatal_directive_status( pk_rtsk.tskstat, TTS_RDY , "tskstat of TA1"); |
|
puts( "INIT - suspending TA2 while middle task on a ready chain" ); |
status = sus_tsk( TA2_ID ); |
directive_failed( status, "sus_tsk of TA2" ); |
status = ref_tsk( &pk_rtsk, TA2_ID); |
directive_failed( status, "INIT - ref_tsk of TA2"); |
fatal_directive_status( pk_rtsk.tskstat, TTS_SUS, "tskstat of TA2"); |
|
status = ter_tsk( TA1_ID ); |
directive_failed( status, "ter_tsk of TA1" ); |
status = del_tsk( TA1_ID ); |
directive_failed( status, "del_tsk of TA1" ); |
status = ter_tsk( TA2_ID ); |
directive_failed( status, "ter_tsk of TA2" ); |
status = ter_tsk( TA3_ID ); |
directive_failed( status, "ter_tsk of TA3" ); |
|
pk_ctsk.itskpri = 1; |
pk_ctsk.task = Task_1; |
status = cre_tsk( TA1_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA1 at priority 1" ); |
|
status = sta_tsk( TA1_ID, 0 ); |
directive_failed( status, "sta_tsk of TA1" ); |
status = sta_tsk( TA2_ID, 0 ); |
directive_failed( status, "sta_tsk of TA2" ); |
status = sta_tsk( TA3_ID, 0 ); |
directive_failed( status, "sta_tsk of TA3" ); |
|
exd_tsk(); |
assert(0); |
} |
|
|
|
|
|
|
/itrontask03/task1.c
0,0 → 1,57
/* Task_1 |
* |
* This routine serves as a test task. It verifies the task manager. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task1.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Task_1() |
{ |
ER status; |
|
/* |
* XXX - Change to itron routine. |
*/ |
|
puts( "TA1 - rtems_task_wake_after - sleep 1 second" ); |
status = rtems_task_wake_after( 1*TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after" ); |
|
status = chg_pri( TA3_ID , 2 ); |
directive_failed( status, "chg_pri" ); |
|
puts( "TA1 - chg_pri - set TA3's priority to 2" ); |
|
puts( "TA1 - sus_tsk - suspend TA2" ); |
status = sus_tsk( TA2_ID ); |
directive_failed( status, "sus_tsk of TA2" ); |
|
puts( "TA1 - - delete TA2" ); |
status = ter_tsk( TA2_ID ); |
directive_failed( status, "ter_tsk of TA2" ); |
|
/* |
* XXX - Change to itron routine. |
*/ |
|
puts( "TA1 - rtems_task_wake_after - sleep for 5 seconds" ); |
status = rtems_task_wake_after( 5*TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after" ); |
|
puts( "*** ITRON TASK TEST 3 ***" ); |
exit( 0 ); |
} |
/itrontask03/itrontask03.doc
0,0 → 1,54
# |
# $Id: itrontask03.doc,v 1.4 1999/11/17 16:47:54 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
This file describes the directives and concepts tested by this test set. |
This test is based upon the test in sp0. |
|
test set name: itrontask03 |
|
directives: |
chg_pri cre_tsk del_tsk exd_tsk rot_rdq sta_tsk sus_tsk ter_tsk |
|
concepts: XXX - Verify |
|
a. verifies rot_rdq can be used by equal priority tasks to correctly yeild the processor |
|
b. Verifies sus_tsk suspends another task. |
|
c. Verifies rot_rdq with a yeild process response. |
|
a. Verifies that a task can delete another task and also delete itself. |
|
b. Verifies that memory is freed back to the heap correctly. |
|
c. Verifies that TCBs are freed back to the inactive chain correctly. |
|
d. Verifies that a task can get the task identification number of |
another task. |
|
e. Verifies the _Set_state routine where the task is not READY. |
|
f. Verifies the break statement in the _Block_activate routine. |
|
g. Verifies the while loop in the _Prev_tcb routine. |
|
notes: |
|
rtems_wake_after calls should be replaced with itron calls when |
the time functionality is added. |
|
output: |
|
|
|
|
|
|
/itrontask03/task2.c
0,0 → 1,31
/* Task_2 |
* |
* This routine serves as a test task. It sleeps for 1 minute but |
* does not expect to wake up. Task 1 should suspend then delete it |
* so that it appears to never wake up. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task2.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Task_2() |
{ |
rtems_status_code status; |
|
puts( "TA2 - rtems_task_wake_after - sleep 1 minute" ); |
status = rtems_task_wake_after( 60*TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after in TA2" ); |
} |
/itrontask03/task3.c
0,0 → 1,39
/* Task_3 |
* |
* This routine serves as a test task. It simply sleeps for 5 seconds |
* and then deletes itself. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task3.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Task_3() |
{ |
rtems_status_code status; |
|
/* |
* XXX - Convert Later. |
*/ |
|
puts( "TA3 - rtems_task_wake_after - sleep 5 seconds" ); |
status = rtems_task_wake_after( 5*TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after in TA3" ); |
|
|
puts( "TA3 - exd_tsk - exit and delete self" ); |
exd_tsk(); |
directive_failed( 0, "exd_tsk" ); |
} |
/itrontask03/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:11 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itrontask03 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c preempt.c task1.c task2.c task3.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itrontask03/system.h
0,0 → 1,49
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
void Preempt_task(); |
void Task_1(); |
void Task_2(); |
void Task_3(); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 6 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
#define PREEMPT_TASK_ID 2 |
#define TA1_ID 3 |
#define TA2_ID 4 |
#define TA3_ID 5 |
|
|
#define PREEMPT_PRIORITY 1 |
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itrontask03/preempt.c
0,0 → 1,54
/* Preempt_task |
* |
* This routine serves as a test task. It verifies the task manager. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: preempt.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <assert.h> |
#include "system.h" |
|
int Preempt_task_Count; |
|
void Preempt_task() |
{ |
ER status; |
T_RTSK pk_rtsk; |
|
puts( "PREEMPT - ref_tsk validation" ); |
status = ref_tsk( &pk_rtsk, PREEMPT_TASK_ID ); |
fatal_directive_status( status, E_OK , "ref_tsk of PREEMPT"); |
assert( pk_rtsk.tskpri == PREEMPT_PRIORITY ); |
assert( pk_rtsk.itskpri == PREEMPT_PRIORITY ); |
assert( pk_rtsk.task == Preempt_task ); |
assert( pk_rtsk.stksz >= RTEMS_MINIMUM_STACK_SIZE ); |
assert( pk_rtsk.tskstat == (TTS_RUN | TTS_RDY) ); |
|
if ( Preempt_task_Count == 0 ) { |
Preempt_task_Count ++; |
puts( "PREEMPT - chg_pri increment priority "); |
status = chg_pri( PREEMPT_TASK_ID, (PREEMPT_PRIORITY+1) ); |
directive_failed( status, "chg_pri" ); |
puts( "PREEMPT - ext_tsk - going to DORMANT state" ); |
ext_tsk( ); |
assert( 0 ); |
} else { |
Preempt_task_Count ++; |
puts( "PREEMPT - exd_tsk - Exit and Delete task" ); |
exd_tsk( ); |
assert( 0 ); |
} |
} |
|
/itronmbox01/init.c
0,0 → 1,36
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
#include <time.h> |
|
void ITRON_Init( void ) |
{ |
printf( "\n\n*** ITRON MBOX TEST 01 ***\n" ); |
printf( "doesn't test anything yet\n" ); |
printf( "*** END OF ITRON MBOX TEST 01 ***\n" ); |
exit( 0 ); |
} |
|
|
/itronmbox01/itronmbox01.scn
0,0 → 1,3
*** ITRON MBOX TEST 01 *** |
ITRON Mailboxes are implemented but there is currently no test. |
*** END OF ITRON MBOX TEST 01 *** |
/itronmbox01/itronmbox01.doc
--- itronmbox01/Makefile.am (nonexistent)
+++ itronmbox01/Makefile.am (revision 173)
@@ -0,0 +1,41 @@
+##
+## $Id: Makefile.am,v 1.2 2001-09-27 12:02:10 chris Exp $
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+TEST = itronmbox01
+PGM = ${ARCH}/$(TEST).exe
+
+MANAGERS = all
+
+C_FILES = init.c
+C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o)
+
+H_FILES = system.h
+noinst_HEADERS = $(H_FILES)
+
+DOCTYPES = doc scn
+DOCS = $(DOCTYPES:%=$(TEST).%)
+
+SRCS = $(DOCS) $(C_FILES) $(H_FILES)
+OBJS = $(C_O_FILES)
+
+PRINT_SRCS = $(DOCS)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(RTEMS_ROOT)/make/leaf.cfg
+include $(top_srcdir)/itrontests.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+${PGM}: $(OBJS) $(LINK_FILES)
+ $(make-exe)
+
+all-local: $(ARCH) $(TMPINSTALL_FILES)
+
+EXTRA_DIST = $(C_FILES) $(DOCS)
+
+include $(top_srcdir)/../../../../automake/local.am
/itronmbox01/system.h
0,0 → 1,37
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:10 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 1 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itrontask04/init.c
0,0 → 1,93
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is called from init_exec and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: NONE |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: init.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
#include <stdio.h> |
|
void ITRON_Init( void ) |
{ |
ER status; |
T_CTSK pk_ctsk; |
|
puts( "\n\n*** ITRON TASK TEST 4 ***" ); |
|
status = chg_pri( 0, 20 ); |
directive_failed( status, "chg_pri to 20" ); |
|
pk_ctsk.exinf = NULL; |
pk_ctsk.tskatr = TA_HLNG; |
pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE; |
pk_ctsk.itskpri = 2; |
|
pk_ctsk.task = Task_1; |
status = cre_tsk( TA1_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA1" ); |
|
pk_ctsk.task = Task_2; |
status = cre_tsk( TA2_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA2" ); |
|
pk_ctsk.itskpri = 1; |
pk_ctsk.task = Task_3; |
status = cre_tsk( TA3_ID, &pk_ctsk ); |
directive_failed( status, "cre_tsk of TA3" ); |
|
puts("INIT - dis_dsp while starting tasks"); |
status = dis_dsp( ); |
|
/* dispatching disabled */ |
|
directive_failed_with_level( status, "dis_dsp from ITRON_Init", 1 ); |
status = sta_tsk( TA1_ID, 0 ); |
directive_failed_with_level( status, "sta_tsk of TA1", 1 ); |
status = sta_tsk( TA2_ID, 0 ); |
directive_failed_with_level( status, "sta_tsk of TA2", 1 ); |
status = sta_tsk( TA3_ID, 0 ); |
directive_failed_with_level( status, "sta_tsk of TA3", 1 ); |
|
puts( "INIT - suspending TA2 3 times" ); |
status = sus_tsk( TA2_ID ); |
directive_failed_with_level( status, "sus_tsk of TA2", 1 ); |
status = sus_tsk( TA2_ID ); |
directive_failed_with_level( status, "sus_tsk of TA2", 1 ); |
status = sus_tsk( TA2_ID ); |
directive_failed_with_level( status, "sus_tsk of TA2", 1 ); |
|
puts("INIT - ena_dsp while starting tasks"); |
status = ena_dsp( ); |
|
/* dispatching enabled again */ |
|
puts( "INIT - suspending TA1 3 times" ); |
status = sus_tsk( TA1_ID ); |
directive_failed( status, "sus_tsk of TA2" ); |
status = sus_tsk( TA1_ID ); |
directive_failed( status, "sus_tsk of TA2" ); |
status = sus_tsk( TA1_ID ); |
directive_failed( status, "sus_tsk of TA2" ); |
|
puts("INIT - exd_tsk"); |
exd_tsk(); |
directive_failed( 0, "exd_tsk" ); |
} |
|
/itrontask04/itrontask04.scn
0,0 → 1,35
*** ITRON TASK TEST 4 *** |
INIT - dis_dsp while starting tasks |
INIT - suspending TA2 3 times |
INIT - ena_dsp while starting tasks |
TA3 - frsm_tsk TA1 |
TA3 - rsm_tsk TA2 |
TA3 - rot_rdq priority 2 queue |
TA3 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_suspend RTEMS_SELF |
INIT - suspending TA1 3 times |
INIT - exd_tsk |
TA3 - frsm_tsk TA1 |
TA3 - rsm_tsk TA2 |
TA3 - rot_rdq priority 2 queue |
TA3 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_suspend RTEMS_SELF |
TA3 - frsm_tsk TA1 |
TA3 - rsm_tsk TA2 |
TA3 - rot_rdq priority 2 queue |
TA3 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_suspend RTEMS_SELF |
TA2 - rtems_task_suspend RTEMS_SELF |
TA3 - frsm_tsk TA1 |
TA3 - rsm_tsk TA2 |
TA3 - rot_rdq priority 2 queue |
TA3 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_suspend RTEMS_SELF |
TA2 - rtems_task_suspend RTEMS_SELF |
TA3 - frsm_tsk TA1 |
TA3 - rsm_tsk TA2 |
TA3 - rot_rdq priority 2 queue |
TA3 - rtems_task_wake_after - sleep 1 second |
TA2 - rtems_task_suspend RTEMS_SELF |
TA2 - rtems_task_suspend RTEMS_SELF |
*** ITRON TASK TEST 4 *** |
/itrontask04/task1.c
0,0 → 1,44
/* Task_1 |
* |
* This routine serves as a test task. It verifies the task manager. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task1.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
/* |
* XXX - This test requires tasks to suspend self, yet ITRON defines |
* this as an error. |
*/ |
|
void Task_1() |
{ |
rtems_status_code status; |
|
while (1) { |
|
puts( "TA2 - rtems_task_suspend RTEMS_SELF" ); |
status = rtems_task_suspend( RTEMS_SELF ); |
directive_failed( status, "TA2 rtems_task_suspend RTEMS_SELF" ); |
|
} |
} |
|
|
|
|
|
|
/itrontask04/task2.c
0,0 → 1,40
/* Task_2 |
* |
* This routine serves as a test task. It sleeps for 1 minute but |
* does not expect to wake up. Task 1 should suspend then delete it |
* so that it appears to never wake up. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task2.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
/* |
* XXX - This test requires tasks to suspend self, yet ITRON defines |
* this as an error. |
*/ |
|
void Task_2() |
{ |
rtems_status_code status; |
|
while (1) { |
|
puts( "TA2 - rtems_task_suspend RTEMS_SELF" ); |
status = rtems_task_suspend( RTEMS_SELF ); |
directive_failed( status, "TA2 rtems_task_suspend RTEMS_SELF" ); |
|
} |
} |
/itrontask04/itrontask04.doc
0,0 → 1,49
# |
# $Id: itrontask04.doc,v 1.4 1999/11/17 16:47:56 jennifer Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# The license and distribution terms for this file may be |
# found in the file LICENSE in this distribution or at |
# http://www.OARcorp.com/rtems/license.html. |
# |
|
This file describes the directives and concepts tested by this test set. |
|
test set name: itrontask04 |
|
directives: |
chg_pri cre_tsk dis_dsp ena_dsp exd_tsk frsm_tsk rot_rdq rsm_tsk |
sta_tsk sus_tsk |
|
concepts: |
|
a. This test check task suspend and resume functionality. |
|
b. Verifies the suspend count works correctly. |
|
c. Verifies the forced resume works correctly |
|
d. Verifies the rotate ready queue works correctly |
|
e. Verifies a task called with rtems suspend can be resumed |
with an itron resume call. ( XXX - May not be necessary. ) |
|
f. verifies rot_rdq can be used by non-equal priority tasks to correctly rotate ready queue. |
|
g. Verifies enable dispatch and disable dispatch work. |
|
notes: |
|
This verision of ITRON does not provide a way for a task to |
suspend itself (only another task can suspend it). Therefore, |
the test calls rtems_task_suspend to suspend it. |
|
rtems_task_wake_after calls should be replaced with itron call |
when the ITRON functionality is finished. |
|
output: |
|
XXX - Verify the output messages on this test. It looks like |
the suspend count doesn't look correct. ??? Nov 10, 99 |
/itrontask04/task3.c
0,0 → 1,53
/* Task_3 |
* |
* This routine serves as a test task. It simply sleeps for 5 seconds |
* and then deletes itself. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: task3.c,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Task_3() |
{ |
rtems_status_code status; |
int i; |
|
for(i=0; i<5; i++) { |
puts("TA3 - frsm_tsk TA1"); |
status = frsm_tsk( TA1_ID ); |
directive_failed( status, "TA3 - frsm_tsk TA1" ); |
|
puts("TA3 - rsm_tsk TA2"); |
status = rsm_tsk( TA2_ID ); |
directive_failed( status, "TA3 - rsm_tsk TA2" ); |
|
puts( "TA3 - rot_rdq priority 2 queue"); |
status = rot_rdq( 2 ); |
directive_failed( status, "rot_rdq for 2" ); |
|
/* |
* XXX - Convert Later. |
*/ |
|
puts( "TA3 - rtems_task_wake_after - sleep 1 second" ); |
status = rtems_task_wake_after( TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after in TA3" ); |
} |
|
puts( "*** ITRON TASK TEST 4 ***" ); |
exit( 0 ); |
} |
|
/itrontask04/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:11 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itrontask04 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c task1.c task2.c task3.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itrontask04/system.h
0,0 → 1,47
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
void Preempt_task(); |
void Task_1(); |
void Task_2(); |
void Task_3(); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 5 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
#define PREEMPT_TASK_ID 2 |
#define TA1_ID 3 |
#define TA2_ID 4 |
#define TA3_ID 5 |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/configure.in
0,0 → 1,51
dnl Process this file with autoconf to produce a configure script. |
dnl |
dnl $Id: configure.in,v 1.2 2001-09-27 12:02:08 chris Exp $ |
|
AC_PREREQ(2.13) |
AC_INIT(itronhello) |
RTEMS_TOP(../../../..) |
AC_CONFIG_AUX_DIR(../../../..) |
|
RTEMS_CANONICAL_TARGET_CPU |
|
AM_INIT_AUTOMAKE(rtems-c-src-tests-itrontests,$RTEMS_VERSION,no) |
AM_MAINTAINER_MODE |
|
RTEMS_ENABLE_INLINES |
RTEMS_ENABLE_GCC28 |
RTEMS_ENABLE_BARE |
|
RTEMS_ENV_RTEMSBSP |
RTEMS_CHECK_CPU |
RTEMS_CANONICAL_HOST |
|
RTEMS_PROJECT_ROOT |
|
RTEMS_PROG_CC_FOR_TARGET |
|
RTEMS_CANONICALIZE_TOOLS |
|
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP) |
|
AC_SUBST(RTEMS_USE_GCC272) |
AC_SUBST(BARE_CPU_CFLAGS) |
AC_SUBST(BARE_CPU_MODEL) |
AC_SUBST(CC_CFLAGS_DEFAULT) |
AC_SUBST(CC_CFLAGS_DEBUG_V) |
AC_SUBST(CC_CFLAGS_PROFILE_V) |
AC_SUBST(CC_LDFLAGS_PROFILE_V) |
|
# Explicitly list all Makefiles here |
AC_OUTPUT( |
Makefile |
itronhello/Makefile |
itronmbf01/Makefile |
itronmbox01/Makefile |
itronsem01/Makefile |
itrontask01/Makefile |
itrontask02/Makefile |
itrontask03/Makefile |
itrontask04/Makefile |
itrontime01/Makefile |
) |
/Makefile.am
0,0 → 1,14
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:08 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal |
|
SUBDIRS = itronhello itrontask01 itrontask02 itrontask03 itrontask04 \ |
itronmbf01 itronmbox01 itronsem01 itrontime01 |
|
EXTRA_DIST = itrontests.am |
|
include $(top_srcdir)/../../../../automake/subdirs.am |
include $(top_srcdir)/../../../../automake/local.am |
/itrontests.am
0,0 → 1,23
project_bspdir=$(PROJECT_ROOT)/@RTEMS_BSP@ |
|
$(project_bspdir)/tests: |
@$(mkinstalldirs) $@ |
|
$(project_bspdir)/tests/$(TEST)$(LIB_VARIANT).exe: $(PGM) |
$(INSTALL_PROGRAM) $< $@ |
|
$(project_bspdir)/tests/screens: |
@$(mkinstalldirs) $@ |
|
$(project_bspdir)/tests/screens/itrontests: |
@$(mkinstalldirs) $@ |
|
$(project_bspdir)/tests/screens/itrontests/$(TEST).scn: $(TEST).scn |
$(INSTALL_DATA) $< $@ |
|
TMPINSTALL_FILES += \ |
$(project_bspdir)/tests \ |
$(project_bspdir)/tests/$(TEST)$(LIB_VARIANT).exe \ |
$(project_bspdir)/tests/screens \ |
$(project_bspdir)/tests/screens/itrontests \ |
$(project_bspdir)/tests/screens/itrontests/$(TEST).scn |
/itrontime01/itrontime01.doc
--- itrontime01/init.c (nonexistent)
+++ itrontime01/init.c (revision 173)
@@ -0,0 +1,62 @@
+/* Init
+ *
+ * This routine is the initialization task for this test program.
+ * It is called from init_exec and has the responsibility for creating
+ * and starting the tasks that make up the test. If the time of day
+ * clock is required for the test, it should also be set to a known
+ * value by this function.
+ *
+ * Input parameters: NONE
+ *
+ * Output parameters: NONE
+ *
+ * COPYRIGHT (c) 1989-1999.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id: init.c,v 1.2 2001-09-27 12:02:11 chris Exp $
+ */
+
+#define TEST_INIT
+#include "system.h"
+#include
+#include
+
+/*
+ * get the current time in second since epoch (1970), change it since 1985,
+ * compute the time in millisecond
+ *
+ */
+
+int time_sec_epoch( void ) {
+
+int s_time,t_time,r_time;
+long m_sec;
+
+t_time = time(NULL);
+s_time = (1985-1970)*365*24*60*60;
+r_time = t_time - s_time;
+m_sec = r_time*1000;
+
+printf( "Time from 1970: %d\n", t_time );
+printf( "Time between 1970 and 1985: %d\n", s_time );
+printf( "Time from 1985: %d\n", r_time );
+printf("milliseconds: %ld\n",m_sec);
+
+return 0;
+}
+
+
+
+void ITRON_Init( void )
+{
+ printf( "\n\n*** ITRON TIME TEST 01 ***\n" );
+ printf( "doesn't test anything yet\n" );
+ printf( "*** END OF ITRON TIME TEST 01 ***\n" );
+ exit( 0 );
+}
+
+
/itrontime01/Makefile.am
0,0 → 1,41
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:11 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = itrontime01 |
PGM = ${ARCH}/$(TEST).exe |
|
MANAGERS = all |
|
C_FILES = init.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = doc scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(DOCS) $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/itrontests.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/itrontime01/system.h
0,0 → 1,37
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* $Id: system.h,v 1.2 2001-09-27 12:02:11 chris Exp $ |
*/ |
|
#include <tmacros.h> |
#include <itron.h> |
|
/* functions */ |
|
void ITRON_Init( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
#define CONFIGURE_MAXIMUM_ITRON_TASKS 1 |
|
#define CONFIGURE_ITRON_INIT_TASK_TABLE |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Global_variable; /* example global variable */ |
|
/* end of include file */ |
/itrontime01/itrontime01.scn
0,0 → 1,4
*** ITRON TIME TEST 01 *** |
The Time Services are not completely implemented. |
*** END OF ITRON TIME TEST 01 *** |
|
/README
0,0 → 1,6
# |
# $Id: README,v 1.2 2001-09-27 12:02:08 chris Exp $ |
# |
|
This directory contains the functionality tests for the ITRON 3.0 API |
implementation. |