Moved deprecated files/folders to temp-folder, FI-stuff removed, cleaned up aspect (file-)names and code (-> coding-style).
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1320 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
35
deprecated/old-aspects/JumpToPreviousCtx.ah
Normal file
35
deprecated/old-aspects/JumpToPreviousCtx.ah
Normal file
@ -0,0 +1,35 @@
|
||||
#ifndef __JUMP_TO_PREVIOUS_CTX_AH__
|
||||
#define __JUMP_TO_PREVIOUS_CTX_AH__
|
||||
|
||||
#include "config/FailConfig.hpp"
|
||||
|
||||
// FIXME: What's the purpose of this file/code? Deprecated?
|
||||
|
||||
#if 0
|
||||
// #if defined(CONFIG_SR_RESTORE) || defined(CONFIG_SR_REBOOT)
|
||||
|
||||
#include "bochs.h"
|
||||
#include "../SALInst.hpp"
|
||||
|
||||
aspect jumpToPreviousCtx
|
||||
{
|
||||
pointcut end_reset_handler() = "void bx_gui_c::reset_handler(...)";
|
||||
//|| "int bxmain()";
|
||||
|
||||
|
||||
advice execution (end_reset_handler()) : after ()
|
||||
{
|
||||
|
||||
if (fail::restore_bochs_request || fail::reboot_bochs_request )
|
||||
{
|
||||
fail::restore_bochs_request = false;
|
||||
fail::reboot_bochs_request = false;
|
||||
fail::simulator.toPreviousCtx();
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#endif // CONFIG_SR_RESTORE || CONFIG_SR_REBOOT
|
||||
|
||||
#endif // __JUMP_TO_PREVIOUS_CTX_AH__
|
||||
102
deprecated/old-aspects/MemAccessBitFlip.ah
Normal file
102
deprecated/old-aspects/MemAccessBitFlip.ah
Normal file
@ -0,0 +1,102 @@
|
||||
#ifndef __MEM_ACCESS_BIT_FLIP_AH__
|
||||
#define __MEM_ACCESS_BIT_FLIP_AH__
|
||||
|
||||
#include "config/FailConfig.hpp"
|
||||
|
||||
#ifdef CONFIG_FI_MEM_ACCESS_BITFLIP
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
|
||||
#include "bochs.h"
|
||||
#include "../../controller/EventList.hpp"
|
||||
#include "../../controller/Event.hpp"
|
||||
|
||||
// FIXME: This is deprecated stuff. Delete this file.
|
||||
|
||||
using namespace std;
|
||||
|
||||
// FIXME this code doesn't make any sense for the read_virtual_% functions
|
||||
// (the fault would need to be injected into their *return* value)
|
||||
|
||||
aspect MemAccessBitFlip
|
||||
{
|
||||
pointcut injection_methods()
|
||||
= "% ...::bx_cpu_c::read_virtual_%(...)" || // -> access32/64.cc
|
||||
/*
|
||||
"% ...::bx_cpu_c::read_RMW_virtual_%(...)" || // -> access32.cc
|
||||
"% ...::bx_cpu_c::system_read_%(...)" || // -> access.cc
|
||||
"% ...::bx_cpu_c::v2h_read_byte(...)" || // -> access.cc
|
||||
*/
|
||||
"% ...::bx_cpu_c::write_virtual_%(...)"; // -> access32/64.cc
|
||||
/*
|
||||
"% ...::bx_cpu_c::write_RMW_virtual_%(...)" || // -> access32.cc
|
||||
"% ...::bx_cpu_c::write_new_stack_%(...)" || // -> access32/64.cc
|
||||
"% ...::bx_cpu_c::system_write_%(...)" || // -> access.cc
|
||||
"% ...::bx_cpu_c::v2h_write_byte(...)"; // -> access.cc
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// Injects a bitflip each time the guest system requests to write/read
|
||||
// data to/from RAM at the (hardcoded) addresses defined above:
|
||||
//
|
||||
// Event source: "memory write/read access"
|
||||
//
|
||||
advice execution (injection_methods()) : before ()
|
||||
{
|
||||
for(size_t i = 0; i < fi::evbuf.getEventCount(); i++) // check for active events
|
||||
{
|
||||
fi::SimpleBitFlip* pEv = dynamic_cast<fi::SimpleBitFlip*>(fi::evbuf.getEvent(i)); // FIXME: Performance verbessern
|
||||
if(pEv && *(tjp->arg<1>())/*typed!*/ == pEv->getAddress())
|
||||
{
|
||||
cout << " " << tjp->signature() << endl;
|
||||
|
||||
// Get a pointer to the data that should be written to RAM
|
||||
// *before* it is actually written:
|
||||
Bit32u* pData = (Bit32u*)(tjp->arg(JoinPoint::ARGS-1));
|
||||
|
||||
// Flip bit at position pEv->getBitPos():
|
||||
char* ptr = (char*)pData; // For simplification we're just looking at the
|
||||
// first byte of the data
|
||||
ptr[0] = (ptr[0]) ^ (pEv->getMask() << pEv->getBitPos());
|
||||
|
||||
cout << " >>> Bit flipped at index " << pEv->getBitPos()
|
||||
<< " at address 0x" << hex << (*(tjp->arg<1>())) << "!" << endl;
|
||||
fi::evbuf.fireEvent(pEv);
|
||||
// Continue... (maybe more events to process)
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
//
|
||||
// Shows the mapping of a virtual address (within eCos) to a *host* address:
|
||||
//
|
||||
if(g_fEnableInjection) // event fired?
|
||||
{
|
||||
g_fEnableInjection = false;
|
||||
const unsigned SEGMENT_SELECTOR_IDX = 2; // always the code segment (seg-base-addr should be zero)
|
||||
const bx_address logicalAddr = MEM_ADDR_TO_INJECT; // offset within the segment ("local eCos address")
|
||||
|
||||
// Get the linear address:
|
||||
Bit32u linearAddr = pThis->get_laddr32(SEGMENT_SELECTOR_IDX/ *seg* /, logicalAddr/ *offset* /);
|
||||
// Map the linear address to the physical address:
|
||||
bx_phy_address physicalAddr;
|
||||
bx_bool fValid = pThis->dbg_xlate_linear2phy(linearAddr, (bx_phy_address*)&physicalAddr);
|
||||
// Determine the *host* address of the physical address:
|
||||
Bit8u* hostAddr = BX_MEM(0)->getHostMemAddr(pThis, physicalAddr, BX_READ);
|
||||
// Now, hostAddr contains the "final" address where we are allowed to inject errors:
|
||||
*(unsigned*)hostAddr = BAD_VALUE; // inject error
|
||||
if(!fValid)
|
||||
printf("[Error]: Could not map logical address to host address.\n");
|
||||
else
|
||||
printf("[Info]: Error injected at logical addr %p (host addr %p).\n", logicalAddr, hostAddr);
|
||||
}
|
||||
*/
|
||||
};
|
||||
|
||||
#endif // CONFIG_FI_MEM_ACCESS_BITFLIP
|
||||
|
||||
#endif // __MEM_ACCESS_BIT_FLIP_AH__
|
||||
|
||||
29
deprecated/old-aspects/fireTimer.ah
Normal file
29
deprecated/old-aspects/fireTimer.ah
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef __FIRETIMER_AH__
|
||||
#define __FIRETIMER_AH__
|
||||
|
||||
#include <iostream>
|
||||
|
||||
// FIXME: This seems deprecated...?!
|
||||
|
||||
aspect fireTimer {
|
||||
|
||||
advice "bx_pc_system_c" : slice class {
|
||||
public:
|
||||
// TODO: Log-level?
|
||||
void fireTimer(Bit32u timerNum){
|
||||
if(timerNum <= numTimers){
|
||||
if(!timer[timerNum].active){
|
||||
std::cout << "[FAIL] WARNING: The selected timer is actually NOT active!" << std::endl;
|
||||
}
|
||||
currCountdownPeriod = Bit64u(1);
|
||||
timer[timerNum].timeToFire = Bit64u(currCountdownPeriod) + ticksTotal;
|
||||
std::cout << "[FAIL] Timer " << timerNum <<" will fire now!" << std::endl;
|
||||
}else{
|
||||
std::cout << "[FAIL] There are actually only " << numTimers <<" allocated!" << std::endl;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#endif // __FIRETIMER_AH__
|
||||
Reference in New Issue
Block a user