/src/rt/rust_port.h
http://github.com/jruderman/rust · C Header · 54 lines · 31 code · 12 blank · 11 comment · 0 complexity · 19b4d075e312d7e15b8cd58ad677f55e MD5 · raw file
- #ifndef RUST_PORT_H
- #define RUST_PORT_H
- #include "rust_globals.h"
- #include "circular_buffer.h"
- class port_detach_cond : public rust_cond { };
- class rust_port : public kernel_owned<rust_port>, public rust_cond {
- private:
- // Protects ref_count and detach_cond
- lock_and_signal ref_lock;
- intptr_t ref_count;
- port_detach_cond detach_cond;
- public:
- void ref();
- void deref();
- public:
- rust_port_id id;
- rust_kernel *kernel;
- rust_task *task;
- size_t unit_sz;
- circular_buffer buffer;
- lock_and_signal lock;
- public:
- rust_port(rust_task *task, size_t unit_sz);
- ~rust_port();
- void log_state();
- void send(void *sptr);
- void receive(void *dptr, uintptr_t *yield);
- size_t size();
- void begin_detach(uintptr_t *yield);
- void end_detach();
- };
- //
- // 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:
- //
- #endif /* RUST_PORT_H */