more todo; howto-build++
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1075 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -10,7 +10,7 @@ Additional libraries/packages/tools needed for Fail*:
|
|||||||
cmake
|
cmake
|
||||||
cmake-curses-gui
|
cmake-curses-gui
|
||||||
|
|
||||||
AspectC++ (ag++, ac++) SVN
|
AspectC++ (ag++, ac++)
|
||||||
(AspectC++ 1.1 or newer is known to work and can be obtained from
|
(AspectC++ 1.1 or newer is known to work and can be obtained from
|
||||||
http://www.aspectc.org ; nightlies can be downloaded from
|
http://www.aspectc.org ; nightlies can be downloaded from
|
||||||
http://akut.aspectc.org)
|
http://akut.aspectc.org)
|
||||||
|
|||||||
40
doc/todo.txt
40
doc/todo.txt
@ -1,3 +1,16 @@
|
|||||||
|
Verrückte Ideen
|
||||||
|
===============
|
||||||
|
- aufeinander aufbauende Events (Backend-spezifisch <- generisch, oder mehrere
|
||||||
|
Einzelevents gebündelt in ein einzelnes abstraktes ["Crash", HLT mit
|
||||||
|
abgeschalteten Interrupts])
|
||||||
|
* lösbar als Callback-"Experimente", die selbst Events auslösen?
|
||||||
|
* Synthese komplexerer Events
|
||||||
|
- Events fuer besondere Instruktionen (HLT?)
|
||||||
|
- Backend-Schnittstelle (z.B. direkte Anbindung an Simulator vs.
|
||||||
|
GDB-Schnittstelle zu Simulator vs. Anbindung an reale HW) von
|
||||||
|
Backend-Metainformationen (welche Register gibt es, wie breit ist der
|
||||||
|
Datenbus, welche Traps können ausgelöst werden)
|
||||||
|
|
||||||
FailBochs-Bausteine TODO
|
FailBochs-Bausteine TODO
|
||||||
========================
|
========================
|
||||||
Wer gerade an was arbeitet, steht in Klammern hinter dem TODO.
|
Wer gerade an was arbeitet, steht in Klammern hinter dem TODO.
|
||||||
@ -11,18 +24,17 @@ Bochs:
|
|||||||
- gemeinsame Namen fuer RDX/EDX (ab)
|
- gemeinsame Namen fuer RDX/EDX (ab)
|
||||||
|
|
||||||
Abstraktionen:
|
Abstraktionen:
|
||||||
- Backend-Schnittstelle (z.B. direkte Anbindung an Simulator vs.
|
! Timer (Bochs: basierend auf bx_pc_system.register_timer()) für "echte"
|
||||||
GDB-Schnittstelle zu Simulator vs. Anbindung an reale HW) von
|
Timeouts (die auch dann greifen, wenn die CPU z.B. in einem CLI/HLT steht)
|
||||||
Backend-Metainformationen (welche Register gibt es, wie breit ist der
|
- Traces: geeignet kapseln, in einer Sequenz von protobuf-Nachrichten statt
|
||||||
Datenbus, welche Traps können ausgelöst werden)
|
einer großen rausschreiben/laden (rh)
|
||||||
- Endianness?
|
- Endianness?
|
||||||
- Merkmalmodell von Implementierungsdetails trennen (hsc)
|
- Merkmalmodell von Implementierungsdetails trennen (hsc)
|
||||||
-> automatische Konfigurierung anhand Experimentauswahl
|
-> automatische Konfigurierung anhand Experimentauswahl
|
||||||
-> Annotierung von Experimentcode, automatisches Nachladen von Aspekten
|
-> Annotierung von Experimentcode, automatisches Nachladen von Aspekten
|
||||||
- zum Verpacken in ExperimentData-Nachrichten Register<->String-Konvertierung
|
- zum Verpacken in ExperimentData-Nachrichten Register<->String-Konvertierung
|
||||||
vereinfachen (ab)
|
vereinfachen (ab)
|
||||||
- Namespace Confusion: was gehört in fi::, was in sal::? Brauchen wir noch
|
- Namespace Confusion: aufräumen (ab)
|
||||||
beides, brauchen wir was Zusätzliches?
|
|
||||||
- einheitliches Namensschema für Backend-Beeinflussungen (Interrupt-Synthese,
|
- einheitliches Namensschema für Backend-Beeinflussungen (Interrupt-Synthese,
|
||||||
Interrupt-Unterdrückung, Speicher schreiben, Register schreiben, ...) finden
|
Interrupt-Unterdrückung, Speicher schreiben, Register schreiben, ...) finden
|
||||||
-> "Fehlerinjektion" ist das ja nicht immer
|
-> "Fehlerinjektion" ist das ja nicht immer
|
||||||
@ -33,14 +45,8 @@ Abstraktionen:
|
|||||||
-> "Ausgabesystem", "Logger"
|
-> "Ausgabesystem", "Logger"
|
||||||
|
|
||||||
Events:
|
Events:
|
||||||
- sobald mehrere Aspekte an derselben Stelle hooken, muss in einer Schleife
|
- Speicherzugriffe: bei Instruction Fetch? INC $Adresse? CALL? PUSH?
|
||||||
nach jeder Kontrollübergabe an den SimulatorController geprüft werden, ob
|
PUSHF? Interrupt? (ab)
|
||||||
neue Events oder Fehlerinjektionsaufträge vorliegen
|
|
||||||
-> Anwendungsfall z.B. Breakpoint an Adresse X, danach Zustandssicherung;
|
|
||||||
man will natürlich EIP==X in dem gesicherten Zustand haben, nicht X+y (hsc)
|
|
||||||
- MemEvents: Instruction-Fetch und weitere CPU-interne Speicherzugriffe
|
|
||||||
(Interrupt-Kontextsicherung, HW-Tasks, Interrupt-Vektoren, ...) ermöglichen
|
|
||||||
und konfigurierbar machen
|
|
||||||
|
|
||||||
Parallelisierung:
|
Parallelisierung:
|
||||||
- Momentan landen initial *alle* Parametersätze im Speicher. Sobald das viel
|
- Momentan landen initial *alle* Parametersätze im Speicher. Sobald das viel
|
||||||
@ -75,16 +81,10 @@ Parallelisierung:
|
|||||||
nicht über die Leitung, werden aber am Schluss zur Auswertung gebraucht
|
nicht über die Leitung, werden aber am Schluss zur Auswertung gebraucht
|
||||||
|
|
||||||
Implementierungsdetails:
|
Implementierungsdetails:
|
||||||
- EventList, RegisterIterator, ...: nach Möglichkeit keine selbstgebauten
|
|
||||||
Container/Iteratoren etc. benutzen, sondern in der STL bedienen (z.B. von
|
|
||||||
std::list ableiten)
|
|
||||||
* falls doch ein Eigenbau notwendig ist, unbedingt STL-Schnittstellen
|
|
||||||
nachbilden
|
|
||||||
- einheitliche Fehlerbehandlung
|
- einheitliche Fehlerbehandlung
|
||||||
- einheitliches Logging (Loglevels?)
|
- einheitliches Logging (Loglevels?)
|
||||||
|
|
||||||
Effizienz:
|
Effizienz:
|
||||||
- zuerst: Bottleneck identifizieren!
|
|
||||||
- getrennte Queues?
|
- getrennte Queues?
|
||||||
- Queue-Suche optimieren (z.B. Hash-Idee)?
|
- Queue-Suche optimieren (z.B. Hash-Idee)?
|
||||||
- boolean/Counter für Events (um Durchlaufen der Queue zu verhindern)?
|
- boolean/Counter für Events (um Durchlaufen der Queue zu verhindern)?
|
||||||
|
|||||||
Reference in New Issue
Block a user