|
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