From 35c43358a110758090b48dd18628bb285ffddfc6 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Wed, 8 Nov 2017 19:25:48 +0100 Subject: lib: Use packed struct for FRCT header access This replaces the variable FRCT header with a packed struct, which significantly simplifies the implementation. The shm_du_buff calls to release the head/tail are updated to return a pointer to the original head or the new tail (in symmetry to the alloc calls, which return a pointer to the new head and old tail), so that it immediately points to the structure that is needed. The frct_pci sources are removed and frct is now fully in the frct.c source file. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/lib/shm_rdrbuff.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/lib/shm_rdrbuff.c') diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c index a3333a35..2853d5bb 100644 --- a/src/lib/shm_rdrbuff.c +++ b/src/lib/shm_rdrbuff.c @@ -602,8 +602,6 @@ 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 * buf = NULL; - assert(sdb); if (sdb->du_head < size) @@ -611,15 +609,13 @@ uint8_t * shm_du_buff_head_alloc(struct shm_du_buff * sdb, sdb->du_head -= size; - buf = (uint8_t *) (sdb + 1) + sdb->du_head; - - return buf; + return (uint8_t *) (sdb + 1) + sdb->du_head; } uint8_t * shm_du_buff_tail_alloc(struct shm_du_buff * sdb, size_t size) { - uint8_t * buf = NULL; + uint8_t * buf; assert(sdb); @@ -633,22 +629,30 @@ uint8_t * shm_du_buff_tail_alloc(struct shm_du_buff * sdb, return buf; } -void shm_du_buff_head_release(struct shm_du_buff * sdb, - size_t size) +uint8_t * shm_du_buff_head_release(struct shm_du_buff * sdb, + size_t size) { + uint8_t * buf; + assert(sdb); assert(!(size > sdb->du_tail - sdb->du_head)); + buf = (uint8_t *) (sdb + 1) + sdb->du_head; + sdb->du_head += size; + + return buf; } -void shm_du_buff_tail_release(struct shm_du_buff * sdb, +uint8_t * shm_du_buff_tail_release(struct shm_du_buff * sdb, size_t size) { assert(sdb); assert(!(size > sdb->du_tail - sdb->du_head)); sdb->du_tail -= size; + + return (uint8_t *) (sdb + 1) + sdb->du_tail; } void shm_du_buff_truncate(struct shm_du_buff * sdb, -- cgit v1.2.3