Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1376 → Rev 1377

/demos/trunk/base/aster.c
34,7 → 34,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
* CVS : $Id: aster.c,v 1.2 2003-01-07 17:10:15 pj Exp $
* CVS : $Id: aster.c,v 1.3 2004-04-17 11:36:12 giacomo Exp $
 
Author: Gerardo Lamastra
Giuseppe Lipari
76,20 → 76,18
executed in both cases, to allow clean system shutdown.
*/
 
//#include <string.h>
//#include <stdlib.h>
 
#include <kernel/kern.h>
#include <modules/sem.h>
#include <modules/hartport.h>
#include <modules/cabs.h>
#include <drivers/keyb.h>
#include <string.h>
 
 
#define __VPAGING__
 
#include <drivers/keyb.h>
#include <drivers/shark_linuxc26.h>
#include <drivers/shark_input26.h>
#include <drivers/shark_keyb26.h>
 
#include <drivers/crtwin.h>
 
int num_aster = 0;
97,7 → 95,61
 
CAB cc;
BYTE esc = FALSE;
PID shutdown_task_PID;
 
int device_drivers_init() {
KEYB_PARMS kparms = BASE_KEYB;
LINUXC26_register_module();
 
keyb_def_ctrlC(kparms, NULL);
INPUT26_init();
 
KEYB26_init(&kparms);
 
return 0;
}
 
int device_drivers_close() {
 
KEYB26_close();
 
INPUT26_close();
 
return 0;
 
}
 
TASK shutdown_task_body(void *arg) {
 
device_drivers_close();
 
sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
 
sys_end();
 
return NULL;
 
}
 
void set_shutdown_task() {
 
NRT_TASK_MODEL nrt;
 
nrt_task_default_model(nrt);
 
shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
if (shutdown_task_PID == NIL) {
sys_shutdown_message("Error: Cannot create shutdown task\n");
sys_end();
}
 
}
 
 
TASK asteroide(void)
{
int i = 1;
199,19 → 251,15
}
}
 
#define STR "..................... Hartik+ ....................."\
#define STR "..................... S.Ha.R.K. ....................."\
" Guarantees hard tasks "\
" Includes soft periodic tasks "\
"TB server for decrementing the aperiodic response time "\
"SRP for both hard & soft aperiodic tasks "\
"Portability toward other compilers/system "\
"Support for different C compiler: Watcom C 16 bit & 32 bit"\
" -- GNU C (32 bit) -- Borland C (16 bit) -- MS C (16 bit)"\
" "\
"Programmers : Gerardo Lamastra (lamastra@sssup2.sssup.it) "\
" Giuseppe Lipari (lipari@sssup2.sssup.it) "\
"Alpha AXP PCI-33 porting by Antonino Casile "\
"(casile@sssup1.sssup.it) "\
"Research coordinator: Giorgio Buttazzo (giorgio@sssup1.sssup.it)"\
" "\
" "\
294,14 → 342,6
else return (1.0 - u/rif);
}
 
void my_end(KEY_EVT *e)
{
set_active_page(0);
set_visual_page(0);
cprintf("Ctrl-Brk pressed!\n");
sys_end();
}
 
int main(int argc, char **argv)
{
PID p1,p2,p3,p4,p5,p6;
310,22 → 350,17
SOFT_TASK_MODEL m_soft;
NRT_TASK_MODEL m_nrt;
 
KEY_EVT emerg;
// double rif;
struct timespec t;
//keyb_set_map(itaMap);
emerg.ascii = 'x';
emerg.scan = KEY_X;
emerg.flag = ALTL_BIT;
keyb_hook(emerg,my_end);
set_shutdown_task();
 
device_drivers_init();
 
#ifdef __VPAGING__
set_active_page(1);
set_visual_page(1);
#endif
CRSR_OFF();
clear();
puts_xy(0,20,WHITE,"Press ESC to exit demo.");
347,22 → 382,25
hard_task_def_group(m_per, 1);
p2 = task_create("Clock",clock,&m_per,NULL);
if (p2 == -1) {
perror("Aster.C(main): Could not create task <Clock>");
sys_abort(-1);
sys_shutdown_message("Aster.C(main): Could not create task <Clock>");
task_activate(shutdown_task_PID);
return 0;
}
 
soft_task_def_period(m_soft, 50000);
p3 = task_create("Title",title,&m_soft, NULL);
if (p3 == -1) {
perror("Aster.C(main): Could not create task <Title>");
sys_abort(-1);
sys_shutdown_message("Aster.C(main): Could not create task <Title>");
task_activate(shutdown_task_PID);
return 0;
}
 
soft_task_def_period(m_soft, 1000000);
p4 = task_create("Put",put,&m_soft, NULL);
if (p4 == -1) {
perror("Aster.C(main): Could not create task <Put>");
sys_abort(-1);
sys_shutdown_message("Aster.C(main): Could not create task <Put>");
task_activate(shutdown_task_PID);
return 0;
}
 
nrt_task_default_model(m_nrt);
369,25 → 407,19
nrt_task_def_group(m_nrt, 1);
p5 = task_create("Write",write_keyb,&m_nrt,NULL);
if (p5 == -1) {
perror("Aster.C(main): Could not create task <Write>");
sys_abort(-1);
sys_shutdown_message("Aster.C(main): Could not create task <Write>");
task_activate(shutdown_task_PID);
return 0;
}
 
hard_task_def_mit(m_per, 50000);
p6 = task_create("CabTask",ccc,&m_per,NULL);
if (p6 == -1) {
perror("Aster.C(main): Could not create task <CabTask>\n");
sys_abort(-1);
sys_shutdown_message("Aster.C(main): Could not create task <CabTask>\n");
task_activate(shutdown_task_PID);
return 0;
}
 
/*
task_activate(p1);
task_activate(p2);
task_activate(p3);
task_activate(p4);
task_activate(p5);
task_activate(p6);
*/
group_activate(1);
 
while (!esc) {
402,12 → 434,9
set_active_page(0);
set_visual_page(0);
#endif
cprintf("System closed\n");
sys_end();
/*
sys_status(NORM_STATUS|BLOCKED_STATUS|SLEEP_STATUS|IDLE_STATUS);
sys_status(NORM_STATUS|SLEEP_STATUS);
*/
 
task_activate(shutdown_task_PID);
return 0;
 
}