summaryrefslogtreecommitdiff
path: root/include/ouroboros/shm_rdrbuff.h
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@intec.ugent.be>2016-09-18 06:27:43 +0200
committerdimitri staessens <dimitri.staessens@intec.ugent.be>2016-10-04 15:16:00 +0200
commitc96efb13edfaf9b2f2c626bd2a5d5d5afd38155f (patch)
treeacd08f09f5a094e897020e97961b2847209df043 /include/ouroboros/shm_rdrbuff.h
parent2e561a634ae3e747b293a4e05eaf44726968dc1a (diff)
downloadouroboros-c96efb13edfaf9b2f2c626bd2a5d5d5afd38155f.tar.gz
ouroboros-c96efb13edfaf9b2f2c626bd2a5d5d5afd38155f.zip
lib, ipcp: Revise fast path and flow interfaces
IPCPs can now use ap_init() to initialize the memory. All flows are accessed using flow descriptors, this greatly simplifies IPCP development. Reverts the fast path to a single ap_rbuff per process. Splits lib/ipcp into irmd/ipcp and lib/ipcp-dev. Adds a lib/shim-dev holding tailored functions for shims. Moves the buffer_t to utils.h. Fixes the shim-eth-llc length field. Removes the flow from shared.h. Fixes #4 Fixes #5
Diffstat (limited to 'include/ouroboros/shm_rdrbuff.h')
-rw-r--r--include/ouroboros/shm_rdrbuff.h59
1 files changed, 32 insertions, 27 deletions
diff --git a/include/ouroboros/shm_rdrbuff.h b/include/ouroboros/shm_rdrbuff.h
index 7a7049e3..f1be3652 100644
--- a/include/ouroboros/shm_rdrbuff.h
+++ b/include/ouroboros/shm_rdrbuff.h
@@ -33,6 +33,8 @@
struct shm_du_buff;
struct shm_rdrbuff;
+size_t shm_du_buff_get_idx(struct shm_du_buff * sdb);
+
struct shm_rdrbuff * shm_rdrbuff_create();
struct shm_rdrbuff * shm_rdrbuff_open();
@@ -44,40 +46,43 @@ void shm_rdrbuff_destroy(struct shm_rdrbuff * rdrb);
void * shm_rdrbuff_sanitize(void * o);
/* returns the index of the buffer in the DU map */
-ssize_t shm_rdrbuff_write(struct shm_rdrbuff * rdrb,
- pid_t dst_api,
- size_t headspace,
- size_t tailspace,
- uint8_t * data,
- size_t data_len);
+ssize_t shm_rdrbuff_write(struct shm_rdrbuff * rdrb,
+ pid_t dst_api,
+ size_t headspace,
+ size_t tailspace,
+ uint8_t * data,
+ size_t data_len);
+
+ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,
+ pid_t dst_api,
+ size_t headspace,
+ size_t tailspace,
+ uint8_t * data,
+ size_t data_len);
-ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,
- pid_t dst_api,
- size_t headspace,
- size_t tailspace,
- uint8_t * data,
- size_t data_len);
+int shm_rdrbuff_read(uint8_t ** dst,
+ struct shm_rdrbuff * rdrb,
+ ssize_t idx);
-int shm_rdrbuff_read(uint8_t ** dst,
- struct shm_rdrbuff * rdrb,
- ssize_t idx);
+struct shm_du_buff * shm_rdrbuff_get(struct shm_rdrbuff * rdrb,
+ ssize_t idx);
-int shm_rdrbuff_remove(struct shm_rdrbuff * rdrb,
- ssize_t idx);
+int shm_rdrbuff_remove(struct shm_rdrbuff * rdrb,
+ ssize_t idx);
-uint8_t * shm_du_buff_head(struct shm_du_buff * sdb);
+uint8_t * shm_du_buff_head(struct shm_du_buff * sdb);
-uint8_t * shm_du_buff_tail(struct shm_du_buff * sdb);
+uint8_t * shm_du_buff_tail(struct shm_du_buff * sdb);
-uint8_t * shm_du_buff_head_alloc(struct shm_du_buff * sdb,
- size_t size);
+uint8_t * shm_du_buff_head_alloc(struct shm_du_buff * sdb,
+ size_t size);
-uint8_t * shm_du_buff_tail_alloc(struct shm_du_buff * sdb,
- size_t size);
+uint8_t * shm_du_buff_tail_alloc(struct shm_du_buff * sdb,
+ size_t size);
-int shm_du_buff_head_release(struct shm_du_buff * sdb,
- size_t size);
+int shm_du_buff_head_release(struct shm_du_buff * sdb,
+ size_t size);
-int shm_du_buff_tail_release(struct shm_du_buff * sdb,
- size_t size);
+int shm_du_buff_tail_release(struct shm_du_buff * sdb,
+ size_t size);
#endif /* OUROBOROS_SHM_RDRBUFF_H */