/demos/tags/start/pse51/ptest5 |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Index: start/pse51/pinit.c |
=================================================================== |
--- start/pse51/pinit.c (revision 1087) |
+++ start/pse51/pinit.c (nonexistent) |
@@ -1,126 +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: pinit.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $ |
- |
- File: $File$ |
- Revision: $Revision: 1.1.1.1 $ |
- Last update: $Date: 2002-09-02 09:37:47 $ |
- ------------ |
- |
- This is a minimal initialization file for the PSE51 profile. |
- |
- It initializes the POSIX scheduler, the Hartik Ports and the Keyboard driver. |
- |
-**/ |
- |
-/* |
- * 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/posix.h" |
-#include "modules/dummy.h" |
- |
-#include "modules/pi.h" |
-#include "modules/pc.h" |
- |
-#include "modules/sem.h" |
-#include "modules/hartport.h" |
- |
-#include "drivers/keyb.h" |
- |
-#include "pthread.h" |
-#include "time.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; |
- |
- POSIX_register_level(RRTICK, POSIX_MAIN_YES, mb, 32); |
- dummy_register_level(); |
- |
- PI_register_module(); |
- PC_register_module(); |
- |
- SEM_register_module(); |
- |
- /* for the Pthread library */ |
- PTHREAD_register_module(1, 0, 1); |
- |
- /* for the real time clock extensions */ |
- TIMER_register_module(); |
- |
- return TICK; |
-} |
- |
-TASK __init__(void *arg) |
-{ |
- struct multiboot_info *mb = (struct multiboot_info *)arg; |
- NRT_TASK_MODEL m; // the scheduling model for the Keyboard |
- |
- KEYB_PARMS k = BASE_KEYB; |
- keyb_def_task(k, &m); |
- |
- nrt_task_default_model(m); |
- nrt_task_def_arg(m,arg); |
- nrt_task_def_usemath(m); |
- nrt_task_def_ctrl_jet(m); |
- nrt_task_def_save_arrivals(m); |
- nrt_task_def_unjoinable(m); |
- nrt_task_def_weight(m, sched_get_priority_max(SCHED_RR)); |
- nrt_task_def_policy(m,SCHED_RR); |
- nrt_task_def_inherit(m,PTHREAD_EXPLICIT_SCHED); |
- nrt_task_def_nokill(m); |
- nrt_task_def_system(m); |
- |
- HARTPORT_init(); |
- |
- if (KEYB_init(&k) < 0) |
- kern_printf("Error during Keyboard Initialization!!!"); |
- |
- __call_main__(mb); |
- |
- return (void *)0; |
-} |
Index: start/pse51/ptest4.c |
=================================================================== |
--- start/pse51/ptest4.c (revision 1087) |
+++ start/pse51/ptest4.c (nonexistent) |
@@ -1,151 +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: ptest4.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $ |
- |
- File: $File$ |
- Revision: $Revision: 1.1.1.1 $ |
- Last update: $Date: 2002-09-02 09:37:47 $ |
- ------------ |
- |
- Posix test 4: |
- |
- the main task create 3 tasks, J1, J2, J3 |
- at t = 1 sec. it raise a signal to J1 |
- at t = 2 sec. it kills J2 |
- |
- J1,J2,J3: it simply calls nanosleep |
- |
- non standard function used: |
- cprintf |
- sys_gettime |
- keyboard stuffs |
- sys_end |
- |
-**/ |
- |
-/* |
- * 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 <sys/types.h> |
-#include <pthread.h> |
-#include <signal.h> |
-#include <time.h> |
- |
-#include <kernel/kern.h> |
-#include <drivers/keyb.h> |
- |
-void uscitaJ(void *arg) |
-{ |
- cprintf("J: (pid=%d) AAAARRRRGGGHHH!!! killed by someone...\n", exec_shadow); |
-} |
- |
-void *J(void *arg) |
-{ |
- struct timespec t1, t2; |
- int err; |
- |
- cprintf("J (pid=%d) starts and call nanosleep\n",exec_shadow); |
- |
- t1.tv_sec = 3; |
- t1.tv_nsec = 0; |
- NULL_TIMESPEC(&t2); |
- pthread_cleanup_push(uscitaJ,NULL); |
- err = nanosleep(&t1, &t2); |
- pthread_cleanup_pop(0); |
- |
- cprintf("J (pid=%d) ending, nanosleep returns errno=%d, t2=%ld.%ld\n", |
- exec_shadow, err, t2.tv_sec, t2.tv_nsec/1000); |
- |
- return 0; |
-} |
- |
-void signal_handler(int signo, siginfo_t *info, void *extra) |
-{ |
- cprintf("SIGNAL HANDLER: pid=%d\n",exec_shadow); |
-} |
- |
-void fine(KEY_EVT *e) |
-{ |
- sys_end(); |
-} |
- |
- |
-int main(int argc, char **argv) |
-{ |
- int err; |
- pthread_t j1, j2, j3; |
- struct sigaction sig_act; |
- |
- KEY_EVT emerg; |
- //keyb_set_map(itaMap); |
- emerg.ascii = 'x'; |
- emerg.scan = KEY_X; |
- emerg.flag = ALTL_BIT; |
- keyb_hook(emerg,fine); |
- |
- sig_act.sa_sigaction = (void *) signal_handler; |
- sig_act.sa_flags = SA_SIGINFO; |
- sigemptyset(&sig_act.sa_mask); |
- |
- sigaction(31, &sig_act, NULL); |
- |
- cprintf("main: creating J1\n"); |
- err = pthread_create(&j1, NULL, J, NULL); |
- if (err) cprintf("Error creating J1\n"); |
- |
- cprintf("main: creating J2\n"); |
- err = pthread_create(&j2, NULL, J, NULL); |
- if (err) cprintf("Error creating J2\n"); |
- |
- cprintf("main: creating J3\n"); |
- err = pthread_create(&j3, NULL, J, NULL); |
- if (err) cprintf("Error creating J3\n"); |
- |
- cprintf("main: waiting 1 sec\n"); |
- while (sys_gettime(NULL) < 1000000); |
- |
- cprintf("main: pthread_kill on j1, then wait until t=2 sec \n"); |
- pthread_kill(j1, 31); |
- |
- while (sys_gettime(NULL) < 2000000); |
- cprintf("main: pthread_cancel(J2)\n"); |
- pthread_cancel(j2); |
- |
- cprintf("main: ending...\n"); |
- |
- return 0; |
-} |
Index: start/pse51/ptest6 |
=================================================================== |
--- start/pse51/ptest6 (revision 1087) |
+++ start/pse51/ptest6 (nonexistent) |
@@ -1,527 +0,0 @@ |
-ELF " |