OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [common/] [current/] [tests/] [context.c] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
/*=================================================================
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 Free Software Foundation, 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
16
// version.
17
//
18
// eCos is distributed in the hope that it will be useful, but WITHOUT
19
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21
// for more details.
22
//
23
// You should have received a copy of the GNU General Public License
24
// along with eCos; if not, write to the Free Software Foundation, Inc.,
25
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
26
//
27
// As a special exception, if other files instantiate templates or use
28
// macros or inline functions from this file, or you compile this file
29
// and link it with other works to produce a work based on this file,
30
// this file does not by itself cause the resulting work to be covered by
31
// the GNU General Public License. However the source code for this file
32
// must still be made available in accordance with section (3) of the GNU
33
// General Public License v2.
34
//
35
// This exception does not invalidate any other reasons why a work based
36
// on this file might be covered by the GNU General Public License.
37
// -------------------------------------------
38
// ####ECOSGPLCOPYRIGHTEND####
39
//==========================================================================
40
//#####DESCRIPTIONBEGIN####
41
//
42
// Author(s):     nickg
43
// Contributors:  nickg
44
// Date:          1998-10-07
45
//####DESCRIPTIONEND####
46
*/
47
 
48
#include <pkgconf/hal.h>
49
 
50
#include <pkgconf/infra.h>
51
 
52
#include <cyg/infra/testcase.h>
53
 
54
#include <cyg/infra/cyg_trac.h>
55
#include <cyg/hal/hal_arch.h>
56
 
57
#define CYG_TRACE_USER_BOOL 1
58
 
59
// -------------------------------------------------------------------------
60
 
61
#define THREADS         4
62
#define STACKSIZE       (2*1024)
63
 
64
char stack[THREADS][STACKSIZE];
65
 
66
CYG_ADDRWORD sp[THREADS];
67
 
68
cyg_count32 switches = 0;
69
 
70
// -------------------------------------------------------------------------
71
 
72
void entry0( CYG_ADDRWORD arg )
73
{
74
    CYG_TRACE1B("Thread %d started\n", arg );
75
 
76
    while( switches < 1000 )
77
    {
78
        HAL_THREAD_SWITCH_CONTEXT( &sp[arg], &sp[(arg+1) % THREADS] );
79
 
80
        CYG_TRACE1B("Thread %d resumed\n", arg );
81
 
82
        switches++;
83
    }
84
 
85
    CYG_TEST_PASS_FINISH("HAL Context test");
86
 
87
}
88
 
89
// -------------------------------------------------------------------------
90
 
91
void context_main(void)
92
{
93
    int i;
94
 
95
    CYG_TEST_INIT();
96
 
97
    // Init all thread contexts:
98
 
99
    for( i = 0 ; i < THREADS; i++ )
100
    {
101
        sp[i] = (CYG_ADDRWORD)stack[i]+STACKSIZE;
102
 
103
        HAL_THREAD_INIT_CONTEXT( sp[i], i, entry0, i*0x01010000 );
104
    }
105
 
106
    // Load the first thread.
107
 
108
    HAL_THREAD_LOAD_CONTEXT( &sp[0] );
109
}
110
 
111
// -------------------------------------------------------------------------
112
 
113
externC void
114
cyg_start( void )
115
{
116
    context_main();
117
}
118
 
119
// -------------------------------------------------------------------------
120
/* EOF context.c */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.