#include <arbiter.h>

Public Member Functions | |
| SAMPA_PERSISTENT (Module) | |
| const char * | get_name () const |
| const char * | get_full_name () const |
| name can be ([^. ]+.)*[^. ]+ | |
| Object * | get_parent () const |
| return object containing this one | |
| Object * | get_sibling () const |
| return next object with same parent or NULL if none | |
| Object * | get_first_child () const |
| return first child object or NULL if none | |
| int | is_debug () const |
| virtual bool | recieve_response (const Response &)=0 |
Protected Types | |
| enum | Severity { S_INFO, S_WARNING, S_ERROR, S_FATAL } |
Protected Member Functions | |
| void | set_next_trigger (EventListenerSingle &) |
| ProcessBase * | __get_process_by_name (const std::string &name) |
| void | debug (const char *,...) |
| void | error (Severity severity, const char *,...) |
| virtual void | complete_restart () |
Private Types | |
| enum | SchedulingPolicy { PRIORITY, ROUND_ROBIN } |
Private Member Functions | |
| Arbiter (const Name &name) | |
| void | bind_initiator (Initiator *initiator) |
| Target * | get_target (const std::string &) |
| void | bind_target (Target *target) |
| Initiator * | get_initiator () |
| void | bind_clock (Clock *) |
Its latency is 1 cycle for request, and 0 for response and it is pipelined. It doesn't support neither srmd nor threads. And it has a configurable input fifo.
Binding:
Parameters:
arbiter = { initiator = "arbiter_to_memory",
requester = { "camera_to_arbiter", "display_to_arbiter" },
camera_to_arbiter = { debug = 2 },
outstanding_fifo = { depth = 16 },
policy = "round robin",
}
Definition at line 96 of file arbiter.h.
enum Sampa::Arbiter::SchedulingPolicy [private] |
enum Sampa::Object::Severity [protected, inherited] |
| Sampa::Arbiter::Arbiter | ( | const Name & | name | ) | [private] |
| void Sampa::Arbiter::bind_initiator | ( | Initiator * | initiator | ) | [private] |
| Target* Sampa::Arbiter::get_target | ( | const std::string & | ) | [private] |
| void Sampa::Arbiter::bind_target | ( | Target * | target | ) | [private] |
| Initiator* Sampa::Arbiter::get_initiator | ( | ) | [inline, private] |
| void Sampa::Arbiter::bind_clock | ( | Clock * | ) | [private] |
| void Sampa::Module::set_next_trigger | ( | EventListenerSingle & | ) | [protected, inherited] |
| ProcessBase* Sampa::Module::__get_process_by_name | ( | const std::string & | name | ) | [protected, inherited] |
| Sampa::Module::SAMPA_PERSISTENT | ( | Module | ) | [inherited] |
| const char* Sampa::Object::get_name | ( | ) | const [inherited] |
returns the local name
| const char* Sampa::Object::get_full_name | ( | ) | const [inherited] |
name can be ([^. ]+.)*[^. ]+
| Object* Sampa::Object::get_parent | ( | ) | const [inherited] |
return object containing this one
| Object* Sampa::Object::get_sibling | ( | ) | const [inherited] |
return next object with same parent or NULL if none
| Object* Sampa::Object::get_first_child | ( | ) | const [inherited] |
return first child object or NULL if none
| void Sampa::Object::debug | ( | const char * | , | |
| ... | ||||
| ) | [protected, inherited] |
| void Sampa::Object::error | ( | Severity | severity, | |
| const char * | , | |||
| ... | ||||
| ) | [protected, inherited] |
| virtual void Sampa::Object::complete_restart | ( | ) | [protected, virtual, inherited] |
is called to finalize restart. On restart, one shall update pointers, or reopen ressources (files, ...).
Most of pointers are restored by the thanks to the post++ library provided that the CLASSINFO() was correctly set.
However, some pointers are not relocated by the library. These are for example the method pointers used for the processes. Take a look at
Reimplemented in Sampa::Bridge, Sampa::Dma, Sampa::FixLatencySlave, Sampa::PeriodicTrafficGenerator, Sampa::TwoPortL1Cpu, and Sampa::StochasticCpu.
| virtual bool Sampa::InitiatorResponseInterface::recieve_response | ( | const Response & | ) | [pure virtual, inherited] |
1.5.3