From 84e99fd7d15bd2c4c53e052f8ff0b177d8e4746f Mon Sep 17 00:00:00 2001 From: Rafael Zurita Date: Mon, 1 Jun 2020 01:49:45 -0300 Subject: [PATCH] from bbb port --- system/initialize.c | 62 ++++++++------------------------------------- system/kill.c | 4 --- 2 files changed, 10 insertions(+), 56 deletions(-) diff --git a/system/initialize.c b/system/initialize.c index 536f9ab..8d728e9 100644 --- a/system/initialize.c +++ b/system/initialize.c @@ -1,44 +1,16 @@ -/* Xinu for STM32 - * - * Original license applies - * Modifications for STM32 by Robin Krens - * Please see LICENSE and AUTHORS - * - * $LOG$ - * 2019/11/11 - ROBIN KRENS - * Initial version - * - * $DESCRIPTION$ - * - * */ - /* initialize.c - nulluser, sysinit */ +/* avr specific */ + /* Handle system initialization and become the null process */ #include #include -//RAFA +/* avr specific */ #include #include -/* -void probar_memoria() { - - char *m1; - char *m2; - char m3[] = "hola mundo"; - - m1 = getmem(20); - kprintf("m1 0x%08X , m3 0x%08X\n\n", m1, m3); - strncpy(m1, m3, 10); - kprintf("getmem %s \n", m1); - kprintf("m1 0x%08X , m3 0x%08X\n\n", m1, m3); - -} -*/ - extern void start(void); /* Start of Xinu code */ extern void *_end; /* End of Xinu code */ @@ -81,22 +53,8 @@ pid32 currpid; /* ID of currently executing process */ *------------------------------------------------------------------------ */ -// RAFA -// void PUT32 ( unsigned int, unsigned int ); -// unsigned int GET32 ( unsigned int ); -// void dummy ( unsigned int ); - -// #define GPIOCBASE 0x40011000 -// #define RCCBASE 0x40021000 - - -// FIN RAFA - - void nullprocess(void) { - // notmain(); - kprintf("nullp\n"); // resume(create((void *)main, INITSTK, INITPRIO, "Main Process", 0, NULL)); @@ -106,7 +64,7 @@ void nullprocess(void) { for(;;); } -// RAFA AVR specific: +/* avr specific */ #define GET_FAR_ADDRESS(var) \ ({ \ uint32_t tmp; \ @@ -126,15 +84,13 @@ void nullprocess(void) { }) -//RAFA -#include - void nulluser() { struct memblk *memptr; /* Ptr to memory block */ uint32 free_mem; /* Total amount of free memory */ /* Initialize the system */ + sysinit(); /* avr specific */ @@ -145,15 +101,12 @@ void nulluser() uint32 ptr_data_start; ptr_data_start = GET_FAR_ADDRESS(__data_start); //get the pointer - /* Output Xinu memory layout */ free_mem = 0; for (memptr = memlist.mnext; memptr != NULL; memptr = memptr->mnext) { free_mem += memptr->mlength; - // kprintf("\n\r0x%8X, FreeMEM:%d", memptr, memptr->mlength); } - kprintf("\n\rFreeMEM:%d\n", free_mem); /* Initialize the Null process entry */ @@ -212,6 +165,7 @@ static void sysinit() kprintf("\n\r%s\n", VERSION); /* Initialize free memory list */ + meminit(); /* Initialize system variables */ @@ -258,6 +212,10 @@ static void sysinit() init(i); } + /* Initialize the real time clock */ + + clkinit(); + return; } diff --git a/system/kill.c b/system/kill.c index 89fbd18..edb57dc 100644 --- a/system/kill.c +++ b/system/kill.c @@ -15,7 +15,6 @@ syscall kill( int32 i; /* Index into descriptors */ mask = disable(); - if (isbadpid(pid) || (pid == NULLPROC) || ((prptr = &proctab[pid])->prstate) == PR_FREE) { restore(mask); @@ -32,13 +31,10 @@ syscall kill( } freestk(prptr->prstkbase, prptr->prstklen); - switch (prptr->prstate) { case PR_CURR: prptr->prstate = PR_FREE; /* Suicide */ - // RAFA AGREGA resched(); -// *SCB_ICSR |= (1 << PENDSV_INTR); case PR_SLEEP: case PR_RECTIM: