diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-09-18 06:27:43 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-10-04 15:16:00 +0200 |
commit | c96efb13edfaf9b2f2c626bd2a5d5d5afd38155f (patch) | |
tree | acd08f09f5a094e897020e97961b2847209df043 /include/ouroboros/shm_rdrbuff.h | |
parent | 2e561a634ae3e747b293a4e05eaf44726968dc1a (diff) | |
download | ouroboros-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.h | 59 |
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 */ |