source: SVN/cambria/redboot/packages/hal/common/current/tests/context.c @ 1

Last change on this file since 1 was 1, checked in by Tim Harvey, 2 years ago

restored latest version of files from server backup

Signed-off-by: Tim Harvey <tharvey@…>

File size: 3.5 KB
Line 
1/*=================================================================
2//
3//        context.c
4//
5//        HAL Thread context handling test
6//
7//==========================================================================
8//####ECOSGPLCOPYRIGHTBEGIN####
9// -------------------------------------------
10// This file is part of eCos, the Embedded Configurable Operating System.
11// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12//
13// eCos is free software; you can redistribute it and/or modify it under
14// the terms of the GNU General Public License as published by the Free
15// Software Foundation; either version 2 or (at your option) any later version.
16//
17// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18// WARRANTY; without even the implied warranty of MERCHANTABILITY or
19// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20// for more details.
21//
22// You should have received a copy of the GNU General Public License along
23// with eCos; if not, write to the Free Software Foundation, Inc.,
24// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25//
26// As a special exception, if other files instantiate templates or use macros
27// or inline functions from this file, or you compile this file and link it
28// with other works to produce a work based on this file, this file does not
29// by itself cause the resulting work to be covered by the GNU General Public
30// License. However the source code for this file must still be made available
31// in accordance with section (3) of the GNU General Public License.
32//
33// This exception does not invalidate any other reasons why a work based on
34// this file might be covered by the GNU General Public License.
35//
36// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37// at http://sources.redhat.com/ecos/ecos-license/
38// -------------------------------------------
39//####ECOSGPLCOPYRIGHTEND####
40//==========================================================================
41//#####DESCRIPTIONBEGIN####
42//
43// Author(s):     nickg
44// Contributors:  nickg
45// Date:          1998-10-07
46//####DESCRIPTIONEND####
47*/
48
49#include <pkgconf/hal.h>
50
51#include <pkgconf/infra.h>
52
53#include <cyg/infra/testcase.h>
54
55#include <cyg/infra/cyg_trac.h>
56#include <cyg/hal/hal_arch.h>
57
58#define CYG_TRACE_USER_BOOL 1
59
60// -------------------------------------------------------------------------
61
62#define THREADS         4
63#define STACKSIZE       (2*1024)
64
65char stack[THREADS][STACKSIZE];
66
67CYG_ADDRWORD sp[THREADS];
68
69cyg_count32 switches = 0;
70
71// -------------------------------------------------------------------------
72
73void entry0( CYG_ADDRWORD arg )
74{
75    CYG_TRACE1B("Thread %d started\n", arg );
76
77    while( switches < 1000 )
78    {
79        HAL_THREAD_SWITCH_CONTEXT( &sp[arg], &sp[(arg+1) % THREADS] );
80
81        CYG_TRACE1B("Thread %d resumed\n", arg );
82
83        switches++;
84    }
85
86    CYG_TEST_PASS_FINISH("HAL Context test");
87   
88}
89
90// -------------------------------------------------------------------------
91
92void context_main(void)
93{
94    int i;
95   
96    CYG_TEST_INIT();
97
98    // Init all thread contexts:
99   
100    for( i = 0 ; i < THREADS; i++ )
101    {
102        sp[i] = (CYG_ADDRWORD)stack[i]+STACKSIZE;
103       
104        HAL_THREAD_INIT_CONTEXT( sp[i], i, entry0, i*0x01010000 );
105    }
106
107    // Load the first thread.
108   
109    HAL_THREAD_LOAD_CONTEXT( &sp[0] );
110}
111
112// -------------------------------------------------------------------------
113
114externC void
115cyg_start( void )
116{
117    context_main();
118}
119
120// -------------------------------------------------------------------------
121/* EOF context.c */
Note: See TracBrowser for help on using the repository browser.