diff options
Diffstat (limited to 'src/rt/rust_message.cpp')
| -rw-r--r-- | src/rt/rust_message.cpp | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/src/rt/rust_message.cpp b/src/rt/rust_message.cpp deleted file mode 100644 index f8001a17193..00000000000 --- a/src/rt/rust_message.cpp +++ /dev/null @@ -1,125 +0,0 @@ -#include "rust_internal.h" -#include "rust_message.h" - -rust_message:: -rust_message(memory_region *region, const char* label, - rust_handle<rust_task> *source, rust_handle<rust_task> *target) : - label(label), region(region), _source(source), _target(target) { -} - -rust_message::~rust_message() { -} - -void rust_message::process() { -} - -void rust_message::kernel_process() { -} - -notify_message:: -notify_message(memory_region *region, notification_type type, - const char* label, rust_handle<rust_task> *source, - rust_handle<rust_task> *target) : - rust_message(region, label, source, target), type(type) { -} - -data_message:: -data_message(memory_region *region, uint8_t *buffer, size_t buffer_sz, - const char* label, rust_handle<rust_task> *source, - rust_handle<rust_port> *port) : - rust_message(region, label, source, NULL), - _buffer_sz(buffer_sz), _port(port) { - _buffer = (uint8_t *)malloc(buffer_sz); - memcpy(_buffer, buffer, buffer_sz); -} - -data_message::~data_message() { - free (_buffer); -} - -/** - * Sends a message to the target task via a proxy. The message is allocated - * in the target task domain along with a proxy which points back to the - * source task. - */ -void notify_message:: -send(notification_type type, const char* label, - rust_handle<rust_task> *source, rust_handle<rust_task> *target) { - memory_region *region = &target->message_queue->region; - notify_message *message = - new (region, "notify_message") - notify_message(region, type, label, source, target); - target->message_queue->enqueue(message); -} - -void notify_message::process() { - rust_task *task = _target->referent(); - switch (type) { - case KILL: - // task->ref_count--; - task->kill(); - break; - case JOIN: { - if (task->dead() == false) { - // FIXME: this should be dead code. - assert(false); - } else { - send(WAKEUP, "wakeup", _target, _source); - } - break; - } - case WAKEUP: - task->wakeup(_source); - break; - } -} - -void notify_message::kernel_process() { - switch(type) { - case WAKEUP: - case KILL: - // Ignore. - break; - case JOIN: - send(WAKEUP, "wakeup", _target, _source); - break; - } -} - -void data_message:: -send(uint8_t *buffer, size_t buffer_sz, const char* label, - rust_handle<rust_task> *source, rust_handle<rust_port> *port) { - - memory_region *region = &port->message_queue->region; - data_message *message = - new (region, "data_message") - data_message(region, buffer, buffer_sz, label, source, port); - LOG(source->referent(), comm, "==> sending \"%s\"" PTR " in queue " PTR, - label, message, &port->message_queue); - port->message_queue->enqueue(message); -} - -void data_message::process() { - _port->referent()->remote_channel->send(_buffer); -} - -void data_message::kernel_process() { - -} - -rust_message_queue::rust_message_queue(rust_srv *srv, rust_kernel *kernel) - : region(srv, true), - kernel(kernel), - sched_handle(NULL) { -} - -// -// Local Variables: -// mode: C++ -// fill-column: 78; -// indent-tabs-mode: nil -// c-basic-offset: 4 -// buffer-file-coding-system: utf-8-unix -// compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'"; -// End: -// |
