On 01/09/17 21:10, Mike Holmes wrote: > > > On 29 December 2016 at 11:40, Maxim Uvarov <[email protected] > <mailto:[email protected]>> wrote: > > After turning on lost CFLAGS for checking errors, > following things needs to be corrected to make code > compile. > > > Which cflags ? I looked in 2/2 and assume it was debug print, but that > was not lost just hard wired to 1, was this a bug when debug print was = 0 ? >
patch 2/2 passes all cflags to helper with: -AM_CFLAGS = -I$(srcdir)/include +AM_CFLAGS += -I$(srcdir)/include with configured option -DODPH_DEBUG_PRINT=0 but passing cflags triggers a lot of gcc warnings which we threat as errors. So patch 1 is needed before patch 2. Maxim. > > Signed-off-by: Maxim Uvarov <[email protected] > <mailto:[email protected]>> > --- > helper/chksum.c | 4 ++-- > helper/hashtable.c | 42 ++++++++++++++++++++++++++---------------- > helper/lineartable.c | 27 +++++++++++++++++---------- > helper/linux.c | 2 +- > 4 files changed, 46 insertions(+), 29 deletions(-) > > diff --git a/helper/chksum.c b/helper/chksum.c > index b7eef67..f740618 100644 > --- a/helper/chksum.c > +++ b/helper/chksum.c > @@ -49,7 +49,7 @@ static uint32_t data_seg_sum(uint8_t *data8_ptr, > data_len--; > } > > - data16_ptr = (uint16_t *)data8_ptr; > + data16_ptr = (uint16_t *)(void *)data8_ptr; > > /* The following code tries to gain a modest performance > enhancement by > * unrolling the normal 16 bits at a time loop eight times. > Even > @@ -216,7 +216,7 @@ static inline int > odph_process_l3_hdr(odp_packet_t odp_pkt, > ipv6_hdr_ptr = &ipv6_hdr; > } > > - addrs_ptr = (uint16_t *)&ipv6_hdr_ptr->src_addr; > + addrs_ptr = (uint16_t *)(void > *)&ipv6_hdr_ptr->src_addr; > addrs_len = 2 * ODPH_IPV6ADDR_LEN; > protocol = ipv6_hdr_ptr->next_hdr; > ipv6_payload_len = > odp_be_to_cpu_16(ipv6_hdr_ptr->payload_len); > diff --git a/helper/hashtable.c b/helper/hashtable.c > index 8bb1ae5..0b652b3 100644 > --- a/helper/hashtable.c > +++ b/helper/hashtable.c > @@ -101,9 +101,9 @@ odph_table_t odph_hash_table_create(const char > *name, uint32_t capacity, > * the last part is the element node pool > */ > > - tbl->lock_pool = (odp_rwlock_t *)((char *)tbl > + tbl->lock_pool = (odp_rwlock_t *)(void *)((char *)tbl > + sizeof(odph_hash_table_imp)); > - tbl->list_head_pool = (odph_list_head *)((char *)tbl->lock_pool > + tbl->list_head_pool = (odph_list_head *)(void *)((char > *)tbl->lock_pool > + ODPH_MAX_BUCKET_NUM * sizeof(odp_rwlock_t)); > > node_mem = tbl->init_cap - sizeof(odph_hash_table_imp) > @@ -112,8 +112,9 @@ odph_table_t odph_hash_table_create(const char > *name, uint32_t capacity, > > node_num = node_mem / (sizeof(odph_hash_node) + key_size + > value_size); > tbl->hash_node_num = node_num; > - tbl->hash_node_pool = (odph_hash_node *)((char > *)tbl->list_head_pool > - + ODPH_MAX_BUCKET_NUM * > sizeof(odph_list_head)); > + tbl->hash_node_pool = > + (odph_hash_node *)(void *)((char *)tbl->list_head_pool > + + ODPH_MAX_BUCKET_NUM * sizeof(odph_list_head)); > > /* init every list head and rw lock */ > for (i = 0; i < ODPH_MAX_BUCKET_NUM; i++) { > @@ -130,8 +131,9 @@ int odph_hash_table_destroy(odph_table_t table) > int ret; > > if (table != NULL) { > - odph_hash_table_imp *hash_tbl = (odph_hash_table_imp > *)table; > + odph_hash_table_imp *hash_tbl; > > + hash_tbl = (odph_hash_table_imp *)(void *)table; > if (hash_tbl->magicword != ODPH_HASH_TABLE_MAGIC_WORD) > return ODPH_FAIL; > > @@ -164,7 +166,7 @@ odph_table_t odph_hash_table_lookup(const char > *name) > * This hash algorithm is the most simple one, so we choose it as > an DEMO > * User can use any other algorithm, like CRC... > */ > -uint16_t odp_key_hash(void *key, uint32_t key_size) > +static uint16_t odp_key_hash(void *key, uint32_t key_size) > { > register uint32_t hash = 0; > uint32_t idx = (key_size == 0 ? 1 : key_size); > @@ -181,18 +183,19 @@ uint16_t odp_key_hash(void *key, uint32_t > key_size) > /** > * Get an available node from pool > */ > -odph_hash_node *odp_hashnode_take(odph_table_t table) > +static odph_hash_node *hashnode_take(odph_table_t table) > { > - odph_hash_table_imp *tbl = (odph_hash_table_imp *)table; > + odph_hash_table_imp *tbl; > uint32_t idx; > odph_hash_node *node; > > + tbl = (odph_hash_table_imp *)(void *)table; > for (idx = 0; idx < tbl->hash_node_num; idx++) { > /** notice: memory of one hash_node is > * not only sizeof(odph_hash_node) > * should add the size of Flexible Array > */ > - node = (odph_hash_node *)((char *)tbl->hash_node_pool > + node = (odph_hash_node *)(void *)((char > *)tbl->hash_node_pool > + idx * (sizeof(odph_hash_node) > + tbl->key_size > + tbl->value_size)); > @@ -208,13 +211,15 @@ odph_hash_node *odp_hashnode_take(odph_table_t > table) > /** > * Release an node to the pool > */ > -void odp_hashnode_give(odph_table_t table, odph_hash_node *node) > +static void hashnode_give(odph_table_t table, odph_hash_node *node) > { > - odph_hash_table_imp *tbl = (odph_hash_table_imp *)table; > + odph_hash_table_imp *tbl; > > if (node == NULL) > return; > > + tbl = (odph_hash_table_imp *)(void *)table; > + > odph_list_del(&node->list_node); > memset(node, 0, > (sizeof(odph_hash_node) + tbl->key_size + > tbl->value_size)); > @@ -223,7 +228,7 @@ void odp_hashnode_give(odph_table_t table, > odph_hash_node *node) > /* should make sure the input table exists and is available */ > int odph_hash_put_value(odph_table_t table, void *key, void *value) > { > - odph_hash_table_imp *tbl = (odph_hash_table_imp *)table; > + odph_hash_table_imp *tbl; > uint16_t hash = 0; > odph_hash_node *node = NULL; > char *tmp = NULL; > @@ -231,6 +236,7 @@ int odph_hash_put_value(odph_table_t table, void > *key, void *value) > if (table == NULL || key == NULL || value == NULL) > return ODPH_FAIL; > > + tbl = (odph_hash_table_imp *)(void *)table; > /* hash value is just the index of the list head in pool */ > hash = odp_key_hash(key, tbl->key_size); > > @@ -249,7 +255,7 @@ int odph_hash_put_value(odph_table_t table, void > *key, void *value) > } > > /*if the key is a new one, get a new hash node form the pool */ > - node = odp_hashnode_take(table); > + node = hashnode_take(table); > if (node == NULL) { > odp_rwlock_write_unlock(&tbl->lock_pool[hash]); > return ODPH_FAIL; > @@ -271,11 +277,13 @@ int odph_hash_put_value(odph_table_t table, > void *key, void *value) > int odph_hash_get_value(odph_table_t table, void *key, void *buffer, > uint32_t buffer_size) > { > - odph_hash_table_imp *tbl = (odph_hash_table_imp *)table; > + odph_hash_table_imp *tbl; > uint16_t hash = 0; > odph_hash_node *node; > char *tmp = NULL; > > + tbl = (odph_hash_table_imp *)(void *)table; > + > if (table == NULL || key == NULL || buffer == NULL || > buffer_size < tbl->value_size) > return ODPH_FAIL; > @@ -308,13 +316,15 @@ int odph_hash_get_value(odph_table_t table, > void *key, void *buffer, > /* should make sure the input table exists and is available */ > int odph_hash_remove_value(odph_table_t table, void *key) > { > - odph_hash_table_imp *tbl = (odph_hash_table_imp *)table; > + odph_hash_table_imp *tbl; > uint16_t hash = 0; > odph_hash_node *node; > > if (table == NULL || key == NULL) > return ODPH_FAIL; > > + tbl = (odph_hash_table_imp *)(void *)table; > + > /* hash value is just the index of the list head in pool */ > hash = odp_key_hash(key, tbl->key_size); > > @@ -324,7 +334,7 @@ int odph_hash_remove_value(odph_table_t table, > void *key) > list_node) > { > if (memcmp(node->content, key, tbl->key_size) == 0) { > - odp_hashnode_give(table, node); > + hashnode_give(table, node); > odp_rwlock_write_unlock(&tbl->lock_pool[hash]); > return ODPH_SUCCESS; > } > diff --git a/helper/lineartable.c b/helper/lineartable.c > index e82c165..b46e027 100644 > --- a/helper/lineartable.c > +++ b/helper/lineartable.c > @@ -41,9 +41,10 @@ typedef struct { > */ > > odph_table_t odph_linear_table_create(const char *name, uint32_t > capacity, > - uint32_t ODP_IGNORED, uint32_t > value_size) > + uint32_t un ODPH_UNUSED, > + uint32_t value_size) > { > - int idx; > + uint32_t idx; > uint32_t node_num; > odp_shm_t shmem; > odph_linear_table_imp *tbl; > @@ -90,8 +91,10 @@ odph_table_t odph_linear_table_create(const char > *name, uint32_t capacity, > > /* initialize rwlock*/ > for (idx = 0; idx < tbl->node_sum; idx++) { > - odp_rwlock_t *lock = (odp_rwlock_t *)((char > *)tbl->value_array > - + idx * tbl->value_size); > + odp_rwlock_t *lock; > + > + lock = (odp_rwlock_t *)(void *)((char *)tbl->value_array > + + idx * tbl->value_size); > odp_rwlock_init(lock); > } > > @@ -106,7 +109,7 @@ int odph_linear_table_destroy(odph_table_t table) > odph_linear_table_imp *linear_tbl = NULL; > > if (table != NULL) { > - linear_tbl = (odph_linear_table_imp *)table; > + linear_tbl = (odph_linear_table_imp *)(void *)table; > > /* check magicword, make sure the memory is used by > a table */ > if (linear_tbl->magicword != > ODPH_LINEAR_TABLE_MAGIC_WORD) > @@ -142,9 +145,10 @@ odph_table_t odph_linear_table_lookup(const > char *name) > } > > /* should make sure the input table exists and is available */ > -int odph_lineartable_put_value(odph_table_t table, void *key, void > *value) > +static int odph_lineartable_put_value(odph_table_t table, > + void *key, void *value) > { > - odph_linear_table_imp *tbl = (odph_linear_table_imp *)table; > + odph_linear_table_imp *tbl; > uint32_t ikey = 0; > void *entry = NULL; > odp_rwlock_t *lock = NULL; > @@ -152,6 +156,7 @@ int odph_lineartable_put_value(odph_table_t > table, void *key, void *value) > if (table == NULL || key == NULL || value == NULL) > return ODPH_FAIL; > > + tbl = (odph_linear_table_imp *)(void *)table; > ikey = *(uint32_t *)key; > if (ikey >= tbl->node_sum) > return ODPH_FAIL; > @@ -170,10 +175,11 @@ int odph_lineartable_put_value(odph_table_t > table, void *key, void *value) > } > > /* should make sure the input table exists and is available */ > -int odph_lineartable_get_value(odph_table_t table, void *key, void > *buffer, > - uint32_t buffer_size) > +static int odph_lineartable_get_value(odph_table_t table, > + void *key, void *buffer, > + uint32_t buffer_size ODPH_UNUSED) > { > - odph_linear_table_imp *tbl = (odph_linear_table_imp *)table; > + odph_linear_table_imp *tbl; > uint32_t ikey = 0; > void *entry = NULL; > odp_rwlock_t *lock = NULL; > @@ -181,6 +187,7 @@ int odph_lineartable_get_value(odph_table_t > table, void *key, void *buffer, > if (table == NULL || key == NULL || buffer == NULL) > return ODPH_FAIL; > > + tbl = (odph_linear_table_imp *)(void *)table; > ikey = *(uint32_t *)key; > if (ikey >= tbl->node_sum) > return ODPH_FAIL; > diff --git a/helper/linux.c b/helper/linux.c > index 1f009cd..d729046 100644 > --- a/helper/linux.c > +++ b/helper/linux.c > @@ -639,7 +639,7 @@ int odph_parse_options(int argc, char *argv[], > {0, 0, 0, 0} > }; > > - static char *helper_short_options = ""; > + static const char *helper_short_options = ""; > > /* defaults: */ > helper_options.proc = false; > -- > 2.7.1.250.gff4ea60 > > > > > -- > Mike Holmes > Program Manager - Linaro Networking Group > Linaro.org <http://www.linaro.org/>* **│ *Open source software for ARM SoCs > "Work should be fun and collaborative, the rest follows" > > __ > >
