Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1488 → Rev 1487

/demos/tags/rel_1_4/bttvdemo/bttv.c
File deleted
/demos/tags/rel_1_4/bttvdemo/initfile.c
File deleted
/demos/tags/rel_1_4/bttvdemo/readme.txt
File deleted
/demos/tags/rel_1_4/bttvdemo/makefile
File deleted
/demos/tags/rel_1_4/bca/control.c
File deleted
/demos/tags/rel_1_4/bca/cannone.c
File deleted
/demos/tags/rel_1_4/bca/esplo.c
File deleted
/demos/tags/rel_1_4/bca/bca.c
File deleted
/demos/tags/rel_1_4/bca/bca.h
File deleted
/demos/tags/rel_1_4/bca/aereo.c
File deleted
/demos/tags/rel_1_4/bca/dummy.c
File deleted
/demos/tags/rel_1_4/bca/makefile
File deleted
/demos/tags/rel_1_4/bca/fab_lib/fab_tool.h
File deleted
/demos/tags/rel_1_4/bca/fab_lib/fab_grx.h
File deleted
/demos/tags/rel_1_4/bca/fab_lib/fab_show.h
File deleted
/demos/tags/rel_1_4/bca/fab_lib/fab_msg.h
File deleted
/demos/tags/rel_1_4/bca/fab_lib/fab_grx.sys
File deleted
/demos/tags/rel_1_4/bca/scenario.c
File deleted
/demos/tags/rel_1_4/bca/initfile.c
File deleted
/demos/tags/rel_1_4/bca/missile.c
File deleted
/demos/tags/rel_1_4/bca/bca_lib.c
File deleted
/demos/tags/rel_1_4/bca/readme
File deleted
/demos/tags/rel_1_4/bca/bca_raw/esplo3.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/bca.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/esplo4.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/missile1.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/esplo5.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/missile2.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/sfondo.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/aereo1.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/cannon.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/aereo2.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/aereo1_h.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/cannon_h.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/esplo1.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/aereo2_h.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/bca_raw/esplo2.raw
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/bca/fab_lib.c
File deleted
/demos/tags/rel_1_4/astro/astro.c
File deleted
/demos/tags/rel_1_4/astro/asteroid.c
File deleted
/demos/tags/rel_1_4/astro/stat.c
File deleted
/demos/tags/rel_1_4/astro/makefile
File deleted
/demos/tags/rel_1_4/astro/rock.c
File deleted
/demos/tags/rel_1_4/astro/asteroid.h
File deleted
/demos/tags/rel_1_4/astro/initfile.c
File deleted
/demos/tags/rel_1_4/network/initfile.c
File deleted
/demos/tags/rel_1_4/network/net.c
File deleted
/demos/tags/rel_1_4/network/talk.c
File deleted
/demos/tags/rel_1_4/network/makefile
File deleted
/demos/tags/rel_1_4/pngdemo/test.png
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/pngdemo/initfile.c
File deleted
/demos/tags/rel_1_4/pngdemo/pngdemo.c
File deleted
/demos/tags/rel_1_4/pngdemo/readme.txt
File deleted
/demos/tags/rel_1_4/pngdemo/makefile
File deleted
/demos/tags/rel_1_4/mesademo/makefile
File deleted
/demos/tags/rel_1_4/mesademo/initfile.c
File deleted
/demos/tags/rel_1_4/mesademo/mesademo.c
File deleted
/demos/tags/rel_1_4/mesademo/readme.txt
File deleted
/demos/tags/rel_1_4/pse51/makefile
File deleted
/demos/tags/rel_1_4/pse51/ptest1.c
File deleted
/demos/tags/rel_1_4/pse51/ptest2.c
File deleted
/demos/tags/rel_1_4/pse51/ptest3.c
File deleted
/demos/tags/rel_1_4/pse51/pinit.c
File deleted
/demos/tags/rel_1_4/pse51/ptest4.c
File deleted
/demos/tags/rel_1_4/pse51/ptest5.c
File deleted
/demos/tags/rel_1_4/pse51/ptest6.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_bec.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_dio.c
File deleted
/demos/tags/rel_1_4/pci6025e/readme
File deleted
/demos/tags/rel_1_4/pci6025e/makefile
File deleted
/demos/tags/rel_1_4/pci6025e/test_bms.c
File deleted
/demos/tags/rel_1_4/pci6025e/wave.c
File deleted
/demos/tags/rel_1_4/pci6025e/initfile.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_mes.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_ec.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_dac.c
File deleted
/demos/tags/rel_1_4/pci6025e/test_ppi.c
File deleted
/demos/tags/rel_1_4/mix/mix.dat
File deleted
/demos/tags/rel_1_4/mix/initfile.c
File deleted
/demos/tags/rel_1_4/mix/readme
File deleted
\ No newline at end of file
/demos/tags/rel_1_4/mix/makefile
File deleted
/demos/tags/rel_1_4/mix/mix.c
File deleted
/demos/tags/rel_1_4/servo/initfile.c
File deleted
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/servo/README
===================================================================
--- rel_1_4/servo/README (revision 1488)
+++ rel_1_4/servo/README (nonexistent)
@@ -1,2 +0,0 @@
-TODO
-
Index: rel_1_4/servo/makefile
===================================================================
--- rel_1_4/servo/makefile (revision 1488)
+++ rel_1_4/servo/makefile (nonexistent)
@@ -1,15 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = load
-
-include $(BASE)/config/example.mk
-
-load:
- make -f $(SUBMAKE) APP=load INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__ __SERVO__"
/rel_1_4/servo/makefile
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/servo/load.c
===================================================================
--- rel_1_4/servo/load.c (revision 1488)
+++ rel_1_4/servo/load.c (nonexistent)
@@ -1,46 +0,0 @@
-#include "kernel/kern.h"
-#include "drivers/shark_keyb26.h"
-#include "unistd.h"
-
-#include "servo.h"
-
-#define N_SEND 10000
-
-int main () {
-
- int res, i = 0, k;
-
- srand(sys_gettime(NULL));
-
- cprintf("(Open Com2)");
- res = servo_open(COM2, 19200);
- cprintf("(Res = %d)",res);
-
- cprintf("(Servo Turn On 0)");
- res = servo_turn_on(COM2, 0);
- cprintf("(Res = %d)",res);
-
- while(i < N_SEND) {
-
- cprintf("(Cycle = %d)",i);
-
- k = rand() % 180 - 90;
-
- cprintf("(Set Servo 0 %d)",k);
- res = servo_set_angle_sec(COM2, 0, ANGLE2SEC(k,0,0));
- cprintf("(Res = %d)",res);
-
- udelay(100000);
-
- i++;
-
- }
-
- servo_close(COM2);
-
- sys_end();
-
- return 0;
-
-}
-
Index: rel_1_4/input/initcur.c
===================================================================
--- rel_1_4/input/initcur.c (revision 1488)
+++ rel_1_4/input/initcur.c (nonexistent)
@@ -1,163 +0,0 @@
-/*
- * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Gerardo Lamastra <gerardo@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_mouse26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- MOUSE26_close();
- KEYB26_close();
- INPUT26_close();
-
- return 0;
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
- MOUSE_PARMS mparms = BASE_MOUSE;
-
- LINUXC26_register_module();
- INPUT26_init();
-
- /*keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- MOUSE26_init(&mparms);
-
- return 0;
-
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg) {
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
/rel_1_4/input/initcur.c
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/input/input.c
===================================================================
--- rel_1_4/input/input.c (revision 1488)
+++ rel_1_4/input/input.c (nonexistent)
@@ -1,452 +0,0 @@
-
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-#include <kernel/func.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <drivers/shark_fb26.h>
-
-#include <drivers/shark_mouse26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_spk26.h>
-#include <drivers/shark_joy26.h>
-
-#define RGB_BLACK rgb16( 0, 0, 0)
-#define RGB_GRAY rgb16(127,127,127)
-#define RGB_WHITE rgb16(255,255,255)
-#define RGB_RED rgb16(255, 0, 0)
-#define RGB_GREEN rgb16( 0,255, 0)
-#define RGB_BLUE rgb16( 0, 0,255)
-#define RGB_YELLOW rgb16(255,255, 0)
-#define RGB_MAGENTA rgb16(255, 0,255)
-#define RGB_CYAN rgb16( 0,255,255)
-#define RGB_D_RED rgb16(127, 0, 0)
-#define RGB_D_GREEN rgb16( 0,127, 0)
-#define RGB_D_BLUE rgb16( 0, 0,127)
-#define RGB_D_YELLOW rgb16(127,127, 0)
-#define RGB_D_MAGENTA rgb16(127, 0,127)
-#define RGB_D_CYAN rgb16( 0,127,127)
-
-void my_sysend(KEY_EVT *e)
-{
- sys_end();
-}
-
-void no_note(KEY_EVT *e)
-{
- speaker_sound(0, 0);
-}
-
-void my_note(KEY_EVT *e)
-{
- switch (e->scan) {
- case KEY_Q:
- speaker_sound(262, 0); /* DO */
- break;
- case KEY_W:
- speaker_sound(277, 0); /* DO# */
- break;
- case KEY_E:
- speaker_sound(294, 0); /* RE */
- break;
- case KEY_R:
- speaker_sound(311, 0); /* RE# */
- break;
- case KEY_T:
- speaker_sound(330, 0); /* MI */
- break;
- case KEY_Y:
- speaker_sound(349, 0); /* FA */
- break;
- case KEY_U:
- speaker_sound(370, 0); /* FA# */
- break;
- case KEY_I:
- speaker_sound(392, 0); /* SOL */
- break;
- case KEY_O:
- speaker_sound(415, 0); /* SOL# */
- break;
- case KEY_P:
- speaker_sound(440, 0); /* LA */
- break;
- case KEY_BRL:
- speaker_sound(466, 0); /* LA# */
- break;
- case KEY_BRR:
- speaker_sound(494, 0); /* SI */
- break;
- }
-}
-
-TASK my_getjoy(void *arg)
-{
- int a0, a1, a2, a3, btn;
- char st[20];
-
- while (1) {
- joy_getstatus(&a0, &a1, &a2, &a3, &btn);
-
- sprintf(st, "X Axis : %6d ", a0);
- grx_text(st, 100, 64, RGB_CYAN, RGB_BLACK);
- sprintf(st, "Y Axis : %6d ", a1);
- grx_text(st, 100, 114, RGB_CYAN, RGB_BLACK);
- sprintf(st, "Buttons: %2x ", btn);
- grx_text(st, 100, 164, RGB_CYAN, RGB_BLACK);
-
- task_endcycle();
- if (btn == 0xF)
- my_sysend(NULL);
- }
-}
-
-TASK my_getch(void *arg)
-{
-#define MYNCHAR 25
-
- BYTE ch;
- int i = 0;
- char st[20];
-
- while (1) {
- ch = keyb_getch(NON_BLOCK);
- if (ch) {
- if (ch == BACKSPACE) { //backspace
- i--;
- //ch = 0x20;
- }
- if (ch == ENTER) { //enter
- i = ((i / MYNCHAR) + 1) * MYNCHAR - 1;
- ch = 0x20;
- }
- sprintf(st, "%c", ch);
- grx_text(st, 340 + 10 * (i%MYNCHAR), 25 + 20 * (i/MYNCHAR), RGB_BLUE, RGB_BLACK);
-
- if (ch == BACKSPACE) //backspace
- i--;
- if (++i >= MYNCHAR * 9) {
- i = 0;
- grx_box(315, 15, 623, 223, RGB_BLACK);
- }
- }
-
- task_endcycle();
- }
-}
-
-void my_mouse(MOUSE_EVT *e)
-{
- char st[20];
- char pressed = 0;
-
- sprintf(st, "X Axis : %3d (%4d)", e->x, e->dx);
- grx_text(st, 100, 280, RGB_YELLOW, RGB_BLACK);
- sprintf(st, "Y Axis : %3d (%4d)", e->y, e->dy);
- grx_text(st, 100, 320, RGB_YELLOW, RGB_BLACK);
- sprintf(st, "Z Axis : %3d (%4d)", e->z, e->dz);
- grx_text(st, 100, 360, RGB_YELLOW, RGB_BLACK);
- sprintf(st, "Buttons: %6x ", (int)e->buttons);
- grx_text(st, 100, 400, RGB_YELLOW, RGB_BLACK);
-
- if ((e->x > 377) && (e->x < 401) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(277, 0); /* DO# */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 407) && (e->x < 431) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(311, 0); /* RE# */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 467) && (e->x < 491) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(370, 0); /* FA# */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 497) && (e->x < 521) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(415, 0); /* SOL# */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 527) && (e->x < 551) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(466, 0); /* LA# */
- pressed = 1;
- }
- return;
- }
-
- if ((e->x > 360) && (e->x < 388) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)){
- if (!pressed) {
- speaker_sound(262, 0); /* DO */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 390) && (e->x < 418) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(294, 0); /* RE */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 420) && (e->x < 448) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(330, 0); /* MI */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 450) && (e->x < 478) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(349, 0); /* FA */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 480) && (e->x < 508) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(392, 0); /* SOL */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 510) && (e->x < 538) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(440, 0); /* LA */
- pressed = 1;
- }
- return;
- }
- if ((e->x > 540) && (e->x < 568) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
- if (!pressed) {
- speaker_sound(494, 0); /* SI */
- pressed = 1;
- }
- return;
- }
-
- speaker_sound(0, 0);
- pressed = 0;
-}
-
-void graph_init(void)
-{
- grx_rect( 4, 4, 634, 474, RGB_WHITE);
- grx_rect( 14, 14, 304, 224, RGB_YELLOW);
- grx_rect(314, 14, 624, 224, RGB_RED);
- grx_rect( 14, 234, 304, 464, RGB_GREEN);
- grx_rect(314, 234, 624, 464, RGB_BLUE);
-
- /* Draw Teyboard */
- grx_box(360, 300, 388, 400, RGB_WHITE); /* DO */
- grx_box(390, 300, 418, 400, RGB_WHITE); /* RE */
- grx_box(420, 300, 448, 400, RGB_WHITE); /* MI */
- grx_box(450, 300, 478, 400, RGB_WHITE); /* FA */
- grx_box(480, 300, 508, 400, RGB_WHITE); /* SOL */
- grx_box(510, 300, 538, 400, RGB_WHITE); /* LA */
- grx_box(540, 300, 568, 400, RGB_WHITE); /* SI */
-
- grx_box(377, 301, 401, 360, RGB_BLACK); /* DO# */
- grx_box(407, 301, 431, 360, RGB_BLACK); /* RE# */
- grx_box(467, 301, 491, 360, RGB_BLACK); /* FA# */
- grx_box(497, 301, 521, 360, RGB_BLACK); /* SOL# */
- grx_box(527, 301, 551, 360, RGB_BLACK); /* LA# */
-}
-
-void start_sound(void)
-{
- KEY_EVT ev;
-
- speaker_sound(440, 400);
- while ( (sys_gettime(NULL)/1000) < 1000);
-
- ev.ascii = 'q';
- ev.scan = KEY_Q;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'w';
- ev.scan = KEY_W;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'e';
- ev.scan = KEY_E;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'r';
- ev.scan = KEY_R;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 't';
- ev.scan = KEY_T;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'y';
- ev.scan = KEY_Y;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'u';
- ev.scan = KEY_U;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'i';
- ev.scan = KEY_I;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'o';
- ev.scan = KEY_O;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'p';
- ev.scan = KEY_P;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = '[';
- ev.scan = KEY_BRL;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = ']';
- ev.scan = KEY_BRR;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-}
-
-int main(int argc, char **argv)
-{
- SOFT_TASK_MODEL mp;
- PID pid;
-
- KEY_EVT ev;
-
- ev.ascii = 'c';
- ev.scan = KEY_C;
- ev.status = KEY_PRESSED;
- ev.flag = CNTL_BIT;
- keyb_hook(ev, my_sysend, FALSE);
- ev.flag = CNTR_BIT;
- keyb_hook(ev, my_sysend, FALSE);
-
- graph_init();
-
- mouse_grxlimits(639, 479);
- mouse_setposition(319, 239, 0);
- mouse_hook(my_mouse);
- mouse_grxcursor(ENABLE, 2);
-
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_met(mp,700);
- soft_task_def_period(mp,10000);
- soft_task_def_usemath(mp);
- pid = task_create("Key_Print", my_getch, &mp, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <Key_Print>\n");
- sys_end();
- } else
- task_activate(pid);
-
- if (JOY26_installed()) {
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_met(mp,700);
- soft_task_def_period(mp,10000);
- soft_task_def_usemath(mp);
- pid = task_create("Joy_Print", my_getjoy, &mp, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <Joy_Print>\n");
- sys_end();
- } else
- task_activate(pid);
- }
-
- start_sound();
- return 0;
-}
Index: rel_1_4/input/initspk.c
===================================================================
--- rel_1_4/input/initspk.c (revision 1488)
+++ rel_1_4/input/initspk.c (nonexistent)
@@ -1,155 +0,0 @@
-/*
- * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Gerardo Lamastra <gerardo@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_spk26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
- SPEAK26_close();
- INPUT26_close();
-
- return 0;
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
- INPUT26_init();
-
- /*keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- SPEAK26_init();
- return 0;
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg) {
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: rel_1_4/input/joy.c
===================================================================
--- rel_1_4/input/joy.c (revision 1488)
+++ rel_1_4/input/joy.c (nonexistent)
@@ -1,76 +0,0 @@
-
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-#include <kernel/func.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <drivers/shark_joy26.h>
-
-TASK my_getjoy(void *arg) {
-
- int a0, a1, a2, a3, btn;
-
- while (1) {
- joy_getstatus(&a0, &a1, &a2, &a3, &btn);
- cprintf("(%6d %6d) %2x\n", a0, a1, btn);
- task_endcycle();
- if (btn == 0xF)
- sys_end();
- }
-}
-
-int main(int argc, char **argv)
-{
- SOFT_TASK_MODEL mp;
- PID pid;
-
- if (!JOY26_installed()) {
- cprintf("No Joystick found.");
- sys_end();
- }
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_met(mp,700);
- soft_task_def_period(mp,10000);
- soft_task_def_usemath(mp);
- pid = task_create("Joy_Print", my_getjoy, &mp, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <Joy_Print>\n");
- sys_end();
- } else
- task_activate(pid);
-
- return 0;
-}
/rel_1_4/input/joy.c
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/input/speak.c
===================================================================
--- rel_1_4/input/speak.c (revision 1488)
+++ rel_1_4/input/speak.c (nonexistent)
@@ -1,208 +0,0 @@
-
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-#include <kernel/func.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_spk26.h>
-
-void my_sysclose(KEY_EVT *e)
-{
- speaker_sound(0, 0);
-
- kern_printf("S.Ha.R.K. closed.\n\n");
- sys_end();
-}
-
-void no_note(KEY_EVT *e){
- speaker_sound(0, 0);
-}
-
-void my_note(KEY_EVT *e){
-
- switch (e->scan) {
- case KEY_Q:
- speaker_sound(262, 0);
- break;
- case KEY_W:
- speaker_sound(277, 0);
- break;
- case KEY_E:
- speaker_sound(294, 0);
- break;
- case KEY_R:
- speaker_sound(311, 0);
- break;
- case KEY_T:
- speaker_sound(330, 0);
- break;
- case KEY_Y:
- speaker_sound(349, 0);
- break;
- case KEY_U:
- speaker_sound(370, 0);
- break;
- case KEY_I:
- speaker_sound(392, 0);
- break;
- case KEY_O:
- speaker_sound(415, 0);
- break;
- case KEY_P:
- speaker_sound(440, 0);
- break;
- case KEY_BRL:
- speaker_sound(466, 0);
- break;
- case KEY_BRR:
- speaker_sound(494, 0);
- break;
- }
-}
-
-int main(int argc, char **argv)
-{
- KEY_EVT ev;
-
- ev.ascii = 'c';
- ev.scan = KEY_C;
- ev.status = KEY_PRESSED;
- ev.flag = CNTL_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
- ev.flag = CNTR_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
-
- speaker_sound(440, 400);
- while ( (sys_gettime(NULL)/1000) < 1000);
-
- ev.ascii = 'q';
- ev.scan = KEY_Q;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'w';
- ev.scan = KEY_W;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'e';
- ev.scan = KEY_E;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'r';
- ev.scan = KEY_R;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 't';
- ev.scan = KEY_T;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'y';
- ev.scan = KEY_Y;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'u';
- ev.scan = KEY_U;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'i';
- ev.scan = KEY_I;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'o';
- ev.scan = KEY_O;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = 'p';
- ev.scan = KEY_P;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = '[';
- ev.scan = KEY_BRL;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- ev.ascii = ']';
- ev.scan = KEY_BRR;
- ev.flag = 0;
- ev.status = KEY_PRESSED;
- keyb_hook(ev, my_note, FALSE);
- ev.status = KEY_RELEASED;
- keyb_hook(ev, no_note, FALSE);
-
- while(1);
- return 0;
-}
Index: rel_1_4/input/initfile.c
===================================================================
--- rel_1_4/input/initfile.c (revision 1488)
+++ rel_1_4/input/initfile.c (nonexistent)
@@ -1,216 +0,0 @@
-/*
- * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Gerardo Lamastra <gerardo@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-#include "kernel/kern.h"
-
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_mouse26.h>
-#include <drivers/shark_spk26.h>
-#include <drivers/shark_joy26.h>
-
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task()
-{
-/* WARNING: the shutdown task is a background thread. It cannot execute if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-}
-
-int device_drivers_init()
-{
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
- MOUSE_PARMS mparms = BASE_MOUSE;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- /* keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- mouse_def_threshold(mparms, 5);
- mouse_def_xmin(mparms, 0);
- mouse_def_ymin(mparms, 0);
- mouse_def_xmax(mparms, 639);
- mouse_def_ymax(mparms, 479);
- MOUSE26_init(&mparms);
-
- SPEAK26_init();
-
- JOY26_init();
-
- FB26_init();
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- MOUSE26_close();
- SPEAK26_close();
- JOY26_close();
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-}
-
-int device_drivers_close() {
-
- mouse_grxcursor(DISABLE, 0);
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- MOUSE26_close();
- SPEAK26_close();
- JOY26_close();
- KEYB26_close();
- INPUT26_close();
-
- return 0;
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg)
-{
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-}
Index: rel_1_4/input/initjoy.c
===================================================================
--- rel_1_4/input/initjoy.c (revision 1488)
+++ rel_1_4/input/initjoy.c (nonexistent)
@@ -1,148 +0,0 @@
-/*
- * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Gerardo Lamastra <gerardo@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_joy26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- JOY26_close();
- INPUT26_close();
-
- return 0;
-}
-
-int device_drivers_init() {
-
- LINUXC26_register_module();
- INPUT26_init();
-
- JOY26_init();
-
- return 0;
-
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg) {
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
/rel_1_4/input/initjoy.c
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/input/key.c
===================================================================
--- rel_1_4/input/key.c (revision 1488)
+++ rel_1_4/input/key.c (nonexistent)
@@ -1,106 +0,0 @@
-
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-#include <kernel/func.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <drivers/shark_keyb26.h>
-
-void my_sysclose(KEY_EVT *e)
-{
- kern_printf("S.Ha.R.K. closed.\n\n");
- sys_end();
-}
-
-TASK my_getch(void *arg) {
-
- BYTE ch;
-
- while (1) {
- ch = keyb_getch(NON_BLOCK);
- if (ch)
- cprintf("%c", ch);
- task_endcycle();
- }
-}
-
-void my_pause(KEY_EVT *e){
-
- TIME t;
-
- cprintf("Start Pause.\n");
- keyb_disable();
- cprintf("Keyboard Disabled.\n");
- t = sys_gettime(NULL);
- while ( ( (sys_gettime(NULL) -t) / 1000) < 5000);
- keyb_enable();
- cprintf("Keyboard Enabled.\n");
-}
-
-int main(int argc, char **argv)
-{
- SOFT_TASK_MODEL mp;
- PID pid;
-
- KEY_EVT ev;
-
- ev.ascii = 'p';
- ev.scan = KEY_P;
- ev.status = KEY_PRESSED;
- ev.flag = CNTR_BIT;
- keyb_hook(ev, my_pause, FALSE);
-
- ev.ascii = 'c';
- ev.scan = KEY_C;
- ev.status = KEY_PRESSED;
- ev.flag = CNTR_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
- ev.flag = CNTL_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
-
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_met(mp,700);
- soft_task_def_period(mp,1000);
- soft_task_def_usemath(mp);
- pid = task_create("Keyb_Print", my_getch, &mp, NULL);
- if (pid == NIL) {
- perror("Could not create task <Keyb_Print>");
- sys_end();
- } else
- task_activate(pid);
-
- return 0;
-}
Index: rel_1_4/input/mouse.c
===================================================================
--- rel_1_4/input/mouse.c (revision 1488)
+++ rel_1_4/input/mouse.c (nonexistent)
@@ -1,95 +0,0 @@
-
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-#include <kernel/kern.h>
-#include <kernel/func.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <drivers/shark_mouse26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_spk26.h>
-
-void my_sysclose(KEY_EVT *e)
-{
- mouse_txtcursor(DISABLE);
-
- sys_end();
-}
-
-TASK my_putxy(void *arg) {
-
- int x, y, z;
- unsigned long btn;
-
- clear();
-
- while (1) {
- mouse_getposition(&x, &y, &z, &btn);
- place(10, 10);
- cprintf("X: %2d - Y: %2d - Z: %3d - Btn: %4d\n", x, y, z, (int)btn);
-
- task_endcycle();
- }
-}
-
-int main(int argc, char **argv)
-{
- SOFT_TASK_MODEL mp;
- PID pid;
- KEY_EVT ev;
-
- ev.ascii = 'c';
- ev.scan = KEY_C;
- ev.status = KEY_PRESSED;
- ev.flag = CNTL_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
- ev.flag = CNTR_BIT;
- keyb_hook(ev, my_sysclose, FALSE);
-
- mouse_txtcursor(ENABLE);
-
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_met(mp,700);
- soft_task_def_period(mp,1000);
- soft_task_def_usemath(mp);
- pid = task_create("Mouse_Print", my_putxy, &mp, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <Mouse_Print>\n");
- my_sysclose(NULL);
- } else
- task_activate(pid);
-
- return 0;
-}
/rel_1_4/input/mouse.c
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/input/initkey.c
===================================================================
--- rel_1_4/input/initkey.c (revision 1488)
+++ rel_1_4/input/initkey.c (nonexistent)
@@ -1,160 +0,0 @@
-/*
- * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Gerardo Lamastra <gerardo@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
- INPUT26_close();
-
- return 0;
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
- INPUT26_init();
-
- /*keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- return 0;
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-void call_shutdown_task(void *arg) {
-
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: rel_1_4/input/makefile
===================================================================
--- rel_1_4/input/makefile (revision 1488)
+++ rel_1_4/input/makefile (nonexistent)
@@ -1,28 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= input speak key mouse joy
-
-include $(BASE)/config/example.mk
-
-input:
- make -f $(SUBMAKE) APP=input INIT= OTHEROBJS="initfile.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__ __FB__"
-
-speak:
- make -f $(SUBMAKE) APP=speak INIT= OTHEROBJS="initspk.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
-
-key:
- make -f $(SUBMAKE) APP=key INIT= OTHEROBJS="initkey.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
-
-mouse:
- make -f $(SUBMAKE) APP=mouse INIT= OTHEROBJS="initcur.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
-
-joy:
- make -f $(SUBMAKE) APP=joy INIT= OTHEROBJS="initjoy.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
-
Index: rel_1_4/mesatex/makefile
===================================================================
--- rel_1_4/mesatex/makefile (revision 1488)
+++ rel_1_4/mesatex/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = mesatex
-
-include $(BASE)/config/example.mk
-
-mesatex:
- make -f $(SUBMAKE) APP=mesatex INIT= OTHEROBJS="initfile.o" SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__ __OSMESA__"
-
Index: rel_1_4/mesatex/initfile.c
===================================================================
--- rel_1_4/mesatex/initfile.c (revision 1488)
+++ rel_1_4/mesatex/initfile.c (nonexistent)
@@ -1,202 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@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
- */
-
-/*
- *
- * 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-
Index: rel_1_4/mesatex/mesatex.c
===================================================================
--- rel_1_4/mesatex/mesatex.c (revision 1488)
+++ rel_1_4/mesatex/mesatex.c (nonexistent)
@@ -1,372 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-#include <GL/osmesa.h>
-#include <GL/glut.h>
-
-#include <math.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <kernel/log.h>
-#include <kernel/kern.h>
-
-#include <drivers/shark_fb26.h>
-#include <drivers/shark_keyb26.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#define WIDTH 640
-#define HEIGHT 430
-#define BYTES_PP 2 //BytesPerPixel
-
-OSMesaContext ctx;
-
-static GLuint TexObj[2];
-static GLfloat Angle = 0.0f;
-static GLboolean UseObj = GL_FALSE;
-
-extern void *video_memory;
-
-#if defined(GL_VERSION_1_1) || defined(GL_VERSION_1_2)
-# define TEXTURE_OBJECT 1
-#elif defined(GL_EXT_texture_object)
-# define TEXTURE_OBJECT 1
-# define glBindTexture(A,B) glBindTextureEXT(A,B)
-# define glGenTextures(A,B) glGenTexturesEXT(A,B)
-# define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B)
-#endif
-
-unsigned char *rgb_565_buf = NULL; //RGB 16 bpp Buffer
-unsigned char *video_buf = NULL; //Video Buffer
-
-unsigned long int RGB565MEM = WIDTH * HEIGHT * BYTES_PP; // Total video mem
-
-unsigned long int PERIOD_REFRESH = 30000;
-unsigned long int PERIOD_DISEGNA = 30000;
-
-unsigned long int WCET_REFRESH, WCET_DISEGNA;
-
-TASK refesh(void);
-TASK disegna(void);
-
-PID refresh_PID, disegna_PID;
-
-static void draw( void )
-{
- glDepthFunc(GL_EQUAL);
- /* glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );*/
- glClear( GL_COLOR_BUFFER_BIT );
-
- glColor3f( 1.0, 1.0, 1.0 );
-
- /* draw first polygon */
- glPushMatrix();
- glTranslatef( -1.0, 0.0, 0.0 );
- glRotatef( Angle, 0.0, 0.0, 1.0 );
- if (UseObj) {
-#ifdef TEXTURE_OBJECT
- glBindTexture( GL_TEXTURE_2D, TexObj[0] );
-#endif
- }
- else {
- glCallList( TexObj[0] );
- }
- glBegin( GL_POLYGON );
- glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 );
- glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 );
- glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 );
- glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 );
- glEnd();
- glPopMatrix();
-
- /* draw second polygon */
- glPushMatrix();
- glTranslatef( 1.0, 0.0, 0.0 );
- glRotatef( Angle-90.0, 0.0, 1.0, 0.0 );
- if (UseObj) {
-#ifdef TEXTURE_OBJECT
- glBindTexture( GL_TEXTURE_2D, TexObj[1] );
-#endif
- }
- else {
- glCallList( TexObj[1] );
- }
- glBegin( GL_POLYGON );
- glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 );
- glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 );
- glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 );
- glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 );
- glEnd();
- glPopMatrix();
-
-}
-
-static void gl_init()
-{
-
- static int twidth=8, theight=8;
- static GLubyte tex1[] = {
- 0, 0, 0, 1, 1, 1, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0 };
-
- static GLubyte tex2[] = {
- 0, 0, 0, 2, 2, 2, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2, 0, 0,
- 0, 0, 2, 2, 2, 0, 0, 0 };
-
- GLubyte tex[64][3];
- GLint i, j;
-
- //Create the OSMesa Context
- ctx = OSMesaCreateContext(OSMESA_RGB_565, NULL);
-
- //Make Current Context
- OSMesaMakeCurrent(ctx, rgb_565_buf, GL_UNSIGNED_SHORT_5_6_5, WIDTH, HEIGHT);
-
- UseObj = GL_TRUE;
-
- glDisable( GL_DITHER );
-
- /* Setup texturing */
- glEnable( GL_TEXTURE_2D );
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
- glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST );
-
- /* generate texture object IDs */
- if (UseObj) {
-#ifdef TEXTURE_OBJECT
- glGenTextures( 2, TexObj );
-#endif
- }
- else {
- TexObj[0] = glGenLists(2);
- TexObj[1] = TexObj[0]+1;
- }
-
- /* setup first texture object */
- if (UseObj) {
-#ifdef TEXTURE_OBJECT
- glBindTexture( GL_TEXTURE_2D, TexObj[0] );
- assert(glIsTexture(TexObj[0]));
-#endif
- }
- else {
- glNewList( TexObj[0], GL_COMPILE );
- }
- /* red on white */
- for (i=0;i<theight;i++) {
- for (j=0;j<twidth;j++) {
- int p = i*twidth+j;
- if (tex1[(theight-i-1)*twidth+j]) {
- tex[p][0] = 255; tex[p][1] = 0; tex[p][2] = 0;
- }
- else {
- tex[p][0] = 255; tex[p][1] = 255; tex[p][2] = 255;
- }
- }
- }
-
- glTexImage2D( GL_TEXTURE_2D, 0, 3, twidth, theight, 0,
- GL_RGB, GL_UNSIGNED_BYTE, tex );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
- if (!UseObj) {
- glEndList();
- }
- /* end of texture object */
-
- /* setup second texture object */
- if (UseObj) {
-#ifdef TEXTURE_OBJECT
- glBindTexture( GL_TEXTURE_2D, TexObj[1] );
- assert(glIsTexture(TexObj[1]));
-#endif
- assert(!glIsTexture(TexObj[1] + 999));
- }
- else {
- glNewList( TexObj[1], GL_COMPILE );
- }
- /* green on blue */
- for (i=0;i<theight;i++) {
- for (j=0;j<twidth;j++) {
- int p = i*twidth+j;
- if (tex2[(theight-i-1)*twidth+j]) {
- tex[p][0] = 0; tex[p][1] = 255; tex[p][2] = 0;
- }
- else {
- tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 255;
- }
- }
- }
- glTexImage2D( GL_TEXTURE_2D, 0, 3, twidth, theight, 0,
- GL_RGB, GL_UNSIGNED_BYTE, tex );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
- if (!UseObj) {
- glEndList();
- }
- /* end texture object */
-
- glViewport(0, 0, (GLint)WIDTH, (GLint)HEIGHT);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/
- glFrustum( -2.0, 2.0, 2.0, -2.0, 6.0, 20.0 );
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -8.0 );
-
-}
-
-void program_end(void *arg)
-{
-
- OSMesaDestroyContext(ctx);
- free(rgb_565_buf);
-
- sys_end();
-
-}
-
-void program_key_end(KEY_EVT *k)
-{
-
- sys_end();
-
-}
-
-TASK refresh(void)
-{
-
- while(1) {
-
- memcpy((video_buf+40*WIDTH*2), rgb_565_buf, RGB565MEM);
- task_endcycle();
-
- }
-
- sys_end();
-
-}
-
-
-TASK disegna(void)
-{
-
- char text[100];
- TIME disegna_TIME, refresh_TIME;
-
- while(1) {
-
- jet_gettable(refresh_PID, &refresh_TIME, 1);
- jet_gettable(disegna_PID, &disegna_TIME, 1);
-
- Angle += 2.0;
-
- draw();
-
- sprintf(text,"Hard Task Refresh PER:%6d us EX:%6d us",(int)PERIOD_REFRESH,(int)refresh_TIME);
- grx_text(text,10,5,rgb16(0,0,255),0);
- sprintf(text,"Hard Task Draw PER:%6d us EX:%6d us",(int)PERIOD_DISEGNA,(int)disegna_TIME);
- grx_text(text,10,15,rgb16(0,0,255),0);
-
- task_endcycle();
-
- }
-
- sys_end();
-
-}
-
-int main (int argc, char *argv[])
-{
-
- HARD_TASK_MODEL ht_refresh, ht_disegna;
-
- clear();
-
- WCET_REFRESH =((long int) PERIOD_REFRESH * (0.45));
- WCET_DISEGNA =((long int) PERIOD_DISEGNA * (0.45));
-
- hard_task_default_model(ht_refresh);
- hard_task_def_wcet(ht_refresh,WCET_REFRESH);
- hard_task_def_mit(ht_refresh,PERIOD_REFRESH);
- hard_task_def_usemath(ht_refresh);
- hard_task_def_group(ht_refresh,1);
- hard_task_def_ctrl_jet(ht_refresh);
-
- refresh_PID = task_create("refresh", refresh, &ht_refresh, NULL);
- if (refresh_PID == -1) {
- sys_end();
- exit(4);
- }
-
- hard_task_default_model(ht_disegna);
- hard_task_def_mit(ht_disegna,PERIOD_DISEGNA);
- hard_task_def_wcet(ht_disegna,WCET_DISEGNA);
- hard_task_def_group(ht_disegna,1);
- hard_task_def_ctrl_jet(ht_disegna);
- hard_task_def_usemath(ht_disegna);
- hard_task_def_stack(ht_disegna,30000);
-
- disegna_PID = task_create("disegna", disegna, &ht_disegna, NULL);
- if (disegna_PID == -1) {
- sys_end();
- exit(4);
- }
-
- {
- KEY_EVT k;
- k.flag = ALTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k,program_key_end,FALSE);
- }
-
- rgb_565_buf = malloc(RGB565MEM);
-
- gl_init();
-
- video_buf = (unsigned char *)video_memory;
- //video_buf = (unsigned char *)malloc(640*480*2);
-
- memset(rgb_565_buf, 0, RGB565MEM);
-
- group_activate(1);
-
- return 0;
-
-}
Index: rel_1_4/mesatex/readme.txt
===================================================================
--- rel_1_4/mesatex/readme.txt (revision 1488)
+++ rel_1_4/mesatex/readme.txt (nonexistent)
@@ -1,44 +0,0 @@
---------------------------------------
-MESA Demo (tex)
-
-by
-
-Giacomo Guidi <giacomo@gandalf.sssup.it>
-
-Last update 17/03/2003
---------------------------------------
-
-This is a simple test demo for the MESA (5.0)
-libraries, the low level graphic drivers is
-the SVGA (from the SVGAlib)
-
-See drivers/svga/readme for supported cards
-
---------------------------------------
-
-The demo is composed by:
-
-MAKEFILE The makefile used to compile the application
-README.TXT This file
-INITFILE.C The init file
-MESATEX.C The MESA Demo
-
---------------------------------------
-
-- To specify your card change the line
-
-#define CARD <driver name>
-
-- The demo calls the grx and off-screen Mesa functions.
-The resolution must be 16 bitsperpixel (64K colors) and
-the graphic access mode must be linear.
-
-- There are two buffers
-
- The video buffer (video_buf)
- The virtual buffer (rgb_565_buf)
-
- copy_videomem_16to16 links these buffers
-
-
-
Index: rel_1_4/loader/generators/event_gen.c
===================================================================
--- rel_1_4/loader/generators/event_gen.c (revision 1488)
+++ rel_1_4/loader/generators/event_gen.c (nonexistent)
@@ -1,474 +0,0 @@
-/* Event Generator
- *
- * Giacomo Guidi
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "lparser.h"
-#include "lread.h"
-#include "time.h"
-#include "common/time.h"
-
-#define LOADFILE_DIR "../loadfile/"
-
-#define EVENT_DEFINE "event.c"
-#define ACT_LIST "event.c"
-
-int write_struct(void)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"w");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, "\n#include \"func.h\"\n");
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_basic_par_start(void)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, "struct loader_task loader_task_list[] = {\n");
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_contract_start(void)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, "struct loader_contract loader_contract_list[] = {\n");
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_basic_par(struct loader_task *c)
-{
-
- FILE *file_event_header;
- int muxpres;
- char muxtemp[30];
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- if (c->crit_type == PAR_CRIT) {
- muxpres = 1;
- sprintf(muxtemp,"block_%s",c->name);
- } else {
- muxpres = 0;
- sprintf(muxtemp,"NULL");
- }
-
- fprintf(file_event_header, " {\"%s\",%d,%d,%d,%d,%d,{%d,%d},{%d,%d},%d,0,%d,%d,act_%s,exec_%s,%s},\n",
- c->name,(int)c->task_type,(int)c->server,(int)c->local_scheduler,(int)c->number,(int)c->group,
- (int)c->deadline.tv_sec, (int)c->deadline.tv_nsec,
- (int)c->wcet.tv_sec, (int)c->wcet.tv_nsec,
- (int)c->act_number, (int)c->resource, muxpres, c->name, c->name, muxtemp);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_contract(struct loader_contract *c)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, " {%d,{%d,%d},{%d,%d},{%d,%d},{%d,%d},%d,{%d,%d},%d,-1},\n",
- (int)c->number,(int)c->cmin.tv_sec,(int)c->cmin.tv_nsec,
- (int)c->tmax.tv_sec,(int)c->tmax.tv_nsec,
- (int)c->cmax.tv_sec,(int)c->cmax.tv_nsec,
- (int)c->tmin.tv_sec,(int)c->tmin.tv_nsec,
- (int)c->workload,
- (int)c->deadline.tv_sec,(int)c->deadline.tv_nsec,
- (int)c->local_scheduler);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int close_loader_task(int total_task_number)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"};\n\n");
-
- fprintf(file_event_header,"int total_loader_task = %d;\n\n",total_task_number);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int close_loader_contract(int total_contract_number)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"};\n\n");
-
- fprintf(file_event_header,"int total_loader_contract = %d;\n\n",total_contract_number);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_simulation_time(struct timespec *total)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"struct timespec total_time = {%d,%d};\n\n",(int)total->tv_sec,(int)total->tv_nsec);
-
- fclose(file_event_header);
-
- return 0;
-
-
-}
-
-int write_single_act(struct timespec *t, struct loader_task *c)
-{
-
- FILE *file_act_header;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- if (TIMESPEC_A_GT_B(t,&c->act_par_1)) {
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d}};\n\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
- c->act_number = 1;
- } else {
- fprintf(file_act_header,"struct timespec act_%s[] = {{0,0}};\n\n",c->name);
- c->act_number = 0;
- }
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_periodic_act(struct timespec *t, struct loader_task *c)
-{
-
- FILE *file_act_header;
- struct timespec tot_time;
- int period;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d},\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
-
- c->act_number = 1;
- TIMESPEC_ASSIGN(&tot_time,&c->act_par_1);
- period = TIMESPEC2USEC(&c->act_par_2);
- while (TIMESPEC_A_GT_B(t, &tot_time)) {
- c->act_number++;
- ADDUSEC2TIMESPEC(period,&tot_time);
- fprintf(file_act_header," {%d,%d},\n",
- (int)c->act_par_2.tv_sec,(int)c->act_par_2.tv_nsec);
- }
-
- fprintf(file_act_header," };\n\n");
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_mean_act(struct timespec *t,struct loader_task *c)
-{
-
- FILE *file_act_header;
- struct timespec tot_time;
- int next_act;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d},\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
-
- c->act_number = 1;
- TIMESPEC_ASSIGN(&tot_time,&c->act_par_1);
- while (TIMESPEC_A_GT_B(t, &tot_time)) {
- c->act_number++;
- next_act = TIMESPEC2USEC(&c->act_par_2) + random() % TIMESPEC2USEC(&c->act_par_3) - TIMESPEC2USEC(&c->act_par_3) / 2;
- ADDUSEC2TIMESPEC(next_act,&tot_time);
- fprintf(file_act_header," {%d,%d},\n",
- next_act / 1000000, next_act % 1000000 * 1000);
- }
-
- fprintf(file_act_header," };\n\n");
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_block_const(struct loader_task *c)
-{
-
- FILE *file_block_header;
- int i;
-
- file_block_header = fopen(ACT_LIST,"a+");
- if (file_block_header == NULL) return 1;
-
- fprintf(file_block_header,"struct timespec block_%s[] = {{%d,%d},\n",c->name,
- (int)c->crit_par.tv_sec,(int)c->crit_par.tv_nsec);
-
- for (i=0; i< c->act_number-1; i++)
- fprintf(file_block_header," {%d,%d},\n",
- (int)c->crit_par.tv_sec,(int)c->crit_par.tv_nsec);
-
- fprintf(file_block_header," };\n\n");
-
- fclose(file_block_header);
-
- return 0;
-
-}
-
-int write_exec_const(struct loader_task *c)
-{
-
- FILE *file_exec_header;
- int i;
-
- file_exec_header = fopen(ACT_LIST,"a+");
- if (file_exec_header == NULL) return 1;
-
- fprintf(file_exec_header,"struct timespec exec_%s[] = {{%d,%d},\n",c->name,
- (int)c->exec_par_1.tv_sec,(int)c->exec_par_1.tv_nsec);
-
- for (i=0; i< c->act_number-1; i++)
- fprintf(file_exec_header," {%d,%d},\n",
- (int)c->exec_par_1.tv_sec,(int)c->exec_par_1.tv_nsec);
-
- fprintf(file_exec_header," };\n\n");
-
- fclose(file_exec_header);
-
- return 0;
-
-}
-
-int write_exec_mean(struct loader_task *c)
-{
-
- FILE *file_exec_header;
- int exec_time_usec;
- int i;
-
- file_exec_header = fopen(ACT_LIST,"a+");
- if (file_exec_header == NULL) return 1;
-
- exec_time_usec = TIMESPEC2USEC(&c->exec_par_1)
- + random() % TIMESPEC2USEC(&c->exec_par_2) - TIMESPEC2USEC(&c->exec_par_2) / 2;
- fprintf(file_exec_header,"struct timespec exec_%s[] = {{%d,%d},\n",c->name,
- exec_time_usec / 1000000, exec_time_usec % 1000000 * 1000);
-
- for (i=0; i< c->act_number-1; i++) {
- exec_time_usec = TIMESPEC2USEC(&c->exec_par_1)
- + random() % TIMESPEC2USEC(&c->exec_par_2) - TIMESPEC2USEC(&c->exec_par_2) / 2;
- fprintf(file_exec_header," {%d,%d},\n",
- exec_time_usec / 1000000, exec_time_usec % 1000000 * 1000);
- }
-
- fprintf(file_exec_header," };\n\n");
-
- fclose(file_exec_header);
-
- return 0;
-
-}
-
-void *start;
-void *end;
-
-int main(int argc, char **argv) {
-
- char loadfile[100];
- struct timespec total_time;
- struct loader_task *start_loader_task = NULL, *current_t;
- struct loader_contract *start_loader_contract = NULL, *current_c;
- int err,ldnum;
- int total_task_number;
- int total_contract_number;
-
- printf("\nEvent Generator\n");
-
- if (argc < 2) {
- printf("Error: event_gen loadfile.fsf\n");
- exit(1);
- }
-
- printf("Read loader file %s\n",argv[1]);
-
- sprintf(loadfile,"%s%s",LOADFILE_DIR,argv[1]);
- err = dos_preload(loadfile,100000,&start,&end);
-
- if (err != 0) {
- printf("Error: File not found\n");
- exit(1);
- }
-
- printf("Parsing file\n");
-
- line_reader(start, end, &total_time, &start_loader_task, &start_loader_contract);
-
- srandom(time(NULL));
-
- write_struct();
-
- current_t = start_loader_task;
- ldnum = 1;
-
- while(current_t != NULL) {
-
- sprintf(current_t->name,"ltask%d",ldnum);
- current_t->group = ldnum;
- ldnum++;
-
- switch (current_t->act_type) {
- case PAR_ACT_SINGLE:
- err = write_single_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- case PAR_ACT_PERIODIC:
- err = write_periodic_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- case PAR_ACT_MEAN:
- err = write_mean_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- }
-
- switch (current_t->exec_type) {
- case PAR_EXEC_CONST:
- err = write_exec_const(current_t);
- if (err != 0) {
- printf("Error writing exec header\n");
- exit(1);
- }
- break;
- case PAR_EXEC_MEAN:
- err = write_exec_mean(current_t);
- if (err != 0) {
- printf("Error writing exec header\n");
- exit(1);
- }
- break;
- }
-
- switch (current_t->crit_type) {
- case PAR_CRIT:
- err = write_block_const(current_t);
- if (err != 0) {
- printf("Error writing block header\n");
- exit(1);
- }
- break;
- }
-
- current_t = current_t->next;
-
- }
-
- write_basic_par_start();
-
- total_task_number = 0;
- current_t = start_loader_task;
- while(current_t != NULL) {
-
- write_basic_par(current_t);
-
- current_t = current_t->next;
-
- total_task_number++;
-
- }
-
- close_loader_task(total_task_number);
-
- write_contract_start();
-
- total_contract_number = 0;
- current_c = start_loader_contract;
- while(current_c != NULL) {
-
- write_contract(current_c);
-
- current_c = current_c->next;
-
- total_contract_number++;
-
- }
-
- close_loader_contract(total_contract_number);
-
- write_simulation_time(&total_time);
-
- return 0;
-
-}
Index: rel_1_4/loader/generators/lread.h
===================================================================
--- rel_1_4/loader/generators/lread.h (revision 1488)
+++ rel_1_4/loader/generators/lread.h (nonexistent)
@@ -1,11 +0,0 @@
-#ifndef __LREAD_H__
-#define __LREAD_H__
-
-#include "lparser.h"
-
-int dos_preload(char *file_name, long max_size, void **start, void **end);
-
-int line_reader(void *start, void *end, struct timespec *total,
- struct loader_task **start_loader_task, struct loader_contract **start_loader_contract);
-
-#endif
Index: rel_1_4/loader/generators/makefile
===================================================================
--- rel_1_4/loader/generators/makefile (revision 1488)
+++ rel_1_4/loader/generators/makefile (nonexistent)
@@ -1,9 +0,0 @@
-event_gen:
- gcc -o lparser.o -c -Wall lparser.c -I. -I..
- gcc -o lread.o -c -Wall lread.c -I. -I..
- gcc -o event_gen -Wall lparser.o lread.o -I. -I.. -lc event_gen.c
-
-clean:
- rm -f *.o
- rm -f event_gen
-
Index: rel_1_4/loader/generators/lparser.h
===================================================================
--- rel_1_4/loader/generators/lparser.h (revision 1488)
+++ rel_1_4/loader/generators/lparser.h (nonexistent)
@@ -1,58 +0,0 @@
-#ifndef __LPARSER_H__
-#define __LPARSER_H__
-
-#include "common/lconst.h"
-
-struct loader_task {
-
- char name[20];
- int number;
- int group;
- int server;
- int local_scheduler;
- int task_type;
-
- int act_type;
- struct timespec act_par_1;
- struct timespec act_par_2;
- struct timespec act_par_3;
- int exec_type;
- struct timespec exec_par_1;
- struct timespec exec_par_2;
-
- struct timespec deadline;
- struct timespec wcet;
-
- int act_number;
- struct timespec *act;
- struct timespec *exec;
-
- int crit_type;
- int resource;
- struct timespec crit_par;
-
- struct loader_task *next;
-
-};
-
-struct loader_contract {
-
- int number;
- struct timespec cmin;
- struct timespec tmax;
- struct timespec cmax;
- struct timespec tmin;
- int workload;
- struct timespec deadline;
- int local_scheduler;
-
- struct loader_contract *next;
-
-};
-
-int line_parser_contract(char **buf, int line_num, struct timespec *total_time, struct loader_contract **last);
-
-int line_parser_task(char **buf, int line_num, struct loader_task **last);
-
-#endif
-
Index: rel_1_4/loader/generators/java/fsf-schema.xsd
===================================================================
--- rel_1_4/loader/generators/java/fsf-schema.xsd (revision 1488)
+++ rel_1_4/loader/generators/java/fsf-schema.xsd (nonexistent)
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-
-<xs:element name="fsf_framework">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="simulation"/>
- <xs:element ref="contract" minOccurs='1' maxOccurs='unbounded'/>
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="simulation">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="time" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="contract">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="cmin" type="xs:string"/>
- <xs:element name="tmax" type="xs:string" />
- <xs:element name="cmax" type="xs:string" />
- <xs:element name="tmin" type="xs:string" />
- <xs:element name="workload" type="xs:string" />
- <xs:element ref="localscheduler"/>
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="localscheduler">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="task_section" minOccurs='1' maxOccurs='unbounded'/>
- </xs:sequence>
- <xs:attribute name="type" type="xs:string" use='required'/>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="task_section">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="number" type="xs:integer"/>
- <xs:element name="dline" type="xs:string" minOccurs="0" />
- <xs:element name="wcet" type="xs:string" minOccurs="0"/>
- <xs:element ref="act_section"/>
- <xs:element ref="exec_section"/>
- </xs:sequence>
- <xs:attribute name="type" type="xs:string" use='required'/>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="act_section">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="start_time" type="xs:string"/>
- <xs:element name="period_time" type="xs:string" minOccurs="0" />
- <xs:element name="delta_time" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-<xs:element name="exec_section">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="exec_time" type="xs:string"/>
- <xs:element name="delta_time" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-</xs:schema>
Index: rel_1_4/loader/generators/java/timespec.java
===================================================================
--- rel_1_4/loader/generators/java/timespec.java (revision 1488)
+++ rel_1_4/loader/generators/java/timespec.java (nonexistent)
@@ -1,37 +0,0 @@
-//package first_filter;
-
-/**
- * <p>Title: First XML filter</p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: Retis Lab</p>
- * @author not attributable
- * @version 1.0
- */
-
-public class timespec {
- long tv_sec;
- long tv_nsec;
-
- public timespec() {
- tv_sec=0;
- tv_nsec=0;
- }
-
-
- void ADDUSEC2TIMESPEC(long t1) {
- tv_nsec+=(t1%1000000)*1000;
- tv_sec+=(tv_nsec / 1000000000)+(t1/1000000);
- tv_nsec%=1000000000;
- }
- long TIMESPEC2USEC() {
- return (tv_sec*1000000+tv_nsec/1000);
- }
- boolean TIMESPEC_A_GT_B(timespec t1) {
-
- return (tv_sec>t1.tv_sec ||
- (tv_sec==t1.tv_sec && tv_nsec>t1.tv_nsec));
-
- }
-
-}
Index: rel_1_4/loader/generators/java/java_gen
===================================================================
--- rel_1_4/loader/generators/java/java_gen (revision 1488)
+++ rel_1_4/loader/generators/java/java_gen (nonexistent)
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-#if $CLASSPATH; then
-#echo Please define the CLASSPATH environment variable!!!
-#echo ...something like: export CLASSPATH=/usr/java/j2sdk1.4.2/jre/lib
-#exit 1;
-#fi
-
-java -classpath ".:$CLASSPATH/jdom.jar:$CLASSPATH/xercesImpl.jar:$CLASSPATH/xml-apis.jar" Application $1
-
/rel_1_4/loader/generators/java/java_gen
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rel_1_4/loader/generators/java/makefile
===================================================================
--- rel_1_4/loader/generators/java/makefile (revision 1488)
+++ rel_1_4/loader/generators/java/makefile (nonexistent)
@@ -1,17 +0,0 @@
-ifdef CLASSPATH
-all:
- javac Application.java timespec.java task_class.java -classpath "$(CLASSPATH)/jdom.jar"
-else
-all:
- @echo ----------------------------------------------------------------
- @echo Please define the CLASSPATH environment variable!!!
- @echo ...something like: export CLASSPATH=/usr/java/j2sdk1.4.2/jre/lib
- @echo ----------------------------------------------------------------
- @exit 1
-endif
-
-
-clean:
- rm -f *.class
- rm -f event.c
-
Index: rel_1_4/loader/generators/java/Application.java
===================================================================
--- rel_1_4/loader/generators/java/Application.java (revision 1488)
+++ rel_1_4/loader/generators/java/Application.java (nonexistent)
@@ -1,856 +0,0 @@
-//package first_filter;
-
-import java.io.*;
-import java.net.*;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.jdom.*;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.XMLOutputter;
-import java.util.regex.*;
-import java.util.Random;
-
-/**
- * <p>Title: First XML filter</p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: Retis Lab</p>
- * @author not attributable
- * @version 1.0
- */
-
-public class Application {
- private int numElements = 0;
- final String LOADFILE_DIR="../loadfile/";
- final String EVENT_DEFINE="event.c";
- final String ACT_LIST="event.c";
- private int servernumber=0;
- private timespec simulation_time=new timespec();
- ArrayList local_scheduler=new ArrayList();
- ArrayList Task_Section=new ArrayList();
- private int task_group=0;
- private int task_server=0;
- private int current_scheduler=0;
-
-
-
- //Construct the frame
- public Application() {
- try {
- jbInit();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- //Component initialization
- private void jbInit() throws Exception {
- }
-
- public void process (String url) throws MalformedURLException {
- try {
- // Use SAXBuilder
- SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
- builder.setFeature("http://apache.org/xml/features/validation/schema", true);
-
-
- Document doc = builder.build(url);
- Element root = doc.getRootElement();
-
- try {
- // Funzione per il salvataggio del file XML
- OutputStream fout = new FileOutputStream(EVENT_DEFINE);
- OutputStream bout = new BufferedOutputStream(fout);
- OutputStreamWriter out = new OutputStreamWriter(bout, "8859_1");
- out.write("\n#include \"func.h\"\n");
-
- processElement (root,out);
- out.flush();
- out.close();
- } catch (UnsupportedEncodingException e) {
- System.out.println("Non sono supportati i caratteri latini");
- System.exit(1);
-
- } catch (IOException e){
- System.out.println("Salvatagio fallito");
- System.exit(1);
- }
-
-
-
- System.out.println ("Total Number of Elements Processed: "
- +numElements);
- } catch (JDOMException e) {
- System.out.println ("JDOM Exception: "+e.getMessage());
- } catch (java.io.IOException e) {
- System.out.println ("File Exception: "+e.getMessage());
-
- }
-}
-
-// Recursive Function to Process Elements
-// Prints the Element Name and keeps a running count
-// out total number of elements.
-private void processElement(Element element, OutputStreamWriter out) {
- numElements++;
- String elementName = element.getName();
-
- System.out.println(elementName);
- List servers = element.getChildren();
- Iterator iterator = servers.iterator();
- /* get simulation parameter */
- Element SimulationInfo = (Element) iterator.next();
-
- Pattern pattern = Pattern.compile("[us\\s]+");
- try {
- /*simulation time */
-
- String[] stime = pattern.split(SimulationInfo.getChild("time").getText());
- out.write("struct timespec total_time={" + stime[0] + "," + stime[1] +
- "};\n\n");
- simulation_time.tv_sec = Long.valueOf(stime[0].trim()).longValue();
- simulation_time.tv_nsec = Long.valueOf(stime[1].trim()).longValue() /
- 1000;
-//float f = Float.valueOf(s.trim()).floatValue();
- /* server section start */
- out.write("struct loader_contract loader_contract_list[] = {\n");
- int total_server=0;
- while (iterator.hasNext()) {
- /* get server */
- Element server = (Element) iterator.next();
- process_server_section(server, out);
- total_server++;
- }
-
- out.write("};\n\n");
-
- out.write("int total_loader_contract="+total_server+";\n\n");
- iterator = local_scheduler.iterator();
- while (iterator.hasNext()) {
- /* get server */
- Element loc_sched = (Element) iterator.next();
- process_scheduler_section(loc_sched, out);
- task_server++;
- }
-
- iterator = Task_Section.iterator();
- int total_task_section=0;
- out.write("\nstruct loader_task loader_task_list[] = {\n");
- while (iterator.hasNext()) {
- /* get server */
- task_class tsk_sec = (task_class) iterator.next();
- out.write(" {\"" + tsk_sec.name + "\"," + tsk_sec.task_type + "," +
- tsk_sec.contract +
- "," + tsk_sec.localscheduler + "," + tsk_sec.number + ","
- + tsk_sec.group + ",{" + tsk_sec.deadline.tv_sec +
- "," +
- tsk_sec.deadline.tv_nsec + "}," + "{" +
- tsk_sec.wcet.tv_sec + "," +
- tsk_sec.wcet.tv_nsec + "}," + tsk_sec.act_number +
- ",0,act_" + tsk_sec.name +
- ",exec_" + tsk_sec.name + "},\n");
- total_task_section++;
- }
- out.write("};\n\n");
- out.write("int total_loader_task="+total_task_section+";\n\n");
-
-
- }
- catch (java.io.IOException e) {
- System.out.println("File Exception: " + e.getMessage());
-
- }
-
-}
-
-void process_scheduler_section(Element e, OutputStreamWriter out) {
- Attribute t;
- t=e.getAttribute("type");
-
- List localpars = e.getChildren();
- Iterator iterator = localpars.iterator();
- while (iterator.hasNext()) {
- /* get task section */
- Element loc_task = (Element) iterator.next();
- process_task_section(loc_task, out, t);
-
- }
-
-}
-
-void process_task_section(Element e, OutputStreamWriter out, Attribute loc) {
- Attribute t;
- int act;
- act=1;
- int task_type=0;
- int localscheduler=0;
- timespec time = new timespec();
- Pattern pattern = Pattern.compile("[us\\s]+");
- String scheduler=loc.getValue();
- if (scheduler.equals("POSIX")) {
- localscheduler=30;
- }
- else if (scheduler.equals("EDF")) {
- localscheduler=31;
- }
- else if (scheduler.equals("RM")) {
- localscheduler=32;
- }
-
- /* get task section */
- t=e.getAttribute("type");
-
- if (t.getValue().equals("BackTask")) {
- process_back_task(e, out);
- task_type=23;
- } else if (t.getValue().equals("OneShot")) {
- process_oneshot_task(e, out);
- task_type=21;
- } else if (t.getValue().equals("CyclicalTask")) {
- task_type=22;
- act=process_cyclical_task(e, out);
- }
-
- task_class section=new task_class();
- section.deadline=new timespec();
- section.wcet=new timespec();
- section.name="task"+task_group;
- section.contract=task_server;
- section.group=task_group;
- section.act_number=act;
- section.task_type=task_type;
- section.localscheduler=localscheduler;
- section.number=Integer.valueOf(e.getChild("number").getText()).intValue();
-
- Element dl = e.getChild("dline");
- if (dl != null) {
-
- String[] dline=pattern.split(dl.getText());
- time.tv_sec = Long.valueOf(dline[0]).longValue();
- time.tv_nsec = Long.valueOf(dline[1]).longValue() * 1000;
-
- section.deadline.tv_sec=time.tv_sec;
- section.deadline.tv_nsec=time.tv_nsec;
-
- }
-
-
- Element wc = e.getChild("wcet");
- if (wc != null) {
-
- String[] wcet=pattern.split(e.getChild("wcet").getText());
- time.tv_sec = Long.valueOf(wcet[0]).longValue();
- time.tv_nsec = Long.valueOf(wcet[1]).longValue() * 1000;
-
- section.wcet.tv_sec=time.tv_sec;
- section.wcet.tv_nsec=time.tv_nsec;
-
- }
-
- Task_Section.add(section);
- task_group++;
-
-}
-
-void process_back_task(Element e, OutputStreamWriter out) {
-
- Pattern pattern = Pattern.compile("[us\\s]+");
-
- Element act_section=e.getChild("act_section");
- String[] start_time=pattern.split(act_section.getChild("start_time").getText());
- Element exec_section=e.getChild("exec_section");
-
- String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
- try {
- out.write("struct timespec act_task"+task_group+"[]={{"+start_time[0]+","+start_time[1]+"},};\n\n");
- out.write("struct timespec exec_task"+task_group+"[]={{"+exec_const[0]+","+exec_const[1]+"},};\n\n");
-
- }
- catch (java.io.IOException ex) {
- System.out.println("File Exception: " + ex.getMessage());
-
- }
-}
-void process_oneshot_task(Element e, OutputStreamWriter out) {
- Pattern pattern = Pattern.compile("[us\\s]+");
-
- Element act_section=e.getChild("act_section");
- String[] start_time=pattern.split(act_section.getChild("start_time").getText());
-
- Element exec_section=e.getChild("exec_section");
- String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
-
- try {
- out.write("struct timespec act_task"+task_group+"[]={{"+start_time[0]+","+start_time[1]+"},};\n\n");
- out.write("struct timespec exec_task"+task_group+"[]={{"+exec_const[0]+","+exec_const[1]+"},};\n\n");
- }
- catch (java.io.IOException ex) {
- System.out.println("File Exception: " + ex.getMessage());
- }
-}
-
-int process_cyclical_task(Element e, OutputStreamWriter out) {
-
- int activated=1;
- Pattern pattern = Pattern.compile("[us\\s]+");
- Element act_section=e.getChild("act_section");
- String[] start_time=pattern.split(act_section.getChild("start_time").getText());
- String[] period=pattern.split(act_section.getChild("period_time").getText());
- Element deltatime=act_section.getChild("delta_time");
- String[] delta_time;
-
- long act_delta=0;
- timespec delta_act_ts = new timespec();
-
- if (deltatime != null) {
- delta_time = pattern.split(deltatime.getText());
- delta_act_ts.tv_sec = Long.valueOf(delta_time[0]).longValue();
- delta_act_ts.tv_nsec = Long.valueOf(delta_time[1]).longValue() * 1000;
- act_delta = delta_act_ts.TIMESPEC2USEC();
- }
-
- Element exec_section=e.getChild("exec_section");
- String[] exec_const=pattern.split(exec_section.getChild("exec_time").getText());
- Element execdelta=exec_section.getChild("delta_time");
- String[] exec_delta;
-
- long exec_delta_long = 0;
- timespec exec_delta_ts = new timespec();
-
- if (execdelta != null) {
- exec_delta=pattern.split(execdelta.getText());
- exec_delta_ts.tv_sec = Long.valueOf(exec_delta[0]).longValue();
- exec_delta_ts.tv_nsec = Long.valueOf(exec_delta[1]).longValue() * 1000;
- exec_delta_long = exec_delta_ts.TIMESPEC2USEC();
- }
-
- try {
- out.write("struct timespec act_task"+task_group+"[]={{"+
- start_time[0]+","+start_time[1]+"},\n");
-
- timespec time = new timespec();
- time.tv_sec = Long.valueOf(period[0]).longValue();
- time.tv_nsec = Long.valueOf(period[1]).longValue() * 1000;
-
- long usecperiod = time.TIMESPEC2USEC();
- timespec nextact = new timespec();
-
- time.tv_sec = Long.valueOf(start_time[0]).longValue();
- time.tv_nsec = Long.valueOf(start_time[1]).longValue() * 1000;
-
- Random rd = new Random();
-
- while (simulation_time.TIMESPEC_A_GT_B(time)) {
-
- nextact.tv_sec = Long.valueOf(period[0]).longValue();
- nextact.tv_nsec = Long.valueOf(period[1]).longValue() * 1000;
-
- if (act_delta != 0) {
- nextact.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_VALUE) % act_delta - act_delta/2);
- }
-
- time.ADDUSEC2TIMESPEC(usecperiod);
- out.write(" {"+nextact.tv_sec+","+nextact.tv_nsec/1000+"},\n");
- activated++;
- }
- out.write("};\n");
-
- out.write("struct timespec exec_task"+task_group+"[]={\n");
-
- timespec nextexec = new timespec();
-
- for (int i=0; i<activated; i++) {
-
- nextexec.tv_sec = Long.valueOf(exec_const[0]).longValue();
- nextexec.tv_nsec = Long.valueOf(exec_const[1]).longValue() * 1000;
-
- if (exec_delta_long != 0) {
- nextexec.ADDUSEC2TIMESPEC((rd.nextInt() & Integer.MAX_VALUE) % exec_delta_long - exec_delta_long/2);
- }
-
- out.write(" {"+nextexec.tv_sec+","+nextexec.tv_nsec/1000+"},\n");
-
- }
- out.write("};\n");
- }
- catch (java.io.IOException ex) {
- System.out.println("File Exception: " + ex.getMessage());
- }
-
- return activated;
-}
-
-void process_server_section(Element e, OutputStreamWriter out) {
-
-
- List serverpars = e.getChildren();
- Iterator iterator = serverpars.iterator();
- Element serverpar = (Element) iterator.next();
- String current_value;
- current_value=serverpar.getText();
- try {
- out.write("{" + servernumber + ",{");
- servernumber++;
-
- Pattern pattern = Pattern.compile("[us\\s]+");
- /* cmin */
- String[] cmin = pattern.split(current_value);
- out.write(cmin[0] + "," + Long.valueOf(cmin[1]).longValue()*1000+"},{");
-
- /* tmax */
- serverpar = (Element) iterator.next();
- current_value=serverpar.getText();
- String[] tmax = pattern.split(current_value);
- out.write(tmax[0] + "," + Long.valueOf(tmax[1]).longValue()*1000+"},{");
-
- /* cmax */
- serverpar = (Element) iterator.next();
- current_value=serverpar.getText();
- String[] cmax = pattern.split(current_value);
- out.write(cmax[0] + "," + Long.valueOf(cmax[1]).longValue()*1000+"},{");
-
- /* tmin */
- serverpar = (Element) iterator.next();
- current_value=serverpar.getText();
- String[] tmin = pattern.split(current_value);
- out.write(tmin[0] + "," + Long.valueOf(tmin[1]).longValue()*1000+"},");
-
- /*work load */
- serverpar = (Element) iterator.next();
- current_value=serverpar.getText();
- out.write(current_value+",");
-
- serverpar = (Element) iterator.next();
- current_value=serverpar.getName();
- Attribute loc_type=serverpar.getAttribute("type");
- String scheduler=loc_type.getValue();
- if (scheduler.equals("POSIX")) {
- out.write("30");
- }
- else if (scheduler.equals("EDF")) {
- out.write("31");
- }
- else if (scheduler.equals("RM")) {
- out.write("32");
- }
- out.write(",-1},\n");
- local_scheduler.add(servernumber-1,serverpar);
-
- } catch (java.io.IOException ex) {
- System.out.println ("File Exception: "+ex.getMessage());
- }
-
- /*
- fprintf(file_event_header, " {%d,{%d,%d},{%d,%d},{%d,%d},{%d,%d},%d,%d,-1},\n",
- (int)c->number,(int)c->cmin.tv_sec,(int)c->cmin.tv_nsec,
- (int)c->tmax.tv_sec,(int)c->tmax.tv_nsec,
- (int)c->cmax.tv_sec,(int)c->cmax.tv_nsec,
- (int)c->tmin.tv_sec,(int)c->tmin.tv_nsec,
- (int)c->workload,(int)c->local_scheduler);
-
-*/
- //processElement (kid);
- }
-
-
-
-public static void main(String[] args) throws Exception {
- System.out.println("Parser Versione 1.0");
- Application app = new Application();
- if (args.length > 0)
- app.process(args[0]);
-}
-
-/* Event Generator
- *
- * Giacomo Guidi
- */
-
-
-
-
-
-/*
-int write_basic_par_start(void)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, "struct loader_task loader_task_list[] = {\n");
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-
-int write_basic_par(struct loader_task *c)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, " {\"%s\",%d,%d,%d,%d,%d,{%d,%d},{%d,%d},%d,0,act_%s,exec_%s},\n",
- c->name,(int)c->task_type,(int)c->server,(int)c->local_scheduler,(int)c->number,(int)c->group,
- (int)c->deadline.tv_sec, (int)c->deadline.tv_nsec,
- (int)c->wcet.tv_sec, (int)c->wcet.tv_nsec,
- (int)c->act_number, c->name, c->name);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_contract(struct loader_contract *c)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header, " {%d,{%d,%d},{%d,%d},{%d,%d},{%d,%d},%d,%d,-1},\n",
- (int)c->number,(int)c->cmin.tv_sec,(int)c->cmin.tv_nsec,
- (int)c->tmax.tv_sec,(int)c->tmax.tv_nsec,
- (int)c->cmax.tv_sec,(int)c->cmax.tv_nsec,
- (int)c->tmin.tv_sec,(int)c->tmin.tv_nsec,
- (int)c->workload,(int)c->local_scheduler);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int close_loader_task(int total_task_number)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"};\n\n");
-
- fprintf(file_event_header,"int total_loader_task = %d;\n\n",total_task_number);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int close_loader_contract(int total_contract_number)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"};\n\n");
-
- fprintf(file_event_header,"int total_loader_contract = %d;\n\n",total_contract_number);
-
- fclose(file_event_header);
-
- return 0;
-
-}
-
-int write_simulation_time(struct timespec *total)
-{
-
- FILE *file_event_header;
-
- file_event_header = fopen(EVENT_DEFINE,"a+");
- if (file_event_header == NULL) return 1;
-
- fprintf(file_event_header,"struct timespec total_time = {%d,%d};\n\n",(int)total->tv_sec,(int)total->tv_nsec);
-
- fclose(file_event_header);
-
- return 0;
-
-
-}
-
-int write_single_act(struct timespec *t, struct loader_task *c)
-{
-
- FILE *file_act_header;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- if (TIMESPEC_A_GT_B(t,&c->act_par_1)) {
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d}};\n\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
- c->act_number = 1;
- } else {
- fprintf(file_act_header,"struct timespec act_%s[] = {{0,0}};\n\n",c->name);
- c->act_number = 0;
- }
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_periodic_act(struct timespec *t, struct loader_task *c)
-{
-
- FILE *file_act_header;
- struct timespec tot_time;
- int period;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d},\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
-
- c->act_number = 1;
- TIMESPEC_ASSIGN(&tot_time,&c->act_par_1);
- period = TIMESPEC2USEC(&c->act_par_2);
- while (TIMESPEC_A_GT_B(t, &tot_time)) {
- c->act_number++;
- ADDUSEC2TIMESPEC(period,&tot_time);
- fprintf(file_act_header," {%d,%d},\n",
- (int)c->act_par_2.tv_sec,(int)c->act_par_2.tv_nsec);
- }
-
- fprintf(file_act_header," };\n\n");
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_mean_act(struct timespec *t,struct loader_task *c)
-{
-
- FILE *file_act_header;
- struct timespec tot_time;
- int next_act;
-
- file_act_header = fopen(ACT_LIST,"a+");
- if (file_act_header == NULL) return 1;
-
- fprintf(file_act_header,"struct timespec act_%s[] = {{%d,%d},\n",c->name,
- (int)c->act_par_1.tv_sec,(int)c->act_par_1.tv_nsec);
-
- c->act_number = 1;
- TIMESPEC_ASSIGN(&tot_time,&c->act_par_1);
- while (TIMESPEC_A_GT_B(t, &tot_time)) {
- c->act_number++;
- next_act = TIMESPEC2USEC(&c->act_par_2) + random() % TIMESPEC2USEC(&c->act_par_3) - TIMESPEC2USEC(&c->act_par_3) / 2;
- ADDUSEC2TIMESPEC(next_act,&tot_time);
- fprintf(file_act_header," {%d,%d},\n",
- next_act / 1000000, next_act % 1000000 * 1000);
- }
-
- fprintf(file_act_header," };\n\n");
-
- fclose(file_act_header);
-
- return 0;
-
-}
-
-int write_exec_const(struct loader_task *c)
-{
-
- FILE *file_exec_header;
- int i;
-
- file_exec_header = fopen(ACT_LIST,"a+");
- if (file_exec_header == NULL) return 1;
-
- fprintf(file_exec_header,"struct timespec exec_%s[] = {{%d,%d},\n",c->name,
- (int)c->exec_par_1.tv_sec,(int)c->exec_par_1.tv_nsec);
-
- for (i=0; i< c->act_number-1; i++)
- fprintf(file_exec_header," {%d,%d},\n",
- (int)c->exec_par_1.tv_sec,(int)c->exec_par_1.tv_nsec);
-
- fprintf(file_exec_header," };\n\n");
-
- fclose(file_exec_header);
-
- return 0;
-
-}
-
-int write_exec_mean(struct loader_task *c)
-{
-
- FILE *file_exec_header;
- int exec_time_usec;
- int i;
-
- file_exec_header = fopen(ACT_LIST,"a+");
- if (file_exec_header == NULL) return 1;
-
- exec_time_usec = TIMESPEC2USEC(&c->exec_par_1)
- + random() % TIMESPEC2USEC(&c->exec_par_2) - TIMESPEC2USEC(&c->exec_par_2) / 2;
- fprintf(file_exec_header,"struct timespec exec_%s[] = {{%d,%d},\n",c->name,
- exec_time_usec / 1000000, exec_time_usec % 1000000 * 1000);
-
- for (i=0; i< c->act_number-1; i++) {
- exec_time_usec = TIMESPEC2USEC(&c->exec_par_1)
- + random() % TIMESPEC2USEC(&c->exec_par_2) - TIMESPEC2USEC(&c->exec_par_2) / 2;
- fprintf(file_exec_header," {%d,%d},\n",
- exec_time_usec / 1000000, exec_time_usec % 1000000 * 1000);
- }
-
- fprintf(file_exec_header," };\n\n");
-
- fclose(file_exec_header);
-
- return 0;
-
-}
-
-void *start;
-void *end;
-
-int main(int argc, char **argv) {
-
- char loadfile[100];
- struct timespec total_time;
- struct loader_task *start_loader_task = NULL, *current_t;
- struct loader_contract *start_loader_contract = NULL, *current_c;
- int err,ldnum;
- int total_task_number;
- int total_contract_number;
-
- printf("\nEvent Generator\n");
-
- if (argc < 2) {
- printf("Error: event_gen loadfile.fsf\n");
- exit(1);
- }
-
- printf("Read loader file %s\n",argv[1]);
-
- sprintf(loadfile,"%s%s",LOADFILE_DIR,argv[1]);
- err = dos_preload(loadfile,100000,&start,&end);
-
- if (err != 0) {
- printf("Error: File not found\n");
- exit(1);
- }
-
- printf("Parsing file\n");
-
- line_reader(start, end, &total_time, &start_loader_task, &start_loader_contract);
-
- srandom(time(NULL));
-
- write_struct();
-
- current_t = start_loader_task;
- ldnum = 1;
-
- while(current_t != NULL) {
-
- sprintf(current_t->name,"ltask%d",ldnum);
- current_t->group = ldnum;
- ldnum++;
-
- switch (current_t->act_type) {
- case PAR_ACT_SINGLE:
- err = write_single_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- case PAR_ACT_PERIODIC:
- err = write_periodic_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- case PAR_ACT_MEAN:
- err = write_mean_act(&total_time,current_t);
- if (err != 0) {
- printf("Error writing activation header\n");
- exit(1);
- }
- break;
- }
-
- switch (current_t->exec_type) {
- case PAR_EXEC_CONST:
- err = write_exec_const(current_t);
- if (err != 0) {
- printf("Error writing exec header\n");
- exit(1);
- }
- break;
- case PAR_EXEC_MEAN:
- err = write_exec_mean(current_t);
- if (err != 0) {
- printf("Error writing exec header\n");
- exit(1);
- }
- break;
- }
-
- current_t = current_t->next;
-
- }
-
- write_basic_par_start();
-
- total_task_number = 0;
- current_t = start_loader_task;
- while(current_t != NULL) {
-
- write_basic_par(current_t);
-
- current_t = current_t->next;
-
- total_task_number++;
-
- }
-
- close_loader_task(total_task_number);
-
- write_contract_start();
-
- total_contract_number = 0;
- current_c = start_loader_contract;
- while(current_c != NULL) {
-
- write_contract(current_c);
-
- current_c = current_c->next;
-
- total_contract_number++;
-
- }
-
- close_loader_contract(total_contract_number);
-
- write_simulation_time(&total_time);
-
- return 0;
-
-}
-
-*/
-}
Index: rel_1_4/loader/generators/java/task_class.java
===================================================================
--- rel_1_4/loader/generators/java/task_class.java (revision 1488)
+++ rel_1_4/loader/generators/java/task_class.java (nonexistent)
@@ -1,26 +0,0 @@
-//package first_filter;
-
-/**
- * <p>Title: First XML filter</p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: Retis Lab</p>
- * @author not attributable
- * @version 1.0
- */
-
-public class task_class {
- String name;
- int task_type;
- int contract;
- int localscheduler;
- int number;
- int group;
- timespec deadline;
- timespec wcet;
- int act_number;
-
- public task_class() {
- }
-
-}
Index: rel_1_4/loader/generators/lread.c
===================================================================
--- rel_1_4/loader/generators/lread.c (revision 1488)
+++ rel_1_4/loader/generators/lread.c (nonexistent)
@@ -1,95 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "lparser.h"
-#include "common/time.h"
-
-int dos_preload(char *file_name, long max_size, void **start_file, void **end_file)
-{
- FILE *file;
- void *buf;
- long rd;
-
-
- file = fopen(file_name,"r");
- if (file == NULL) return -1;
-
- buf = malloc(max_size);
- *start_file = buf;
-
- while(((rd = fread(buf, 1, 2048, file)) == 2048) &&
- ((buf - *start_file + rd) < (max_size-2048))) {
- buf += rd;
- }
-
- *end_file = buf + rd;
-
- fclose(file);
- return(0);
-
-}
-
-int line_reader(void *start_file, void *end_file, struct timespec *total,
- struct loader_task **start_loader_task, struct loader_contract **start_loader_contract)
-{
-
- char *pbuf = start_file;
- int res,line_num,total_loader_task,total_loader_contract;
- struct loader_task *current_t = NULL;
- struct loader_contract *current_c = NULL;
-
- NULL_TIMESPEC(total);
-
- line_num = 0;
- total_loader_task = 0;
- total_loader_contract = 0;
-
- while ((void *)(pbuf) < end_file) {
-
- line_num++;
-
- if (*start_loader_contract == NULL)
- res = line_parser_contract(&pbuf, line_num, total, &current_c);
- else
- res = line_parser_contract(&pbuf, line_num, total, &current_c->next);
-
- if (res == 2) {
- total_loader_contract++;
- if (*start_loader_contract == NULL)
- *start_loader_contract = current_c;
- else
- current_c = current_c->next;
- }
-
- if (res == 3) break;
-
- }
-
- while ((void *)(pbuf) < end_file) {
-
- line_num++;
-
- if (*start_loader_task == NULL)
- res = line_parser_task(&pbuf, line_num, &current_t);
- else
- res = line_parser_task(&pbuf, line_num, &current_t->next);
-
- if (res == 2) {
- total_loader_task++;
- if (*start_loader_task == NULL)
- *start_loader_task = current_t;
- else
- current_t = current_t->next;
- }
-
- if (res == 3) break;
-
- }
-
- printf("Total decoded lines %d\n",line_num);
- printf("Total loader contract %d\n",total_loader_contract);
- printf("Total loader task %d\n",total_loader_task);
- printf("Simulation time sec = %ld usec = %ld\n",total->tv_sec,total->tv_nsec/1000);
-
- return 0;
-
-}
Index: rel_1_4/loader/generators/lparser.c
===================================================================
--- rel_1_4/loader/generators/lparser.c (revision 1488)
+++ rel_1_4/loader/generators/lparser.c (nonexistent)
@@ -1,479 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include "lparser.h"
-#include "common/time.h"
-
-#define PARSER_DEBUG
-
-static int find_break(char **buf, int find_type, struct timespec *time, int *val)
-{
-
- int i;
- char str[20];
-
- i = 0;
- while (((char *)(*buf))[i] == ' ' || ((char *)(*buf))[i] == ':' ||
- ((char *)(*buf))[i] == '\n' || ((char *)(*buf))[i] == '\r') i++;
- *buf += i;
-
- if (!strncmp(*buf,"END",3) && find_type == PAR_NOTHING) {
- *buf += 3;
- return PAR_END;
- }
-
- if (!strncmp(*buf,"CONTRACT SECTION",16) && find_type == PAR_NOTHING) {
- *buf += 16;
- return PAR_CONTRACT_SECTION;
- }
-
- if (!strncmp(*buf,"TASK SECTION",12) && find_type == PAR_NOTHING) {
- *buf += 12;
- return PAR_TASK_SECTION;
- }
-
- i = 0;
- if (((char *)(*buf))[0] == '#' && find_type == PAR_NOTHING) {
- while (((char *)(*buf))[i] != '\n' && ((char *)(*buf))[i] != '\r') i++;
- *buf += i;
- return PAR_FOUND;
- }
-
- switch (find_type) {
-
- case PAR_NOTHING:
- if (((char *)(*buf))[0] == ';' ||
- ((char *)(*buf))[0] < 32) {
- *buf += 1;
- return PAR_FOUND;
- }
- break;
-
- case PAR_TOTAL_EXEC_TIME:
- if (!strncmp(*buf, "TOTAL_EXEC_TIME:",16)) {
- *buf += 16;
- return PAR_FOUND;
- }
- break;
-
- case PAR_TIME:
- if (((char *)(*buf))[0] != '[') return PAR_ERROR;
- *buf += 1;
- i = 0;
- while (((char *)(*buf))[i] >= '0' && ((char *)(*buf))[i] <= '9') {
- str[i] = ((char *)(*buf))[i];
- i++;
- }
- if (((char *)(*buf))[i] != ']') return PAR_ERROR;
- str[i] = 0;
- time->tv_sec = atoi(str);
- i += 2;
- *buf += i;
- i = 0;
- while (((char *)(*buf))[i] >= '0' && ((char *)(*buf))[i] <= '9') {
- str[i] = ((char *)(*buf))[i];
- i++;
- }
- if (((char *)(*buf))[i] != ']') return PAR_ERROR;
- str[i] = 0;
- time->tv_nsec = atoi(str) * 1000;
- i += 2;
- *buf += i;
- return PAR_FOUND;
- break;
-
- case PAR_TASK_TYPE:
- if (!strncmp(*buf, "OS:",3)) {
- *val = PAR_TASK_OS;
- *buf += 3;
- return PAR_FOUND;
- }
- if (!strncmp(*buf, "CT:",3)) {
- *val = PAR_TASK_CT;
- *buf += 3;
- return PAR_FOUND;
- }
- if (!strncmp(*buf, "BT:",3)) {
- *val = PAR_TASK_BT;
- *buf += 3;
- return PAR_FOUND;
- }
- break;
-
- case PAR_TASK_NUMBER:
- if (((char *)(*buf))[0] != '[') return PAR_ERROR;
- *buf += 1;
- i = 0;
- while (((char *)(*buf))[i] >= '0' && ((char *)(*buf))[i] <= '9') {
- str[i] = ((char *)(*buf))[i];
- i++;
- }
- if (((char *)(*buf))[i] != ']') return PAR_ERROR;
- str[i] = 0;
- *val = atoi(str);
- i += 2;
- *buf += i;
- return PAR_FOUND;
- break;
-
- case PAR_ACT_TYPE:
- if (!strncmp(*buf,"ACT_SINGLE(",11)) {
- *buf += 11;
- *val = PAR_ACT_SINGLE;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"ACT_PERIODIC(",13)) {
- *buf += 13;
- *val = PAR_ACT_PERIODIC;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"ACT_MEAN(",9)) {
- *buf += 9;
- *val = PAR_ACT_MEAN;
- return PAR_FOUND;
- }
- return PAR_ERROR;
- break;
-
- case PAR_LOCAL_SCHEDULER:
- if (!strncmp(*buf,"POSIX",5)) {
- *buf += 5;
- *val = PAR_POSIX;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"EDF",3)) {
- *buf += 3;
- *val = PAR_EDF;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"RM",2)) {
- *buf += 2;
- *val = PAR_RM;
- return PAR_FOUND;
- }
- return PAR_ERROR;
- break;
-
- case PAR_EXEC_TYPE:
- if (!strncmp(*buf,"EXEC_CONST(",11)) {
- *buf += 11;
- *val = PAR_EXEC_CONST;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"EXEC_MEAN(",10)) {
- *buf += 10;
- *val = PAR_EXEC_MEAN;
- return PAR_FOUND;
- }
- return PAR_ERROR;
- break;
-
- case PAR_CRIT_SESSION:
- if (!strncmp(*buf,"NO_CRIT",7)) {
- *buf += 7;
- *val = PAR_NO_CRIT;
- return PAR_FOUND;
- }
- if (!strncmp(*buf,"CRIT(",5)) {
- *buf += 5;
- *val = PAR_CRIT;
- return PAR_FOUND;
- }
- return PAR_ERROR;
- break;
-
- }
-
- return PAR_ERROR;
-
-}
-
-void par_error(int line_num)
-{
-
- printf("\nParser error: line [%d]\n",line_num);
- exit(1);
-
-}
-
-/* result:
- * 0 -> nothing
- * 1 -> total
- * 2 -> new task-loader
- * 3 -> end file
- */
-int line_parser_task(char **pbuf, int line_num, struct loader_task **last)
-{
- struct timespec time;
- struct loader_task *ld = NULL;
- int val, res;
-
- res = find_break(pbuf, PAR_NOTHING, &time, &val);
- if (res == PAR_FOUND) return 0;
- if (res == PAR_END) return 3;
-
- res = find_break(pbuf,PAR_TASK_TYPE, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("TASK TYPE = %d\n",val);
- #endif
-
- ld = malloc(sizeof(struct loader_task));
- if (ld == NULL) par_error(line_num);
-
- ld->next = NULL;
- *last = ld;
-
- ld->task_type = val;
-
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TASK_NUMBER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("TASK SERVER = %d\n",val);
- #endif
-
- ld->server = val;
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_LOCAL_SCHEDULER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("TASK LOCAL SCHEDULER = %d\n",val);
- #endif
-
- ld->local_scheduler = val;
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TASK_NUMBER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("TASK NUMBER = %d\n",val);
- #endif
-
- ld->number = val;
-
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("DEADLINE: [%ld][%ld]\n",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->deadline,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("WCET: [%ld][%ld]\n",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->wcet,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_ACT_TYPE, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("ACTIVATION TYPE: %d (",val);
- #endif
-
- ld->act_type = val;
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->act_par_1,&time);
- } else par_error(line_num);
-
- if (ld->act_type != PAR_ACT_SINGLE) {
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->act_par_2,&time);
- } else par_error(line_num);
- }
-
- if (ld->act_type != PAR_ACT_SINGLE && ld->act_type != PAR_ACT_PERIODIC) {
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->act_par_3,&time);
- } else par_error(line_num);
- }
-
- #ifdef PARSER_DEBUG
- printf(")\n");
- #endif
-
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_EXEC_TYPE, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("EXEC TYPE: %d (",val);
- #endif
- ld->exec_type = val;
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->exec_par_1,&time);
- } else par_error(line_num);
-
- if (ld->exec_type != PAR_EXEC_CONST) {
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->exec_par_2,&time);
- } else par_error(line_num);
- }
-
- #ifdef PARSER_DEBUG
- printf(")\n");
- #endif
-
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_CRIT_SESSION, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("CRITITCAL SESSION: %d (",val);
- #endif
- ld->crit_type = val;
- if (ld->crit_type == PAR_CRIT) {
- res = find_break(pbuf,PAR_TASK_NUMBER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("[%d]",val);
- #endif
- ld->resource = val;
- } else par_error(line_num);
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&ld->crit_par,&time);
- } else par_error(line_num);
- }
-
- #ifdef PARSER_DEBUG
- printf(")\n");
- #endif
-
- } else par_error(line_num);
-
- return 2;
-
-}
-
-int line_parser_contract(char **pbuf, int line_num, struct timespec *total, struct loader_contract **last)
-{
-
- struct timespec time;
- struct loader_contract *lc = NULL;
- int val, res;
-
- res = find_break(pbuf, PAR_NOTHING, &time, &val);
- if (res == PAR_FOUND) return 0;
- if (res == PAR_END) return 3;
-
- res = find_break(pbuf,PAR_TOTAL_EXEC_TIME, &time, &val);
- if (res == PAR_FOUND) {
- NULL_TIMESPEC(total);
- res = find_break(pbuf, PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- TIMESPEC_ASSIGN(total,&time);
- #ifdef PARSER_DEBUG
- printf("TOTAL EXEC TIME SEC = %ld NSEC = %ld\n",total->tv_sec,total->tv_nsec);
- #endif
- return 1;
- } else par_error(line_num);
- }
-
- res = find_break(pbuf,PAR_TASK_NUMBER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("CONTRACT [%d]",val);
- #endif
-
- lc = malloc(sizeof(struct loader_contract));
- if (lc == NULL) par_error(line_num);
-
- lc->next = NULL;
- *last = lc;
-
- lc->number = val;
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&lc->cmin,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&lc->tmax,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld]",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&lc->cmax,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld],",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&lc->tmin,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TASK_NUMBER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%d]\n",val);
- #endif
-
- lc->workload = val;
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_TIME, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf(",[%ld][%ld],",time.tv_sec,time.tv_nsec/1000);
- #endif
- TIMESPEC_ASSIGN(&lc->deadline,&time);
- } else par_error(line_num);
-
- res = find_break(pbuf,PAR_LOCAL_SCHEDULER, &time, &val);
- if (res == PAR_FOUND) {
- #ifdef PARSER_DEBUG
- printf("LOCAL SCHEDULER = %d\n",val);
- #endif
-
- lc->local_scheduler = val;
- } else par_error(line_num);
-
- return 2;
-
-}
Index: rel_1_4/loader/readme.txt
===================================================================
--- rel_1_4/loader/readme.txt (revision 1488)
+++ rel_1_4/loader/readme.txt (nonexistent)
@@ -1,64 +0,0 @@
-FIRST Framework Evaluation architecture
----------------------------------------
-
-makefile usage:
-
-$ make OS=<osname> TEST=<demo> all
-
-where:
-
-<osname> is the name of the target operating system and it can be:
-
-- MARTE for MaRTE OS
-- SHARK for Shark
-
-<demo> is the name of the test case that have to be compiled. The
-specification of the test case is contained inside the loadfile
-directory.
-
-Valid extensions for the test case specification files are:
-.fsf - old script file
-.fsf2 - XML version
-(other extensions can be added easily)
-
-For example:
-
-make OS=SHARK TEST=load all
-
-these makefile will:
-- prepare the out directory with the common files
-- add the shark initialization files
-- parse a file loadfile/load.fsf (the file extension is guessed automatically
- by the makefile) to produce source code inside out
-- compile the resulting shark application
-
--------------------------------------------------------------------------
-
-XML Parser & Java setup
-
-To use the XML parser (file extension .fsf2) you need to properly setup
-your system, and you need toinstall the following libraries:
-
-- JDOM BETA 9 - http://www.jdom.org
-- XERCES (Parser SAX with XSD support) - http://xml.apache.org
-
-On my Linux system, after installing the Sun's j2re,
-I did the following commands (as root):
-
-# mkdir j
-# cd j
-# wget http://www.jdom.org/dist/binary/jdom-b9.tar.gz
-# tar xvzf jdom-b9.tar.gz
-# cp jdom-b9/build/jdom.jar /usr/java/j2re1.4.1_02/lib/
-# wget http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.6.0.tar.gz
-# tar xvzf Xerces-J-bin.2.6.0.tar.gz
-# cp ./xerces-2_6_0/xercesImpl.jar /usr/java/j2re1.4.1_02/lib/
-# cp ./xerces-2_6_0/xml-apis.jar /usr/java/j2re1.4.1_02/lib/
-
-then, as user, I did
-
-$ export CLASSPATH=/usr/java/j2re1.4.1_02/lib
-
-Enjoy,
-
-Michael, Giacomo, PJ
Index: rel_1_4/loader/makefile
===================================================================
--- rel_1_4/loader/makefile (revision 1488)
+++ rel_1_4/loader/makefile (nonexistent)
@@ -1,88 +0,0 @@
-#
-# help can be found in readme.txt
-#
-
-# -----------------------------------------------------
-#
-# OS dependent variables:
-
-# all the OS dependent variables and dependencies are under $(OS)/makefile.in
-
-# This makefile will execute the dependency os_specific_dep to "fill"
-# the out directory with OS-specific stuffs; Then, the makefile
-# generated in the out directory will be executed with $(TEST) as
-# parameter.
-
-ifndef $(BASE)
-BASE=../..
-endif
-
-include $(BASE)/config/config.mk
-
-ifeq ($(OS),MARTE)
-OSINCLUDE=marte/makefile.in
-endif
-
-ifeq ($(OS),SHARK)
-OSINCLUDE=shark/makefile.in
-endif
-
-# -----------------------------------------------------
-
-.PHONY: all clean help
-
-help:
-ifeq ($(CAT),cat)
- cat readme.txt
-endif
-
-all: out out/common.done out/$(TEST).done os_specific_dep
- make -C out $(TEST)
-
-clean:
- make -C generators clean
- make -C generators/java clean
- rm -rf out
-
-out/common.done:
- cd out; cp -sf ../common/*.c .
- cd out; cp -sf ../common/*.h .
- touch out/common.done
-
-# note: the out dependency is present only in the "all" dependency
-# (there is some strange case with the updating of the out date that I
-# do not know how to resolve...
-out:
- mkdir out
-
-# -----------------------------------------------------
-#
-# Testcase generation
-
-# .FSF Format
-# -----------------------
-
-generators/event_gen:
- make -C generators event_gen
-
-out/%.done: loadfile/%.fsf generators/event_gen
- cd out; ../generators/event_gen ../loadfile/$(TEST).fsf
- touch out/$*.done
-
-# .FSF2 Format
-# -----------------------
-
-generators/java/Applicazione.class:
- make -C generators/java all
-
-out/%.done: loadfile/%.fsf2 generators/java/Applicazione.class
- cd generators/java; ./java_gen ../../loadfile/$(TEST).fsf2; mv event.c ../../out/
- touch out/$*.done
-
-# other file formats
-# -----------------------
-out/%.done: loadfile/%.otherformat
- echo Other file formats that are not specified yet...
- touch out/$*.done
-
-include $(OSINCLUDE)
Index: rel_1_4/loader/loadfile/load.fsf
===================================================================
--- rel_1_4/loader/loadfile/load.fsf (revision 1488)
+++ rel_1_4/loader/loadfile/load.fsf (nonexistent)
@@ -1,75 +0,0 @@
-# CONTRACT SECTION
-#
-# CONTRACT NUMBER:CMIN:TMAX:CMAX:TMIN:WORKLOAD:DEADLINE:LOCAL SCHEDULER
-#
-# YOU WILL HAVE A SERVER FOR EACH SPECIFIED CONTRACT,
-# SO IN THE TASK SECTION YOU CAN SPECIFY THE "CONTRACT NUMBER"
-# INSTEAD OF THE SERVER NUMBER, WHICH IS CALCULATED INSIDE THE
-# LOADER
-#
-# ALL THE TIME PARAMETERS INSIDE THIS FILE ARE ALWAYS EXPRESSED AS
-# "[SECONDS][MICROSECONDS]" TO AVOID FLOATING POINT CALCULATIONS
-#
-# WORKLOAD
-# 0 BOUNDED
-# 1 INDETERMINATED
-#
-# LOCAL SCHEDULER
-# POSIX - DEFAULT FOR THE FRAMEWORK
-# EDF
-# RM
-#
-# TASK SECTION
-#
-# TASK TYPE:CONTRACT NUMBER:LOCAL SCHEDULER:NUMBER OF TASK:DEADLINE:WCET:TASK ACT TYPE (PAR1,PAR2,...):
-# :TASK EXEC TYPE (PAR1,PAR2,...):CRITICAL SESSION (PAR1,PAR2,PAR3,PAR4);
-#
-# TASK TYPE
-# OS - ONE_SHOT
-# CT - CYCLICAL_TASK
-# BT - BACKGROUND_TASK
-#
-# TASK EXEC TYPE
-# EXEC_CONST(TIME)
-# - CONSTANT EXEC TIME
-# EXEC_MEAN(MEAN, DELTA)
-# - VARIABLE EXEC TIME WITH CONSTANT DISTRIBUTION
-#
-# TASK ACTIVATION TIME
-# ACT_SINGLE(START_TIME)
-# ACT_PERIODIC(START_TIME, PERIOD)
-# ACT_MEAN(START_TIME, MEAN, DELTA)
-#
-# CRITICAL SESSION
-# CRIT(RES NUMBER, BLOCKING_TIME)
-# NO_CRIT
-#
-
-TOTAL_EXEC_TIME:[20][0];
-# SIMULATION TOTAL TIME
-
-CONTRACT SECTION
-
-[0]:[0][3000]:[0][10000]:[0][3000]:[0][10000]:[0]:[0][9000]:POSIX;
-[1]:[0][6000]:[0][30000]:[0][6000]:[0][30000]:[0]:[0][0]:POSIX;
-[2]:[0][3000]:[0][30000]:[0][3000]:[0][30000]:[0]:[0][0]:POSIX;
-[3]:[0][3000]:[0][20000]:[0][3000]:[0][20000]:[0]:[0][0]:POSIX;
-
-END
-
-TASK SECTION
-
-BT:[0]:POSIX:[1]:[0][0]:[0][0]:ACT_SINGLE([1][0]):
-:EXEC_CONST([0][25000]):NO_CRIT;
-
-BT:[1]:POSIX:[1]:[0][0]:[0][0]:ACT_SINGLE([2][0]):
-:EXEC_CONST([0][16000]):NO_CRIT;
-
-OS:[2]:POSIX:[1]:[0][0]:[0][0]:ACT_SINGLE([3][0]):
-:EXEC_CONST([1][0]):NO_CRIT;
-
-BT:[3]:POSIX:[5]:[0][0]:[0][0]:ACT_SINGLE([4][0]):
-:EXEC_CONST([0][10000]):NO_CRIT;
-
-END
-
Index: rel_1_4/loader/loadfile/loadxml.fsf2
===================================================================
--- rel_1_4/loader/loadfile/loadxml.fsf2 (revision 1488)
+++ rel_1_4/loader/loadfile/loadxml.fsf2 (nonexistent)
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<fsf_framework xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../generators/java/fsf-schema.xsd">
-
-<simulation>
-<time>20s 0u</time>
-</simulation>
-<contract>
- <cmin>0s 3000u</cmin>
- <tmax>0s 10000u</tmax>
- <cmax>0s 3000u</cmax>
- <tmin>0s 10000u</tmin>
- <workload>0</workload>
- <localscheduler type="POSIX">
- <task_section type="BackTask">
- <number>1</number>
- <act_section>
- <start_time>3s 0u</start_time>
- </act_section>
- <exec_section>
- <exec_time>3s 0u</exec_time>
- </exec_section>
- </task_section>
- <task_section type="OneShot">
- <number>2</number>
- <dline>0s 0u</dline>
- <wcet>0s 0u</wcet>
- <act_section>
- <start_time>3s 0u</start_time>
- </act_section>
- <exec_section>
- <exec_time>3s 0u</exec_time>
- </exec_section>
- </task_section>
- </localscheduler>
-</contract>
-<contract>
- <cmin>0s 3000u</cmin>
- <tmax>0s 10000u</tmax>
- <cmax>0s 3000u</cmax>
- <tmin>0s 10000u</tmin>
- <workload>0</workload>
- <localscheduler type="EDF">
- <task_section type="CyclicalTask">
- <number>1</number>
- <dline>1s 0u</dline>
- <wcet>0s 100000u</wcet>
- <act_section>
- <start_time>3s 0u</start_time>
- <period_time>1s 0u</period_time>
- </act_section>
- <exec_section>
- <exec_time>0s 10000u</exec_time>
- <delta_time>0s 10000u</delta_time>
- </exec_section>
- </task_section>
- </localscheduler>
-</contract>
-
-</fsf_framework>
Index: rel_1_4/loader/common/lconst.h
===================================================================
--- rel_1_4/loader/common/lconst.h (revision 1488)
+++ rel_1_4/loader/common/lconst.h (nonexistent)
@@ -1,36 +0,0 @@
-#define PAR_TOTAL_EXEC_TIME 0
-#define PAR_TIME 1
-#define PAR_ACT_TYPE 2
-#define PAR_TASK_NUMBER 3
-#define PAR_EXEC_TYPE 4
-#define PAR_TASK_TYPE 5
-#define PAR_NOTHING 6
-#define PAR_DEADLINE 7
-#define PAR_ERROR 8
-#define PAR_FOUND 9
-#define PAR_CRIT_SESSION 10
-#define PAR_END 11
-
-#define PAR_EXEC_CONST 12
-#define PAR_EXEC_MEAN 13
-
-#define PAR_CONTRACT_SECTION 14
-#define PAR_TASK_SECTION 15
-
-#define PAR_ACT_SINGLE 16
-#define PAR_ACT_PERIODIC 17
-#define PAR_ACT_MEAN 18
-
-#define PAR_TASK_OS 21
-#define PAR_TASK_CT 22
-#define PAR_TASK_BT 23
-
-#define PAR_NO_CRIT 26
-#define PAR_CRIT 27
-
-#define PAR_LOCAL_SCHEDULER 29
-#define PAR_POSIX 30
-#define PAR_EDF 31
-#define PAR_RM 32
-
-#define PAR_FSF_SERVER 33
Index: rel_1_4/loader/common/calibrate.h
===================================================================
--- rel_1_4/loader/common/calibrate.h (revision 1488)
+++ rel_1_4/loader/common/calibrate.h (nonexistent)
@@ -1,8 +0,0 @@
-
-/* Nunber of calibration iterations */
-#define CALIBRATION_DELTA 100000
-
-/* Usec of exec time for CALIBRATING_DELTA iterations
- Set to 0 if you calibrate during loader execution */
-#define CALIBRATION_RESULT 0
-
Index: rel_1_4/loader/common/nload.c
===================================================================
--- rel_1_4/loader/common/nload.c (revision 1488)
+++ rel_1_4/loader/common/nload.c (nonexistent)
@@ -1,315 +0,0 @@
-/* FSF Loader
- *
- * Load and run a specific set of tasks/contracts
- *
- * This is the system indipendent part
- *
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- * Michael Timarchi <trimarchi@gandalf.sssup.it>
- *
- */
-
-#include "fsf_contract.h" //Framework main header
-#include "calibrate.h"
-#include "func.h" //Generic function definitions
-#include "lconst.h"
-
-/* Activate task output debug */
-#define TASK_OUTPUT
-
-int cal_cycles = CALIBRATION_RESULT; //Calibration const, it converts usec to cycles
-struct timespec zero_time; //Zero time of the simulation
-extern struct loader_task loader_task_list[]; //Loader task array
-extern int total_loader_task; //Loader task number
-
-/* OS: Oneshot Task:
- begin
- - execution
- end
-*/
-void *oneshot_task(void *arg)
-{
- long long i,exec_cycles = 0;
- struct loader_task *l = (struct loader_task *)(arg);
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- char tmp[20];
- #endif
- #endif
-
- start_oneshot_task();
-
- /* to avoid problem if the task start inside the create function */
- if (l->act_current == 0) l->act_current = 1;
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"[ONESHOT]");
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- exec_cycles = (long long)(TIMESPEC2USEC(&l->exec[l->act_current-1])) * CALIBRATION_DELTA / cal_cycles;
-
- /* Execution delay */
- for (i=0;i<exec_cycles;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
-
- end_oneshot_task();
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"[--END--]");
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- return NULL;
-
-}
-
-/* CT: Cyclical Task:
- begin
- while (1) {
- - execution
- - end_cycle
- }
- end (never end)
-*/
-void *periodic_task(void *arg)
-{
- long long i,exec_cycles = 0,block_cycles = 0;
- int act = 0;
- struct loader_task *l = (struct loader_task *)(arg);
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- char tmp[20];
- #endif
- #endif
-
- start_periodic_task();
-
- if (l->act_current == 0) l->act_current = 1;
-
- while(1) {
-
- start_job_periodic_task();
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"C[%06d]",act);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- exec_cycles = (long long)(TIMESPEC2USEC(&l->exec[l->act_current-1])) * CALIBRATION_DELTA / cal_cycles;
- block_cycles = (long long)(TIMESPEC2USEC(&l->block[l->act_current-1])) * CALIBRATION_DELTA / cal_cycles;
-
- /* Execution delay */
- for (i=0;i<exec_cycles;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- if (l->muxstatus == 2) {
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"C[LOCK%02d]",l->resource);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, RED, tmp);
- #endif
- #endif
-
- generic_lock_mutex(l->resource);
- for (i=0;i<block_cycles;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- generic_unlock_mutex(l->resource);
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"C[FREE%02d]",l->resource);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- }
-
- end_job_periodic_task();
-
- generic_task_endcycle();
-
- act++;
-
- }
-
- end_periodic_task();
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"[--END--]");
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- return NULL;
-
-}
-
-/* BT: Background Task:
- begin
- while (1) {
- - execution
- }
- end (never end)
-*/
-void *back_task(void *arg)
-{
- long long i,exec_cycles = 0,block_cycles = 0;
- int act = 0;
- struct loader_task *l = (struct loader_task *)(arg);
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- char tmp[20];
- #endif
- #endif
-
- start_back_task();
-
- if (l->act_current == 0) l->act_current = 1;
-
- while(1) {
-
- start_job_back_task();
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"B[%06d]",act);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- exec_cycles = (long long)(TIMESPEC2USEC(&l->exec[l->act_current-1])) * CALIBRATION_DELTA / cal_cycles;
- block_cycles = (long long)(TIMESPEC2USEC(&l->block[l->act_current-1])) * CALIBRATION_DELTA / cal_cycles;
-
- /* Execution delay */
- for (i=0;i<exec_cycles;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- if (l->muxstatus == 2) {
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"B[LOCK%02d]",l->resource);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, RED, tmp);
- #endif
- #endif
-
- generic_lock_mutex(l->resource);
- for (i=0;i<block_cycles;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- generic_unlock_mutex(l->resource);
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"C[FREE%02d]",l->resource);
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- }
-
- end_job_back_task();
-
- act++;
-
- }
-
- end_back_task();
-
- #ifdef TASK_OUTPUT
- #ifdef OS_SHARK
- sprintf(tmp,"[--END--]");
- printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
- #endif
- #endif
-
- return NULL;
-
-}
-
-/* Task create */
-/* this function create the task struct in memory */
-void loader_task_create()
-{
-
- struct loader_task *current = loader_task_list;
- int i=0, k=0;
-
- while (k <total_loader_task) {
- k++;
-
- for (i=0; i < current->number; i++) {
-
- pthread_t j;
- int err = 0;
-
- switch(current->task_type) {
- case PAR_TASK_OS:
- err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL,
- oneshot_task,(void *)current,generic_get_task_model(current));
- break;
- case PAR_TASK_BT:
- err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL,
- back_task,(void *)current,generic_get_task_model(current));
- break;
- case PAR_TASK_CT:
- err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL,
- periodic_task,(void *)current,generic_get_task_model(current));
- break;
- }
- if (err) {
- printf("Error fsf task creating\n");
- generic_end_simulation();
- }
-
- }
-
- current = &loader_task_list[k];
-
- }
-
- printf("Created %d loader tasks\n",k);
-
-
-}
-
-/* Main Function */
-int start_environment()
-{
-
- extern struct timespec total_time;
-
- /* Calibrate the exec time */
- generic_calibrate_cycle();
-
- /* Create the servers usign defined contracts */
- generic_fsfinit();
-
- /* Create the tasks */
- loader_task_create();
-
- /* Start the simulation */
- generic_start_simulation();
-
- /* Set the simulation end time */
- generic_set_simulation_time(&total_time);
-
- return 0;
-
-}
Index: rel_1_4/loader/common/nload.h
===================================================================
--- rel_1_4/loader/common/nload.h (revision 1488)
+++ rel_1_4/loader/common/nload.h (nonexistent)
@@ -1,46 +0,0 @@
-/* Generic Struct for loader task */
-#ifndef __NLOAD_H__
-#define __NLOAD_H__
-
-#include "func.h" //Constant definition for loader and linux parser
-
-struct loader_task {
-
- char name[20]; //Task name
- int task_type; //Tast type (OS,CT,BT)
- int contract; //Contract number
- int local_scheduler; //Local scheduler for the task
- int number; //How many copies of this task
- int group; //Group number
-
- struct timespec deadline; //Task deadline
- struct timespec wcet; //Task wcet
-
- int act_number; //Number of activations precalcolated
- int act_current; //Actual activation number
-
- int resource;
- int muxstatus;
-
- struct timespec *act; //Activation list
- struct timespec *exec; //Execution time list
- struct timespec *block; //Blocking time
-
-};
-
-struct loader_contract {
-
- int number; //Contract number
- struct timespec cmin;
- struct timespec tmax;
- struct timespec cmax;
- struct timespec tmin;
- int workload;
- struct timespec deadline;
- int local_scheduler;
- int server; //Server number linked to this contract
-
-};
-
-#endif
-
Index: rel_1_4/loader/common/time.h
===================================================================
--- rel_1_4/loader/common/time.h (revision 1488)
+++ rel_1_4/loader/common/time.h (nonexistent)
@@ -1,65 +0,0 @@
-#ifndef __TIME_H__
-#define __TIME_H__
-
-#define TIMESPEC2NANOSEC(t) ((t)->tv_sec * 1000000000 + (t)->tv_nsec)
-#define TIMESPEC2USEC(t) ((t)->tv_sec * 1000000 + (t)->tv_nsec / 1000)
-#define NULL_TIMESPEC(t) ((t)->tv_sec = (t)->tv_nsec = 0)
-#define ADDNANO2TIMESPEC(n, t) ((t)->tv_nsec += (n), \
- (t)->tv_sec += (t)->tv_nsec / 1000000000, \
- (t)->tv_nsec %= 1000000000)
-
-#define SUBTIMESPEC(s1, s2, d) \
- ((d)->tv_nsec = ((s1)->tv_nsec >= (s2)->tv_nsec) ? \
- (((d)->tv_sec = (s1)->tv_sec - (s2)->tv_sec), \
- (s1)->tv_nsec - (s2)->tv_nsec) \
- : \
- (((d)->tv_sec = (s1)->tv_sec - (s2)->tv_sec - 1), \
- (1000000000 + (s1)->tv_nsec - (s2)->tv_nsec)))
-
-/*
- * ...and these not!
- */
-
-extern __inline__ void ADDTIMESPEC(const struct timespec *s1,
- const struct timespec *s2,
- struct timespec *d)
-{
- d->tv_sec = s1->tv_sec + s2->tv_sec;
- d->tv_nsec = s1->tv_nsec + s2->tv_nsec;
-
- if (d->tv_nsec < 0) {
- d->tv_sec--;
- d->tv_nsec += 1000000000;
- } else if (d->tv_nsec >= 1000000000) {
- d->tv_sec++;
- d->tv_nsec -= 1000000000;
- }
-}
-
-
-#define ADDUSEC2TIMESPEC(m, t) ((t)->tv_nsec += (m%1000000)*1000, \
- (t)->tv_sec += ((t)->tv_nsec / 1000000000) + (m/1000000), \
- (t)->tv_nsec %= 1000000000)
-
-#define TIMESPEC_A_LT_B(a,b) \
- ( \
- ((a)->tv_sec < (b)->tv_sec) || \
- ((a)->tv_sec == (b)->tv_sec && (a)->tv_nsec < (b)->tv_nsec) \
- )
-
-#define TIMESPEC_A_GT_B(a,b) \
- ( \
- ((a)->tv_sec > (b)->tv_sec) || \
- ((a)->tv_sec == (b)->tv_sec && (a)->tv_nsec > (b)->tv_nsec) \
- )
-
-#define TIMESPEC_A_EQ_B(a,b) \
- ((a)->tv_sec == (b)->tv_sec && (a)->tv_nsec == (b)->tv_nsec)
-
-#define TIMESPEC_A_NEQ_B(a,b) \
- ((a)->tv_sec != (b)->tv_sec || (a)->tv_nsec != (b)->tv_nsec)
-
-#define TIMESPEC_ASSIGN(t1,t2) \
- ((t1)->tv_sec = (t2)->tv_sec, (t1)->tv_nsec = (t2)->tv_nsec)
-
-#endif
Index: rel_1_4/loader/marte/makefile.in
===================================================================
--- rel_1_4/loader/marte/makefile.in (revision 1488)
+++ rel_1_4/loader/marte/makefile.in (nonexistent)
@@ -1,7 +0,0 @@
-#
-# MaRTE OS dependecies
-#
-
-os_specific_dep:
- echo MaRTE dependencies here
-
Index: rel_1_4/loader/shark/func.h
===================================================================
--- rel_1_4/loader/shark/func.h (revision 1488)
+++ rel_1_4/loader/shark/func.h (nonexistent)
@@ -1,123 +0,0 @@
-#ifndef __FUNC_H__
-#define __FUNC_H__
-
-#include "kernel/kern.h"
-#include "shark.h"
-
-#define OS_SHARK
-
-#define get_current_exec_task() exec_shadow
-/* Return the PID/pthread_t of calling task */
-
-#define generic_get_server_from_contract get_server_from_contract
-/* Return the server_id from the contract number used
- * inside .fsf file to define contract parameters
- *
- * generic_get_server_from_contract(int contract_number) */
-
-#define generic_create_thread fsf_create_thread
-/* Create a task/thread inside a specific server.
- * it's very similar to fsf_create_thread, but we need a parameter
- * to set the local scheduler task and actually it's outside
- * the framework
- *
- * generic_task_create(
- * server number,
- * pthread_t of created task (-1 if failed),
- * pthread_attr_t,
- * task_body,
- * arg of the body (must be "(void *)current"),
- * arg for real-time task specification)
- */
-
-#define generic_calibrate_cycle calibrate_cycle
-/* Set the calibration parameter "cal_cycle"
- * only if it's initialized to 0. The calibration routine
- * calculates cal_cycle from CALIBRATION_DELTA.
- * This step can also be performed outside the demo.
- * Inside calibrate.h you can set the calibration parameters
- * for calibration step performed outside.
- *
- * cal_cycle is the number of cycles that are needed to
- * make CALIBRATION_DELTA number of iteration.
- *
- * kern_cli();
- * kern_gettime(&start);
- * for (i=0;i<CALIBRATION_DELTA;i++)
- * __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- * "cpuid\n\t"
- * :::"eax","ebx","ecx","edx");
- * kern_gettime(&end);
- * kern_sti();
- *
- * SUBTIMESPEC(&end,&start,&diff);
- * cal_cycles = TIMESPEC2USEC(&diff);
- *
- */
-
-#define generic_set_next_activation set_next_activation
-/* Set the next activation time. It's like fsf_schedule_next_timed_job
- * but it don't return nothing
- */
-
-#define generic_set_simulation_time set_simulation_time
-/* Set the end time of simulation */
-
-#define generic_get_task_model get_task_model
-/* Return a pointer to the struct that contains the
- * local shceduler parameter */
-
-#define generic_start_simulation start_simulation
-/* Start the simulation */
-
-#define generic_fsfinit() fsfinit()
-/* Create the fsf_server */
-
-#define generic_task_endcycle() task_endcycle()
-/* The job is finished */
-
-#define generic_end_simulation() sys_end()
-/* Exit from simulation */
-
-#define printf cprintf
-/* Printf standard function */
-
-/* Mutex */
-extern __inline__ void generic_lock_mutex(int res) {
- extern mutex_t mutex_table[MAX_MUTEX];
-
- mutex_lock(&mutex_table[res]);
-}
-
-extern __inline__ void generic_unlock_mutex(int res) {
- extern mutex_t mutex_table[MAX_MUTEX];
-
- mutex_unlock(&mutex_table[res]);
-}
-
-/* TASK RUNTIME FUNCTIONS */
-
-extern __inline__ void start_oneshot_task(void) {}
-extern __inline__ void end_oneshot_task(void) {}
-
-extern __inline__ void start_periodic_task(void) {}
-extern __inline__ void start_job_periodic_task(void) {
- task_testcancel();
-}
-extern __inline__ void end_job_periodic_task(void) {
- task_testcancel();
-}
-extern __inline__ void end_periodic_task(void) {}
-
-extern __inline__ void start_back_task(void) {}
-extern __inline__ void start_job_back_task(void) {
- task_testcancel();
-}
-extern __inline__ void end_job_back_task(void) {
- task_testcancel();
-}
-extern __inline__ void end_back_task(void) {}
-
-#endif
-
-
Index: rel_1_4/loader/shark/makefile.in
===================================================================
--- rel_1_4/loader/shark/makefile.in (revision 1488)
+++ rel_1_4/loader/shark/makefile.in (nonexistent)
@@ -1,14 +0,0 @@
-#
-# Shark dependecies
-#
-
-os_specific_dep: out/shark.done out/makefile
-
-
-out/shark.done:
- cd out; cp -sf ../shark/*.c .
- cd out; cp -sf ../shark/*.h .
- touch out/shark.done
-
-out/makefile: shark/shark.mak
- sed -e "s/TEST/$(TEST)/" shark/shark.mak > out/makefile
Index: rel_1_4/loader/shark/fsfinit.c
===================================================================
--- rel_1_4/loader/shark/fsfinit.c (revision 1488)
+++ rel_1_4/loader/shark/fsfinit.c (nonexistent)
@@ -1,56 +0,0 @@
-#include "kernel/kern.h"
-#include "fsf_server.h"
-#include "fsf_contract.h"
-#include "func.h"
-
-extern struct loader_contract loader_contract_list[];
-extern int total_loader_contract;
-
-void fsfinit()
-{
-
- struct loader_contract *c;
- fsf_contract_parameters_t contract;
- fsf_server_id_t server;
- union sigval no_sigval = {0};
- int i;
- SOFT_TASK_MODEL m;
-
- soft_task_default_model(m);
- soft_task_def_period(m,50000);
- soft_task_def_met(m,1000);
-
- FSF_start_service_task(&m);
-
- for (i=0;i<total_loader_contract;i++) {
-
- c = &loader_contract_list[i];
-
- fsf_initialize_contract(&contract);
-
- fsf_set_contract_basic_parameters(&contract,&c->cmin,&c->tmax,&c->cmax,&c->tmin,c->workload);
-
- if (TIMESPEC2USEC(&c->deadline) != 0)
- fsf_set_contract_timing_requirements(&contract,FALSE,&c->deadline,0,no_sigval,0,no_sigval);
-
- if (c->local_scheduler != PAR_POSIX) {
-
- switch (c->local_scheduler) {
- case PAR_EDF:
- fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_EDF);
- break;
- case PAR_RM:
- fsf_set_local_scheduler_parameter(&contract,FSF_SCHEDULER_RM);
- break;
- }
-
- }
-
- fsf_negotiate_contract(&contract,&server);
- c->server = server;
-
- }
-
- print_server_list();
-
-}
Index: rel_1_4/loader/shark/initfile.c
===================================================================
--- rel_1_4/loader/shark/initfile.c (revision 1488)
+++ rel_1_4/loader/shark/initfile.c (nonexistent)
@@ -1,177 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/posix.h"
-#include "grubstar.h"
-#include "fsf_contract.h"
-
-#include "modules/pi.h"
-#include "modules/pc.h"
-
-#include "pthread.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
- int grubstar_level;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- POSIX_register_level(RRTICK, 1, mb, 32);
- grubstar_level = GRUBSTAR_register_level(FSF_MAX_N_SERVERS, 1);
-
- FSF_register_module(grubstar_level, (int)(MAX_BANDWIDTH * 0.8));
- dummy_register_level();
-
- CBS_register_level(CBS_ENABLE_ALL,1);
-
- SEM_register_module();
-
- PI_register_module();
- PC_register_module();
- NOP_register_module();
-
- PTHREAD_register_module(2, 0, 1);
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- return 0;
-
-}
-
-int device_drivers_init() {
-
- LINUXC26_register_module();
- PCI26_init();
-
- return 0;
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-void call_shutdown_task(void *arg) {
-
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-int main() {
-
- return start_environment();
-
-}
-
Index: rel_1_4/loader/shark/shark.c
===================================================================
--- rel_1_4/loader/shark/shark.c (revision 1488)
+++ rel_1_4/loader/shark/shark.c (nonexistent)
@@ -1,232 +0,0 @@
-#include "func.h"
-#include "calibrate.h"
-#include <tracer.h>
-
-#include "FTrace_udp.h"
-#include "FTrace_chunk.h"
-
-extern int cal_cycles;
-extern struct timespec zero_time;
-extern struct loader_task loader_task_list[];
-extern struct loader_contract loader_contract_list[];
-extern int total_loader_task;
-extern int total_loader_contract;
-
-mutex_t mutex_table[MAX_MUTEX];
-int main_chunk;
-
-/* Runtime Calibration */
-int calibrate_cycle()
-{
- long long i;
- struct timespec start,end,diff;
-
- if (cal_cycles != 0) return 0;
-
- kern_cli();
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- kern_gettime(&start);
- for (i=0;i<CALIBRATION_DELTA;i++)
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- __asm__ __volatile__ ("xorl %%eax,%%eax\n\t"
- "cpuid\n\t"
- :::"eax","ebx","ecx","edx");
- kern_gettime(&end);
- kern_sti();
-
- SUBTIMESPEC(&end,&start,&diff);
- cal_cycles = TIMESPEC2USEC(&diff);
- cprintf("Calibration usec/[%d cycles] = %d\n",CALIBRATION_DELTA,cal_cycles);
-
- return 0;
-
-}
-
-int get_server_from_contract(int contract)
-{
-
- int i;
-
- for(i=0;i<total_loader_contract;i++)
- if (loader_contract_list[i].number == contract)
- return loader_contract_list[i].server;
-
- return -1;
-
-}
-
-void *get_task_model(struct loader_task *current) {
- if (current->local_scheduler == PAR_POSIX) {
- static NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_save_arrivals(nrt);
- nrt_task_def_ctrl_jet(nrt);
- nrt_task_def_group(nrt,current->group);
- nrt_task_def_usemath(nrt);
-
- return &nrt;
-
- }
-
- if (current->local_scheduler == PAR_EDF) {
- static HARD_TASK_MODEL ht;
-
- hard_task_default_model(ht);
- hard_task_def_ctrl_jet(ht);
- hard_task_def_mit(ht,TIMESPEC2USEC(&current->deadline));
- hard_task_def_wcet(ht,TIMESPEC2USEC(&current->wcet));
- hard_task_def_group(ht,current->group);
- hard_task_def_aperiodic(ht);
- hard_task_def_usemath(ht);
- return &ht;
- }
-
-
- if (current->local_scheduler == PAR_RM) {
- static HARD_TASK_MODEL ht;
-
- hard_task_default_model(ht);
- hard_task_def_mit(ht,TIMESPEC2USEC(&current->deadline));
- hard_task_def_wcet(ht,TIMESPEC2USEC(&current->wcet));
- hard_task_def_ctrl_jet(ht);
- hard_task_def_group(ht,current->group);
- hard_task_def_usemath(ht);
- return &ht;
- }
-
- return NULL;
-
-}
-
-TASK finish_task() {
-
- #ifdef __NEW_TRACER__
-
- FTrace_OSD_init_udp(1,"192.168.82.43","192.168.82.20");
-
- FTrace_send_chunk(main_chunk, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
-
- sys_end();
-
- #else
-
- sys_end();
-
- #endif
-
- return NULL;
-
-}
-
-void end_simulation() {
-
- #ifdef __NEW_TRACER__
-
- int i;
- struct loader_task *l = loader_task_list;
-
- NRT_TASK_MODEL nrt;
-
- TRACER_LOGEVENT(FTrace_EVT_trace_stop,0,0);
-
- FTrace_disable();
-
- i = 0;
- while (i < total_loader_task) {
-
- group_kill(l->group);
-
- i++;
- l=&loader_task_list[i];
-
- }
-
- nrt_task_default_model(nrt);
-
- task_activate(task_create("Finish",finish_task,&nrt,NULL));
-
- #else
-
- sys_end();
-
- #endif
-
-}
-
-void set_simulation_time (struct timespec *total) {
- struct timespec end_time;
-
- ADDTIMESPEC(&zero_time,total,&end_time);
- kern_event_post(&end_time,(void *)((void *)(end_simulation)),NULL);
-
-}
-
-/* Set the zero_time and post the first activation event */
-void start_simulation() {
-
- int i;
- struct loader_task *l = loader_task_list;
- struct timespec end_time;
- PI_mutexattr_t a;
-
- PI_mutexattr_default(a);
-
- i = 0;
-
- #ifdef __NEW_TRACER__
-
- main_chunk = FTrace_chunk_create(10000000, 1000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
-
- FTrace_actual_chunk_select(main_chunk);
-
- FTrace_enable();
-
- #endif
-
- TRACER_LOGEVENT(FTrace_EVT_trace_start,0,0);
-
- kern_gettime(&zero_time);
-
- while (i < total_loader_task) {
-
- if (l->muxstatus == 1) {
- mutex_init(&mutex_table[l->resource],&a);
- l->muxstatus = 2;
- }
-
- if (l->act_number > 0) {
- ADDTIMESPEC(&zero_time, &l->act[0], &end_time);
- l->act_current++;
- kern_event_post(&end_time,(void *)((void *)(loader_task_activate)),l);
- }
-
- i++;
- l=&loader_task_list[i];
-
- }
-
-}
-
-/* Activate task and post the new activation event */
-void loader_task_activate(struct loader_task *l) {
-
- struct timespec actual_time,end_time;
-
- kern_gettime(&actual_time);
- group_activate(l->group);
-
- if (l->act_number > l->act_current) {
-
- ADDTIMESPEC(&actual_time, &l->act[l->act_current], &end_time);
-
- l->act_current++;
- kern_event_post(&end_time,(void *)((void *)(loader_task_activate)),l);
-
- }
-
-}
Index: rel_1_4/loader/shark/shark.h
===================================================================
--- rel_1_4/loader/shark/shark.h (revision 1488)
+++ rel_1_4/loader/shark/shark.h (nonexistent)
@@ -1,19 +0,0 @@
-#ifndef __SHARK_H__
-#define __SHARK_H__
-
-#include "nload.h"
-#include "lconst.h"
-
-#define MAX_MUTEX 20
-
-int calibrate_cycle();
-void start_simulation();
-void *get_task_model(struct loader_task *current);
-void set_simulation_time (struct timespec *total);
-void set_next_activation(struct timespec *next);
-void loader_task_activate(struct loader_task *l);
-int get_server_from_contract(int contract);
-
-void fsfinit();
-
-#endif
Index: rel_1_4/loader/shark/shark.mak
===================================================================
--- rel_1_4/loader/shark/shark.mak (revision 1488)
+++ rel_1_4/loader/shark/shark.mak (nonexistent)
@@ -1,13 +0,0 @@
-ifndef BASE
-BASE=../../..
-endif
-
-include $(BASE)/config/config.mk
-
-PROGS = TEST
-
-include $(BASE)/config/example.mk
-
-TEST:
- make -f $(SUBMAKE) APP="nload" BASE=../../.. INIT= OTHEROBJS="event.o initfile.o shark.o fsfinit.o" OTHERINCL="-I." SHARKOPT="__LINUXC26__ __PCI__ __NET__ __FIRST__"
- cp nload TEST
Index: rel_1_4/jumpball/demo.c
===================================================================
--- rel_1_4/jumpball/demo.c (revision 1488)
+++ rel_1_4/jumpball/demo.c (nonexistent)
@@ -1,198 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: demo.c,v 1.7 2004-04-18 18:48:22 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.7 $
- Last update: $Date: 2004-04-18 18:48:22 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000-2003 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
- *
- */
-
-#include "demo.h"
-#include <kernel/func.h>
-#include <string.h>
-#include <stdlib.h>
-
-/* useful colors... */
-int white;
-int black;
-int red;
-int gray;
-
-void app_mutex_init(mutex_t *m);
-
-static void version( void )
-{
- cprintf( "S.Ha.R.K. Jumpball Demo 1.0\n" );
- cprintf( "---------------------------\n" );
- cprintf( "by Paolo Gai 1999-2001\n" );
- cprintf( " <pj@sssup.it>\n" );
- cprintf( "---------------------------\n" );
-}
-
-int myrand(int x)
-{
- return rand()%x;
-}
-
-void reverse(char s[])
-{
- int c, i, j;
-
- for (i = 0, j = strlen(s)-1; i<j; i++, j--)
- {
- c = s[i];
- s[i] = s[j];
- s[j] = c;
- }
-}
-
-char * itoa(int n, char *s)
-{
- int i, sign;
-
- if ((sign = n) < 0)
- n = -n;
-
- i = 0;
-
- do
- {
- s[i++] = n % 10 + '0';
- } while ((n /= 10) > 0);
-
- if (sign < 0)
- s[i++] = '-';
-
- s[i] = 0;
-
- reverse(s);
-
- return s;
-}
-
-
-void scenario()
-{
- grx_text("S.Ha.R.K. Jumpball Demo 1.0", 0, 0, rgb16(0,255,0), black );
- grx_text(" by Paolo Gai 1999-2001" , 0, 8, rgb16(0,255,0), black );
- grx_text(" pj@sssup.it" , 0,16, rgb16(0,255,0), black );
-
- grx_text("Ctrl-C, Ctrr-C, Enter: exit" ,320, 0, gray, black );
- grx_text("Alt-C : void statistics" ,320, 8, gray, black );
- grx_text("Space : create noise ball",320,16, gray, black );
- grx_text("Backspace : kill noise balls" ,320,24, gray, black );
-
-
- #ifdef JET_ON
- scenario_jetcontrol();
- #endif
-
- #ifdef BALL_ON
- scenario_ball();
- #endif
-}
-
-void endfun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void zerofun(KEY_EVT *k)
-{
- int i;
- for (i=0; i<MAX_PROC; i++) jet_delstat(i);
-}
-
-int main(int argc, char **argv)
-{
-
- KEY_EVT k;
-
- version();
-
- srand(4);
-
- k.flag = CNTR_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k,endfun,FALSE);
- k.flag = CNTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k,endfun,FALSE);
- k.flag = ALTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k,zerofun,FALSE);
- k.flag = 0;
- k.scan = KEY_ENT;
- k.ascii = 13;
- k.status = KEY_PRESSED;
- keyb_hook(k,endfun,FALSE);
-
- /* init the graphic mutex */
- app_mutex_init(&mutex);
-
- /* useful colors ... */
- white = rgb16(255,255,255);
- black = rgb16(0,0,0);
- red = rgb16(255,0,0);
- gray = rgb16(128,128,128);
-
- scenario();
-
- #ifdef JET_ON
- init_jetcontrol();
- #endif
-
- #ifdef BALL_ON
- init_ball();
- #endif
-
- group_activate(1);
-
- return 0;
-}
-
-
Index: rel_1_4/jumpball/ern.c
===================================================================
--- rel_1_4/jumpball/ern.c (revision 1488)
+++ rel_1_4/jumpball/ern.c (nonexistent)
@@ -1,220 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: ern.c,v 1.5 2004-04-19 13:45:15 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.5 $
- Last update: $Date: 2004-04-19 13:45:15 $
- ------------
-**/
-
-/*
- * Copyright (C) 2003 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-void app_mutex_init(mutex_t *m)
-{
- NOP_mutexattr_t attr;
-
- NOP_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-
Index: rel_1_4/jumpball/ecp.c
===================================================================
--- rel_1_4/jumpball/ecp.c (revision 1488)
+++ rel_1_4/jumpball/ecp.c (nonexistent)
@@ -1,216 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: ecp.c,v 1.5 2004-04-19 13:45:15 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.5 $
- Last update: $Date: 2004-04-19 13:45:15 $
- ------------
-**/
-
-/*
- * Copyright (C) 2003 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "modules/pi.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
- CABS_register_module();
- PI_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-void app_mutex_init(mutex_t *m)
-{
- PI_mutexattr_t attr;
-
- PI_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
Index: rel_1_4/jumpball/jetctrl.c
===================================================================
--- rel_1_4/jumpball/jetctrl.c (revision 1488)
+++ rel_1_4/jumpball/jetctrl.c (nonexistent)
@@ -1,236 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: jetctrl.c,v 1.4 2004-04-18 18:48:22 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.4 $
- Last update: $Date: 2004-04-18 18:48:22 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-// JetControl
-
-#include "demo.h"
-#include "kernel/func.h"
-
-TASK jetdummy_task(void *arg)
-{
- TIME now_dummy, last_dummy, diff_dummy, slice;
- struct timespec now, last, diff;
- int x = 0;
- int height;
-
- NULL_TIMESPEC(&last);
- last_dummy = 0;
- for (;;) {
- task_nopreempt();
- jet_getstat(DUMMY_PID, NULL, NULL, NULL, &now_dummy);
- sys_gettime(&now);
- task_preempt();
-
- SUBTIMESPEC(&now, &last, &diff);
- slice = diff.tv_sec * 1000000 + diff.tv_nsec/1000;
- diff_dummy = now_dummy - last_dummy;
-
- height = (int)(JET_DUMMY_HEIGHT*((float)diff_dummy)/((float)slice));
-
- TIMESPEC_ASSIGN(&last, &now);
- last_dummy = now_dummy;
-
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y,
- JET_DUMMY_X+x,JET_DUMMY_Y+height ,black);
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y+height,
- JET_DUMMY_X+x,JET_DUMMY_Y+JET_DUMMY_HEIGHT,white);
- grx_line(JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y,
- JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y+JET_DUMMY_HEIGHT,255);
-
- x = (x+1)%JET_DUMMY_WIDTH;
-
- task_endcycle();
- }
-}
-
-
-TASK jetctrl_task(void *arg)
-{
- char st[50];
- TIME sum, max;
- int n;
-
- PID i;
- int printed = 0;
-
- for (;;) {
- for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
- if (jet_getstat(i, &sum, &max, &n, NULL) != -1) {
- if (!n) n=1;
- sprintf(st, "%6d %6d %10s", (int)sum/n, (int)max, proc_table[i].name);
- grx_text(st, 384, JET_Y_NAME+16+printed*8, gray, black);
- printed++;
- }
- }
- while (printed<JET_NTASK) {
- grx_text(" ",
- 384, JET_Y_NAME+16+printed*8, gray, black);
- printed++;
- }
- task_endcycle();
- }
-}
-
-TASK jetslide_task(void *arg)
-{
- TIME sum, curr, max;
-
- TIME total[JET_NTASK];
- int slides[JET_NTASK];
-
- PID i;
- int printed = 0;
-
- for (;;) {
- // Fill the total array in a nonpreemptive section
- task_nopreempt();
- for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
- if (jet_getstat(i, &sum, NULL, NULL, &curr) != -1) {
- total[printed] = sum+curr;
- printed++;
- }
- }
- task_preempt();
-
- while (printed < JET_NTASK)
- total[printed++] = 0;
-
- // Compute the Max elapsed time
- max = 0;
- for (i=0; i<JET_NTASK; i++)
- if (total[i] > max) max = total[i];
- if (!max) max = 1;
-
- // Compute the slides width
- for (i=0; i<JET_NTASK; i++)
- slides[i] = (int)( (((float)total[i])/max) * JET_SLIDE_WIDTH);
-
- // print the data
- for (i=0; i<JET_NTASK; i++) {
- grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
- JET_SLIDE_X+slides[i], JET_Y_NAME+23+i*8, gray);
- grx_box(JET_SLIDE_X+slides[i], JET_Y_NAME+16+i*8,
- JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+23+i*8, black);
- }
-
- while (i<JET_NTASK) {
- grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
- JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+20+i*8, black);
- i++;
- }
- task_endcycle();
- }
-}
-
-
-void scenario_jetcontrol(void)
-{
- grx_text("System load" , 384, 45, rgb16(0,0,255), black);
- grx_line(384,55,639,55,red);
-
- grx_text(" Mean Max Name Slide", 384, JET_Y_NAME, gray, black);
- grx_line(384,JET_Y_NAME+10,639,JET_Y_NAME+10,gray);
-
- grx_rect(JET_DUMMY_X-1, JET_DUMMY_Y-1,
- JET_DUMMY_X+JET_DUMMY_WIDTH, JET_DUMMY_Y+JET_DUMMY_HEIGHT+1, gray);
-
- grx_text("100%", JET_DUMMY_X-40, JET_DUMMY_Y, gray, black);
- grx_text(" 0%", JET_DUMMY_X-40, JET_DUMMY_Y+JET_DUMMY_HEIGHT-8, gray, black);
-
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y, JET_DUMMY_X-5, JET_DUMMY_Y, gray);
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y+JET_DUMMY_HEIGHT, JET_DUMMY_X-5, JET_DUMMY_Y+JET_DUMMY_HEIGHT, gray);
-}
-
-void init_jetcontrol(void)
-{
- SOFT_TASK_MODEL m3, m4, m5;
-
- PID p3, p4, p5;
-
- soft_task_default_model(m3);
- soft_task_def_level(m3,2);
- soft_task_def_period(m3, PERIOD_JETCTRL);
- soft_task_def_met(m3, WCET_JETCTRL);
- soft_task_def_ctrl_jet(m3);
- soft_task_def_group(m3, 1);
- p3 = task_create("jctrl", jetctrl_task, &m3, NULL);
- if (p3 == -1) {
- sys_shutdown_message("Could not create task <jetctrl> errno=%d",
- errno);
- sys_end();
- }
-
- soft_task_default_model(m4);
- soft_task_def_level(m4,2);
- soft_task_def_period(m4, PERIOD_JETDUMMY);
- soft_task_def_met(m4, WCET_JETDUMMY);
- soft_task_def_group(m4, 1);
- soft_task_def_usemath(m4);
- soft_task_def_ctrl_jet(m4);
- p4 = task_create("jdmy", jetdummy_task, &m4, NULL);
- if (p4 == -1) {
- sys_shutdown_message("Could not create task <jetdummy> errno=%d",
- errno);
- sys_end();
- }
-
- soft_task_default_model(m5);
- soft_task_def_level(m5,2);
- soft_task_def_period(m5, PERIOD_JETSLIDE);
- soft_task_def_met(m5, WCET_JETSLIDE);
- soft_task_def_group(m5, 1);
- soft_task_def_usemath(m5);
- soft_task_def_ctrl_jet(m5);
- p5 = task_create("jsli", jetslide_task, &m5, NULL);
- if (p5 == -1) {
- sys_shutdown_message("Could not create task <jetslide> errno=%d",
- errno);
- sys_end();
- }
-}
-
Index: rel_1_4/jumpball/demo.h
===================================================================
--- rel_1_4/jumpball/demo.h (revision 1488)
+++ rel_1_4/jumpball/demo.h (nonexistent)
@@ -1,183 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: demo.h,v 1.6 2004-04-18 09:45:27 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.6 $
- Last update: $Date: 2004-04-18 09:45:27 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-#include <ll/ll.h>
-#include <kernel/types.h>
-#include <kernel/descr.h>
-#include <math.h>
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/* Subparts */
-#define JET_ON
-#define BALL_ON
-
-
-/* CPU Speed Selection
- --------------------------------------------------------------------
- 1700 - Pentium 4 1.7 GHz
- 1300 - Centrino 1.3 GHz
- 400 - Pentium 2 400 MHz
- 133 - Pentium 1 133 MHz
-*/
-#define CPU 400
-
-/*
- *
- * WCET, Periods and Models
- *
- */
-
-#if CPU==133
-#define WCET_JETCTRL 10000
-#define WCET_JETDUMMY 300
-#define WCET_JETSLIDE 2000
-#define WCET_BALL 250
-#define WCET_HARD_BALL 1000
-#define BALL_DELAY 10000
-#endif
-
-#if CPU==400
-#define WCET_JETCTRL 7500
-#define WCET_JETDUMMY 200
-#define WCET_JETSLIDE 2100
-#define WCET_BALL 100
-#define WCET_HARD_BALL 380
-#define BALL_DELAY 10000
-#endif
-
-#if CPU==1300
-#define WCET_JETCTRL 4500
-#define WCET_JETDUMMY 100
-#define WCET_JETSLIDE 1300
-#define WCET_BALL 100
-#define WCET_HARD_BALL 650
-#define BALL_DELAY 100000
-#endif
-
-#if CPU==1700
-#define WCET_JETCTRL 4500
-#define WCET_JETDUMMY 100
-#define WCET_JETSLIDE 1300
-#define WCET_BALL 100
-#define WCET_HARD_BALL 410
-#define BALL_DELAY 100000
-#endif
-
-#define PERIOD_JETCTRL 100000
-#define PERIOD_JETDUMMY 100000
-#define PERIOD_JETSLIDE 100000
-#define PERIOD_BALL 10000
-
-/*
- *
- * Global Stuffs
- *
- */
-
-extern PID shutdown_task_PID;
-
-/* graphic mutex... */
-extern mutex_t mutex;
-
-/* useful colors... */
-extern int white;
-extern int black;
-extern int red;
-extern int gray;
-
-void init_jetcontrol();
-void init_ball(void);
-void scenario_jetcontrol();
-void scenario_ball();
-char *itoa(int n, char *s);
-int myrand(int x);
-
-/*
- *
- * JETCONTROL stuffs
- *
- */
-
-#define JET_NTASK 35
-#define JET_Y_NAME 170
-
-#define DUMMY_PID 1
-
-#define JET_DUMMY_WIDTH 210
-#define JET_DUMMY_HEIGHT 80
-
-/* the point (x, y) is the top left corner */
-#define JET_DUMMY_X 428
-#define JET_DUMMY_Y 65
-
-#define JET_SLIDE_WIDTH 50
-#define JET_SLIDE_X 576
-
-/*
- *
- * BALL stuffs
- *
- */
-
-// x and y corners are specified whithout consider a border of 3 pixels
-#define BALL_Y 450 /* position of the floor */
-#define BALL_HEIGHT 385 /* initial height of the ball */
-#define BALL_XMIN 10 /* min position X of the ball */
-#define BALL_XMAX 370 /* max position X of the ball */
-#define BALL_VELX 5. /* horizontal ball velocity */
-#define BALL_VYMIN 11. /* min ground speed */
-#define BALL_MAX_P 60 /* max number of balls */
-
-#define BALL_GROUP 2 /* task group of the balls */
Index: rel_1_4/jumpball/readme.txt
===================================================================
--- rel_1_4/jumpball/readme.txt (revision 1488)
+++ rel_1_4/jumpball/readme.txt (nonexistent)
@@ -1,94 +0,0 @@
-----------------------------------
-Jumping Balls demo
-
-by
-
-Paolo Gai 1999-2001 - pj@sssup.it
-
-----------------------------------
-
-This demo was created to show some S.Ha.R.K. functionalities in the course
-of Informatica Industriale , University of Pavia, Italy.
-
-The demo is composed by an application (derived by the template application
-distributed on the web site) and two init files.
-
-The demo is composed by:
-
-MAKEFILE The makefile used to compile the application;
- demo is the rule to compile the application with a CBS scheduler
- demo2 is the rule to compile the application with a RR scheduler
-README.TXT This file
-DEMO.H Some constants used into the demo
-ECP.C, ERN.C, RRP.C, RRN.C Various initfiles
-INITFIL2.C The EDF initfile
-INITFILE.C A makefile that cover either EDF+CBS and RR
-BALL.C The Jumping balls part of the demo
-DEMO.C The main() function and some other utility function
-JETCTRL.C The JET part of the demo
-
-The demo works as follows:
-- It works at 640x480 16 bit colors
-- on the left, there is the jumping ball arena, on the rigth there is the
- statistics about the tasks into the system.
-
-- the tasks are guaranteed using CBS and EDF. The wcet and mean execution
- time on my portable after a few minutes are (us):
-
- JetCtrl 7400 max 7500 CBS met
- JetDummy 135 max 200 CBS met
- JetSlide 2100 max 2100 CBS met
- Balls 276 max 380 EDF wcet for hard ball,100 CBS met for soft ones
-
- The system should go overloaded with 40 soft balls.
-
-- The idea is the following:
- - first, an edf guaranteed ball is created.
- - then, create a set of soft ball using space. since their met is < than the
- real met, they posticipate the deadlines.
- - if they are killed, they remain for some seconds in the zombie state
- - if a set of soft ball arde created (i.e., 10), and after a while all the
- others are created, the bandwidth is fully used, and the task posticipate
- their deadlines. the first set of tasks stops jumping when the bandwidth
- is full utilized by the newest balls until all the tasks have similar
- deadlines.
- - Note on the left the slides that represents the relative ratio
- between the tasks.
- - Note that in overload conditions the EDF task is still guaranteed
- - Note that PI is used with EDF, also if no theory says that it is good:
- - S.Ha.R.K. allows that, it is the user that have to choose if that is
- a non-sense
- - PI is independent from the implemnentation of the scheduling modules
- - if the second init file is used, RR is used instead of EDF+CBS.
- - In overload condition RR perform differently from EDF+CBS, giving to
- each task an equal fraction of bandwidth
-
- - note also:
- - the redefinition of the standard exception handler
- - the redefinition of the keys and the initialization of the keyboard
- - the myend exit function
- - the main() that terminates
- - the two parts (ball and jet) can be excluded using a #define
-
-If You have any question, please contact the author...
-
-Update (2003/12/19):
-Just some more notes...
-I usually show the four demos in the following order:
-
-(first of all, tune the demo depending on how fast your notebook is; see demo.h)
-
-ECP - EDF with CBS and PI... the white EDF ball still work also in overload; CBS balls just slow down but they still get their guaranteed bandwidth
-
-RRP - Round Robin with Priority inheritance ... the EDF ball is at the same level of the others, all slow down...
-
-RRN - 2 levels of Round Robin, without Priority inheritance ... when
-there is overload, the white ball works ok, but the other have an impredicible
-behavior (they execute many instances in one RR period)
-
-ERN - EDF, RR, no priority inheritance - the white ball misses his deadline
-just when there is an overload (all the other balls are queued on the same
-semaphore, so the blocking time increase, and when there is overload the EDF
-task misses also if it has not consumed his bandwidth). Note that it happens
-also if the EDF task consume just a few microseconds... Real time does not
-means "fast" :-)
Index: rel_1_4/jumpball/ball.c
===================================================================
--- rel_1_4/jumpball/ball.c (revision 1488)
+++ rel_1_4/jumpball/ball.c (nonexistent)
@@ -1,247 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: ball.c,v 1.6 2004-04-18 18:48:22 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.6 $
- Last update: $Date: 2004-04-18 18:48:22 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-/*--------------------------------------------------------------*/
-/* SIMULATION OF JUMPING BALLS */
-/*--------------------------------------------------------------*/
-
-#include "demo.h"
-#include <kernel/func.h>
-#include <stdlib.h>
-
-#define R 8 /* dimension of a ball */
-#define G 9.8 /* acceleration of gravity */
-
-static int ballexit = 0;
-static int npc = 0; /* number of tasks created */
-
-/*--------------------------------------------------------------*/
-/* Delay function for jumping balls */
-/*--------------------------------------------------------------*/
-
-void my_delay(void)
-{
- int xxx;
- for (xxx=0; xxx<BALL_DELAY; xxx++);
-}
-
-/*--------------------------------------------------------------*/
-/* Periodic task for ball simulation */
-/*--------------------------------------------------------------*/
-
-TASK palla(int i)
-{
-int x, y; /* coordinate grafiche pallina */
-int ox, oy; /* vecchia posizione pallina */
-int x0, y0; /* posizione iniziale X pallina */
-float vx, vy; /* velocitÂ… della pallina */
-float vy0; /* velocita' pallina al primo rimbalzo */
-float ty, tx; /* variabile temporale */
-float dt; /* incremento temporale */
-
- y = oy = y0 = BALL_HEIGHT;
- x = ox = x0 = BALL_XMIN;
-
- vy0= sqrt(2. * G * (float)BALL_HEIGHT);
- vy = 0;
- vx = BALL_VELX + myrand(9);
- tx = 0;
- ty = 0;
- dt = ((float)PERIOD_BALL)/100000;
-
- while (1) {
- y = y0 + vy*ty - .5*G*ty*ty;
- x = x0 + vx * tx;
-
- if (y < 0) {
- y = 0;
-
- if (vy == 0.0)
- vy = vy0;
- else if (vy < BALL_VYMIN)
- vy = vy0 * (1.0 - myrand(50)/100.0);
- else
- vy = 0.9 * vy;
-
- ty = 0.0;
- y0 = 0;
- }
-
- if (x > BALL_XMAX) {
- tx = 0.0;
- x0 = BALL_XMAX;
- vx = -vx;
- x = x0 + vx * tx;
- }
-
- if (x < BALL_XMIN) {
- tx = 0.0;
- x0 = BALL_XMIN;
- vx = -vx;
- x = x0 + vx * tx;
- }
-
- mutex_lock(&mutex);
- grx_disc(ox, oy, R, 0);
- ox = x;
- oy = BALL_Y - y;
- mutex_unlock(&mutex);
-
- if (ballexit && i!=0xFFFF) {
- npc--;
- return 0;
- }
-
- mutex_lock(&mutex);
- grx_disc(ox, oy, R, i);
- mutex_unlock(&mutex);
-
- my_delay();
-
- ty += dt;
- tx += dt;
- task_endcycle();
- }
-}
-
-void killball(KEY_EVT *k)
-{
- ballexit = 1;
-}
-
-void ballfun(KEY_EVT *k)
-{
- SOFT_TASK_MODEL mp;
- int r,g,b;
- PID pid;
- char palla_str[]="palla ";
-
- if (npc == BALL_MAX_P) return;
-
- ballexit = 0;
-
- r = 64 + myrand(190);
- g = 64 + myrand(190);
- b = 64 + myrand(190);
-
- itoa(npc,palla_str+5);
-
- soft_task_default_model(mp);
- soft_task_def_level(mp,2);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_arg(mp, (void *)rgb16(r,g,b));
- soft_task_def_group(mp, BALL_GROUP);
- soft_task_def_met(mp, WCET_BALL);
- soft_task_def_period(mp,PERIOD_BALL);
- soft_task_def_usemath(mp);
- pid = task_create(palla_str, palla, &mp, NULL);
-
- if (pid != NIL) {
- task_activate(pid);
- npc++;
- }
-}
-
-void hardball()
-{
- HARD_TASK_MODEL mp;
- int r,g,b;
- PID pid;
-
- r = 255;
- g = 255;
- b = 255;
-
- hard_task_default_model(mp);
- hard_task_def_ctrl_jet(mp);
- hard_task_def_arg(mp, (void *)rgb16(r,g,b));
- hard_task_def_wcet(mp, WCET_HARD_BALL);
- hard_task_def_mit(mp,PERIOD_BALL);
- hard_task_def_usemath(mp);
- pid = task_create("pallaEDF", palla, &mp, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <pallaEDF>");
- sys_end();
- return;
- }
- else
- task_activate(pid);
-}
-
-
-/*--------------------------------------------------------------*/
-/* MAIN process */
-/*--------------------------------------------------------------*/
-
-void scenario_ball()
-{
- grx_text("Noise", 0, 45 /*BALL_Y-BALL_HEIGHT-15*/, rgb16(0,0,255), black);
- grx_line(0,55,383,55,red);
- grx_rect(BALL_XMIN-R-1, BALL_Y-BALL_HEIGHT-R-1,
- BALL_XMAX+R+1, BALL_Y+R+1, rgb16(0,200,0));
-}
-
-void init_ball(void)
-{
- KEY_EVT k;
-
- hardball();
-
- k.flag = 0;
- k.scan = KEY_SPC;
- k.ascii = ' ';
- k.status = KEY_PRESSED;
- keyb_hook(k,ballfun,FALSE);
-
- k.flag = 0;
- k.scan = KEY_BKS;
- k.ascii = ' ';
- k.status = KEY_PRESSED;
- keyb_hook(k,killball,FALSE);
-}
-
-/*--------------------------------------------------------------*/
Index: rel_1_4/jumpball/makefile
===================================================================
--- rel_1_4/jumpball/makefile (revision 1488)
+++ rel_1_4/jumpball/makefile (nonexistent)
@@ -1,24 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= ecp ern rrp rrn
-
-include $(BASE)/config/example.mk
-
-ecp:
- make -f $(SUBMAKE) APP=ecp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
-ern:
- make -f $(SUBMAKE) APP=ern INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
-rrp:
- make -f $(SUBMAKE) APP=rrp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
-rrn:
- make -f $(SUBMAKE) APP=rrn INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
Index: rel_1_4/jumpball/rrn.c
===================================================================
--- rel_1_4/jumpball/rrn.c (revision 1488)
+++ rel_1_4/jumpball/rrn.c (nonexistent)
@@ -1,219 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: rrn.c,v 1.5 2004-04-19 13:45:15 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.5 $
- Last update: $Date: 2004-04-19 13:45:15 $
- ------------
-**/
-
-/*
- * Copyright (C) 2003 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- RR_register_level(RRTICK, RR_MAIN_NO, mb); // this module remains empty!!!
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-void app_mutex_init(mutex_t *m)
-{
- NOP_mutexattr_t attr;
-
- NOP_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-
Index: rel_1_4/jumpball/rrp.c
===================================================================
--- rel_1_4/jumpball/rrp.c (revision 1488)
+++ rel_1_4/jumpball/rrp.c (nonexistent)
@@ -1,219 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: rrp.c,v 1.5 2004-04-19 13:45:15 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.5 $
- Last update: $Date: 2004-04-19 13:45:15 $
- ------------
-**/
-
-/*
- * Copyright (C) 2003 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "modules/pi.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD);
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_SOFT);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-void app_mutex_init(mutex_t *m)
-{
- PI_mutexattr_t attr;
-
- PI_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-
Index: rel_1_4/newtrace/udp/initfile.c
===================================================================
--- rel_1_4/newtrace/udp/initfile.c (revision 1488)
+++ rel_1_4/newtrace/udp/initfile.c (nonexistent)
@@ -1,161 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
- INPUT26_close();
-
- return 0;
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
- PCI26_init();
- INPUT26_init();
-
- /*keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- return 0;
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-void call_shutdown_task(void *arg) {
-
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: rel_1_4/newtrace/udp/udptrace.c
===================================================================
--- rel_1_4/newtrace/udp/udptrace.c (revision 1488)
+++ rel_1_4/newtrace/udp/udptrace.c (nonexistent)
@@ -1,76 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-#include <kernel/kern.h>
-#include <FTrace_chunk.h>
-#include <FTrace_udp.h>
-#include <tracer.h>
-
-int main(int argc, char **argv)
-{
-
- long long i;
-
- int a,b,c;
- struct timespec start,end,diff;
- SYS_FLAGS f;
-
- a = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
- b = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
- c = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
-
- FTrace_chunk_link(a,b);
- FTrace_chunk_link(b,c);
-
- FTrace_actual_chunk_select(a);
-
- kern_gettime(&start);
- FTrace_enable();
-
- for (i=0;i<1000000000;i++);
-
- TRACER_LOGEVENT(FTrace_EVT_next_chunk,0,0);
-
- f = kern_fsave();
- __asm__("cpuid":::"eax","ebx","ecx","edx");
- FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,1,0);
- FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,2,0);
- FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,3,0);
- FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,4,0);
- FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,5,0);
- __asm__("cpuid":::"eax","ebx","ecx","edx");
- kern_frestore(f);
-
- TRACER_LOGEVENT(FTrace_EVT_ipoint,6,0);
-
- for (i=0;i<1000000000;i++);
-
- FTrace_disable();
- kern_gettime(&end);
-
- SUBTIMESPEC(&end,&start,&diff);
-
- cprintf("Logged Time %d s %d us\n",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
-
- FTrace_OSD_init_udp(1, "192.168.1.10", "192.168.1.1");
-
- FTrace_send_chunk(a, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
- FTrace_send_chunk(b, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
-
- return 0;
-
-}
Index: rel_1_4/newtrace/udp/makefile
===================================================================
--- rel_1_4/newtrace/udp/makefile (revision 1488)
+++ rel_1_4/newtrace/udp/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = udptrace
-
-include $(BASE)/config/example.mk
-
-udptrace:
- make -f $(SUBMAKE) BASE=$(BASE) APP=udptrace INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __NET__"
-
Index: rel_1_4/newtrace/nosave/nosave.c
===================================================================
--- rel_1_4/newtrace/nosave/nosave.c (revision 1488)
+++ rel_1_4/newtrace/nosave/nosave.c (nonexistent)
@@ -1,58 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-#include <kernel/kern.h>
-#include <tracer.h>
-
-int main(int argc, char **argv)
-{
-
- long long i;
-
- int a,b,c;
- struct timespec start,end,diff;
-
- a = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
- b = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
- c = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
-
- FTrace_chunk_link(a,b);
- FTrace_chunk_link(b,c);
-
- FTrace_actual_chunk_select(a);
-
- kern_gettime(&start);
- FTrace_enable();
-
- for (i=0;i<1000000000;i++);
-
- TRACER_LOGEVENT(FTrace_EVT_next_chunk,0,0);
-
- for (i=0;i<1000000000;i++);
-
- FTrace_disable();
- kern_gettime(&end);
-
- SUBTIMESPEC(&end,&start,&diff);
-
- cprintf("Logged Time %d s %d us\n",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
-
- FTrace_chunk_dump(a);
-
- return 0;
-
-}
Index: rel_1_4/newtrace/nosave/makefile
===================================================================
--- rel_1_4/newtrace/nosave/makefile (revision 1488)
+++ rel_1_4/newtrace/nosave/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = nosave
-
-include $(BASE)/config/example.mk
-
-nosave:
- make -f $(SUBMAKE) BASE=$(BASE) APP=nosave INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __NET__"
-
Index: rel_1_4/newtrace/nosave/initfile.c
===================================================================
--- rel_1_4/newtrace/nosave/initfile.c (revision 1488)
+++ rel_1_4/newtrace/nosave/initfile.c (nonexistent)
@@ -1,61 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@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
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/newtrace/readme
===================================================================
--- rel_1_4/newtrace/readme (revision 1488)
+++ rel_1_4/newtrace/readme (nonexistent)
@@ -1,13 +0,0 @@
-This directory contains a set of sub directories containing all the tracer
-examples and utilities.
-
-Here a short description of the contents
-
-utils - some small utilities:
-
- udpdump - save on a file the logged events sent through network
-
-udp - a small application that sends its trace data through the network
-
-nosave - a simple tracer implementation without saving logged events
-
Index: rel_1_4/newtrace/makefile
===================================================================
--- rel_1_4/newtrace/makefile (revision 1488)
+++ rel_1_4/newtrace/makefile (nonexistent)
@@ -1,10 +0,0 @@
-.PHONY: all clean
-
-all:
- make -C udp
- make -C nosave
-
-clean:
- make -C udp clean
- make -C nosave clean
-
Index: rel_1_4/newtrace/utils/list.c
===================================================================
--- rel_1_4/newtrace/utils/list.c (revision 1488)
+++ rel_1_4/newtrace/utils/list.c (nonexistent)
@@ -1,88 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define READ_BUFFER 2000
-#define DELTA_BUFFER 100
-
-int main(int argc, char *argv[])
-{
-
- char buffer[READ_BUFFER+DELTA_BUFFER];
- void *p, *last;
- int n,delta,size;
-
- unsigned long long ev = 0;
-
- FILE *input_file;
-
- if (argc < 2) {
- printf("%s: Enter the input file name [%s filename]\n",argv[0],argv[0]);
- exit(1);
- }
-
- input_file = fopen(argv[1],"rb");
-
- last = buffer + READ_BUFFER;
-
- while(!feof(input_file)) {
-
- //move remaining byte
- delta = (unsigned int)(buffer) + READ_BUFFER - (unsigned int)(last);
- if (delta > 0) memcpy(buffer,last,delta);
-
- n = fread(buffer+delta,1,READ_BUFFER+10,input_file);
- fseek(input_file,-(delta+10),SEEK_CUR);
-
- p = buffer;
-
- while ((unsigned int)(p) + 16 <= (unsigned int)(buffer + READ_BUFFER) &&
- (unsigned int)(p) + 16 <= (unsigned int)(buffer + n + delta)) {
-
- printf("%08d Type = %02x ",(unsigned int)ev,*(unsigned short int *)(p));
-
- printf("TSC = %08x:%08x",*(unsigned int *)(p+4),*(unsigned int *)(p+8));
-
- size = 16;
-
- printf(" Par1 = %d",*(unsigned short int *)(p+2));
- printf(" Par2 = %d\n",*(unsigned int *)(p+12));
-
- ev++;
-
- p += 16;
-
- if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
-
- last = p;
-
- }
-
- if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
-
- }
-
- fclose(input_file);
-
- return 0;
-
-}
-
Index: rel_1_4/newtrace/utils/makefile
===================================================================
--- rel_1_4/newtrace/utils/makefile (revision 1488)
+++ rel_1_4/newtrace/utils/makefile (nonexistent)
@@ -1,28 +0,0 @@
-#
-# util_linux -> compiles the tracer utilities under Linux
-#
-
-ifndef BASE
-BASE=../../..
-endif
-
-.PHONY: util_dos util_linux clean
-
-all:
- @echo Targets: util_dos util_linux clean
- @echo Note: udpdump and list are available only under linux
-
-util_linux: udpdump list
-
-udpdump: udpdump.c
- gcc -Wimplicit-function-declaration -Wall -ggdb\
- -I$(BASE)/include/trace -I$(BASE)/oslib udpdump.c -o udpdump
-
-list: list.c
- gcc -Wimplicit-function-declaration -Wall -ggdb\
- -I$(BASE)/include/trace -I$(BASE)/oslib list.c -o list
-
-clean:
- rm -rf *.o udpdump list
-
-
Index: rel_1_4/newtrace/utils/udpdump.c
===================================================================
--- rel_1_4/newtrace/utils/udpdump.c (revision 1488)
+++ rel_1_4/newtrace/utils/udpdump.c (nonexistent)
@@ -1,134 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-#include <netinet/in.h>
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <unistd.h>/* close() */
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-
-#define SERVER_PORT 20000
-#define MAX_MSG 10000
-
-struct tracer_udp_header {
- char id[12];
- unsigned int pkt_number;
- unsigned int events;
- unsigned int size;
-};
-
-FILE *output_file;
-
-int miss;
-
-void close_and_exit()
-{
-
- printf("Closing...\n");
-
- if (miss == 1) printf("Possible error receiving packets !\n");
-
- fclose(output_file);
-
- exit(0);
-
-}
-
-int main(int argc, char *argv[])
-{
- int sd, rc, n, cliLen,count;
- struct sockaddr_in cliAddr, servAddr;
- char msg[MAX_MSG];
-
- struct tracer_udp_header *pkt_head = (struct tracer_udp_header *)(msg);
-
- if (argc < 2) {
- printf("%s: Enter the output file name [%s filename]\n",argv[0],argv[0]);
- exit(1);
- }
-
- // socket creation
- sd = socket(AF_INET, SOCK_DGRAM, 0);
- if(sd < 0) {
- printf("%s: cannot open socket \n",argv[0]);
- exit(1);
- }
-
- output_file = fopen(argv[1],"w+b");
- if (output_file == NULL) {
- printf("%s: Cannot open the file\n",argv[0]);
- exit(1);
- }
-
- // bind local server port
- servAddr.sin_family = AF_INET;
-
- servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servAddr.sin_port = htons(SERVER_PORT);
-
- rc = bind (sd, (struct sockaddr *)&servAddr,sizeof(servAddr));
- if(rc < 0) {
- printf("%s: cannot bind port number %d \n",
- argv[0], SERVER_PORT);
- exit(1);
- }
-
- signal(SIGINT, close_and_exit);
-
- count = 1;
- miss = 0;
-
- while(1) {
-
- printf("Wait packet...\n");
-
- // receive message
- cliLen = sizeof(cliAddr);
- n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *)&cliAddr, &cliLen);
-
- if (strncmp(pkt_head->id,"TRACER",6)) continue;
-
- printf("Received %d, length %d(%d), %d tracer events.\n",
- pkt_head->pkt_number, n, pkt_head->size, pkt_head->events);
-
- if (pkt_head->pkt_number != count) {
- printf("Miss Packet !!!\n");
- miss = 1;
- }
-
- if (n > 0) {
-
- count++;
-
- fwrite((void *)(msg+sizeof(struct tracer_udp_header)),n-sizeof(struct tracer_udp_header),1,output_file);
-
- }
-
- }
-
- fclose(output_file);
-
- return 0;
-
-}
-
Index: rel_1_4/base/makefile
===================================================================
--- rel_1_4/base/makefile (revision 1488)
+++ rel_1_4/base/makefile (nonexistent)
@@ -1,95 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = hello sig time preempt
-PROGS += aster aster1 aster2 aster3 aster4 aster5 aster6 aster7 aster8
-PROGS += pcidemo
-PROGS += jointest condtest intsem semdemo pidemo pcdemo srpdemo mdemo
-PROGS += ego fly cabs
-
-include $(BASE)/config/example.mk
-
-# Text applications
-hello:
- make -f $(SUBMAKE) APP=hello INIT= OTHEROBJS="ihello.o" OTHERINCL= SHARKOPT=
-
-time:
- make -f $(SUBMAKE) APP=time INIT= OTHEROBJS="ihello.o" OTHERINCL= SHARKOPT=
-
-sig:
- make -f $(SUBMAKE) APP=sig INIT= OTHEROBJS="ihello.o" OTHERINCL= SHARKOPT=
-
-preempt:
- make -f $(SUBMAKE) APP=preempt INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-semdemo:
- make -f $(SUBMAKE) APP=semdemo INIT= OTHEROBJS="isemdemo.o" OTHERINCL= SHARKOPT=
-
-pidemo:
- make -f $(SUBMAKE) APP=pidemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-pcdemo:
- make -f $(SUBMAKE) APP=pcdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-srpdemo:
- make -f $(SUBMAKE) APP=srpdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-mdemo:
- make -f $(SUBMAKE) APP=mdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-aster:
- make -f $(SUBMAKE) APP=aster INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-aster1:
- make -f $(SUBMAKE) APP=aster1 INIT= OTHEROBJS="iaster1.o" OTHERINCL= SHARKOPT=
-
-aster2:
- make -f $(SUBMAKE) APP=aster2 INIT= OTHEROBJS="iaster1.o" OTHERINCL= SHARKOPT=
-
-aster3:
- make -f $(SUBMAKE) APP=aster3 INIT= OTHEROBJS="iaster3.o" OTHERINCL= SHARKOPT=
-
-aster4:
- make -f $(SUBMAKE) APP=aster4 INIT= OTHEROBJS="iaster4.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-aster5:
- make -f $(SUBMAKE) APP=aster5 INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-aster6:
- make -f $(SUBMAKE) APP=aster6 INIT= OTHEROBJS="iaster6.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-aster7:
- make -f $(SUBMAKE) APP=aster7 INIT= OTHEROBJS="iaster7.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-aster8:
- make -f $(SUBMAKE) APP=aster8 INIT= OTHEROBJS="iaster8.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
-
-pcidemo:
- make -f $(SUBMAKE) APP=pcidemo INIT= OTHEROBJS="ipcidemo.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__"
-
-jointest:
- make -f $(SUBMAKE) APP=jointest INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-condtest:
- make -f $(SUBMAKE) APP=condtest INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-intsem:
- make -f $(SUBMAKE) APP=intsem INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
-
-# Graphical applications
-
-ego:
- make -f $(SUBMAKE) APP=ego INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
-fly:
- make -f $(SUBMAKE) APP=fly INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
-cabs:
- make -f $(SUBMAKE) APP=cabs INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
Index: rel_1_4/base/cabs.dat
===================================================================
--- rel_1_4/base/cabs.dat (revision 1488)
+++ rel_1_4/base/cabs.dat (nonexistent)
@@ -1,11 +0,0 @@
-----------------------------------------------------
-system tick (ms): 1
-----------------------------------------------------
-
-task periods (ticks)
-----------------------------------------------------
-producer 1: 200 consumer 1: 400
-producer 2: 100 consumer 2: 400
-producer 3: 300 consumer 3: 150
-producer 4: 800 consumer 4: 200
-----------------------------------------------------
Index: rel_1_4/base/aster1.c
===================================================================
--- rel_1_4/base/aster1.c (revision 1488)
+++ rel_1_4/base/aster1.c (nonexistent)
@@ -1,174 +0,0 @@
-/*
- * 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 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: aster1.c,v 1.3 2004-04-17 11:36:12 giacomo Exp $
-
- this is a reduced verion of the classic Hartik demo Aster.
-
- It uses:
- - EDF module
- . periodic tasks
- - an high number of task executing concurrently
-
- The demo ends after 6 seconds.
-
-*/
-
-/*
- Well, this is only a stupid demo which intend to show many
- HARTIK+ capabilities; the application is structured in the followig
- way: there is an ASTER task wich randomly creates some ASTEROID tasks
- which are displayed into the first window; each task is HARD/PERIODIC
- and auto-kills itself when it reaches the window end!
- Finally a CLOCK task is implemented to test system clock.
- Please note that usually the HARTIK+ application is made up of a task
- group which interacts among them, while the main() function, which
- became a task itself when the kernel is activated, is suspended until
- the system is ready to terminate; the MAIN task can also be used to make
- other background activities, but it should not be killed; when the
- application terminates, the control is passed to MAIN which kills
- everybody, shut down the system and can handle other operations using
- the services available with the previou operating system (I.E. the DOS).
- If you need to manage sudden abort/exception you should install your own
- exception handler and raise it through the exc_raise() primitive to
- make the system abort safely!
- Remember that the exit functions posted through sys_atexit() will be
- executed in both cases, to allow clean system shutdown.
-*/
-
-#include "kernel/kern.h"
-
-int num_aster = 0;
-#define ASTER_LIM 67
-#define ASTER_MAX 90
-
-TASK asteroide(void)
-{
- int i = 1;
- int y = rand() % 20 + 1;
- while (i < ASTER_LIM) {
- puts_xy(i,y,WHITE,"*");
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- num_aster--;
- return 0;
-}
-
-DWORD taskCreated = 0;
-
-TASK aster(void)
-{
- PID p;
-
- HARD_TASK_MODEL m;
- int r;
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,500);
-
- srand(7);
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 50) - 25;
-
- hard_task_def_arg(m,(void *)((rand() % 7)+1));
- hard_task_def_mit(m, (50+r)*1000);
- p = task_create("aaa",asteroide,&m,NULL);
- taskCreated++;
- task_activate(p);
- num_aster++;
- }
-
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(70,1,WHITE,"%2d : %2d",m,s);
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(70,1,WHITE,"%2d : %2d",m,s);
- task_endcycle();
- }
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2;
- HARD_TASK_MODEL m;
- struct timespec t;
-
- clear();
-
- hard_task_default_model(m);
- hard_task_def_mit(m,10000);
- hard_task_def_wcet(m,2000);
- hard_task_def_group(m,1);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <aster> ...");
- sys_end();
- }
-
- hard_task_def_mit(m,500000);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <Clock> ...");
- sys_end();
- }
-
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
- return 0;
-}
-
Index: rel_1_4/base/jointest.c
===================================================================
--- rel_1_4/base/jointest.c (revision 1488)
+++ rel_1_4/base/jointest.c (nonexistent)
@@ -1,214 +0,0 @@
-/*
- * 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: jointest.c,v 1.2 2004-04-17 11:36:14 giacomo Exp $
-
- This test verify the correctness of the task_join primitive. (that
- function is the same as pthread_join... someday I will change the
- names...)
-
- There are 4 taks, J1, J2, J3, are created as joinable, J4 as detached
-
- The main task:
- Creates J1 and J2, locks m1 (a PI mitex), creates C3.
- at t=0.8 sec it calls a task_join on J3 (that returns EDEADLK),
- it unlocks m1, then it makes task_join on J3 another time.
- Next it creates J4 as detached and finally it does a task_join on J4
- (that returns EINVAL).
-
- J1:
- at t=0.2 sec it calls task_join on J2, the it ends.
-
- J2:
- it simply waits t=0.4 sec and it ends.
-
- J3:
- First, it calls task_join on J1.
- Then, at t=0.6 sec it locks m1, then unlocks it
-
- J4:
- it simply waits t=1 sec and it ends.
-
-*/
-
-#include "kernel/kern.h"
-
-PID j0, j1, j2, j3, j4;
-mutex_t m1;
-
-TASK J1()
-{
- int err;
- void *ret;
-
- cprintf("J1: started, waiting 0.2 sec\n");
-
- while (sys_gettime(NULL) < 200000);
-
- cprintf("J1: 0.2 sec reached, joining J2\n");
-
- err = task_join(j2, &ret);
-
- cprintf("J1: join J2 returns %d error %d, exiting\n",
- (int)ret,err);
- return (void *)11;
-}
-
-TASK J2()
-{
- cprintf("J2: started, waiting 0.4 sec\n");
-
- while (sys_gettime(NULL) < 400000);
-
- cprintf("J2: 0.4 sec reached, exiting\n");
-
- return (void *)22;
-}
-
-TASK J3()
-{
- int err;
- void *ret;
-
- cprintf("J3: started, joining J1\n");
-
- err = task_join(j1, &ret);
-
- cprintf("J3: join J1 returns %d error %d, waiting 0.6sec\n", (int)ret, err);
-
- while (sys_gettime(NULL) < 600000);
-
- cprintf("J1: 0.6 sec reached, locking m1\n");
-
- mutex_lock(&m1);
-
- cprintf("J3: locked m1, unlocking m1\n");
-
- mutex_unlock(&m1);
-
- cprintf("J3: unlocked m1, exiting\n");
-
- return (void *)33;
-}
-
-TASK J4()
-{
- cprintf("J4: started, waiting 1 sec\n");
-
- while (sys_gettime(NULL) < 1000000);
-
- cprintf("J4: 1 sec reached, exiting\n");
-
- return (void *)44;
-}
-
-int main(int argc, char **argv)
-{
- NRT_TASK_MODEL m;
-
- PI_mutexattr_t a;
-
- int err;
- void *ret;
-
- struct timespec t;
-
- j0 = exec_shadow;
- nrt_task_default_model(m);
- nrt_task_def_joinable(m);
-
- /* ---------------------------------------------------------------------
- Mutex creation
- --------------------------------------------------------------------- */
-
- PI_mutexattr_default(a);
- mutex_init(&m1,&a);
-
-
- /* ---------------------------------------------------------------------
- Let's go !!!!
- --------------------------------------------------------------------- */
-
- cprintf("main: creating J1,J2,J3, locking m1\n");
-
- j1 = task_create("J1", J1, &m, NULL);
- if (j1 == NIL) { cprintf("Can't create J1 task...\n"); return 1; }
- task_activate(j1);
-
- j2 = task_create("J2", J2, &m, NULL);
- if (j2 == NIL) { cprintf("Can't create J2 task...\n"); return 1; }
- task_activate(j2);
-
- mutex_lock(&m1);
-
- j3 = task_create("J3", J3, &m, NULL);
- if (j3 == NIL) { cprintf("Can't create J3 task...\n"); return 1; }
- task_activate(j3);
-
- cprintf("main: waiting t=0.8 sec\n");
-
- while (sys_gettime(NULL) < 800000);
-
- err = task_join(j3, NULL);
-
- cprintf("main: join J3 error %d, unlocking m1\n",err);
-
- mutex_unlock(&m1);
-
- err = task_join(j3, &ret);
-
- cprintf("main: join J3 returns %d error %d, unlocked m1, creating J4\n",
- (int)ret,err);
-
- nrt_task_def_unjoinable(m);
- j4 = task_create("J4", J4, &m, NULL);
- if (j4 == NIL) { cprintf("Can't create J4 task...\n"); return 1; }
-
- task_activate(j4);
-
- err = task_join(j4,&ret);
-
- cprintf("main: join J4 returns %d error %d, exiting\n", (int)ret, err);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-
-}
Index: rel_1_4/base/aster2.c
===================================================================
--- rel_1_4/base/aster2.c (revision 1488)
+++ rel_1_4/base/aster2.c (nonexistent)
@@ -1,241 +0,0 @@
-/*
- * 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 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: aster2.c,v 1.4 2004-04-19 14:48:04 giacomo Exp $
-
- this is a part of the classic Hartik demo Aster.
-
- It checks:
- - jet functions
- - The EDF level with many task, with almost full bandwidth used
-
-*/
-
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-// first numbers for wcet and periods are for a 486/25, the others for a
-// celeron 366
-
-#define PER_WCET 13000 /*6200*/
-#define CLOCK_WCET 1200 /* 100*/
-#define ASTER_WCET 1200 /* 100*/
-
-#define ASTER_MEAN_PERIOD 64 /*64*/
-
-#define END_TEST_TIME 60
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 1000; //10000; // 5000 + rand()%5000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
-
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aster()
-{
- PID p;
-
- HARD_TASK_MODEL m;
- int r;
- int x; // adaptive bandwidth...
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,PER_WCET);
- hard_task_def_ctrl_jet(m);
-
- x = ASTER_MEAN_PERIOD;
-
- srand(7);
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- hard_task_def_arg(m,(void *)((rand() % 7)+1));
- hard_task_def_mit(m, (x+r)*1000);
- p = task_create("aaa",asteroide,&m,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- }
- else {
- num_aster++;
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- kern_cli();
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- kern_sti();
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- kern_cli();
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- kern_sti();
- i++;
- }
- }
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3; //,p4,p5,p6;
- HARD_TASK_MODEL m;
- NRT_TASK_MODEL m_nrt;
- struct timespec t;
-
- clear();
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_mit(m,10000);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_group(m_nrt,1);
- nrt_task_def_ctrl_jet(m_nrt);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- }
-
- p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- }
-
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < END_TEST_TIME);
-
- sys_end();
-
- return 0;
-}
-
-
-
-
Index: rel_1_4/base/aster3.c
===================================================================
--- rel_1_4/base/aster3.c (revision 1488)
+++ rel_1_4/base/aster3.c (nonexistent)
@@ -1,300 +0,0 @@
-/*
- * 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 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: aster3.c,v 1.5 2004-04-19 14:48:04 giacomo Exp $
-
- Test Number 10 (A):
-
- this is a part of the classic Hartik demo Aster.
-
- it is based on aster2.c, with the use of TBS to serve a set of aperiodic
- tasks.
-
- There are APER_MAX tasks sleeping, and when an asteroide task finish
- the current activation, it activate also an aperiodic task chosen
- randomly (if the task chosen is already active, the task_activate do
- nothing!)
-
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define APER_MAX 8
-
-/* first numbers runs on a pentium 133, second numbers on a celeron 366 */
-#define PER_WCET 30000 /* 6200 */
-#define APER_WCET 50000 /* 18400 */
-#define CLOCK_WCET 1000 /* 200 */
-#define ASTER_WCET 1000 /* 200 */
-#define MIN_PERIOD 200 /* 64, in ms */
-
-#define APER_REP 22000
-
-PID aper_table[APER_MAX];
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
- s[0] = c;
- puts_xy(i,y,rand()%15+1,s);
-
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-TASK aster()
-{
- PID p;
-
- HARD_TASK_MODEL m;
- int r;
- int x; // adaptive bandwidth...
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,PER_WCET);
- hard_task_def_ctrl_jet(m);
-
- x = MIN_PERIOD;
-
- srand(7);
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- hard_task_def_arg(m,(void *)((rand() % 7)+1));
- hard_task_def_mit(m, (x+r)*1000);
- p = task_create("aaa",asteroide,&m,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- }
- else {
- num_aster++;
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- kern_cli();
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- kern_sti();
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- kern_cli();
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- kern_sti();
- i++;
- }
- task_endcycle();
- }
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2;//,p3,p4,p5,p6;
- HARD_TASK_MODEL m;
- NRT_TASK_MODEL m_nrt;
- SOFT_TASK_MODEL m_aper;
- int i;
-
- clear();
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_mit(m,10000);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_group(m_nrt,1);
- nrt_task_def_ctrl_jet(m_nrt);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- }
-
- soft_task_default_model(m_aper);
- soft_task_def_wcet(m_aper,APER_WCET);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- soft_task_def_level(m_aper, 3);
- aper_table[0] = task_create("JetControl",jetcontrol,&m_aper,NULL);
- if (aper_table[0] == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- }
-
- for (i=1; i<APER_MAX; i++) {
- soft_task_def_level(m_aper, i/4 + 3);
- soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
- aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
- if (aper_table[i] == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aper> ...");
- sys_end();
- }
- }
-
-
- group_activate(1);
-
- {
- struct timespec t;
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 60);
- }
-
- sys_end();
- return 0;
-}
-
Index: rel_1_4/base/aster4.c
===================================================================
--- rel_1_4/base/aster4.c (revision 1488)
+++ rel_1_4/base/aster4.c (nonexistent)
@@ -1,389 +0,0 @@
-/*
- * 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 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: aster4.c,v 1.3 2004-04-19 14:48:04 giacomo Exp $
-
- Test Number 13 (D):
-
- this is a part of the classic Hartik demo Aster, and it is based on aster 3.
-
- The demo creates:
- - a set of TBS tasks assigned to 2 TBS servers initialized with different bandwidth.
-
- - a set of periodic tasks, just to make noise (function asteroide)
-
- - a set of CBS tasks that are created to fill the available free
- bandwidth (function soft_aster)
-
- - a few service task (the one that creates the CBS tasks (aster), a clock,
- JET info visualization
-
- - a set of never ending "system tasks" that simulate a device driver
- task that will end only at shutdown (function aper_asteroid)
-
- - a keyboard task that will execute an hook to terminate the system
-
-*/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define PER_MAX 5
-#define APER_MAX 8
-
-// These numbers works on a Pentium 133 */
-#define PER_WCET 25000
-#define APER_WCET 53000
-#define CLOCK_WCET 1000
-#define ASTER_WCET 1000
-#define SOFT_MET 6300
-
-#define APER_REP 22000
-
-PID aper_table[APER_MAX];
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
- //num_aster--;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
- s[0] = c;
- puts_xy(i,y,rand()%15+1,s);
-
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-TASK soft_aster(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 1000 + rand()%9000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
- s[0] = 1;
- puts_xy(i,y,rand()%15+1,s);
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- num_aster--;
- return 0;
-}
-
-TASK aster()
-{
- PID p;
-
- HARD_TASK_MODEL m;
- SOFT_TASK_MODEL m_soft;
- int r;
- int x; // adaptive bandwidth...
-
- srand(7);
-
- /* create a set of periodic tasks, just to make noise */
- hard_task_default_model(m);
- hard_task_def_wcet(m,PER_WCET);
- hard_task_def_ctrl_jet(m);
- for (x=0; x<PER_MAX; x++) {
- r = (rand() % 200);
- hard_task_def_mit(m, (64+r)*1000);
- p = task_create("per",asteroide,&m,NULL);
- if (p!=-1) task_activate(p);
- }
-
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,SOFT_MET);
- soft_task_def_ctrl_jet(m_soft);
-
- x = 64;
-
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- soft_task_def_period(m_soft, (x+r)*1000);
- p = task_create("aaa",soft_aster,&m_soft,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- }
- else {
- num_aster++;
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(5));
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(5));
- task_endcycle();
- }
-}
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- kern_cli();
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- kern_sti();
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 ||
- (proc_table[p].pclass & 0xFF00) == HARD_PCLASS) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- kern_cli();
- if (proc_table[p].task_level == 5)
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(4,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- else
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- kern_sti();
- i++;
- }
- }
-}
-
-void endfun(KEY_EVT *k)
-{
- sys_end();
-}
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
-
- PID p1,p2,p3;
- HARD_TASK_MODEL m;
- SOFT_TASK_MODEL m_aper;
- SOFT_TASK_MODEL m_soft;
- int i;
-
- k.flag = 0;
- k.scan = KEY_ENT;
- k.ascii = 13;
- k.status = KEY_PRESSED;
- keyb_hook(k, endfun, FALSE);
-
- clear();
- cprintf("Press ENTER to end the demo...");
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_mit(m,10000);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,1000);
- soft_task_def_period(m_soft,100000);
- soft_task_def_group(m_soft,1);
- soft_task_def_ctrl_jet(m_soft);
- soft_task_def_aperiodic(m_soft);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("aster4.c(main): Could not create task <aster> ...");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("aster4.c(main): Could not create task <Clock> ...");
- sys_end();
- return 0;
- }
-
- p3 = task_create("JetControl",jetcontrol,&m_soft,NULL);
- if (p3 == -1) {
- sys_shutdown_message("aster4.c(main): Could not create task <JetControl> ...");
- sys_end();
- return 0;
- }
-
- soft_task_default_model(m_aper);
- soft_task_def_wcet(m_aper,APER_WCET);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_system(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- for (i=0; i<APER_MAX; i++) {
- soft_task_def_level(m_aper, i/4 + 3);
- soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
- aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
- if (aper_table[i] == -1) {
- sys_shutdown_message("aster4.c(main): Could not create task <aper> ...");
- sys_end();
- return 0;
- }
- }
-
- group_activate(1);
- return 0;
-}
-
Index: rel_1_4/base/isemdemo.c
===================================================================
--- rel_1_4/base/isemdemo.c (revision 1488)
+++ rel_1_4/base/isemdemo.c (nonexistent)
@@ -1,98 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: isemdemo.c,v 1.1 2002-11-11 08:22:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1 $
- Last update: $Date: 2002-11-11 08:22:45 $
- ------------
-
- The simplest initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- a RR (Round Robin) level
- a Dummy level
-
- It can accept these task models:
-
- NRT_TASK_MODEL at level 0
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/sem.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 300
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/base/aster5.c
===================================================================
--- rel_1_4/base/aster5.c (revision 1488)
+++ rel_1_4/base/aster5.c (nonexistent)
@@ -1,477 +0,0 @@
-/*
- * 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 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
- *
- * 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: aster5.c,v 1.4 2004-04-19 14:48:04 giacomo Exp $
-
- this is a part of the classic Hartik demo Aster.
-
- it is based on test 13 (d), and use the CBS to serve the periodic tasks.
-
- There are not periodic tasks, only CBS tasks.
-
- The tasks use a PI, NPP or NOP mutex to access the video memory.
-
- A flag (LONGSC) is provided to try long and short critical sections.
-
- This demo is really interesting because you can note the behavior of
- the system, and the differences between the various protocols...
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-
-#include <drivers/shark_keyb26.h>
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define PER_MAX 5
-#define APER_MAX 8
-
-#define PER_WCET 6200
-#define APER_WCET 18400
-#define JET_WCET 10000
-#define JET_PERIOD 100000
-
-#define APER_REP 22000
-
-//PID aper_table[APER_MAX];
-
-mutex_t m1;
-
-
-#define PIMUTEX
-//#define NPPMUTEX
-//#define NOPMUTEX
-
-#define LONGSC
-
-#ifdef LONGSC
-#define SOFT_MET 3000 /* 3000 12000 */
-#define CLOCK_WCET 400 /* 200 300*/
-#define ASTER_WCET 400 /* 200 300*/
-#else
-#define SOFT_MET 80000 /* 4500 */
-#define CLOCK_WCET 2000 /* 200*/
-#define ASTER_WCET 2000 /* 200*/
-#endif
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
-#ifdef LONGSC
- mutex_unlock(&m1);
-#endif
-
- // task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- //num_aster--;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
- s[0] = c;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
-}
-
-TASK soft_aster(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 1000 + rand()%9000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
- s[0] = 1;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- // task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aster()
-{
- PID p;
- // HARD_TASK_MODEL m;
- SOFT_TASK_MODEL m_soft;
- int r;
- int x; // adaptive bandwidth...
-
- srand(7);
-
- /* periodic_task_default_model(m,0,PER_WCET);
- periodic_task_def_ctrl_jet(m);
- for (x=0; x<PER_MAX; x++) {
- r = (rand() % 200);
- periodic_task_def_period(m, (64+r)*1000);
- p = task_create("per",asteroide,&m,NULL);
- if (p!=-1) task_activate(p);
- }
- */
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,SOFT_MET);
- soft_task_def_ctrl_jet(m_soft);
-
- x = 128; //64;
-
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- soft_task_def_period(m_soft, (x+r)*1000);
- p = task_create("aaa",soft_aster,&m_soft,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- mutex_unlock(&m1);
- }
- else {
- num_aster++;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- mutex_unlock(&m1);
-
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(2));
-
- mutex_unlock(&m1);
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(2));
- mutex_unlock(&m1);
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- mutex_lock(&m1);
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- mutex_unlock(&m1);
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
- (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
- (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- mutex_lock(&m1);
- if (proc_table[p].task_level == 2)
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³p%-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- // p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
- else
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- // p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)proc_table[p].status, (int)proc_table[p].shadow, (int)proc_table[p].timespec_priority.tv_sec,(int)proc_table[p].timespec_priority.tv_nsec/1000 , (int)last[3], (int)last[4]);
- mutex_unlock(&m1);
- i++;
- }
- }
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3;//,p4,p5,p6;
- HARD_TASK_MODEL m;
- // NRT_TASK_MODEL m_nrt;
- SOFT_TASK_MODEL m_aper;
- SOFT_TASK_MODEL m_soft;
- // int i;
- struct timespec fineprg;
-
-#ifdef PIMUTEX
- PI_mutexattr_t a;
-#endif
-
-#ifdef NPPMUTEX
- NPP_mutexattr_t a;
-#endif
-
-#ifdef NOPMUTEX
- NOP_mutexattr_t a;
-#endif
-
- KEY_EVT emerg;
-
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- emerg.status = KEY_PRESSED;
- keyb_hook(emerg,fine,FALSE);
-
- clear();
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_mit(m,100000);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- // nrt_task_default_model(m_nrt);
- // nrt_task_def_group(m_nrt,1);
- // nrt_task_def_ctrl_jet(m_nrt);
-
-
- soft_task_default_model(m_aper);
- soft_task_def_group(m_aper,1);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- soft_task_default_model(m_soft);
- soft_task_def_period(m_soft,JET_PERIOD);
- soft_task_def_met(m_soft,JET_WCET);
- soft_task_def_group(m_soft,1);
- soft_task_def_ctrl_jet(m_soft);
- soft_task_def_aperiodic(m_soft);
-
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- return 0;
- }
-
- // p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
- p3 = task_create("JetControl",jetcontrol,&m_soft,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- return 0;
- }
- /*
- aperiodic_task_default_model(m_aper,APER_WCET);
- aperiodic_task_def_ctrl_jet(m_aper);
- aperiodic_task_def_system(m_aper);
-
- for (i=0; i<APER_MAX; i++) {
- aperiodic_task_def_level(m_aper, i/4 + 2);
- aperiodic_task_def_arg(m_aper, (i/4 ? 'Û' : '±'));
- aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
- if (aper_table[i] == -1) {
- perror("test7.c(main): Could not create task <aper> ...");
- sys_end();
- l1_exit(-1);
- }
- }
- */
- task_nopreempt();
-
-#ifdef PIMUTEX
- PI_mutexattr_default(a);
-#endif
-
-#ifdef NPPMUTEX
- NPP_mutexattr_default(a);
-#endif
-
-#ifdef NOPMUTEX
- NOP_mutexattr_default(a);
-#endif
-
- mutex_init(&m1, &a);
-
- fineprg.tv_sec = 1800;
- fineprg.tv_nsec = 0;
- group_activate(1);
- return 0;
-}
-
Index: rel_1_4/base/aster6.c
===================================================================
--- rel_1_4/base/aster6.c (revision 1488)
+++ rel_1_4/base/aster6.c (nonexistent)
@@ -1,447 +0,0 @@
-/*
- * 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 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
- *
- * 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: aster6.c,v 1.5 2004-04-21 14:55:05 giacomo Exp $
-
- this is a part of the classic Hartik demo Aster.
-
- it is based on test 17 (h), and the JobControl Task uses an
- SOFT_TASK_MODEL served by a polling server
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-
-#include <drivers/shark_keyb26.h>
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define PER_MAX 5
-#define APER_MAX 8
-
-#define PER_WCET 6200
-#define APER_WCET 18400
-#define JET_WCET 10000
-
-#define APER_REP 22000
-
-PID aper_table[APER_MAX];
-
-mutex_t m1;
-
-
-#define PIMUTEX
-//#define NPPMUTEX
-//#define NOPMUTEX
-
-//#define LONGSC
-
-#ifdef LONGSC
-#define SOFT_MET 3000 /* 12000 */
-#define CLOCK_WCET 200 /* 300*/
-#define ASTER_WCET 200 /* 300*/
-#else
-#define SOFT_MET 80000 /* 4500 */
-#define CLOCK_WCET 2000 /* 200*/
-#define ASTER_WCET 2000 /* 200*/
-#endif
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
-#ifdef LONGSC
- mutex_unlock(&m1);
-#endif
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- //num_aster--;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
- s[0] = c;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
-}
-
-TASK soft_aster(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 1000 + rand()%9000;
-#ifdef LONGSC
- mutex_lock(&m1);
-#endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
-#ifndef LONGSC
- mutex_unlock(&m1);
-#endif
- }
- s[0] = 1;
-#ifndef LONGSC
- mutex_lock(&m1);
-#endif
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aster()
-{
- PID p;
-
- // HARD_TASK_MODEL m;
- SOFT_TASK_MODEL m_soft;
- int r;
- int x; // adaptive bandwidth...
-
- srand(7);
-
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,SOFT_MET);
- soft_task_def_ctrl_jet(m_soft);
-
- x = 128; //64;
-
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- soft_task_def_period(m_soft, (x+r)*1000);
- p = task_create("aaa",soft_aster,&m_soft,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- mutex_unlock(&m1);
- }
- else {
- num_aster++;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- mutex_unlock(&m1);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(3));
-
- mutex_unlock(&m1);
-
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(3));
- mutex_unlock(&m1);
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
- mutex_lock(&m1);
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- mutex_unlock(&m1);
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
- (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
- (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- mutex_lock(&m1);
- if (proc_table[p].task_level == 3)
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- // p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
- else
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- // p, sum/(nact==0 ? 1 : nact), max, nact, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , last[3], last[4]);
- mutex_unlock(&m1);
- i++;
- }
- }
-}
-
-void fine(KEY_EVT *e)
-{
-
- sys_end();
-
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3; //,p4,p5,p6;
- HARD_TASK_MODEL m;
- // NRT_TASK_MODEL m_nrt;
- SOFT_TASK_MODEL m_aper;
- SOFT_TASK_MODEL m_soft;
- // int i;
- struct timespec fineprg;
-
-#ifdef PIMUTEX
- PI_mutexattr_t a;
-#endif
-
-#ifdef NPPMUTEX
- NPP_mutexattr_t a;
-#endif
-
-#ifdef NOPMUTEX
- NOP_mutexattr_t a;
-#endif
-
- KEY_EVT emerg;
-
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- emerg.status = KEY_PRESSED;
- keyb_hook(emerg,fine,FALSE);
-
- clear();
-
- hard_task_default_model(m);
- hard_task_def_mit(m,100000);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- // nrt_task_default_model(m_nrt);
- // nrt_task_def_group(m_nrt,1);
- // nrt_task_def_ctrl_jet(m_nrt);
-
-
- soft_task_default_model(m_aper);
- soft_task_def_group(m_aper,1);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- soft_task_default_model(m_soft);
- soft_task_def_period(m_soft,100000);
- soft_task_def_met(m_soft,JET_WCET);
- soft_task_def_group(m_soft,1);
- soft_task_def_ctrl_jet(m_soft);
- soft_task_def_aperiodic(m_soft);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- return 0;
- }
-
- // p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
- p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
- if (p3 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- return 0;
- }
-
- task_nopreempt();
-
-#ifdef PIMUTEX
- PI_mutexattr_default(a);
-#endif
-
-#ifdef NPPMUTEX
- NPP_mutexattr_default(a);
-#endif
-
-#ifdef NOPMUTEX
- NOP_mutexattr_default(a);
-#endif
-
- mutex_init(&m1, &a);
-
- fineprg.tv_sec = 20;
- fineprg.tv_nsec = 0;
- kern_event_post(&fineprg,(void (*)(void *))fine,NULL);
- group_activate(1);
-
- return 0;
-}
-
Index: rel_1_4/base/aster7.c
===================================================================
--- rel_1_4/base/aster7.c (revision 1488)
+++ rel_1_4/base/aster7.c (nonexistent)
@@ -1,315 +0,0 @@
-/*
- * 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, Massimiliano Giorgi
- *
- * 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: aster7.c,v 1.4 2004-04-21 14:55:05 giacomo Exp $
-
- this is a part of the classic Hartik demo Aster.
-
- it is based on test 10(A), and test the PS with RM.
-
- The JetControl is served by a dedicated Polling Server, too.
-
- There are APER_MAX tasks sleeping, and when an asteroide task finish
- the current activation, it activate also an aperiodic task chosen
- randomly (if the task chosen is already active, the task_activate do
- nothing!)
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-int num_aster = 0;
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define APER_MAX 8
-
-/* Pentium 133 / Celeron 366 */
-#define PER_WCET 25000 /* 7800 */
-#define APER_WCET 5500 /* 1400 */
-#define CLOCK_WCET 500 /* 200 */
-#define ASTER_WCET 500 /* 200 */
-
-#define APER_REP 2200
-
-PID aper_table[APER_MAX];
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- puts_xy(i,y,rand()%15+1,s);
- }
- s[0] = c;
- puts_xy(i,y,rand()%15+1,s);
-
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-TASK aster()
-{
- PID p;
-
- HARD_TASK_MODEL m;
- int r;
- int x; // adaptive bandwidth...
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,PER_WCET);
- hard_task_def_ctrl_jet(m);
-
- x = 200;
-
- srand(7);
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- hard_task_def_arg(m,(void *)((rand() % 7)+1));
- hard_task_def_mit(m, (x+r)*1000);
- p = task_create("aaa",asteroide,&m,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc),errno);
- }
- else {
- num_aster++;
- printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- kern_cli();
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- kern_sti();
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- kern_cli();
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
- kern_sti();
- i++;
- }
- }
-}
-
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3; //,p4,p5,p6;
- HARD_TASK_MODEL m;
- NRT_TASK_MODEL m_nrt;
- SOFT_TASK_MODEL m_aper;
- int i;
-
- KEY_EVT emerg;
-
- clear();
-
- cprintf("Press Alt-x to end the demo...");
-
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- emerg.status = KEY_PRESSED;
- keyb_hook(emerg,fine,FALSE);
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_mit(m,10000);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_group(m_nrt,1);
- nrt_task_def_ctrl_jet(m_nrt);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m,500000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- return 0;
- }
-
- soft_task_default_model(m_aper);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_level(m_aper, 2);
- soft_task_def_group(m_aper,1);
- soft_task_def_aperiodic(m_aper);
- p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
- if (p3 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- return 0;
- }
-
- soft_task_def_wcet(m_aper,APER_WCET);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- for (i=0; i<APER_MAX; i++) {
- soft_task_def_level(m_aper, i/4 + 4);
- soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
- aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
- if (aper_table[i] == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aper> ...");
- sys_end();
- return 0;
- }
- }
-
- group_activate(1);
- return 0;
-}
-
Index: rel_1_4/base/aster8.c
===================================================================
--- rel_1_4/base/aster8.c (revision 1488)
+++ rel_1_4/base/aster8.c (nonexistent)
@@ -1,501 +0,0 @@
-/*
- * 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, Massimiliano Giorgi
- *
- * 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: aster8.c,v 1.4 2004-04-21 14:55:05 giacomo Exp $
-
- Test for Sporadic Server (ss):
-
- this is a part of the classic Hartik demo Aster.
-
- it is based on test 17 (h), and the JobControl Task uses an
- SOFT_TASK_MODEL served by a sporadic server
- There are two "dummy" tasks that increment a counter and print
- the value. One uses a SOFT_TASK_MODEL served by sporadic server,
- the other uses a NRT_TASK_MODEL handled by RR module.
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/ss.h"
-
-#include <drivers/shark_keyb26.h>
-
-int num_aster = 0;
-#define EDF_LEV 1
-#define CBS_LEV 2
-#define SS_LEV 3
-
-#define ASTER_LIM 60
-#define DISPLAY_MAX 8
-#define ASTER_MAX 70
-#define STAT_Y 9
-
-#define PER_MAX 5
-#define APER_MAX 8
-
-#define PER_WCET 16000
-#define APER_WCET 22000
-#define JET_WCET 20000
-
-#define APER_REP 22000
-
-PID aper_table[APER_MAX];
-
-mutex_t m1;
-
-
-#define PIMUTEX
-//#define PCMUTEX
-//#define NPPMUTEX
-//#define NOPMUTEX
-
-#define LONGSC
-
-#ifdef LONGSC
-#define SOFT_MET 12000 /* 12000 */
-#define CLOCK_WCET 300 /* 300*/
-#define ASTER_WCET 300 /* 300*/
-#else
-#define SOFT_MET 5000 /* 4500 */
-#define CLOCK_WCET 2000 /* 200*/
-#define ASTER_WCET 2000 /* 200*/
-#endif
-
-PID p1,p2,p3,p4,p5;
-
-TASK asteroide(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 10000; //8000 + rand()%2000;
- #ifdef LONGSC
- mutex_lock(&m1);
- #endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- #ifndef LONGSC
- mutex_lock(&m1);
- #endif
- puts_xy(i,y,rand()%15+1,s);
- #ifndef LONGSC
- mutex_unlock(&m1);
- #endif
- }
- #ifdef LONGSC
- mutex_unlock(&m1);
- #endif
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- //num_aster--;
-}
-
-TASK aper_asteroid(void *a)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
- int c;
-
- char s[2];
-
- c = (int)a;
- s[0] = '*'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = APER_REP; //8000 + rand()%2000;
- #ifdef LONGSC
- mutex_lock(&m1);
- #endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- #ifndef LONGSC
- mutex_lock(&m1);
- #endif
- puts_xy(i,y,rand()%15+1,s);
- #ifndef LONGSC
- mutex_unlock(&m1);
- #endif
- }
- s[0] = c;
- #ifndef LONGSC
- mutex_unlock(&m1);
- #endif
- mutex_lock(&m1);
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
-}
-
-TASK soft_aster(void)
-{
- int i;
- int y = rand() % 7 + 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = '*'; s[1] = 0;
-
- /*for (;;)*/ {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 1000 + rand()%9000;
- #ifdef LONGSC
- mutex_lock(&m1);
- #endif
- for (j=0; j<load1; j++) {
- s[0] = '*' + rand() % 100;
- #ifndef LONGSC
- mutex_lock(&m1);
- #endif
- puts_xy(i,y,rand()%15+1,s);
- #ifndef LONGSC
- mutex_unlock(&m1);
- #endif
- }
- s[0] = 1;
- #ifndef LONGSC
- mutex_lock(&m1);
- #endif
- //mutex_lock(&m1);
- puts_xy(i,y,rand()%15+1,s);
- mutex_unlock(&m1);
-
- task_activate(aper_table[rand()%APER_MAX]);
- task_endcycle();
-
- mutex_lock(&m1);
- puts_xy(i,y,WHITE," ");
- mutex_unlock(&m1);
- i++;
- }
- }
- num_aster--;
- return 0;
-}
-
-TASK aster()
-{
- PID p;
-
- SOFT_TASK_MODEL m_soft;
- int r;
- int x; // adaptive bandwidth...
-
- srand(7);
-
-
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,SOFT_MET);
- soft_task_def_ctrl_jet(m_soft);
-
- x = 128; //64;
-
- while (1) {
- if (num_aster < ASTER_MAX) {
- r = (rand() % 200);
-
- soft_task_def_period(m_soft, (x+r)*1000);
- p = task_create("aaa",soft_aster,&m_soft,NULL);
- if (p == -1)
- {
- if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u err=%d",
- iq_query_first(&freedesc), errno);
- mutex_unlock(&m1);
- }
- else {
- num_aster++;
- mutex_lock(&m1);
- printf_xy(62,3,WHITE,"adapt=%3u ",x);
- mutex_unlock(&m1);
- task_activate(p);
- x /= 2;
- if (x<50) x = 50;
- }
- }
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(EDF_LEV));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(CBS_LEV));
- printf_xy(62,5,WHITE,"CSss=%6d",SS_availCs(SS_LEV));
- mutex_unlock(&m1);
-
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- mutex_lock(&m1);
- printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
- printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(EDF_LEV));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(CBS_LEV));
- printf_xy(62,5,WHITE,"CSss=%6d",SS_availCs(SS_LEV));
- mutex_unlock(&m1);
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- mutex_lock(&m1);
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- mutex_unlock(&m1);
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
- (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
- (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- mutex_lock(&m1);
- if (proc_table[p].task_level == 2)
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
-// p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
- else
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
- p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
-// p, sum/(nact==0 ? 1 : nact), max, nact, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , last[3], last[4]);
- mutex_unlock(&m1);
- i++;
- task_activate(p3);
- task_endcycle();
- }
- }
-}
-
-void fine(KEY_EVT *e)
-{
-
- sys_end();
-
-}
-
-void mydummyaper(void) {
- int i=0;
- while(1) {
- mutex_lock(&m1);
- printf_xy(1,24,RED,"dummyAPER pid=%d: %d",p4,i++);
- mutex_unlock(&m1);
- task_activate(p4);
- task_endcycle();
- }
-}
-
-void mydummynrt(void) {
- int i=0;
- while(1) {
- mutex_lock(&m1);
- printf_xy(40,24,RED,"dummyNRT pid=%d: %d",p5,i++);
- mutex_unlock(&m1);
- }
-}
-
-int main(int argc, char **argv)
-{
-// PID p1,p2,p5;
- HARD_TASK_MODEL m;
- NRT_TASK_MODEL m_nrt;
- SOFT_TASK_MODEL m_aper;
- SOFT_TASK_MODEL m_soft;
-
- #ifdef PIMUTEX
- PI_mutexattr_t a;
- #endif
-
- #ifdef PCMUTEX
- PC_mutexattr_t a;
- #endif
-
- #ifdef NPPMUTEX
- NPP_mutexattr_t a;
- #endif
-
- #ifdef NOPMUTEX
- NOP_mutexattr_t a;
- #endif
-
-
- KEY_EVT emerg;
-
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- emerg.status = KEY_PRESSED;
- keyb_hook(emerg,fine,FALSE);
-
- clear();
-
- cprintf("Press Alt-x to end the demo...");
-
- hard_task_default_model(m);
- hard_task_def_mit(m,100000);
- hard_task_def_wcet(m,ASTER_WCET);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_group(m_nrt,1);
- nrt_task_def_ctrl_jet(m_nrt);
-
- soft_task_default_model(m_aper);
- soft_task_def_group(m_aper,1);
- soft_task_def_ctrl_jet(m_aper);
- soft_task_def_aperiodic(m_aper);
-
- soft_task_default_model(m_soft);
- soft_task_def_period(m_soft,10000);
- soft_task_def_met(m_soft,JET_WCET);
- soft_task_def_group(m_soft,1);
- soft_task_def_ctrl_jet(m_soft);
- soft_task_def_aperiodic(m_soft);
-
- p1 = task_create("Aster",aster,&m,NULL);
- if (p1 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m,50000);
- hard_task_def_wcet(m,CLOCK_WCET);
- p2 = task_create("Clock",clock,&m,NULL);
- if (p2 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
- sys_end();
- return 0;
- }
-
- p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
- if (p3 == -1) {
- sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
- sys_end();
- return 0;
- }
-
- p4 = task_create("MyDummyAper",(void *(*)(void*))mydummyaper,&m_aper,NULL);
- if (p4 == -1) {
- sys_shutdown_message("Could not create task <MyDummyAper> ...");
- sys_end();
- return 0;
- }
-
- p5 = task_create("MyDummyNRT",(void *(*)(void*))mydummynrt,&m_nrt,NULL);
- if (p5 == -1) {
- sys_shutdown_message("Could not create task <MyDummyNRT> ...");
- sys_end();
- return 0;
- }
-
- #ifdef PIMUTEX
- PI_mutexattr_default(a);
- #endif
-
- #ifdef PCMUTEX
- PC_mutexattr_default(a);
- #endif
-
- #ifdef NPPMUTEX
- NPP_mutexattr_default(a);
- #endif
-
- #ifdef NOPMUTEX
- NOP_mutexattr_default(a);
- #endif
-
- mutex_init(&m1, &a);
-
- group_activate(1);
- return 0;
-}
-
Index: rel_1_4/base/cabs.c
===================================================================
--- rel_1_4/base/cabs.c (revision 1488)
+++ rel_1_4/base/cabs.c (nonexistent)
@@ -1,290 +0,0 @@
-/*
- * 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.7 2004-04-23 07:57:33 giacomo Exp $
- */
-
-/*--------------------------------------------------------------*/
-/* TEST ON CABS */
-/*--------------------------------------------------------------*/
-
-#include <kernel/kern.h>
-#include <modules/cabs.h>
-#include <string.h>
-
-#include <drivers/shark_fb26.h>
-#include <drivers/shark_keyb26.h>
-
-#define NCAB 4 /* max number of CABs */
-#define NCAR 26 /* generated characters */
-
-#define YP 32 /* level of arrows */
-#define R 20 /* task radius */
-#define YY (YP+R+32) /* level of writing */
-#define DELTA (2*R+72) /* total channel hight */
-#define X1 120 /* start column for P1 */
-#define X2 360 /* start column for P2 */
-
-#define XP1 (X1+64) /* X position of task 1 */
-#define XP2 (X2+64) /* X position of task 2 */
-#define XC (XP1+96) /* X position of CAB */
-#define L 52 /* CAB rectangle length */
-
-void my_exit(KEY_EVT *k);
-void draw_channel(int i);
-void create_channel(int i);
-void get_data();
-
-TASK producer(void *arg);
-TASK consumer(void *arg);
-
-char *cname[NCAB] = {"cab1", "cab2", "cab3", "cab4"};
-char *pname1[NCAB] = {"wr1", "wr2", "wr3", "wr4"};
-char *pname2[NCAB] = {"rd1", "rd2", "rd3", "rd4"};
-
-CAB cid[NCAB]; /* CAB identifiers */
-PID p1[NCAB], p2[NCAB]; /* task identifiers */
-
-/* Task Periods */
-TIME t1[NCAB] = {200000, 100000, 300000, 800000};
-TIME t2[NCAB] = {400000, 400000, 150000, 200000};
-
-/* Task WCETS */
-TIME w1[NCAB] = {10000, 10000, 10000, 10000};
-TIME w2[NCAB] = {10000, 10000, 10000, 10000};
-
-/****************************************************************/
-
-/* This function is called when Alt-X is pressed.
-*/
-void my_end(KEY_EVT* e)
-{
- sys_end();
-}
-
-/******************************************************************/
-
-/* This function is called when the system exit correctly after Alt-X.
- It exits from the graphic mode and then it prints a small greeting.
- Note that:
- - The function calls grx_exit, so it must be registered using
- RUNLEVEL_BEFORE_EXIT (RUNLEVEL_AFTER_EXIT does not work because
- at that point the kernel is already returned in real mode!!!)
- - When an exception is raised, the exception handler is called.
- Since the exception handler already exits from the graphic mode,
- this funcion has not to be called. For this reason:
- . we registered byebye using the flag NO_AT_ABORT
- . the exception handler exits using sys_abort; in that way byebye is
- NOT called
-*/
-
-/*--------------------------------------------------------------*/
-/* Main task */
-/*--------------------------------------------------------------*/
-
-/****************************** MAIN ******************************/
-
-int main(int argc, char **argv)
-{
- char c = 0; /* character from keyboard */
-
- grx_clear(BLACK);
-
- grx_text("Press a key [1-4]", 10, 16, rgb16(255,255,255), 0);
- grx_text("to create a pair", 10, 24, rgb16(255,255,255), 0);
- grx_text("ESC to exit demo", 10, 48, rgb16(255,255,255), 0);
-
- while (c != 27) {
- c = keyb_getch(BLOCK);
- if ((c >= '1') && (c <= '1'+NCAB-1))
- create_channel(c-'1');
- }
-
- sys_end();
-
- return 0;
-}
-
-
-/*--------------------------------------------------------------*/
-/* write data in a cab */
-/*--------------------------------------------------------------*/
-
-TASK producer(void *arg)
-{
-int i = (int)arg;
-char c; /* message character */
-char *p; /* pointer to a cab buffer */
-char s[2]; /* string to display */
-int k = 0;
-int x, y;
-int col = rgb16(0,0,255);
-int ybase = YY + i*DELTA;
-
- x = X1;
- y = ybase;
- s[1] = 0;
-
- k = 0;
- while (1) {
- c = 'A' + k;
- p = cab_reserve(cid[i]);
- *p = c;
- cab_putmes(cid[i], p);
-
- s[0] = c;
- k = (k + 1) % NCAR;
- grx_text(s,x,y,col,0);
-
- x += 8;
- if (x >= (X1 + NCAR*8)) {
- x = X1;
- y = y + 8;
- if (y >= ybase+16) {
- y = ybase;
- }
- }
-
- task_endcycle();
- }
-}
-
-/*--------------------------------------------------------------*/
-/* read data from a cab */
-/*--------------------------------------------------------------*/
-
-TASK consumer(void *arg)
-{
-int i = (int)arg;
-char *p;
-char s[2];
-int x, y;
-int col = 13;
-int ybase = YY + i*DELTA;
-
- x = X2;
- y = ybase;
- s[1] = 0;
-
- while (1) {
- p = cab_getmes(cid[i]);
- s[0] = *p - 'A' + 'a';
- cab_unget(cid[i], p);
-
- grx_text(s,x,y,col,0);
- x += 8;
-
- if (x >= (X2 + NCAR*8)) {
- x = X2;
- y = y + 8;
- if (y >= ybase+16) {
- y = ybase;
- col = col % 15 + 1;
- }
- }
- task_endcycle();
- }
-}
-
-/*--------------------------------------------------------------*/
-/* create the two tasks and a channel */
-/*--------------------------------------------------------------*/
-
-void create_channel(int i)
-{
- HARD_TASK_MODEL m;
-
- draw_channel(i);
- cid[i] = cab_create(cname[i], 1, 2);
-
- hard_task_default_model(m);
- hard_task_def_ctrl_jet (m);
- hard_task_def_arg (m, (void *)i);
- hard_task_def_wcet (m, w1[i]);
- hard_task_def_mit (m, t1[i]);
- hard_task_def_usemath (m);
- p1[i] = task_create(pname1[i], producer, &m, NULL);
- if (p1[i] == NIL) {
- sys_shutdown_message("Could not create task <producer>");
- sys_end();
- return;
- }
- task_activate(p1[i]);
-
- hard_task_default_model(m);
- hard_task_def_ctrl_jet (m);
- hard_task_def_arg (m, (void *)i);
- hard_task_def_wcet (m, w2[i]);
- hard_task_def_mit (m, t2[i]);
- hard_task_def_usemath (m);
- p2[i] = task_create(pname2[i], consumer, &m, NULL);
- if (p2[i] == NIL) {
- sys_shutdown_message("Could not create task <consumer>");
- sys_end();
- return;
- }
- task_activate(p2[i]);
-}
-
-/*--------------------------------------------------------------*/
-/* Disegna i processi e il canale di comunicazione */
-/*--------------------------------------------------------------*/
-
-void draw_channel(int i)
-{
-char buffer[32]; /* buffer per sprintf */
-int yc = YP + i*DELTA; /* altezza del canale */
-
- grx_circle(XP1,yc,R,rgb16(255,0,0));
- grx_text("P1",XP1-8,yc-4,rgb16(255,255,255),0);
-
- grx_circle(XP2,yc,R,rgb16(255,0,0));
- grx_text("P2",XP2-8,yc-4,rgb16(255,255,255),0);
-
- grx_rect(XC,yc-R,XC+L,yc+R,rgb16(255,255,255));
- grx_text("CAB",XC+16,yc-4,rgb16(255,255,255),0);
-
- grx_line(XP1+R,yc,XC,yc,rgb16(255,255,255));
- grx_line(XC+L,yc,XP2-R,yc,rgb16(255,255,255));
-
- grx_text("T1 = ms",X1+40,yc+R+16,rgb16(255,255,255),0);
- sprintf(buffer,"%ld", t1[i]);
- grx_text(buffer,X1+88,yc+R+16,rgb16(255,255,255),0);
-
- grx_text("T2 = ms",X2+40,yc+R+16,rgb16(255,255,255),0);
- sprintf(buffer,"%ld", t2[i]);
- grx_text(buffer,X2+88,yc+R+16,rgb16(255,255,255),0);
-}
Index: rel_1_4/base/iaster1.c
===================================================================
--- rel_1_4/base/iaster1.c (revision 1488)
+++ rel_1_4/base/iaster1.c (nonexistent)
@@ -1,99 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: iaster1.c,v 1.2 2003-04-15 10:21:22 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.2 $
- Last update: $Date: 2003-04-15 10:21:22 $
- ------------
-
- System initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- an EDF (Earliest Deadline First) level
- a RR (Round Robin) level
- a Dummy level
-
- It can accept these task models (into () the mandatory fields):
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- NRT_TASK_MODEL at level 1
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/base/srpdemo.c
===================================================================
--- rel_1_4/base/srpdemo.c (revision 1488)
+++ rel_1_4/base/srpdemo.c (nonexistent)
@@ -1,234 +0,0 @@
-/*
- * 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 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: srpdemo.c,v 1.3 2004-04-17 11:36:15 giacomo Exp $
-
- This test verify the correctness of the SRP module.
-
- There are 3 taks, Jh, Jm, Jl that uses 3 mutexes m1, m2, m3
-
- the main task (NRT) creates the three tasks.
-
- Jh with preemption level 3
- starts at t=1.5 sec and lock m3, lock m1, unlock m1, unlock m3
-
- Jm with preemption level 2
- starts at t=0.5 sec and lock m3, lock m2, unlock m2, unlock m3
- then lock and unlock m1
-
- Jl with preemption level 1
- it starts and locks m2
- at t=1 sec it locks m1
- at t=1.5 sec it unlocks m1
- then it unlocks m2, and finally it locks and unlocks m3
-
-
- The example is similar to the scheduling diagram shown at p. 210 of the
- book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
-
-*/
-
-#include "kernel/kern.h"
-
-#include "modules/srp.h"
-
-mutex_t m1,m2,m3;
-
-void startJ(void *a)
-{
- task_activate((PID)a);
-}
-
-TASK Jlobby()
-{
- cprintf("(*) JLobby!!!\n");
- return 0;
-}
-
-TASK Jh()
-{
- PID l;
- HARD_TASK_MODEL m;
- SRP_RES_MODEL r;
-
- cprintf("JH: creating Jy before locking m3\n");
-
- hard_task_default_model(m);
- hard_task_def_mit(m,30000);
- hard_task_def_wcet(m,1000);
- SRP_res_default_model(r,4);
- l = task_create("Jlobby",Jlobby,&m,&r);
- task_activate(l);
-
- mutex_lock(&m3);
- cprintf("JH: locked m3, locking m1\n");
- mutex_lock(&m1);
- cprintf("JH: locked m1, unlocking m1\n");
- mutex_unlock(&m1);
- cprintf("JH: unlocked m1, unlocking m3\n");
- mutex_unlock(&m3);
- cprintf("JH: unlocked m3, end task\n");
- return 0;
-}
-
-
-TASK Jm()
-{
- cprintf("JM: before locking m3\n");
- mutex_lock(&m3);
- cprintf("JM: locked m3, locking m2\n");
- mutex_lock(&m2);
- cprintf("JM: locked m2, unlocking m2\n");
- mutex_unlock(&m2);
- cprintf("JM: unlocked m2, unlocking m3\n");
- mutex_unlock(&m3);
- cprintf("JM: unlocked m3, locking m1\n");
- mutex_lock(&m1);
- cprintf("JM: locked m1, unlocking m1\n");
- mutex_unlock(&m1);
- cprintf("JM: unlocked m1, end task\n");
- return 0;
-}
-
-
-TASK Jl()
-{
- cprintf("JL: before locking m2\n");
- mutex_lock(&m2);
- cprintf("JL: locked m2, waiting to t=1 sec\n");
-
- while (sys_gettime(NULL) < 1000000);
-
- cprintf("JL: t = 1 sec reached, locking m1\n");
- mutex_lock(&m1);
- cprintf("JL: locked m1, waiting to t=2 sec\n");
-
- while (sys_gettime(NULL) < 2000000);
-
- cprintf("JL: t = 2 sec reached, unlocking m1\n");
- mutex_unlock(&m1);
- cprintf("JL: unlocked m1, unlocking m2\n");
-
- mutex_unlock(&m2);
-
- cprintf("JL: unlocked m2, locking m3\n");
- mutex_lock(&m3);
- cprintf("JL: locked m3, unlocking m3\n");
- mutex_unlock(&m3);
- cprintf("JL: unlocked m3, end task\n");
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- struct timespec t;
-
- HARD_TASK_MODEL m;
- PID p0,p1,p2;
-
- SRP_mutexattr_t a;
- SRP_RES_MODEL r;
-
- PI_mutexattr_t a2;
-
- clear();
-
- cprintf("Stack resource Policy demo. It ends after 60 sec\n");
-
- /* ---------------------------------------------------------------------
- Mutex creation
- --------------------------------------------------------------------- */
-
- PI_mutexattr_default(a2);
- SRP_mutexattr_default(a);
- mutex_init(&m1,&a);
- mutex_init(&m2,&a);
- mutex_init(&m3,&a);
-
- /* ---------------------------------------------------------------------
- Task creation
- --------------------------------------------------------------------- */
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 1000000);
- hard_task_def_wcet(m, 80000);
- SRP_res_default_model(r, 3);
- p0 = task_createn("JH", Jh, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1), NULL);
- if (p0 == NIL)
- { cprintf("Can't create JH task...\n"); return 1; }
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 2100000);
- hard_task_def_wcet(m, 80000);
- SRP_res_default_model(r, 2);
- p1 = task_createn("JM", Jm, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1),
- SRP_usemutex(&m2), NULL);
- if (p1 == NIL)
- { cprintf("Can't create JM task...\n"); return 1; }
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 10000000);
- hard_task_def_wcet(m, 3000000);
- SRP_res_default_model(r, 1);
- p2 = task_createn("JL", Jl, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1),
- SRP_usemutex(&m2), NULL);
- if (p2 == NIL)
- { cprintf("Can't create JL task...\n"); return 1; }
-
- /* ---------------------------------------------------------------------
- Event post
- --------------------------------------------------------------------- */
-
- t.tv_sec = 0;
- t.tv_nsec = 500000000;
-
- kern_cli();
- kern_event_post(&t,startJ,(void *)p1);
-
- t.tv_sec = 1;
- kern_event_post(&t,startJ,(void *)p0);
- kern_sti();
-
- task_activate(p2);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 60);
-
- sys_end();
-
- return 0;
-}
Index: rel_1_4/base/imdemo.c
===================================================================
--- rel_1_4/base/imdemo.c (revision 1488)
+++ rel_1_4/base/imdemo.c (nonexistent)
@@ -1,102 +0,0 @@
-/*
- * 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 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: imdemo.c,v 1.3 2004-04-19 14:48:05 giacomo Exp $
-**/
-
-#include "kernel/kern.h"
-
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
- PC_register_module();
- NPP_register_module();
- SRP_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- __call_main__(mb);
-
- return (void *)0;
-
-}
-
Index: rel_1_4/base/iaster3.c
===================================================================
--- rel_1_4/base/iaster3.c (revision 1488)
+++ rel_1_4/base/iaster3.c (nonexistent)
@@ -1,110 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: iaster3.c,v 1.2 2004-04-17 11:36:13 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.2 $
- Last update: $Date: 2004-04-17 11:36:13 $
- ------------
-
- System initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- an EDF (Earliest Deadline First) level
- a RR (Round Robin) level
- a TBS (Total Bandwidth Server) level 0.1 Us
- a TBS (Total Bandwidth Server) level 0.3 Us
- a Dummy level
-
- The TBS bandwidth is TBS_NUM/TBS_DEN
-
-
- It can accept these task models (into () the mandatory fields):
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- NRT_TASK_MODEL at level 1
- SOFT_TASK_MODEL (wcet, periodicity=APERIODIC) at level 2,3
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/tbs.h"
-#include "modules/dummy.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 1200
-
-#define RRTICK 5000
-#define TBS_NUM 1
-#define TBS_DEN 10
-
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- TBS_register_level(TBS_ENABLE_ALL, 0, TBS_NUM, TBS_DEN);
- TBS_register_level(TBS_ENABLE_ALL, 0, TBS_NUM*3, TBS_DEN);
- dummy_register_level();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/base/ego.c
===================================================================
--- rel_1_4/base/ego.c (revision 1488)
+++ rel_1_4/base/ego.c (nonexistent)
@@ -1,203 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: ego.c,v 1.6 2004-04-19 14:48:05 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.6 $
- Last update: $Date: 2004-04-19 14:48:05 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
- *
- * 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
- *
- */
-
-/****************************************************************/
-/* PERIODIC PROCESS TEST */
-/****************************************************************/
-
-#include <kernel/kern.h>
-
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-#define X0 10
-
-/* task periods */
-#define PERIOD_T1 100000
-#define PERIOD_T2 200000
-#define PERIOD_T3 300000
-
-/* X position of the text printed by each task */
-int y[3] = {100, 180, 260};
-
-/* text printed by each task */
-char talk[3][50] = { "I am ego1 and I print a character every 100 ms",
- "I am ego2 and I print a character every 200 ms",
- "I am ego3 and I print a character every 300 ms"};
-
-/***************************************************************/
-
-TASK ego(void *arg)
-{
-int i = (int)arg;
-int leng;
-char s[2];
-int x;
-int j = 0;
-
- /* compute the length of the string to print */
- leng = 0;
- while (talk[i][leng] != 0) leng++;
-
- x = X0;
- s[1] = 0;
- task_endcycle();
-
- while (1) {
- s[0] = talk[i][j];
- grx_text(s,x,y[i],rgb16(255,255,255),0);
- x += 8;
- if (++j == leng) {
- j = 0;
- x = X0;
- y[i] += 8;
- if (y[i]>340) y[i]=100;
- }
- task_endcycle();
- }
-}
-
-
-/****************************************************************/
-
-/* This function is called when Alt-X is pressed.
-*/
-void my_end(KEY_EVT* e)
-{
- sys_end();
-}
-
-/******************************************************************/
-
-/* This function is called when the system exit correctly after Alt-X.
- It exits from the graphic mode and then it prints a small greeting.
- Note that:
- - The function calls grx_exit, so it must be registered using
- RUNLEVEL_BEFORE_EXIT (RUNLEVEL_AFTER_EXIT does not work because
- at that point the kernel is already returned in real mode!!!)
- - When an exception is raised, the exception handler is called.
- Since the exception handler already exits from the graphic mode,
- this funcion has not to be called. For this reason:
- . we registered byebye using the flag NO_AT_ABORT
- . the exception handler exits using sys_abort; in that way byebye is
- NOT called
-*/
-
-/****************************** MAIN ******************************/
-
-int main(int argc, char **argv)
-{
- PID pid1, pid2, pid3;
- KEY_EVT emerg;
- HARD_TASK_MODEL m1, m2, m3;
-
- /* set the keyboard handler to exit correctly */
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- emerg.status = KEY_PRESSED;
- keyb_hook(emerg,my_end,FALSE);
-
- /* a small banner */
- grx_text("EGO Test",8,8,rgb16(255,255,255),0);
- grx_text("Press Alt-X to exit",8,16,rgb16(255,255,255),0);
-
- /* ego1 creation */
- hard_task_default_model(m1);
- hard_task_def_ctrl_jet (m1);
- hard_task_def_arg (m1, (void *)0);
- hard_task_def_wcet (m1, 5000);
- hard_task_def_mit (m1, PERIOD_T1);
- hard_task_def_group (m1,1);
- pid1 = task_create("ego1", ego, &m1, NULL);
- if (pid1 == NIL) {
- sys_shutdown_message("Could not create task <ego1>");
- sys_end();
- return 0;
- }
-
- /* ego2 creation */
- hard_task_default_model(m2);
- hard_task_def_ctrl_jet (m2);
- hard_task_def_arg (m2, (void *)1);
- hard_task_def_wcet (m2, 5000);
- hard_task_def_mit (m2, PERIOD_T2);
- hard_task_def_group (m2,1);
- pid2 = task_create("ego2", ego, &m2, NULL);
- if (pid2 == NIL) {
- sys_shutdown_message("Could not create task <ego2>");
- sys_end();
- return 0;
- }
-
- /* ego3 creation */
- hard_task_default_model(m3);
- hard_task_def_ctrl_jet (m3);
- hard_task_def_arg (m3, (void *)2);
- hard_task_def_wcet (m3, 5000);
- hard_task_def_mit (m3, PERIOD_T3);
- hard_task_def_group (m3,1);
- pid3 = task_create("ego3", ego, &m3, NULL);
- if (pid3 == NIL) {
- sys_shutdown_message("Could not create task <ego3>");
- sys_end();
- return 0;
- }
-
- /* and finally we activate the three threads... */
- group_activate(1);
-
- /*
- now the task main ends, but the system does not shutdown because
- there are the three task ego1, ego2, and ego3 running.
-
- The demo will finish if a Alt-X key is pressed.
- */
-
- return 0;
-}
-
-/****************************************************************/
Index: rel_1_4/base/iaster4.c
===================================================================
--- rel_1_4/base/iaster4.c (revision 1488)
+++ rel_1_4/base/iaster4.c (nonexistent)
@@ -1,182 +0,0 @@
-/*
- * 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 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/rr.h"
-#include "modules/tbs.h"
-#include "modules/cbs.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-#define RRTICK 5000
-#define TBS_NUM 1
-#define TBS_DEN 10
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- TBS_register_level(TBS_ENABLE_ALL, 1, TBS_NUM, TBS_DEN);
- TBS_register_level(TBS_ENABLE_ALL, 1, TBS_NUM*3, TBS_DEN);
- CBS_register_level(CBS_ENABLE_ALL, 1);
-
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
Index: rel_1_4/base/preempt.c
===================================================================
--- rel_1_4/base/preempt.c (revision 1488)
+++ rel_1_4/base/preempt.c (nonexistent)
@@ -1,149 +0,0 @@
-/*
- * 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 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: preempt.c,v 1.3 2004-04-19 14:48:05 giacomo Exp $
-
- CBS test with preemption disabling
-
-*/
-
-#include "kernel/kern.h"
-
-void *periodic(void *arg)
-{
- int i;
- int y = (int)arg;
-
- for (i = 19; i < 60; i++) {
- puts_xy(i,y,7,"*");
-
- task_endcycle();
- }
-
- cprintf("Periodic: Task %d end.\n", exec_shadow);
-
- return 0;
-}
-
-void *blocker(void *arg)
-{
- struct timespec t;
-
- task_nopreempt();
- cprintf("Blocker: Task nopreempt\n");
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 5);
-
- cprintf("Blocker: Task preempt\n");
- task_preempt();
-
- cprintf("Blocker: end\n");
-
- return 0;
-}
-
-
-
-int main(int argc, char **argv)
-{
- struct timespec t;
- NRT_TASK_MODEL m;
- SOFT_TASK_MODEL m_aper;
- PID p;
-
- clear();
- cprintf("Preemption Test.\n");
- cprintf("Start time: two periodic tasks and a blocker are created and activated.\n");
- cprintf("2 seconds : blocker calls task_nopreempt.\n");
- cprintf("5 seconds : task_preempt is called.\n");
- cprintf(" The blocked task exec its pending activations.\n");
- cprintf("10 seconds: the test stops.\n");
- puts_xy(1,20,7,"save task:");
- puts_xy(1,21,7,"skip task:");
-
- nrt_task_default_model(m);
-
- soft_task_default_model(m_aper);
- soft_task_def_met(m_aper,10000);
- soft_task_def_period(m_aper,200000);
- soft_task_def_group(m_aper,1);
- soft_task_def_arg(m_aper, (void *)20);
- soft_task_def_periodic(m_aper);
-
- p = task_create("save", periodic, &m_aper, NULL);
- if (p == NIL)
- {
- sys_shutdown_message("Can't create save task...\n");
- sys_end();
- }
-
- soft_task_def_skip_arrivals(m_aper);
- soft_task_def_arg(m_aper, (void *)21);
-
- p = task_create("skip", periodic, &m_aper, NULL);
- if (p == NIL)
- {
- sys_shutdown_message("Can't create skip task...\n");
- sys_end();
- }
-
- p = task_create("blocker", blocker, &m, NULL);
- if (p == NIL)
- {
- sys_shutdown_message("Can't create blocker task...\n");
- sys_end();
- }
-
- cprintf("main : save & skip tasks activated.\n");
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 2);
-
- cprintf("main : blocker activated.\n");
- task_activate(p);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- cprintf("main : End!!!\n");
-
- return 0;
-}
Index: rel_1_4/base/ihello.c
===================================================================
--- rel_1_4/base/ihello.c (revision 1488)
+++ rel_1_4/base/ihello.c (nonexistent)
@@ -1,95 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: ihello.c,v 1.1 2002-10-28 08:13:37 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1 $
- Last update: $Date: 2002-10-28 08:13:37 $
- ------------
-
- The simplest initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- a RR (Round Robin) level
- a Dummy level
-
- It can accept these task models:
-
- NRT_TASK_MODEL at level 0
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 300
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/base/iaster6.c
===================================================================
--- rel_1_4/base/iaster6.c (revision 1488)
+++ rel_1_4/base/iaster6.c (nonexistent)
@@ -1,226 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: iaster6.c,v 1.4 2004-05-24 17:20:44 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.4 $
- Last update: $Date: 2004-05-24 17:20:44 $
- ------------
-
- System initialization file
-
- h3pips.c
-
- These functions register the following levels:
-
- an EDF (Earliest Deadline First) level
- a RR (Round Robin) level
- a CBS (Costant Bandwidth Server) level
- a PS (Polling Server) level
- a Dummy level
-
- It can accept these task models:
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- NRT_TASK_MODEL at level 1
- SOFT_TASK_MODEL (met, period) at level 2
- SOFT_TASK_MODEL (periodicity=APERIODIC) at level 3
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/ps.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- PS_register_level(2 /*PS_ENABLE_ALL_EDF*/,1,500,100000);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
- PC_register_module();
- NPP_register_module();
- SRP_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-
Index: rel_1_4/base/iaster7.c
===================================================================
--- rel_1_4/base/iaster7.c (revision 1488)
+++ rel_1_4/base/iaster7.c (nonexistent)
@@ -1,214 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: iaster7.c,v 1.4 2004-05-24 17:20:45 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.4 $
- Last update: $Date: 2004-05-24 17:20:45 $
- ------------
-
- System initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register a set of scheduling modules, in a fixed or
- dynamic priority way...
-
- It can accept these task models:
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- SOFT_TASK_MODEL (periodicity=APERIODIC) at level 1
- NRT_TASK_MODEL at level 2
- SOFT_TASK_MODEL (periodicity=APERIODIC, wcet (only if TBS) ) at level 3,4
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/tbs.h"
-
-#include "modules/rm.h"
-#include "modules/rr.h"
-#include "modules/ps.h"
-
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- RM_register_level(RM_ENABLE_ALL);
- PS_register_level(PS_ENABLE_ALL_RM,1,1000,100000);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- PS_register_level(4,1,10000,100000);
- PS_register_level(4,1,30000,100000);
-
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-
-
-
Index: rel_1_4/base/aster.c
===================================================================
--- rel_1_4/base/aster.c (revision 1488)
+++ rel_1_4/base/aster.c (nonexistent)
@@ -1,383 +0,0 @@
-/*
- * 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 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
- *
- * 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: aster.c,v 1.4 2004-04-18 19:46:29 giacomo Exp $
-
- Author: Gerardo Lamastra
- Giuseppe Lipari
- Date: 1/10/96
-
- File: Aster.C
- Revision: 1.6
-
-*/
-
-/*
- Well, this is only a stupid demo which intend to show many
- HARTIK+ capabilities; the application is structured in the followig
- way: there is an ASTER task wich randomly creates some ASTEROID tasks
- which are displayed into the first window; each task is HARD/PERIODIC
- and auto-kills itself when it reaches the window end!
- An other couple of tasks, TITLE & PUT give an example of port
- communication facility; the server task creates the port, the client
- task connect to it and uses the server to accomplish some stuff.
- Port can be declared READ/WRITE and can model ONE-TO-ONE communication
- or MANY-TO-ONE communication.
- Finally a second couple of tasks realizes a communiation through CABs;
- each time a key is pressed, the ascii code is posted into the CAB by the
- CCC task while the second task, WRITE, displays it on the screen and
- perform other silly actions.
- Finally a CLOCK task is implemented to test system clock.
- Please note that usually the HARTIK+ application is made up of a task
- group which interacts among them, while the main() function, which
- became a task itself when the kernel is activated, is suspended until
- the system is ready to terminate; the MAIN task can also be used to make
- other background activities, but it should not be killed; when the
- application terminates, the control is passed to MAIN which kills
- everybody, shut down the system and can handle other operations using
- the services available with the previou operating system (I.E. the DOS).
- If you need to manage sudden abort/exception you should install your own
- exception handler and raise it through the exc_raise() primitive to
- make the system abort safely!
- Remember that the exit functions posted through sys_atexit() will be
- executed in both cases, to allow clean system shutdown.
-*/
-
-#include <kernel/kern.h>
-#include <modules/sem.h>
-#include <modules/hartport.h>
-#include <modules/cabs.h>
-#include <string.h>
-
-#include <drivers/shark_keyb26.h>
-
-//#define __VPAGING__
-
-#include <drivers/crtwin.h>
-
-int num_aster = 0;
-#define ASTER_LIM 67
-
-CAB cc;
-BYTE esc = FALSE;
-
-TASK asteroide(void)
-{
- int i = 1;
- int y = rand() % 7 + 1;
- while (i < ASTER_LIM) {
- puts_xy(i,y,WHITE,"*");
- task_endcycle();
-
- puts_xy(i,y,WHITE," ");
- i++;
- }
- num_aster--;
- return 0;
-}
-
-DWORD taskCreated = 0;
-
-TASK aster(void)
-{
- PID p;
- SOFT_TASK_MODEL m_soft;
- int r;
- WIN w;
-
- win_init(&w,0,0,ASTER_LIM,8);
- win_frame(&w,BLACK,WHITE,"Asteroids",2);
-
- soft_task_default_model(m_soft);
- soft_task_def_met(m_soft,2000);
- soft_task_def_ctrl_jet(m_soft);
-
- srand(7);
- while (1) {
- if (num_aster < 5) {
- r = (rand() % 50) - 25;
- soft_task_def_arg(m_soft,(void *)((rand() % 7)+1));
- soft_task_def_period(m_soft,(50 + r)*1000);
- p = task_create("aaa",asteroide,(TASK_MODEL *)&m_soft,NULL);
- taskCreated++;
- task_activate(p);
- num_aster++;
- }
-
- task_endcycle();
- }
-}
-
-TASK clock()
-{
- WIN w;
- int s = 0, m = 0;
-
- win_init(&w,68,0,11,2);
- win_frame(&w,BLACK,WHITE,"Clk",1);
-
- while(1) {
- printf_xy(70,1,WHITE,"%2d : %2d",m,s);
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(70,1,WHITE,"%2d : %2d",m,s);
- task_endcycle();
- }
-}
-
-TASK title()
-{
- PORT t;
- WIN w;
- int i,pos = 77;
- char msg[85],tmp[85],ss[2];
- BYTE c;
-
- win_init(&w,0,9,79,2);
- win_frame(&w,BLACK,WHITE,"Title",2);
-
- for (i=0; i < 77; i++) msg[i] = ' ';
- msg[77] = 0;
-
- t = port_connect("title",1,STREAM,READ);
-
- while (1) {
- port_receive(t,&c,BLOCK);
- ss[0] = c;
- ss[1] = 0;
- strcat(msg,ss);
- puts_xy(1,10,WHITE,msg);
- pos++;
- if (pos > 77) {
- strcpy(tmp,&(msg[1]));
- tmp[pos-1] = 0;
- pos -= 1;
- strcpy(msg,tmp);
- }
- task_endcycle();
- }
-}
-
-#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 "\
- " "\
- "Programmers : Gerardo Lamastra (lamastra@sssup2.sssup.it) "\
- " Giuseppe Lipari (lipari@sssup2.sssup.it) "\
- "Research coordinator: Giorgio Buttazzo (giorgio@sssup1.sssup.it)"\
- " "\
- " "\
- " "
-
-static char GreetMsg[1600];
-
-TASK put(void)
-{
- PORT p;
-
- strcpy(GreetMsg,STR);
-
- p = port_create("title",strlen(GreetMsg),1,STREAM,WRITE);
- while(1) {
- port_send(p,GreetMsg,BLOCK);
- task_endcycle();
- }
-}
-
-TASK ccc(void)
-{
- WIN w;
- char *m;
-
- win_init(&w,68,3,10,3);
- win_frame(&w,BLACK,WHITE,"CCC",2);
- puts_xy(70,4,WHITE,"Cab");
-
- while(1) {
- m = cab_getmes(cc);
- puts_xy(72,5,WHITE,m);
- cab_unget(cc,m);
- task_endcycle();
- }
-}
-
-
-TASK write_keyb()
-{
- BYTE c;
- char *msg;
-
- while (1) {
- c = keyb_getchar();
- if (c == ESC) {
- esc = TRUE;
- task_endcycle();
- }
- else {
-#ifdef __VPAGING__
- if (c == 's') {
- if (get_visual_page() == 0) set_visual_page(1);
- else if (get_visual_page() == 1) set_visual_page(0);
- }
-#endif
- msg = cab_reserve(cc);
- msg[0] = c;
- msg[1] = 0;
- cab_putmes(cc,msg);
- }
- }
-}
-
-#define DELTA 200000.0
-double carico(double rif,BYTE init)
-{
- double i;
- DWORD t1 = 0,t2 = 1000;
- double u;
-
- i = 0.0;
- do {
- i += 1;
- } while (i <= DELTA);
-
- u = i / ((double) (t2 - t1));
-
- if (init) return u;
- else return (1.0 - u/rif);
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3,p4,p5,p6;
-
- HARD_TASK_MODEL m_per;
- SOFT_TASK_MODEL m_soft;
- NRT_TASK_MODEL m_nrt;
-
- struct timespec t;
-
-#ifdef __VPAGING__
- set_active_page(1);
- set_visual_page(1);
-#endif
-
- CRSR_OFF();
- clear();
- puts_xy(0,20,WHITE,"Press ESC to exit demo.");
- cc = cab_create("Cab",2,2);
-
- soft_task_default_model(m_soft);
- soft_task_def_period(m_soft,500000);
- soft_task_def_met(m_soft,1000);
- soft_task_def_group(m_soft, 1);
- p1 = task_create("Aster",aster,&m_soft,NULL);
- if (p1 == -1) {
- perror("Aster.C(main): Could not create task <aster>");
- sys_abort(-1);
- }
-
- hard_task_default_model(m_per);
- hard_task_def_mit(m_per,500000);
- hard_task_def_wcet(m_per,1000);
- hard_task_def_group(m_per, 1);
- p2 = task_create("Clock",clock,&m_per,NULL);
- if (p2 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <Clock>");
- sys_end();
- return 0;
- }
-
- soft_task_def_period(m_soft, 50000);
- p3 = task_create("Title",title,&m_soft, NULL);
- if (p3 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <Title>");
- sys_end();
- return 0;
- }
-
- soft_task_def_period(m_soft, 1000000);
- p4 = task_create("Put",put,&m_soft, NULL);
- if (p4 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <Put>");
- sys_end();
- return 0;
- }
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_group(m_nrt, 1);
- p5 = task_create("Write",write_keyb,&m_nrt,NULL);
- if (p5 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <Write>");
- sys_end();
- return 0;
- }
-
- hard_task_def_mit(m_per, 50000);
- p6 = task_create("CabTask",ccc,&m_per,NULL);
- if (p6 == -1) {
- sys_shutdown_message("Aster.C(main): Could not create task <CabTask>\n");
- sys_end();
- return 0;
- }
-
- group_activate(1);
-
- while (!esc) {
- sys_gettime(&t);
- printf_xy(0,21,WHITE,"Clock : %-9ds %-9dns",(int)t.tv_sec, (int)t.tv_nsec);
- }
-
- group_kill(1);
- clear();
- CRSR_STD();
-#ifdef __VPAGING__
- set_active_page(0);
- set_visual_page(0);
-#endif
-
- sys_end();
-
- return 0;
-
-}
-
Index: rel_1_4/base/iaster8.c
===================================================================
--- rel_1_4/base/iaster8.c (revision 1488)
+++ rel_1_4/base/iaster8.c (nonexistent)
@@ -1,228 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: iaster8.c,v 1.4 2004-05-24 17:20:45 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.4 $
- Last update: $Date: 2004-05-24 17:20:45 $
- ------------
-
- System initialization file
-
- h3piss.c
-
- These functions register the following levels:
-
- an EDF (Earliest Deadline First) level
- a CBS (Costant Bandwidth Server) level
- a SS (Sporadic Server) level
- a RR (Round Robin) level
- a Dummy level
-
- It can accept these task models:
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- SOFT_TASK_MODEL (met, period) at level 1
- SOFT_TASK_MODEL (periodicity=APERIODIC) at level 2
- NRT_TASK_MODEL at level 3
-
-**/
-
-/*
- * Copyright (C) 2000 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
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/rm.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/ss.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ system tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- SS_register_level(SS_ENABLE_GUARANTEE_EDF,1,5000,20000);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- PC_register_module();
- PI_register_module();
- NPP_register_module();
- SRP_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-
-
-
Index: rel_1_4/base/pcidemo.c
===================================================================
--- rel_1_4/base/pcidemo.c (revision 1488)
+++ rel_1_4/base/pcidemo.c (nonexistent)
@@ -1,45 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- *
- * 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
- *
-*/
-
-#include "kernel/kern.h"
-#include "unistd.h"
-
-int main (int argc, char *argv[])
-{
-
- cprintf("Init Done...\n");
-
- sleep(5);
-
- return 0;
-
-}
Index: rel_1_4/base/sig.c
===================================================================
--- rel_1_4/base/sig.c (revision 1488)
+++ rel_1_4/base/sig.c (nonexistent)
@@ -1,168 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: sig.c,v 1.3 2003-01-07 17:10:15 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.3 $
- Last update: $Date: 2003-01-07 17:10:15 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
- *
- * 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
- *
- */
-
-/*
- Test Number 5:
-
- this test is a simple main() function with one other task
-
- This test can be useful to test functions like:
-
- sys_gettime
- sigemptyset
- sigaddset
- hartik_deliver_pending_signals
- sys_end
- task_sigmask
- sigaction
- sigqueue
- task_signal
-*/
-
-#include "kernel/kern.h"
-
-
-TASK goofy(void *arg)
-{
- struct timespec t;
-
- cprintf("Goofy: waiting 2 secs...\n");
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 2); // wait until 2 sec
-
- cprintf("Goofy: ok, I'm ready :-)\n");
-
- return 0;
-}
-
-void catchit_RT(int signo, siginfo_t *info, void *extra)
-{
- cprintf("RT signal: Current Running Task = %d signo=%d code=%d value=%d from pid=%d\n",
- exec_shadow,
- info->si_signo, info->si_code,
- info->si_value.sival_int, info->si_task);
-}
-
-void catchit(int signo)
-{
- cprintf("RT signal: Current Running Task = %d signo=%d\n",
- exec_shadow, signo);
-}
-
-int main(int argc, char **argv)
-{
- struct timespec t;
- NRT_TASK_MODEL m;
- PID p2;
-
- sigset_t newmask;
- sigset_t oldmask;
- struct sigaction action;
- union sigval sval;
-
- clear();
-
- /* Set the signal action */
- action.sa_flags = SA_SIGINFO;
- action.sa_sigaction = catchit_RT;
- action.sa_handler = 0;
- action.sa_mask = 0;
-
- if (sigaction(SIGUSR1, &action, NULL) == -1) {
- perror("Error using sigaction.");
- return -1;
- }
-
- action.sa_flags = 0;
- action.sa_handler = (void (*)(int))catchit;
-
- if (sigaction(SIGILL, &action, NULL) == -1) {
- perror("Error using sigaction.");
- return -1;
- }
-
- /* create another task */
- nrt_task_default_model(m);
- nrt_task_def_group(m,1);
-
- p2 = task_create("goofy", goofy, &m, NULL);
- if (p2 == NIL)
- {
- cprintf("Can't create goofy task...\n");
- return 1;
- }
-
- group_activate(1);
-
- /* block the signal for the main task */
- sigemptyset(&newmask);
- sigaddset(&newmask,SIGUSR1);
- task_sigmask(SIG_BLOCK, &newmask, &oldmask); // pthread_sigmask
-
- cprintf("main: Sending 2 signals ...\n");
-
- sval.sival_int = 123;
- sigqueue(0,SIGUSR1,sval);
- sval.sival_int = 999;
- sigqueue(0,SIGUSR1,sval);
-
- cprintf("main: Now sending a signal to myself,"
- " then wait until 4 secs...\n");
-
- task_signal(0 /* main */, SIGILL); // pthread_kill
-
- NULL_TIMESPEC(&t);
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 4); // wait until 4 s
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: rel_1_4/base/semdemo.c
===================================================================
--- rel_1_4/base/semdemo.c (revision 1488)
+++ rel_1_4/base/semdemo.c (nonexistent)
@@ -1,105 +0,0 @@
-/*
- * 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 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: semdemo.c,v 1.2 2004-04-17 11:36:15 giacomo Exp $
-
- This is a really simple semaphore demo.
-
-*/
-
-#include "kernel/kern.h"
-
-#include "semaphore.h"
-
-sem_t s;
-
-void *goofy(void *a)
-{
- struct timespec t;
- char *n = proc_table[exec_shadow].name;
-
- cprintf("Task %s: Locking semaphore...\n", n);
-
- sem_wait(&s);
- cprintf("Task %s: Semaphore locked...\n", n);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < (int)a);
-
- cprintf("Task %s: Unlocking semaphore...\n", n);
-
- sem_post(&s);
-
- cprintf("Task %s: Semaphore unlocked...\n", n);
-
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- NRT_TASK_MODEL m;
- PID p2,p3;
-
- struct timespec t;
-
- nrt_task_default_model(m);
- nrt_task_def_group(m,1);
-
- nrt_task_def_arg(m,(void *)1);
- p2 = task_create("goofy1", goofy, &m, NULL);
- if (p2 == NIL)
- { cprintf("Can't create goofy1 task...\n"); return 1; }
-
- nrt_task_def_arg(m,(void *)2);
- p3 = task_create("goofy2", goofy, &m, NULL);
- if (p3 == NIL)
- { cprintf("Can't create goofy2 task...\n"); return 1; }
-
- cprintf("Initializing semaphore...\n");
-
- sem_init(&s,0,1);
-
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-}
Index: rel_1_4/base/time.c
===================================================================
--- rel_1_4/base/time.c (revision 1488)
+++ rel_1_4/base/time.c (nonexistent)
@@ -1,69 +0,0 @@
-/*
- * 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 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: time.c,v 1.1 2002-10-28 08:13:37 pj Exp $
- *
- * Timer correctness test
- */
-
-#include "kernel/kern.h"
-
-#define NT 10
-
-int main(int argc, char **argv)
-{
- struct timespec t[NT];
- int i;
-
- cprintf("Timer correctness test (1 second).\n");
-
- for (i=0; i<NT; i++) NULL_TIMESPEC(&t[i]);
-
- do {
- for (i=0; i<NT-1; i++) t[i+1] = t[i];
-
- sys_gettime(&t[0]);
-
- if (TIMESPEC_A_LT_B(&t[0],&t[1])) {
- for (i=0; i<NT; i++)
- cprintf("%d %ld\n",i, t[i].tv_nsec);
- sys_end();
- }
- } while (t[0].tv_sec < 1);
-
- return 0;
-}
-
Index: rel_1_4/base/intsem.c
===================================================================
--- rel_1_4/base/intsem.c (revision 1488)
+++ rel_1_4/base/intsem.c (nonexistent)
@@ -1,109 +0,0 @@
-/*
- * 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: intsem.c,v 1.2 2004-04-17 11:36:14 giacomo Exp $
-
- this test is a simple main() function with one other task.
-
- This test verify the correctness of the internal_sem functions.
-
-*/
-
-#include "kernel/kern.h"
-
-#include <kernel/int_sem.h>
-
-internal_sem_t s;
-
-TASK pippo(void *a)
-{
- int i=0;
- struct timespec t;
-
- do {
- sys_gettime(&t);
-
- if (i==0 && t.tv_sec == (int)a) {
- i = 1;
- cprintf("before internal_sem_wait %d\n",(int)a);
- internal_sem_wait(&s);
- cprintf("after internal_sem_wait %d\n",(int)a);
- }
-
- if (i==1 && t.tv_sec == 2+(int)a) {
- i = 2;
- cprintf("before internal_sem_post %d\n",(int)a);
- internal_sem_post(&s);
- cprintf("after internal_sem_post %d\n",(int)a);
- return 0;
- }
-
-
- } while (1);
-}
-
-int main(int argc, char **argv)
-{
- NRT_TASK_MODEL m;
- PID p2,p3;
-
- struct timespec t;
-
- nrt_task_default_model(m);
- nrt_task_def_group(m,1);
-
- nrt_task_def_arg(m,(void *)1);
- p2 = task_create("pippo1", pippo, &m, NULL);
- if (p2 == NIL)
- { cprintf("Can't create pippo1 task...\n"); return 1; }
-
- nrt_task_def_arg(m,(void *)2);
- p3 = task_create("pippo2", pippo, &m, NULL);
- if (p3 == NIL)
- { cprintf("Can't create pippo2 task...\n"); return 1; }
-
- internal_sem_init(&s,1);
-
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-}
Index: rel_1_4/base/mdemo.c
===================================================================
--- rel_1_4/base/mdemo.c (revision 1488)
+++ rel_1_4/base/mdemo.c (nonexistent)
@@ -1,189 +0,0 @@
-/*
- * 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 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: mdemo.c,v 1.2 2004-04-17 11:36:14 giacomo Exp $
-
- This test verify the correctness of the NOP module. It works with the
- PI, PC, SRP module, too.
-
- The test uses one mutex
-
- the main task (NRT) creates three tasks.
-
- J1 with PC priority 0
- starts at t=0.5 sec and lock m0
-
- J2 with PC priority 1
- starts at t=1 sec and doesn't lock any mutex
-
- J3 with PC priority 2
- it starts and locks m0
- at t=2 sec it unlocks m1
-
-
- The example is similar to the scheduling diagram shown at p. 188 of the
- book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
-
-*/
-
-#include "kernel/kern.h"
-#include "modules/srp.h"
-
-mutex_t m0;
-
-
-void startJ(void *a)
-{
- task_activate((PID)a);
-}
-
-TASK j1()
-{
- cprintf("J1: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J1: locked m0\n");
- mutex_unlock(&m0);
- cprintf("J1: unlocked m0, end task\n");
- return 0;
-}
-
-
-TASK j2()
-{
- cprintf("J2: waiting t=1.5 sec\n");
-
- while (sys_gettime(NULL) < 1500000);
-
- cprintf("J2: end task\n");
- return 0;
-}
-
-
-TASK j3()
-{
- cprintf("J3: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J3: locked m0, waiting to t=2 sec\n");
-
- while (sys_gettime(NULL) < 2000000);
-
- cprintf("J3: t = 1 sec reached, unlocking m0\n");
- mutex_unlock(&m0);
- cprintf("J3: unlocked m0, end task\n");
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- struct timespec t;
-
- HARD_TASK_MODEL m;
- PID p0,p1,p2;
-
- PC_mutexattr_t a;
- PI_mutexattr_t a2;
- NOP_mutexattr_t a3;
- SRP_mutexattr_t a4;
- NPP_mutexattr_t a5;
-
- PC_RES_MODEL r;
- SRP_RES_MODEL srp;
-
- /* ---------------------------------------------------------------------
- Mutex creation
- --------------------------------------------------------------------- */
-
- PC_mutexattr_default(a,0);
- PI_mutexattr_default(a2);
- NOP_mutexattr_default(a3);
- SRP_mutexattr_default(a4);
- NPP_mutexattr_default(a5);
- mutex_init(&m0,&a4);
-
- /* ---------------------------------------------------------------------
- Task creation
- --------------------------------------------------------------------- */
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,20000);
- hard_task_def_mit(m,10000000);
- PC_res_default_model(r,0);
- SRP_res_default_model(srp,3);
- p0 = task_createn("J1", j1, (TASK_MODEL *)&m, &r, &srp, SRP_usemutex(&m0), NULL);
- if (p0 == NIL)
- { cprintf("Can't create J1 task...\n"); return 1; }
-
- hard_task_def_wcet(m,1600000);
- hard_task_def_mit(m,21000000);
- PC_res_default_model(r,1);
- SRP_res_default_model(srp,2);
- p1 = task_createn("J2", j2, (TASK_MODEL *)&m, &r, &srp, NULL);
- if (p1 == NIL)
- { cprintf("Can't create J2 task...\n"); return 1; }
-
- hard_task_def_wcet(m,3000000);
- hard_task_def_mit(m,100000000);
- PC_res_default_model(r,2);
- SRP_res_default_model(srp,1);
- p2 = task_createn("J3", j3, (TASK_MODEL *)&m, &r, &srp, SRP_usemutex(&m0), NULL);
- if (p2 == NIL)
- { cprintf("Can't create J3 task...\n"); return 1; }
-
-
- /* ---------------------------------------------------------------------
- Event post
- --------------------------------------------------------------------- */
-
- t.tv_sec = 0;
- t.tv_nsec = 500000000;
-
- kern_cli();
- kern_event_post(&t,startJ,(void *)p0);
-
- t.tv_sec = 1;
- kern_event_post(&t,startJ,(void *)p1);
- kern_sti();
-
- task_activate(p2);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 60);
-
- sys_end();
-
- return 0;
-}
Index: rel_1_4/base/initfile.c
===================================================================
--- rel_1_4/base/initfile.c (revision 1488)
+++ rel_1_4/base/initfile.c (nonexistent)
@@ -1,164 +0,0 @@
-/*
- * Project: S.Ha.R.K
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- PI_register_module();
- PC_register_module();
- NPP_register_module();
- SRP_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
Index: rel_1_4/base/hello.c
===================================================================
--- rel_1_4/base/hello.c (revision 1488)
+++ rel_1_4/base/hello.c (nonexistent)
@@ -1,53 +0,0 @@
-/*
- * 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 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: hello.c,v 1.1 2002-10-28 08:13:37 pj Exp $
-
- hello.c:
-
- This test is a simple hello world function.
-
-*/
-
-#include "kernel/kern.h"
-
-int main(int argc, char **argv)
-{
- cprintf("Hello, world!\n");
-
- return 0;
-}
Index: rel_1_4/base/pcdemo.c
===================================================================
--- rel_1_4/base/pcdemo.c (revision 1488)
+++ rel_1_4/base/pcdemo.c (nonexistent)
@@ -1,203 +0,0 @@
-/*
- * 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 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: pcdemo.c,v 1.3 2004-04-17 11:36:14 giacomo Exp $
-
- This test verify the correctness of the PC module.
-
- The test uses 3 mutexes
- m0 with ceiling 0
- m1 with ceiling 0
- m2 with ceiling 1
-
- the main task (NRT) creates three tasks.
-
- J0 with PC priority 0
- starts at t=1.5 sec and lock m0, unlock m0, then lock and unlock m1
-
- J1 with PC priority 1
- starts at t=0.5 sec and try to lock m2
-
- J2 with PC priority 2
- it starts and locks m2
- at t=1 sec it locks m1
- at t=1.5 sec it unlocks m1
-
-
- The example is similar to the scheduling diagram shown at p. 197 of the
- book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
-
-*/
-
-#include "kernel/kern.h"
-
-mutex_t m0,m1,m2;
-
-void startJ(void *a)
-{
- task_activate((PID)a);
-}
-
-TASK j0()
-{
- cprintf("J0: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J0: locked m0\n");
- mutex_unlock(&m0);
- cprintf("J0: unlocked m0, locking m1\n");
-
- mutex_lock(&m1);
- cprintf("J0: locked m1\n");
- mutex_unlock(&m1);
- cprintf("J0: unlocked m1, end task\n");
- return 0;
-}
-
-
-TASK j1()
-{
- cprintf("J1: before locking m2\n");
- mutex_lock(&m2);
- cprintf("J1: locked m2\n");
- mutex_unlock(&m2);
- cprintf("J1: unlocked m2, end task\n");
- return 0;
-}
-
-
-TASK j2()
-{
- cprintf("J2: before locking m2\n");
- mutex_lock(&m2);
- cprintf("J2: locked m2, waiting to t=1 sec\n");
-
- while (sys_gettime(NULL) < 1000000);
-
- cprintf("J2: t = 1 sec reached\n");
- mutex_lock(&m1);
- cprintf("J2: locked m1, waiting to t=2 sec\n");
-
- while (sys_gettime(NULL) < 2000000);
-
- cprintf("J2: t = 2 sec reached\n");
- mutex_unlock(&m1);
- cprintf("J2: unlocked m1\n");
-
- mutex_unlock(&m2);
- cprintf("J2: unlocked m2, end task\n");
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- struct timespec t;
-
- HARD_TASK_MODEL m;
- PID p0,p1,p2;
-
- PC_mutexattr_t a;
- PI_mutexattr_t a2;
- PC_RES_MODEL r;
-
- clear();
-
- cprintf("Priority Ceiling demo. It ends after 60 sec\n");
-
- /* ---------------------------------------------------------------------
- Task creation
- --------------------------------------------------------------------- */
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 1000000);
- hard_task_def_wcet(m, 20000);
- PC_res_default_model(r,0);
- p0 = task_create("J0", j0, &m, &r);
- if (p0 == NIL)
- { cprintf("Can't create J0 task...\n"); return 1; }
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 2100000);
- hard_task_def_wcet(m, 20000);
- PC_res_default_model(r,1);
- p1 = task_create("J1", j1, &m, &r);
- if (p1 == NIL)
- { cprintf("Can't create J1 task...\n"); return 1; }
-
- hard_task_default_model(m);
- hard_task_def_mit(m, 10000000);
- hard_task_def_wcet(m, 3000000);
- PC_res_default_model(r,2);
- p2 = task_create("J2", j2, &m, &r);
- if (p2 == NIL)
- { cprintf("Can't create J2 task...\n"); return 1; }
-
- /* ---------------------------------------------------------------------
- Mutex creation
- --------------------------------------------------------------------- */
-
- PI_mutexattr_default(a2);
- PC_mutexattr_default(a,0);
- mutex_init(&m0,(mutexattr_t *)&a);
- mutex_init(&m1,(mutexattr_t *)&a);
-
- PC_mutexattr_default(a,1);
- mutex_init(&m2,(mutexattr_t *)&a);
-
- /* ---------------------------------------------------------------------
- Event post
- --------------------------------------------------------------------- */
-
- t.tv_sec = 0;
- t.tv_nsec = 500000000;
-
- kern_cli();
- kern_event_post(&t,startJ,(void *)p1);
-
- t.tv_sec = 1;
- kern_event_post(&t,startJ,(void *)p0);
- kern_sti();
-
- task_activate(p2);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-
-}
Index: rel_1_4/base/readme
===================================================================
--- rel_1_4/base/readme (revision 1488)
+++ rel_1_4/base/readme (nonexistent)
@@ -1,44 +0,0 @@
-This directory contains a set of simple examples, useful to understand
-How to make a Shark application.
-
-Text mode demos:
-- hello.c --> a hello world application
-- timer.c --> tests if the time reads are always increasing
- (useful for debugging purposes)
-- sig.c --> simple example that sends signals
-- semdemo.c --> simple example that uses a semaphore for mutual exclusion
-- pidemo.c --> simple example that uses PI mutexes between NRT and Hard tasks
-- pcdemo.c --> simple example that uses PC mutexes between NRT and Hard tasks
-- srpdemo.c --> simple example that uses SRP mutexes between NRT and Hard tasks
-- mdemo.c --> simple example that uses a mutex, initialized with whatever
- protocol you want ;-)
-- aster.c --> Wow! the original Hartik ASTER demo!!! (EDF, CABs, ...)
-- aster1.c --> a -lot- of periodic tasks that are created and then die
- (6 seconds demo)
-- aster2.c --> a simple stress test: a lot of tasks are created until Utot=1;
- uses jet functions to dump statistics. (60 seconds demo)
-- aster3.c --> aster2 + 8 tasks handled by 2 different TBS servers
-- aster4.c --> aster3 + CBS tasks + Shutdown demo with system tasks
-- aster5.c --> aster3 + only CBS tasks + mutexes... Really interesting!
-- aster6.c --> aster5 + Polling Server to serve the JetCtrl task
-- aster7.c --> another aster clone with Rate monotonic and Polling server
-- aster8.c --> aster5 + Sporadic Server
-- preempt.c --> simple test for CBS, task_preempt, task_nopreempt, and
- save/skip arrivals
-- pcidemo.c --> PCI Bus scan
-- jointest.c--> Simple test that uses the task_join primitive
-- condtest.c--> Simple test that uses condition variables
-- intsem.c --> Simple test that uses internal semaphores
-
-Graphical demos:
-- fly.c --> Random flies going around the screen
-- ego.c --> Periodic tasks that writes a phrease on the screen
-- cabs.c --> Example that uses cabs
-
-Note on the init files:
-- ihello.c (RR+dummy)
-- isemdemo.c (iaster1+Semaphores)
-- iaster1.c (EDF+RR+dummy)
-- iaster3.c (EDF+RR+TBS(0.1)+TBS(0.3)+dummy)
-- iaster4.c (iaster3+CBS)
-- initfile.c (EDF+CBS+RR+dummy, SEMaphores, CABS, HARTPORTs and Keyboard)
Index: rel_1_4/base/pidemo.c
===================================================================
--- rel_1_4/base/pidemo.c (revision 1488)
+++ rel_1_4/base/pidemo.c (nonexistent)
@@ -1,123 +0,0 @@
-/*
- * 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 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: pidemo.c,v 1.3 2004-04-17 11:36:14 giacomo Exp $
-
- This test verify the correctness of the PI module.
-
- the main task (NRT) lock a PI mutex.
- then 2 tasks arrives, with priority higher than the main
-
- the first try to lock the mutex, but it can't, so the main inherit
- his priority. The second simply prints a string.
-
- If all works, the string of the second task is printed after the end of
- the first task.
-
-*/
-
-#include "kernel/kern.h"
-
-mutex_t m1;
-
-
-TASK goofy1(void *a)
-{
- cprintf("goofy1 before mutex_lock\n");
- mutex_lock(&m1);
- cprintf("goofy1 after mutex_lock\n");
-
- mutex_unlock(&m1);
- cprintf("goofy1 after mutex_unlock\n");
-
- return 0;
-}
-
-TASK goofy2()
-{
- cprintf("goofy2 inside goofy2\n");
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- HARD_TASK_MODEL m;
- PID p2,p3;
-
- struct timespec t;
-
- PI_mutexattr_t a;
-
- hard_task_default_model(m);
- hard_task_def_mit(m,50000);
- hard_task_def_wcet(m,20000);
- hard_task_def_group(m,1);
-
- hard_task_def_arg(m,(void *)1);
- p2 = task_create("goofy1", goofy1, &m, NULL);
- if (p2 == NIL)
- { cprintf("Can't create goofy1 task...\n"); return 1; }
-
- hard_task_def_mit(m,100000);
- p3 = task_create("goofy2", goofy2, &m, NULL);
- if (p3 == NIL)
- { cprintf("Can't create goofy2 task...\n"); return 1; }
-
- PI_mutexattr_default(a);
- mutex_init(&m1,&a);
-
- cprintf("main before mutex_lock\n");
- mutex_lock(&m1);
- cprintf("main after mutex_lock\n");
-
- group_activate(1);
-
- cprintf("main after group_activate\n");
- mutex_unlock(&m1);
- cprintf("main after mutex_unlock\n");
-
- mutex_destroy(&m1);
- cprintf("main after mutex_destroy\n");
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-
-}
Index: rel_1_4/base/condtest.c
===================================================================
--- rel_1_4/base/condtest.c (revision 1488)
+++ rel_1_4/base/condtest.c (nonexistent)
@@ -1,209 +0,0 @@
-/*
- * 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: condtest.c,v 1.2 2004-04-17 11:36:13 giacomo Exp $
-
- This test verify the correctness of the condition variables.
- (... it doesn't test all...)
-
- The test uses 1 mutex
-
- the main task (NRT) creates three tasks.
-
- J0, J1, J3
- starts, lock the mutex, and wait on a condition variable
-
- J2
- at t = 0.5 lock the mutex and call cond_signal
- at t = 1 lock the mutex and call cond_signal
-
-*/
-
-#include "kernel/kern.h"
-
-mutex_t m0;
-cond_t c0;
-
-int number = 0;
-
-PID p0,p1,p2,p3;
-
-TASK j0()
-{
- cprintf("J0: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J0: locked m0, waiting on c0, number =%d\n", number);
- while (!number) {
- cond_wait(&c0,&m0);
- cprintf("J0: number = %d, if >0 unlocking m0\n",number);
- }
- number--;
- mutex_unlock(&m0);
- cprintf("J0: unlocked m0, end task\n");
- return 0;
-}
-
-
-TASK j1()
-{
- cprintf("J1: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J1: locked m0, waiting on c0, number =%d\n", number);
- while (!number) {
- cond_wait(&c0,&m0);
- cprintf("J1: number = %d, if >0 unlocking m0\n",number);
- }
- number--;
- mutex_unlock(&m0);
- cprintf("J1: unlocked m0, end task\n");
- return 0;
-}
-
-
-TASK j2()
-{
-
- cprintf("J2: started, waiting t=0.5 sec\n");
- while (sys_gettime(NULL) < 500000);
-
- cprintf("J2: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J2: locked m0, number++ (was %d), cond_signal\n", number);
-
- number++;
- cond_signal(&c0);
-
- cprintf("J2: unlocking m0\n");
- mutex_unlock(&m0);
-
- cprintf("J2: waiting t=1 sec\n");
- while (sys_gettime(NULL) < 1000000);
-
- cprintf("J2: Killing J3\n");
- task_kill(p3);
- cprintf("J2: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J2: locked m0, number++ (was %d), cond_signal\n", number);
-
- number++;
- cond_signal(&c0);
-
- cprintf("J2: unlocking m0\n");
- mutex_unlock(&m0);
- cprintf("J2: unlocked m0, end task\n");
- return 0;
-}
-
-void cleanup_lock(void *arg)
-{
- cprintf("J3: KILL!!!\n");
- mutex_unlock(&m0);
- cprintf("J3: unlocked m0 by the cleanup function\n");
-}
-
-TASK j3()
-{
- cprintf("J3: before locking m0\n");
- mutex_lock(&m0);
- cprintf("J3: locked m0, waiting on c0, number =%d\n", number);
- task_cleanup_push(cleanup_lock, (void *)&m0);
- while (!number) {
- cond_wait(&c0,&m0);
- cprintf("J3: number = %d, if >0 unlocking m0\n",number);
- }
- task_cleanup_pop(0);
- // I hope this task never reach this point... it is killed by J2!!!
- number--;
- mutex_unlock(&m0);
- cprintf("J3: unlocked m0, end task\n");
- return 0;
-}
-
-
-int main(int argc, char **argv)
-{
- struct timespec t;
-
- NRT_TASK_MODEL m;
-
- PI_mutexattr_t a;
-
- /* ---------------------------------------------------------------------
- Task creation
- --------------------------------------------------------------------- */
-
- nrt_task_default_model(m);
- nrt_task_def_group(m,1);
- p0 = task_create("J0", j0, &m, NULL);
- if (p0 == NIL)
- { cprintf("Can't create J0 task...\n"); return 1; }
-
- p1 = task_create("J1", j1, &m, NULL);
- if (p1 == NIL)
- { cprintf("Can't create J1 task...\n"); return 1; }
-
- p2 = task_create("J2", j2, &m, NULL);
- if (p2 == NIL)
- { cprintf("Can't create J2 task...\n"); return 1; }
-
- p3 = task_create("J3", j3, &m, NULL);
- if (p3 == NIL)
- { cprintf("Can't create J3 task...\n"); return 1; }
-
- /* ---------------------------------------------------------------------
- Mutex creation
- --------------------------------------------------------------------- */
-
- PI_mutexattr_default(a);
- mutex_init(&m0,&a);
-
- cond_init(&c0);
-
- /* ---------------------------------------------------------------------
- Event post
- --------------------------------------------------------------------- */
-
- group_activate(1);
-
- do {
- sys_gettime(&t);
- } while (t.tv_sec < 10);
-
- sys_end();
-
- return 0;
-
-}
Index: rel_1_4/base/initgraph.c
===================================================================
--- rel_1_4/base/initgraph.c (revision 1488)
+++ rel_1_4/base/initgraph.c (nonexistent)
@@ -1,198 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@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
- */
-
-/*
- * 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
Index: rel_1_4/base/ipcidemo.c
===================================================================
--- rel_1_4/base/ipcidemo.c (revision 1488)
+++ rel_1_4/base/ipcidemo.c (nonexistent)
@@ -1,133 +0,0 @@
-/*
- * Project: S.Ha.R.K
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include "drivers/shark_linuxc26.h"
-#include "drivers/shark_pci26.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- return 0;
-
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg) {
-
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-
-}
Index: rel_1_4/base/fly.c
===================================================================
--- rel_1_4/base/fly.c (revision 1488)
+++ rel_1_4/base/fly.c (nonexistent)
@@ -1,203 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: fly.c,v 1.9 2004-06-15 14:10:23 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.9 $
- Last update: $Date: 2004-06-15 14:10:23 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
- *
- * 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
- *
- */
-
-/*--------------------------------------------------------------*/
-/* SIMULATION OF RANDOM FLIES */
-/*--------------------------------------------------------------*/
-
-#include <kernel/kern.h>
-#include <modules/sem.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define YMENU 10 /* menu level */
-#define XMIN 50
-#define XMAX 600
-#define YMIN 100
-#define YMAX 450
-#define VEL 5 /* linear velocity (def. = 5) */
-#define ANG 30 /* angolo massimo sterzata (30) */
-#define D 3 /* raggio mosca */
-#undef ESC
-#define ESC 27 /* ASCII code of ESCAPE key */
-#define MAX_P 35 /* max number of flies */
-#define FLYGROUP 1
-
-double tick = 1.0; /* system tick = 1 ms */
-int fly_period = 40000; /* task period */
-int fly_wcet = 1000; /* task wcet */
-PID pid;
-
-sem_t grx_mutex;
-
-/*--------------------------------------------------------------*/
-
-void draw_fly(int x, int y, int c)
-{
- grx_disc(x, y, D, c);
-}
-
-/******************************************************************/
-
-TASK fly(void *arg)
-{
-int x, y;
-int ox, oy;
-int dx, dy, da;
-int teta, col,red;
-int outx, outy;
-double r;
-int i = (int)arg;
-
- x = ox = (XMIN+XMAX)/2;
- y = oy = (YMIN+YMAX)/2;
- teta = 0;
- red = 100+10*i;
- if (red > 255) red = 255;
- col = rgb16(red,0,50); /* colore fly */
-
- while (1) {
-
- da = rand()%(2*ANG) - ANG; /* da = [-ANG,ANG] */
- teta += da;
-
- if (teta > 360) teta -= 360;
- if (teta < 0) teta += 360;
- r = (double)teta * PI / 180.;
-
- dx = (float)(VEL * cos(r));
- dy = (float)(VEL * sin(r));
- x += dx;
- y += dy;
-
- outx = (x >= XMAX) || (x <= XMIN);
- outy = (y >= YMAX) || (y <= YMIN);
-
- if (outx || outy) {
- x = x - dx;
- y = y - dy;
- if (outx) teta = 180 - teta;
- if (outy) teta = -teta;
- if (teta > 360) teta -= 360;
- if (teta < 0) teta += 360;
- r = (double)teta * PI / 180.;
-
- dx = (float)(VEL * cos(r));
- dy = (float)(VEL * sin(r));
-
- x += dx;
- y += dy;
- }
-
- sem_wait(&grx_mutex);
- draw_fly(ox, oy, 0);
- draw_fly(x, y, col);
- ox = x; oy = y;
- sem_post(&grx_mutex);
-
- task_endcycle();
- }
-}
-
-/****************************** MAIN ******************************/
-
-int main(int argc, char **argv)
-{
- HARD_TASK_MODEL m;
-
- char c; /* character from keyboard */
- int i = 0; /* number of tasks created */
- TIME seme; /* used to init the random seed */
-
- /* Init the mutex */
- sem_init(&grx_mutex,0,1);
-
- /* The scenario */
- grx_rect(XMIN-D-1, YMIN-D-1, XMAX+D+1, YMAX+D+1, rgb16(255,255,255));
- grx_text("Simulation of Random Flies", XMIN, YMENU+10, rgb16(255,255,255), 0);
- grx_text("SPACE create a fly" , XMIN, YMENU+20, rgb16(255,255,255), 0);
- grx_text("ESC exit to DOS" , XMIN, YMENU+30, rgb16(255,255,255), 0);
-
- /* The program waits a space to create a fly */
- c = keyb_getch(BLOCK);
-
- /* randomize!!!! */
- seme = sys_gettime(NULL);
- srand(seme);
-
- do {
- if ((c == ' ') && (i < MAX_P)) {
- hard_task_default_model(m);
- hard_task_def_ctrl_jet (m);
- hard_task_def_arg (m, (void *)i);
- hard_task_def_wcet (m, fly_wcet);
- hard_task_def_mit (m, fly_period);
- hard_task_def_group (m, FLYGROUP);
- hard_task_def_usemath (m);
- pid = task_create("fly", fly, &m, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task <fly>");
- sys_end();
- return 0;
- }
- task_activate(pid);
- i++;
- }
- c = keyb_getch(BLOCK);
-
- } while (c != ESC);
-
- sys_end();
-
- return 0;
-
-}
-
-/*--------------------------------------------------------------*/
Index: rel_1_4/readme.txt
===================================================================
--- rel_1_4/readme.txt (revision 1488)
+++ rel_1_4/readme.txt (nonexistent)
@@ -1,7 +0,0 @@
-Hi, these are the S.Ha.R.K. demos...
-
-the old examples directory is now called demos/oldexamples...
-
-Enjoy
-
-PJ
Index: rel_1_4/advtimer/makefile
===================================================================
--- rel_1_4/advtimer/makefile (revision 1488)
+++ rel_1_4/advtimer/makefile (nonexistent)
@@ -1,17 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = advtimer
-
-include $(BASE)/config/example.mk
-
-# Text applications
-advtimer:
- make -f $(SUBMAKE) APP=advtimer INIT= OTHEROBJS="initfile.o" SHARKOPT="__LINUXC26__ __PCI__ __INPUT__"
-
Index: rel_1_4/advtimer/initfile.c
===================================================================
--- rel_1_4/advtimer/initfile.c (revision 1488)
+++ rel_1_4/advtimer/initfile.c (nonexistent)
@@ -1,178 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@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
- */
-
-/*
- * 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
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "drivers/shark_linuxc26.h"
-#include "drivers/shark_input26.h"
-#include "drivers/shark_keyb26.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ IntDrive Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAGS 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAGS);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- //sys_set_reboot(EXIT_MODE_HALT);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
-
Index: rel_1_4/advtimer/readme.txt
===================================================================
--- rel_1_4/advtimer/readme.txt (revision 1488)
+++ rel_1_4/advtimer/readme.txt (nonexistent)
@@ -1,31 +0,0 @@
---------------------------------------
-Advanced Timer Demo
-
-by
-
-Giacomo Guidi <giacomo@gandalf.sssup.it>
-
-Last update 23/04/2003
---------------------------------------
-
-This demo shows the new timer management
-code of S.Ha.R.K.
-
---------------------------------------
-
-The demo is composed by:
-
-MAKEFILE The makefile used to compile the application
-README.TXT This file
-INITFILE.C The init file
-ADVTIMER.C The Advanced Timer Demo
-
---------------------------------------
-
-To change the timer mode, you have to
-modify shark.cfg and to recompile the
-system
-
-make clean
-make
-
Index: rel_1_4/advtimer/advtimer.c
===================================================================
--- rel_1_4/advtimer/advtimer.c (revision 1488)
+++ rel_1_4/advtimer/advtimer.c (nonexistent)
@@ -1,161 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@gandalf.sssup.it>
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * 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
- */
-
-/*
- * Advanced Timer Demo
- *
- */
-
-#include "kernel/kern.h"
-#include "ll/i386/cons.h"
-#include "ll/i386/advtimer.h"
-
-#include "drivers/shark_keyb26.h"
-
-#define UPDATE_PERIOD 10000
-#define UPDATE_WCET 1000
-
-extern unsigned int clk_per_msec;
-extern unsigned int apic_clk_per_msec;
-
-TASK Update(void *arg)
-{
- struct timespec actual_timer;
-
- long nsec,sec,min,hrs,day;
- long mean_delay,tot_delay,num_delay;
-
- signed long long start,end,res;
- struct timespec s_test,startts,endts;
-
- task_nopreempt();
-
- num_delay = tot_delay = mean_delay = 0;
-
- while (1) {
-
- if (clk_per_msec != 0) {
-
- rdtscll(start);
- sys_gettime(&actual_timer);
- rdtscll(end);
- res = end - start;
- rdtscll(start);
- rdtscll(end);
- res -= (end - start);
- s_test.tv_nsec = res * 1000000 / clk_per_msec;
-
-
- } else {
-
- sys_gettime(&startts);
- sys_gettime(&actual_timer);
- sys_gettime(&endts);
- SUBTIMESPEC(&endts,&startts,&s_test);
- sys_gettime(&startts);
- sys_gettime(&endts);
- SUBTIMESPEC(&endts,&startts,&endts);
- SUBTIMESPEC(&s_test,&endts,&s_test);
-
- }
-
- if (tot_delay < 1000000000) {
- tot_delay += s_test.tv_nsec;
- num_delay ++;
- mean_delay = tot_delay / num_delay;
- }
-
- nsec = actual_timer.tv_nsec;
- sec = actual_timer.tv_sec;
- min = sec / 60;
- sec %= 60;
- hrs = min / 60;
- min %= 60;
- day = hrs / 24;
- hrs %= 24;
-
- printf_xy(0,5,WHITE,"Actual CPU Clk/msec: %12d",clk_per_msec);
- printf_xy(0,6,WHITE,"Actual APIC Clk/msec: %12d",apic_clk_per_msec);
- printf_xy(0,7,WHITE,"Actual Timer: %2ld d %2ld h %2ld m %2ld s %12ld ns",day,hrs,min,sec,(long)nsec);
-
- printf_xy(0,9,WHITE,"Timer Access Delay: %12ld ns",mean_delay);
-
- task_endcycle();
-
- }
-
-}
-
-void set_screen()
-{
-
- clear();
-
- printf_xy(20,0,WHITE," Advanced Timer Demo ");
- printf_xy(20,1,WHITE,"Giacomo Guidi <giacomo@gandalf.sssup.it>");
- printf_xy(20,2,WHITE," Press Alt + c to exit ");
-
-}
-
-void program_key_end(KEY_EVT* e)
-{
- sys_end();
-}
-
-int main(int argc, char **argv)
-{
-
- HARD_TASK_MODEL mp; //Show current setting
- PID update;
- KEY_EVT k;
-
- k.flag = ALTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k,program_key_end,FALSE);
-
- set_screen();
-
- hard_task_default_model(mp);
- hard_task_def_ctrl_jet(mp);
- hard_task_def_group(mp, 1);
- hard_task_def_wcet(mp,UPDATE_WCET);
- hard_task_def_mit(mp,UPDATE_PERIOD);
- hard_task_def_usemath(mp);
- update = task_create("Update", Update, &mp, NULL);
- if (update != NIL) task_activate(update);
-
- return 0;
-
-}
Index: rel_1_4/tftptest/initfile.c
===================================================================
--- rel_1_4/tftptest/initfile.c (revision 1488)
+++ rel_1_4/tftptest/initfile.c (nonexistent)
@@ -1,161 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://hartik.sssup.it
- */
-
-/*
- * 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
- */
-
-
-#include <kernel/kern.h>
-
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-#include "modules/intdrive.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = 1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-int device_drivers_close() {
-
- KEYB26_close();
- INPUT26_close();
-
- return 0;
-
-}
-
-int device_drivers_init() {
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
- PCI26_init();
- INPUT26_init();
-
- /*keyb_def_map(kparms, KEYMAP_IT);*/
- keyb_def_ctrlC(kparms, NULL);
- KEYB26_init(&kparms);
-
- return 0;
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
- sys_abort_shutdown(0);
-
- return NULL;
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void set_shutdown_task() {
-
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-void call_shutdown_task(void *arg) {
-
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- set_shutdown_task();
-
- device_drivers_init();
-
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: rel_1_4/tftptest/makefile
===================================================================
--- rel_1_4/tftptest/makefile (revision 1488)
+++ rel_1_4/tftptest/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = tftptest
-
-include $(BASE)/config/example.mk
-
-tftptest:
- make -f $(SUBMAKE) APP=tftptest INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __NET__ __INPUT__ __TFTP__"
-
Index: rel_1_4/tftptest/tftptest.c
===================================================================
--- rel_1_4/tftptest/tftptest.c (revision 1488)
+++ rel_1_4/tftptest/tftptest.c (nonexistent)
@@ -1,226 +0,0 @@
-#include <string.h>
-#include <kernel/func.h>
-#include <kernel/kern.h>
-
-#include <drivers/shark_keyb26.h>
-#include <drivers/udpip.h>
-
-#include "tftp.h"
-#include "endian.h"
-
-#include "modules/sem.h"
-
-#include <kernel/kern.h>
-#include <ll/i386/hw-instr.h>
-
-
-#define LOCAL_HOST_IP "192.168.0.134"
-#define REMOTE_HOST_IP "192.168.0.133"
-
-sem_t m1, m2;
-int handle, handle2;
-
-int prog = 0;
-
-/* This function is called when the user presses CTRL-C (stops the systems) */
-
-void esci(KEY_EVT *k)
-{
- sys_shutdown_message("Exit from the program...\n");
- sys_shutdown_message("Ctrl-C pressed!\n");
- sys_end();
-}
-
-void augprog(KEY_EVT *k)
-{
- prog = 1;
-}
-
-void keyb_start(void) {
- KEY_EVT k;
-
- k.flag = CNTL_BIT;
- k.scan = KEY_C;
- k.status = KEY_PRESSED;
- k.ascii = 'C';
- keyb_hook(k, esci,FALSE);
- k.flag = CNTR_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- k.status = KEY_PRESSED;
- keyb_hook(k, esci,FALSE);
-
- k.flag = CNTL_BIT;
- k.scan = KEY_A;
- k.ascii = 'A';
- k.status = KEY_PRESSED;
- keyb_hook(k, augprog,FALSE);
- k.flag = CNTR_BIT;
- k.scan = KEY_A;
- k.ascii = 'a';
- k.status = KEY_PRESSED;
- keyb_hook(k, augprog,FALSE);
-}
-
-TASK test_upload(void *arg) {
- int i;
- char msg[200];
- int bytes;
-
- i = 0;
- while (1) {
-
-// cprintf("uploader 1\n");
-
- sprintf(msg, "tftptest says: i = %5d\n", i);
- tftp_put(handle, msg, strlen(msg));
-
-// cprintf("uploader 2\n");
-
- bytes = tftp_usedbuffer(handle);
- /*!*/sprintf(msg, "buffer %d ", bytes);
- /*!*/puts_xy(BASE_X, 18, WHITE, msg);
-
-// cprintf("uploader 3\n");
- i++;
-
- task_endcycle();
- }
- return(0);
-}
-
-TASK test_upload2(void *arg) {
- int i;
- char msg[200];
- int bytes;
-
- i = 0;
- while (1) {
-
- sprintf(msg, "tftptest says: i = %5d\n", i);
- tftp_put(handle2, msg, strlen(msg));
-
- bytes = tftp_usedbuffer(handle2);
- /*!*/sprintf(msg, "buffer2 %d ", bytes);
- /*!*/puts_xy(BASE_X, 38, WHITE, msg);
- i++;
-
- task_endcycle();
- }
- return(0);
-}
-
-void wait() {
- char ch;
- do {
- ch = keyb_getch(NON_BLOCK);
- } while(prog == 0);
- prog = 0;
-}
-
-int main(void)
-{
- int err;
- HARD_TASK_MODEL hard_m;
- PID p1, p2;
-
- keyb_start();
- cprintf("main: Keyboard handler started\n");
-
- tftp_init();
- cprintf("main: Tftp library initialized\n");
-
- err = tftp_net_start(LOCAL_HOST_IP, REMOTE_HOST_IP, 1);
- cprintf("netval = %d\n", err);
- if (err == 1) {
- cprintf("Net Init from %s to %s\n", LOCAL_HOST_IP, REMOTE_HOST_IP);
- } else {
- cprintf("Net Init Failed...\n");
- sys_end();
- return(err);
- }
-
- sem_init(&m1, 0, 1);
-
-
- if ((handle = tftp_open("test.txt")) == -1) {
- cprintf("No slots available. Program aborted...\n");
- sys_end();
- return(1);
- }
-
- cprintf("Ctrl-A to proceed *** Ctrl-C to stop\n");
- wait();
- clear();
-
- cprintf("Handle = %d\n", handle);
-
- if ((err = tftp_upload(handle, 4096, &m1)) != 0) {
- cprintf("Error %d calling tftp_upload(). Program aborted...\n", err);
- sys_end();
- return(1);
- }
-
- /* First we set the sender's task properties...*/
- hard_task_default_model(hard_m);
- hard_task_def_wcet(hard_m, 10000);
- hard_task_def_mit(hard_m, 300000);
-
- if ((p1 = task_create("test_upload", test_upload, &hard_m, NULL)) == NIL) {
- cprintf("Error creating test_upload task. Program aborted...\n");
- sys_end();
- return(1);
- }
- if (task_activate(p1) == -1) {
- cprintf("Error activating test_upload task. Program aborted...\n");
- sys_end();
- return(1);
- }
-
-
- sem_init(&m2, 0, 1);
-
- if ((handle2 = tftp_open("test2.txt")) == -1) {
- cprintf("No second slot available. Program aborted...\n");
- sys_end();
- return(1);
- }
-
-
-
- cprintf("Handle2 = %d\n", handle2);
-
- if ((err = tftp_upload(handle2, 4096, &m2)) != 0) {
- cprintf("Error %d calling tftp_upload(). Program aborted...\n", err);
- sys_end();
- return(1);
- }
-
- /* First we set the sender's task properties...*/
- hard_task_default_model(hard_m);
- hard_task_def_wcet(hard_m, 10000);
- hard_task_def_mit(hard_m, 300000);
-
- if ((p2 = task_create("test_upload2", test_upload2, &hard_m, NULL)) == NIL) {
- cprintf("Error creating test_upload2 task. Program aborted...\n");
- sys_end();
- return(1);
- }
- if (task_activate(p2) == -1) {
- cprintf("Error activating test_upload2 task. Program aborted...\n");
- sys_end();
- return(1);
- }
-
-
- wait();
-
- tftp_close(handle, TFTP_STOP_NOW);
-
- tftp_close(handle2, TFTP_STOP_NOW);
-
- cprintf("\nProgram terminated correctly.\n");
- sys_end();
-
- return(0);
-}
Index: rel_1_4/makefile
===================================================================
--- rel_1_4/makefile (revision 1488)
+++ rel_1_4/makefile (nonexistent)
@@ -1,28 +0,0 @@
-include ../shark.cfg
-
-ifeq ($(findstring NEW,$(TRACER)) , NEW)
-TRC = newtrace
-endif
-
-dirs := $(filter-out CVS cvs makefile readme.txt newtrace README.TXT, $(wildcard *))
-dirs += $(TRC)
-p_all := $(addprefix prefixall_, $(dirs))
-p_install := $(addprefix prefixinstall_, $(dirs))
-p_clean := $(addprefix prefixclean_, $(dirs))
-pcleanall := $(addprefix prefixcleanall_, $(dirs))
-pdepend := $(addprefix prefixdepend_, $(dirs))
-
-
-.PHONY: all clean
-
-
-
-all: $(p_all)
-
-clean: $(p_clean)
-
-prefixall_%:
- make -C $*
-
-prefixclean_%:
- make -C $* clean
Index: rel_1_4/dosfs/makefile
===================================================================
--- rel_1_4/dosfs/makefile (revision 1488)
+++ rel_1_4/dosfs/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= dosfs
-
-include $(BASE)/config/example.mk
-
-dosfs:
- make -f $(SUBMAKE) APP=dosfs INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT=
-
Index: rel_1_4/dosfs/dosfs.c
===================================================================
--- rel_1_4/dosfs/dosfs.c (revision 1488)
+++ rel_1_4/dosfs/dosfs.c (nonexistent)
@@ -1,174 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: dosfs.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Gabriele Bolognini
- *
- * 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
- *
- */
-
-#include "kernel/kern.h"
-#include "string.h"
-#include "ll/i386/x-dos.h"
-
-
-/* This is the buffer used by read_myfile */
-char myfilebuf[1000];
-
-/* This is the number of bytes read by read_myfile */
-int myfilebuf_length;
-
-/* This function write myfile.out (up to 30 chars) */
-void write_myfile(void *arg);
-
-int main(int argc, char **argv)
-{
- int x;
-
- cprintf("\nBuffer contents:\n");
-
- for (x=0; x<myfilebuf_length; x++)
- cputc(myfilebuf[x]);
-
- /*
- WARNING: You can call these functions only when you are in
- real mode!!!
-
- The system is in real mode:
- - into __kernel_register_levels__()
- - into sys_atrunlevel functions posted with RUNLEVEL_AFTER_EXIT
- */
-
- if (myfilebuf_length)
- sys_atrunlevel(write_myfile, NULL, RUNLEVEL_AFTER_EXIT);
-
- return 0;
- /*
- * Since there is only one user task, the kernel will shut down after this
- * task finishes...
- */
-}
-
-/* This function read myfile.txt (up to 1000 chars) */
-void read_myfile(void)
-{
- /* DOS file descriptor */
- DOS_FILE *f;
-
- /* Error code */
- int err;
-
- /* open the DOS file for reading (you can specify only "r" or "w") */
- f = DOS_fopen("myfile.txt","r");
-
- /* check for open errors */
- if (!f) {
- /* error!! */
- err = DOS_error();
-
- /* note that if you call DOS_error() here, it return 0!!! */
- cprintf("Error %d opening myfile.txt...\n", err);
- myfilebuf_length = 0;
- return;
- }
-
- /* read up to 1000 chars */
- myfilebuf_length = DOS_fread(&myfilebuf,1,1000,f);
-
- /* check for errors */
- err = DOS_error();
-
- cprintf("Read %d bytes from myfile.txt...\n", myfilebuf_length);
-
- if (err) {
- cprintf("Error %d reading myfile.txt...\n", err);
- myfilebuf_length = 0;
- /* there is not return because I want to close the file! */
- }
-
- /* Close the file */
- DOS_fclose(f);
-}
-
-/* This function write myfile.out (up to 30 chars) */
-void write_myfile(void *arg)
-{
- DOS_FILE *f; /* DOS file descriptor */
- int err; /* Error code */
- int maxbytes;
- int writtenbytes; /* number of files written */
-
- /* open the DOS file for writing (you can specify only "r" or "w") */
- f = DOS_fopen("myfile.out","w");
-
- /* check for open errors */
- if (!f) {
- /* error!! */
- err = DOS_error();
-
- /* note that if you call DOS_error() here, it return 0!!! */
- cprintf("Error %d opening myfile.out...\n", err);
- return;
- }
-
- /* write up to 30 bytes */
- if (myfilebuf_length > 30)
- maxbytes = 30;
- else
- maxbytes = myfilebuf_length;
-
- writtenbytes = DOS_fwrite(myfilebuf,1,maxbytes,f);
-
- /* check for errors */
- err = DOS_error();
-
- cprintf("Written %d bytes into myfile.out...\n", writtenbytes);
-
- if (err) {
- cprintf("Error %d writing myfile.txt...\n", err);
- /* there is not return because I want to close the file! */
- }
-
- /* Close the file */
- DOS_fclose(f);
-}
-
-
Index: rel_1_4/dosfs/myfile.txt
===================================================================
--- rel_1_4/dosfs/myfile.txt (revision 1488)
+++ rel_1_4/dosfs/myfile.txt (nonexistent)
@@ -1,3 +0,0 @@
-0.2.4.6.8.0.2.4.6.8.0.2.4.6.8.0.2.4.6.8.
-This is the myfile.txt file...
-
Index: rel_1_4/dosfs/initfile.c
===================================================================
--- rel_1_4/dosfs/initfile.c (revision 1488)
+++ rel_1_4/dosfs/initfile.c (nonexistent)
@@ -1,91 +0,0 @@
-/*
- * 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
- */
-
-/**
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Gabriele Bolognini
- *
- * 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-void read_myfile(void);
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- /* If you need to interact with the DOS Filesystem and you use
- the X eXtender, this is the better place where you can use
- the DOS_fXXX functions...
-
- WARNING: You can call these functions only when you are in
- real mode!!!
-
- The system is in real mode:
- - into __kernel_register_levels__()
- - into sys_atrunlevel functions posted with RUNLEVEL_AFTER_EXIT
- */
- read_myfile();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: rel_1_4/dosfs/readme.txt
===================================================================
--- rel_1_4/dosfs/readme.txt (revision 1488)
+++ rel_1_4/dosfs/readme.txt (nonexistent)
@@ -1,46 +0,0 @@
---------------------------------------
-DOS_fXXX Demo
-
-by
-
-Paolo Gai pj@sssup.it
-and
-Gabriele Bolognini gabrieleb@sssup.it
-2001
-
---------------------------------------
-
-The DOS_fXXX functions provided into ll/i386/x-dos.h are a few
-shortcuts that can be used to call INT21's DOS calls.
-
-These functions can be used to read and write files before/after
-the kernel goes into i386 protected mode.
-
-THEY CANNOT BE USED IF YOU BOOT WITH GRUB.
-
---------------------------------------
-
-The demo is composed by:
-
-MAKEFILE The makefile used to compile the application;
- dosfs is the rule to compile the application
-README.TXT This file
-INITFILE.C The init file (only RR)
-DOSFS.C The DOS_fread and DOS_fwrite demo
-
---------------------------------------
-
-The demo works as follows:
-- Into __kernel_register_levels__() the demo reads up to 1000 bytes from
- myfile.txt
-- Then, into the main() function it prints the contents of the buffer at
- screen
-- Finally, at the end of the system it writes a file called myfile.out
- with up to 30 of the first bytes of the buffer
-
-The demo should work on any processor speed, and does not use keyboard or
-graphics.
-
-Bug: at the moment (01 Jun 2001) sometimes the demo hangs when using
-the one-shot timer.
-
Index: rel_1_4/orbit/makefile
===================================================================
--- rel_1_4/orbit/makefile (revision 1488)
+++ rel_1_4/orbit/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= orbit
-
-include $(BASE)/config/example.mk
-
-orbit:
- make -f $(SUBMAKE) APP=orbit INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
-
Index: rel_1_4/orbit/orbit.c
===================================================================
--- rel_1_4/orbit/orbit.c (revision 1488)
+++ rel_1_4/orbit/orbit.c (nonexistent)
@@ -1,351 +0,0 @@
-/*
- * 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
- */
-
-/*
- ------------
- CVS : $Id: orbit.c,v 1.8 2004-05-23 19:30:33 giacomo Exp $
-
- File: $File$
- Revision: $Revision: 1.8 $
- Last update: $Date: 2004-05-23 19:30:33 $
- ------------
-*/
-
-/*
- * Copyright (C) 2000 Giorgio Buttazzo and 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
- *
- */
-
-/****************************************************************/
-/* SIMULAZIONE DI MASSE CHE ORBITANO */
-/****************************************************************/
-
-#include <kernel/kern.h>
-#include <semaphore.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#include <drivers/shark_fb26.h>
-#include <drivers/shark_keyb26.h>
-
-#define MAX 11 /* numero massimo pianeti */
-#define XMAX 639 /* valore massimo coordinata X */
-#define YMAX 479 /* valore massimo coordinata Y */
-
-extern int vga16color[16];
-
-struct coord {
- double x;
- double y;
-};
-
-int flen; // file length
-
-double mass[MAX]; /* vettore masse pianeti */
-struct coord pos[MAX]; /* vettore posizioni attuali */
-struct coord vel[MAX]; /* vettore velocita' iniziali */
-
-int XGS, YGS; /* Coordinate centro spazio */
-int RP, RT; /* raggio pianeta, raggio Terra */
-int np; /* numero attuale di pianeti */
-double G; /* Gravitazione Universale */
-double tick; /* tick di sistema */
-double delta; /* incremento temporale */
-double scala; /* fattore grafico di scala */
-
-char fbuf[1000] ="\
-----------------------------------------------------\n\
-period: 10000 wcet: 500\n\
-delta: 1. scala: 150.\n\
-G: 6.6e-15\n\
-r_pianeta: 4 r_Terra: 8\n\
-X_centro: 320 Y_centro: 240\n\
-------------------- pianeti ------------------------\n\
- massa pos.x pos.y vel.x vel.y\n\
-0: \t 6.0e21 \t 0. \t 0. \t 0. \t 0. \n\
-1: \t 1.0e21 \t 10000. \t 8000. \t -60. \t 0. \n\
-2: \t 1.0e8 \t 5000. \t 0. \t 0. \t 80. \n\
-3: \t 5.0e18 \t 10000. \t 8000. \t -50. \t 0. \n\
-4: \t 1.0e9 \t 10000. \t 8000. \t -40. \t 20. \n\
-5: \t 1.0e15 \t 1000. \t 5000. \t -80. \t 0. \n\
-6: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
-7: \t 1.0e17 \t 1000. \t 5000. \t -80. \t 0. \n\
-8: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
-9: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
-10: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
-----------------------------------------------------\n";
-
-// -------------------------------------------------------
-// NOTA: %f o %lf significa double e %nf significa float
-// -------------------------------------------------------
-
-PID pid;
-int period; /* task period */
-int wcet; /* task wcet */
-sem_t mutex; /* semaforo di mutua esclusione */
-
-
-void get_par(void);
-
-/*--------------------------------------------------------------*/
-
-int inside(int x, int y)
-{
- return ((x > RP) && (x < XMAX-RP) &&
- (y > RP) && (y < YMAX-RP));
-}
-
-/*--------------------------------------------------------------*/
-
-TASK massa(void *xxx)
-{
- int i = (int)xxx; /* parametro del task */
- int gx, gy; /* coordinate grafiche pallina */
- int ox, oy; /* vecchia posizione pallina */
- int j;
- int r, col; /* raggio e colore pianeta */
- double dt; /* incremento temporale */
- double dist=0.0, dx, dy; /* distanze pianeta-pianeta */
- double dist0=0.0; /* distanze pianeta-Terra */
- double x, y; /* posizione del pianeta */
- double vx, vy; /* velocita' del pianeta */
- double ax, ay; /* accelerazione del pianeta */
- double k; /* variabile ausiliaria */
- double arg; /* variabile di appoggio */
-
- x = pos[i].x; y = pos[i].y;
- vx = vel[i].x; vy = vel[i].y;
- ox = XGS + x / scala;
- oy = YGS + y / scala;
- dt = delta;
-
- do {
- x = pos[i].x;
- y = pos[i].y;
- ax = ay = 0.0;
- for (j=0; j<np; j++) {
- if (j != i) {
- dx = pos[j].x - x;
- dy = pos[j].y - y;
- arg = dx*dx + dy*dy;
- dist = sqrt(arg);
- if (dist < RP*scala) dist = RP*scala;
- k = G * mass[j] / (dist*dist*dist);
- ax += k * dx;
- ay += k * dy;
- }
- if (j == 0) dist0 = dist - (RP+RT)*scala;
- }
- x += vx*dt + 0.5*ax*dt*dt;
- y += vy*dt + 0.5*ay*dt*dt;
- vx += ax * dt;
- vy += ay * dt;
-
- gx = XGS + x / scala;
- gy = YGS + y / scala;
-
- r = RP;
- col = i + 1;
-
- sem_wait(&mutex);
- grx_disc(ox,oy,r,vga16color[0]);
- grx_disc(gx,gy,r,vga16color[col]);
- sem_post(&mutex);
-
- pos[i].x = x; pos[i].y = y;
- ox = gx; oy = gy;
-
- task_endcycle();
-
- } while ((dist0 > 0) && inside(gx,gy));
-
- sem_wait(&mutex);
- grx_disc(ox,oy,r,vga16color[0]);
- grx_disc(XGS,YGS,RT,vga16color[12]);
- grx_circle(XGS,YGS,RT,vga16color[14]);
- sem_post(&mutex);
-
- return NULL;
-}
-
-/*--------------------------------------------------------------*/
-/* MAIN */
-/*--------------------------------------------------------------*/
-
-int main()
-{
- HARD_TASK_MODEL m;
- char c; /* carattere letto da tastiera */
-
- sem_init(&mutex,0,1);
-
- get_par();
-
- grx_disc(XGS,YGS,RT,vga16color[12]);
- grx_circle(XGS,YGS,RT,vga16color[14]);
-
- np = 0;
-
- do {
- if (np < MAX-1) {
- np++;
- hard_task_default_model(m);
- hard_task_def_arg (m, (void *)np);
- hard_task_def_wcet (m, wcet);
- hard_task_def_mit (m, period);
- hard_task_def_usemath (m);
- pid = task_create("massa", massa, &m, NULL);
- if (pid == NIL) {
- sys_shutdown_message("Could not create task");
- sys_end();
- }
- task_activate(pid);
- }
- c = keyb_getch(BLOCK);
-
- } while (c != ESC);
-
- sys_end();
-
- return 0;
-}
-
-/*------------------------------------------------------*/
-/* file reading */
-/*------------------------------------------------------*/
-
-void read_file(void)
-{
- int err;
- DOS_FILE *fp;
-
- fp = DOS_fopen("orbit.dat","r");
-
- if (!fp) {
- err = DOS_error();
- cprintf("Error %d opening myfile.txt...\n", err);
- flen = 0;
- return;
- }
-
- flen = DOS_fread(&fbuf, 1, 1000, fp);
- cprintf("Read %d bytes from orbit.dat\n", flen);
-
- DOS_fclose(fp);
-}
-
-/*------------------------------------------------------*/
-/* get data from buffer */
-/*------------------------------------------------------*/
-
-void get_par(void)
-{
- int x = 0;
- int i;
- double vx, vy, px, py;
-
- flen = strlen(fbuf);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &period);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &wcet);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &delta);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &scala);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &G);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &RP);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &RT);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &XGS);
-
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d", &YGS);
-
- for (i=0; i<MAX; i++) {
-
- mass[i] = 0.;
- px = 0.;
- py = 0.;
- vx = 0.;
- vy = 0.;
-
- while ((fbuf[x] != '\t') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &mass[i]);
-
- while ((fbuf[x] != '\t') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &px);
-
- while ((fbuf[x] != '\t') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &py);
-
- while ((fbuf[x] != '\t') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &vx);
-
- while ((fbuf[x] != '\t') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%lf", &vy);
-
- pos[i].x = px; pos[i].y = py;
-
- vel[i].x = vx; vel[i].y = vy;
-
- }
-}
-
-/*--------------------------------------------------------------*/
-
Index: rel_1_4/orbit/initfile.c
===================================================================
--- rel_1_4/orbit/initfile.c (revision 1488)
+++ rel_1_4/orbit/initfile.c (nonexistent)
@@ -1,200 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Giacomo Guidi <giacomo@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
- */
-
-/*
- * 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
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/intdrive.h"
-#include "modules/edf.h"
-#include "modules/hardcbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include <drivers/shark_linuxc26.h>
-#include <drivers/shark_pci26.h>
-#include <drivers/shark_input26.h>
-#include <drivers/shark_keyb26.h>
-#include <drivers/shark_fb26.h>
-
-#define FRAME_BUFFER_DEVICE 0
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-/*+ Interrupt Server +*/
-#define INTDRIVE_Q 1000
-#define INTDRIVE_T 10000
-#define INTDRIVE_FLAG 0
-
-void call_shutdown_task(void *arg);
-int device_drivers_init();
-int device_drivers_close();
-void set_shutdown_task();
-TASK shutdown_task_body(void *arg);
-
-PID shutdown_task_PID = -1;
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
- EDF_register_level(EDF_ENABLE_ALL);
- HCBS_register_level(HCBS_ENABLE_ALL, 1);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
- CABS_register_module();
-
- //read_file();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- /* Create the shutdown task. It will be activated at RUNLEVEL
- SHUTDOWN */
- set_shutdown_task();
-
- /* Init the drivers */
- device_drivers_init();
-
- /* Set the shutdown task activation */
- sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-void set_shutdown_task() {
-
- /* WARNING: the shutdown task is a background thread. It cannot execute
- if the system is overloaded */
- NRT_TASK_MODEL nrt;
-
- nrt_task_default_model(nrt);
- nrt_task_def_system(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();
- }
-
-}
-
-int device_drivers_init() {
-
- int res;
- KEYB_PARMS kparms = BASE_KEYB;
-
- LINUXC26_register_module();
-
- PCI26_init();
-
- INPUT26_init();
-
- keyb_def_ctrlC(kparms, NULL);
-
- KEYB26_init(&kparms);
-
- FB26_init();
-
- res = FB26_open(FRAME_BUFFER_DEVICE);
- if (res) {
- cprintf("Error: Cannot open graphical mode\n");
- KEYB26_close();
- INPUT26_close();
- sys_end();
- }
-
- FB26_use_grx(FRAME_BUFFER_DEVICE);
-
- FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
-
- return 0;
-
-}
-
-int device_drivers_close() {
-
- FB26_close(FRAME_BUFFER_DEVICE);
-
- KEYB26_close();
-
- INPUT26_close();
-
- return 0;
-
-}
-
-#define SHUTDOWN_TIMEOUT_SEC 3
-
-void call_shutdown_task(void *arg)
-{
- struct timespec t;
-
- sys_gettime(&t);
- t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
-
- /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
- kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
-
- task_activate(shutdown_task_PID);
-}
-
-TASK shutdown_task_body(void *arg) {
-
- device_drivers_close();
-
- sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
-
- sys_abort_shutdown(0);
-
- return NULL;
-
-}
Index: rel_1_4/orbit/orbit.dat
===================================================================
--- rel_1_4/orbit/orbit.dat (revision 1488)
+++ rel_1_4/orbit/orbit.dat (nonexistent)
@@ -1,21 +0,0 @@
-----------------------------------------------------
-period: 10000 wcet: 100
-delta: 1. scala: 150.
-G: 6.6e-15
-r_pianeta: 4 r_Terra: 8
-X_centro: 320 Y_centro: 240
-
-------------------- pianeti ------------------------
- massa pos.x pos.y vel.x vel.y
-0: 6.0e21 0. 0. 0. 0.
-1: 1.0e21 10000. 8000. -60. 0.
-2: 1.0e8 5000. 0. 0. 80.
-3: 5.0e18 10000. 8000. -50. 0.
-4: 1.0e9 10000. 8000. -40. 20.
-5: 1.0e15 1000. 5000. -80. 0.
-6: 1.0e5 1000. 5000. -80. 0.
-7: 1.0e17 1000. 5000. -80. 0.
-8: 1.0e5 1000. 5000. -80. 0.
-9: 1.0e5 1000. 5000. -80. 0.
-10: 1.0e5 1000. 5000. -80. 0.
-----------------------------------------------------