diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-09-02 13:48:36 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-09-02 14:59:42 +0200 |
commit | 4f44c91c68a3706e04334066f28471d56cc71849 (patch) | |
tree | c31bfb75b7abfea47a1773fcbe2782d4832d5c49 /include | |
parent | 4493d36a4769c6625e3025a0c484bf0ec65708bd (diff) | |
download | ouroboros-4f44c91c68a3706e04334066f28471d56cc71849.tar.gz ouroboros-4f44c91c68a3706e04334066f28471d56cc71849.zip |
lib: Add northbound ringbuffers
Fast path is split in north and southbound paths.
Diffstat (limited to 'include')
-rw-r--r-- | include/ouroboros/shm_ap_rbuff.h | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/include/ouroboros/shm_ap_rbuff.h b/include/ouroboros/shm_ap_rbuff.h index 9dad0863..594c9260 100644 --- a/include/ouroboros/shm_ap_rbuff.h +++ b/include/ouroboros/shm_ap_rbuff.h @@ -35,20 +35,38 @@ struct rb_entry { int port_id; }; -struct shm_ap_rbuff * shm_ap_rbuff_create(); -struct shm_ap_rbuff * shm_ap_rbuff_open(pid_t api); +/* recv SDUs from N + 1 */ +struct shm_ap_rbuff * shm_ap_rbuff_create_n(); + +/* recv SDUs from N - 1 */ +struct shm_ap_rbuff * shm_ap_rbuff_create_s(); + +/* write SDUs to N - 1 */ +struct shm_ap_rbuff * shm_ap_rbuff_open_n(pid_t api); + +/* write SDUs to N + 1 */ +struct shm_ap_rbuff * shm_ap_rbuff_open_s(pid_t api); + void shm_ap_rbuff_close(struct shm_ap_rbuff * rb); + void shm_ap_rbuff_destroy(struct shm_ap_rbuff * rb); + int shm_ap_rbuff_write(struct shm_ap_rbuff * rb, - struct rb_entry * e); + struct rb_entry * e); + struct rb_entry * shm_ap_rbuff_read(struct shm_ap_rbuff * rb); + int shm_ap_rbuff_peek_idx(struct shm_ap_rbuff * rb); + int shm_ap_rbuff_peek_b(struct shm_ap_rbuff * rb, const struct timespec * timeout); + ssize_t shm_ap_rbuff_read_port(struct shm_ap_rbuff * rb, - int port_id); -ssize_t shm_ap_rbuff_read_port_b(struct shm_ap_rbuff * rb, - int port_id, + int port_id); + +ssize_t shm_ap_rbuff_read_port_b(struct shm_ap_rbuff * rb, + int port_id, const struct timespec * timeout); + void shm_ap_rbuff_reset(struct shm_ap_rbuff * rb); #endif /* OUROBOROS_SHM_AP_RBUFF_H */ |