From c96efb13edfaf9b2f2c626bd2a5d5d5afd38155f Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Sun, 18 Sep 2016 06:27:43 +0200 Subject: 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 --- include/ouroboros/shm_rdrbuff.h | 59 ++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 27 deletions(-) (limited to 'include/ouroboros/shm_rdrbuff.h') 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 */ -- cgit v1.2.3