1,3 → 1,42 |
/* |
* Project: S.Ha.R.K. |
* |
* Coordinators: |
* Giorgio Buttazzo <giorgio@sssup.it> |
* Paolo Gai <pj@gandalf.sssup.it> |
* |
* Authors : |
* Paolo Gai <pj@gandalf.sssup.it> |
* (see the web pages for full authors list) |
* |
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy) |
* |
* http://www.sssup.it |
* http://retis.sssup.it |
* http://shark.sssup.it |
*/ |
|
/* |
* Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU General Public License as published by |
* the Free Software Foundation; either version 2 of the License, or |
* (at your option) any later version. |
* |
* This program is distributed in the hope that it will be useful, |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* GNU General Public License for more details. |
* |
* You should have received a copy of the GNU General Public License |
* along with this program; if not, write to the Free Software |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* |
* |
* CVS : $Id: cabs.c,v 1.3 2003-01-07 17:10:15 pj Exp $ |
*/ |
|
/*--------------------------------------------------------------*/ |
/* TEST ON CABS */ |
/*--------------------------------------------------------------*/ |
49,32 → 88,6 |
|
/****************************************************************/ |
|
/* This is the exception handler. It is called when an exception |
is raised. |
It exits from the graphical mode, then it prints a message and |
shutdown the kernel using sys_abort() |
*/ |
|
void demo_exc_handler(int signo, siginfo_t *info, void *extra) |
{ |
struct timespec t; |
|
grx_close(); |
|
/* Default action for an kern exception is */ |
kern_cli(); |
ll_gettime(TIME_EXACT, &t), |
kern_printf("\nS.Ha.R.K. Exception raised!!!" |
"\nTime (s:ns) :%ld:%ld" |
"\nException number:%d (numbers in include/bits/errno.h)" |
"\nPID :%d\n", |
t.tv_sec, t.tv_nsec, info->si_value.sival_int, |
info->si_task); |
sys_abort(1); |
} |
|
/******************************************************************/ |
|
/* This function is called when Alt-X is pressed. |
It simply shutdown the system using sys_end. |
Note that the byebye() function is called only if we exit from |
109,7 → 122,7 |
void byebye(void *arg) |
{ |
grx_close(); |
kern_printf("Bye Bye!\n"); |
cprintf("Bye Bye!\n"); |
} |
|
/*--------------------------------------------------------------*/ |
121,23 → 134,10 |
|
int main(int argc, char **argv) |
{ |
struct sigaction action; |
|
char c = 0; /* character from keyboard */ |
|
/* Init the standard S.Ha.R.K. exception handler */ |
action.sa_flags = SA_SIGINFO; /* Set the signal action */ |
action.sa_sigaction = demo_exc_handler; |
action.sa_handler = 0; |
sigfillset(&action.sa_mask); /* we block all the other signals... */ |
|
if (sigaction(SIGHEXC, &action, NULL) == -1) { /* set the signal */ |
perror("Error initializing signals..."); |
sys_end(); |
} |
|
/* Set the closing function */ |
sys_atrunlevel(byebye, NULL, RUNLEVEL_BEFORE_EXIT|NO_AT_ABORT); |
sys_atrunlevel(byebye, NULL, RUNLEVEL_BEFORE_EXIT); |
|
/* graphic card Initialization */ |
if (grx_init() < 1) { |
145,10 → 145,9 |
} |
|
if (grx_open(640, 480, 8) < 0) { |
kern_printf("GRX Err\n"); |
cprintf("GRX Err\n"); |
sys_abort(1); |
} |
kern_printf("Video card ok!\n"); |
|
grx_clear(BLACK); |
|