source: soft/giet_vm/sys/drivers.h @ 246

Last change on this file since 246 was 246, checked in by meunier, 11 years ago

Cosmétique + gestion du reset de l'irq du timer ou de l'xicu lors d'un task_switch

File size: 5.4 KB
RevLine 
[158]1///////////////////////////////////////////////////////////////////////////////////
2// File     : drivers.h
3// Date     : 01/04/2012
4// Author   : alain greiner and joel porquet
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7
[165]8#ifndef _GIET_SYS_DRIVERS_H_
9#define _GIET_SYS_DRIVERS_H_
[158]10
[218]11
[158]12///////////////////////////////////////////////////////////////////////////////////
[189]13// Timer access functions (used for both vci_multi_timer and vci_xicu)
[158]14///////////////////////////////////////////////////////////////////////////////////
15
[189]16extern volatile unsigned char _timer_event[];
[158]17
[228]18unsigned int _timer_start(unsigned int cluster_id, unsigned int local_id, unsigned int period);
19unsigned int _timer_stop(unsigned int cluster_id, unsigned int local_id);
20unsigned int _timer_reset_irq(unsigned int cluster_id, unsigned int local_id);
[246]21unsigned int _timer_reset_irq_cpt(unsigned int cluster_id, unsigned int local_id);
[158]22
[189]23
24///////////////////////////////////////////////////////////////////////////////////
25// TTY access functions and variables
26///////////////////////////////////////////////////////////////////////////////////
27
[158]28extern volatile unsigned char _tty_get_buf[];
29extern volatile unsigned char _tty_get_full[];
[228]30extern unsigned int _tty_put_lock;
[158]31
[228]32unsigned int _tty_write(const char * buffer, unsigned int length);
33unsigned int _tty_read(char * buffer, unsigned int length);
34unsigned int _tty_get_char(unsigned int tty_id, unsigned char * buffer); 
[158]35
[189]36///////////////////////////////////////////////////////////////////////////////////
37// ICU access functions (both vci_multi_icu and vci_xicu)
38///////////////////////////////////////////////////////////////////////////////////
[165]39
[228]40unsigned int _icu_get_index(unsigned int cluster_id, unsigned int proc_id, unsigned int * buffer);
41unsigned int _icu_set_mask(
42        unsigned int cluster_id,
43        unsigned int proc_id,
44        unsigned int mask, 
45        unsigned int is_timer);
[165]46
[189]47///////////////////////////////////////////////////////////////////////////////////
48// IOC access functions and variables (vci_block_device)
49///////////////////////////////////////////////////////////////////////////////////
[165]50
[228]51extern volatile unsigned int _ioc_status;
52extern volatile unsigned int _ioc_done;
53extern unsigned int _ioc_lock;
54extern unsigned int _ioc_iommu_ix1;
55extern unsigned int _ioc_iommu_npages; 
[165]56
[189]57
[228]58unsigned int _ioc_write(unsigned int lba, const void * buffer, unsigned int count);
59unsigned int _ioc_read(unsigned int lba, void * buffer, unsigned int count);
[158]60unsigned int _ioc_completed();
[228]61unsigned int _ioc_get_status(unsigned int * status);
[237]62unsigned int _ioc_get_block_size();
[158]63
[189]64///////////////////////////////////////////////////////////////////////////////////
[228]65// Multi DMA variables            (vci_multi_dma)
[189]66///////////////////////////////////////////////////////////////////////////////////
[158]67
[228]68extern volatile unsigned int _dma_status[];
69extern volatile unsigned int _dma_done[];
70extern unsigned int _dma_lock[];
71extern unsigned int _dma_iommu_ix1;
72extern unsigned int _dma_iommu_npages[];
[204]73
[228]74unsigned int _dma_reset_irq(unsigned int cluster_id, unsigned int local_id);
75unsigned int _dma_get_status(unsigned int cluster_id, unsigned int local_id, unsigned int * status);
[204]76
[228]77unsigned int _dma_transfer(
78        unsigned int dev_type,
79        unsigned int to_user,
80        unsigned int offset,
81        unsigned int user_vaddr,
82        unsigned int length);
[218]83
84unsigned int _dma_completed();
85
[189]86///////////////////////////////////////////////////////////////////////////////////
87// Frame Buffer access functions  (vci_frame_buffer)
88///////////////////////////////////////////////////////////////////////////////////
[165]89
[228]90unsigned int _fb_sync_write(unsigned int offset, const void * buffer, unsigned int length);
91unsigned int _fb_sync_read( unsigned int offset, const void * buffer, unsigned int length);
92unsigned int _fb_write(     unsigned int offset, const void * buffer, unsigned int length);
93unsigned int _fb_read(      unsigned int offset, const void * buffer, unsigned int length);
[165]94
[158]95unsigned int _fb_completed();
96
[189]97///////////////////////////////////////////////////////////////////////////////////
[218]98// NIC device access functions  (vci_multi_nic)
99///////////////////////////////////////////////////////////////////////////////////
100
[228]101unsigned int _nic_sync_write(unsigned int offset, const void * buffer, unsigned int length);
102unsigned int _nic_sync_read( unsigned int offset, const void * buffer, unsigned int length);
103unsigned int _nic_write(     unsigned int offset, const void * buffer, unsigned int length);
104unsigned int _nic_read(      unsigned int offset, const void * buffer, unsigned int length);
[218]105
106unsigned int _nic_completed();
107
108///////////////////////////////////////////////////////////////////////////////////
[189]109// GCD access functions
110///////////////////////////////////////////////////////////////////////////////////
111
[228]112unsigned int _gcd_write(unsigned int register_index, unsigned int   value);
113unsigned int _gcd_read( unsigned int register_index, unsigned int * buffer);
[189]114
115
[232]116///////////////////////////////////////////////////////////////////////////////////
117// Heap related function(s)
118///////////////////////////////////////////////////////////////////////////////////
119
120unsigned int _heap_info(unsigned int * vaddr, unsigned int * size);
121
122
[158]123#endif
124
[228]125// Local Variables:
126// tab-width: 4
127// c-basic-offset: 4
128// c-file-offsets:((innamespace . 0)(inline-open . 0))
129// indent-tabs-mode: nil
130// End:
131// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
132
Note: See TracBrowser for help on using the repository browser.