source: branches/fault_tolerance/softs/giet_tsar/stdio.h @ 725

Last change on this file since 725 was 724, checked in by cfuguet, 10 years ago

branches/fault_tolerance:

  • Recreating fault_tolerance branch with all new modifications from trunk.
  • Introducing distributed boot rom in the tsar_generic_iob platform
File size: 4.9 KB
Line 
1////////////////////////////////////////////////////////////////////////////////////////
2// File : stdio.h
3// Written by Alain Greiner
4// Date : 17/01/2014
5//
6// This file define varions functions that can be used by applications to access
7// peripherals, or other ressources such as processor registers, spin_locks
8// or synchronisation barriers.
9// It is dedicated for the TSAR multi-processors multi_clusters architecture.
10// There is NO separation between application code and system code.
11// This basic GIET does not use the virtual memory, and does nort support multi-tasking.
12//
13//The supported peripherals are:
14//- the SoClib multi_tty
15//- The SoCLib frame_buffer
16//- The SoCLib block_device
17//
18//The following parameters must be defined in the hard_config.h file.
19//- X_SIZE          : number of clusters in a row
20//- Y_SIZE          : number of clusters in a column
21//- X_WIDTH         : number of bits for X field in proc_id
22//- Y_WIDTH         : number of bits for Y field in proc_id
23//- NB_PROCS_MAX    : max number of processor per cluster
24//- NB_TTY_CHANNELS : max number of TTY channels
25//
26//The follobing base addresses must be defined in the ldscript
27//- seg_tty_base
28//- seg_fbf_base
29//- seg_ioc_base
30////////////////////////////////////////////////////////////////////////////////////////
31
32#ifndef _GIET_STDIO_H_
33#define _GIET_STDIO_H_
34
35#include "tty.h"
36#include "block_device.h"
37#include "hard_config.h"
38#include <stdarg.h>
39
40typedef unsigned int    size_t;
41
42// global variables defined in stdio.c
43
44extern  int volatile    _ioc_lock;
45extern  int volatile    _ioc_done;
46extern  int volatile    _ioc_status;
47
48extern  char volatile   _tty_get_buf[];
49extern  int volatile    _tty_get_full[];
50
51extern int volatile     _barrier_value[];
52extern int volatile     _barrier_count[];
53extern int volatile     _barrier_lock[];
54
55extern int volatile     _spin_lock[];
56
57// functions defined in stdio.c
58
59void*           _memcpy( void* dst, const void* src, size_t size );
60
61void            _extended_memcpy( unsigned int dst_cluster,
62                                  unsigned int dst_address,
63                                  unsigned int src_cluster,
64                                  unsigned int src_address,
65                                  unsigned int length );
66unsigned int    _procid();
67unsigned int    _proctime();
68unsigned int    _procnumber();
69
70unsigned int    _rand();
71
72void            _it_mask();
73void            _it_enable();
74
75void            _dcache_buf_invalidate( const void* buffer, size_t size );
76
77void            _exit();
78
79void            _itoa_dec( unsigned int val, char* buf );
80void            _itoa_hex( unsigned int val, char* buf );
81
82int             _tty_write( char* buffer, size_t length, size_t channel );
83int             _tty_read( char* buffer, size_t channel );
84void            _tty_puts( char* string );
85void            _tty_putd( unsigned int val );
86void            _tty_putx( unsigned int val );
87void            _tty_get_lock( size_t channel );
88void            _tty_release_lock( size_t channel );
89void            _tty_getc( char* buffer );
90void            _tty_getw( unsigned int* buffer );
91void            _tty_printf( char* format, ... );
92void            _tty_isr();
93
94void            _ioc_get_lock();
95void            _ioc_write( size_t lba, void* buffer, size_t count, size_t ext );
96void            _ioc_read (size_t lba, void* buffer, size_t count, size_t ext );
97void            _ioc_completed();
98void            _ioc_isr();
99
100void            _mmc_isr();
101
102void            _fb_sync_write( unsigned int offset, 
103                                unsigned int buffer,
104                                unsigned int length,
105                                unsigned int ext );
106void            _fb_sync_read(  unsigned int offset, 
107                                unsigned int buffer,
108                                unsigned int length,
109                                unsigned int ext );
110
111void            _release_lock( size_t lock_index );
112void            _get_lock( size_t lock_index );
113
114void            _barrier_init(size_t index, size_t count);
115void            _barrier_wait(size_t index);
116
117unsigned char   _byte_extended_read(  unsigned int   cluster, 
118                                      unsigned int   address );
119unsigned int    _word_extended_read(  unsigned int   cluster, 
120                                      unsigned int   address );
121void            _word_extended_write( unsigned int   cluster, 
122                                      unsigned int   address, 
123                                      unsigned int   word );
124void            _byte_extended_write( unsigned int   cluster, 
125                                      unsigned int   address, 
126                                      unsigned char  byte );
127#endif
128
129// Local Variables:
130// tab-width: 4;
131// c-basic-offset: 4;
132// c-file-offsets:((innamespace . 0)(inline-open . 0));
133// indent-tabs-mode: nil;
134// End:
135//
136// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
137
Note: See TracBrowser for help on using the repository browser.