[dpdk-dev] examples/quota_watermark: fix wrong function type casing

Message ID 20180510090431.15305-1-jerin.jacob@caviumnetworks.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Jerin Jacob May 10, 2018, 9:04 a.m. UTC
  make pipeline_stage() and  send_stage() as lcore_function_t.
Found this issue with gcc 8.1.

examples/quota_watermark/qw/main.c: In function ‘main’:
examples/quota_watermark/qw/main.c:350:26: error: cast between
incompatible function types from ‘void (*)(void *)’ to
‘int (*)(void *)’ [-Werror=cast-function-type]
rte_eal_remote_launch((int (*)(void *))pipeline_stage,
                          ^
examples/quota_watermark/qw/main.c:357:24: error: cast between
incompatible function types from ‘void (*)(void *)’ to
‘int (*)(void *)’ [-Werror=cast-function-type]
rte_eal_remote_launch((int (*)(void *))send_stage, NULL, last_lcore_id);

Cc: bruce.richardson@intel.com
Cc: stable@dpdk.org

Fixes: 1d6c3ee3321a ("examples/quota_watermark: initial import")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 examples/quota_watermark/qw/main.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
  

Comments

De Lara Guarch, Pablo May 10, 2018, 9:32 a.m. UTC | #1
Hi Jerin,

> -----Original Message-----

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jerin Jacob

> Sent: Thursday, May 10, 2018 10:05 AM

> To: dev@dpdk.org

> Cc: thomas@monjalon.net; andy@warmcat.com; Jerin Jacob

> <jerin.jacob@caviumnetworks.com>; Richardson, Bruce

> <bruce.richardson@intel.com>; stable@dpdk.org

> Subject: [dpdk-dev] [PATCH] examples/quota_watermark: fix wrong function

> type casing

> 

> make pipeline_stage() and  send_stage() as lcore_function_t.

> Found this issue with gcc 8.1.

> 

> examples/quota_watermark/qw/main.c: In function ‘main’:

> examples/quota_watermark/qw/main.c:350:26: error: cast between

> incompatible function types from ‘void (*)(void *)’ to ‘int (*)(void *)’ [-

> Werror=cast-function-type] rte_eal_remote_launch((int (*)(void

> *))pipeline_stage,

>                           ^

> examples/quota_watermark/qw/main.c:357:24: error: cast between

> incompatible function types from ‘void (*)(void *)’ to ‘int (*)(void *)’ [-

> Werror=cast-function-type] rte_eal_remote_launch((int (*)(void *))send_stage,

> NULL, last_lcore_id);

> 

> Cc: bruce.richardson@intel.com

> Cc: stable@dpdk.org

> 

> Fixes: 1d6c3ee3321a ("examples/quota_watermark: initial import")


There is already a fix for this:

http://dpdk.org/dev/patchwork/patch/39564/
  

Patch

diff --git a/examples/quota_watermark/qw/main.c b/examples/quota_watermark/qw/main.c
index 313216f39..f3830557c 100644
--- a/examples/quota_watermark/qw/main.c
+++ b/examples/quota_watermark/qw/main.c
@@ -181,7 +181,7 @@  receive_stage(__attribute__((unused)) void *args)
 	}
 }
 
-static void
+static int
 pipeline_stage(__attribute__((unused)) void *args)
 {
 	int i, ret;
@@ -243,9 +243,11 @@  pipeline_stage(__attribute__((unused)) void *args)
 			}
 		}
 	}
+
+	return 0;
 }
 
-static void
+static int
 send_stage(__attribute__((unused)) void *args)
 {
 	uint16_t nb_dq_pkts;
@@ -287,6 +289,8 @@  send_stage(__attribute__((unused)) void *args)
 			/* TODO: Check if nb_dq_pkts == nb_tx_pkts? */
 		}
 	}
+
+	return 0;
 }
 
 int
@@ -346,15 +350,11 @@  main(int argc, char **argv)
 				if (is_bit_set(port_id, portmask))
 					init_ring(lcore_id, port_id);
 
-			/* typecast is a workaround for GCC 4.3 bug */
-			rte_eal_remote_launch((int (*)(void *))pipeline_stage,
-					NULL, lcore_id);
+			rte_eal_remote_launch(pipeline_stage, NULL, lcore_id);
 		}
 	}
 
-	/* Start send_stage() on the last slave core */
-	/* typecast is a workaround for GCC 4.3 bug */
-	rte_eal_remote_launch((int (*)(void *))send_stage, NULL, last_lcore_id);
+	rte_eal_remote_launch(send_stage, NULL, last_lcore_id);
 
 	/* Start receive_stage() on the master core */
 	receive_stage(NULL);