mxSystemDienst.c


/* mxSystemDienst.c */

#include "mxSystemDienst.h"
#include "mxDienstStruk.h"
#include "mxLader.h"
#include "mxProzess.h"
#include "mxCPUVerwaltung.h"
#include "mxSeriell.h"
#include "mxLED.h"
#include "mxAusgabe.h"
#include "mxTrap.h"
#include "mxUhr.h"
#include "mxFehler.h"
#include "mxMMU.h"
#include "mxLib.h"

/* -------------------------------------------------------------------------------------------------------------------- */
/***************
** Funktionen **
***************/
void SystemDienst(tSystemAufrufPaket *Paket)
{
  if (HatStackUeberlauf()) SystemFehler(cStackUeberlauf);

  switch (Paket->Typ) {                                                 /* gewuenschten Systemdienst erbringen          */
  case eStarteProzess:
    Paket->Daten.Prozess = LadeProzess(Paket->Daten.Start.Name,
				       Paket->Daten.Start.ArgZeile);
    break;

  case eTerminiereProzess:
    EntferneProzess(Paket->Daten.Prozess);
    break;

  case eProzessInformationen:
    ProzessInformationen(Paket->Daten.Infos);
    break;

  case eTerminiere:
    EntferneProzess(LaufenderProzess());
    break;

  case eLiesZeichen:
    Paket->Daten.Zeichen = LiesZeichen();
    break;

  case eSchreibString:
    Schreibe(Paket->Daten.String, strlen(Paket->Daten.String));
    break;

  case eLiesSystemStatus:
    Paket->Daten.Status.uptime = jiffies / cTicksProSekunde;
    break;

  case eSetze7Segment:
    Setze7SegmentFuerProzess(Paket->Daten.LED.Zahl, Paket->Daten.LED.Stellen);
    break;

  default:
    SystemFehler(cPaketFehler);                                         /* Unbekannter Systemdienst -> Fehler           */
    break;
  }

  if (IstAbgeschossen(LaufenderProzess())) {                            /* wurde von anderem Prozess versucht Prozess   */
                                                                        /* waehrend er im Kern lief abzuschiessen?      */
    EntferneProzess(LaufenderProzess());                                /*   ja -> jetzt terminieren                    */
  }
} /* SystemDienst */

/* -------------------------------------------------------------------------------------------------------------------- */

int InitSystemDienst(void)
{
  return TRUE;
}


Bei Problemen mit der Seite bitte eine Mail an Marek
Converted with C2HTML V0.669 by Iluvatar
Prozeßdatenverarbeitung