[dpdk-dev] mbuf & mempool: explicit typecast on function return

Message ID 1439370664-25728-1-git-send-email-balabanovsv@ecotelecom.ru (mailing list archive)
State Accepted, archived
Headers

Commit Message

Sergey Balabanov Aug. 12, 2015, 9:11 a.m. UTC
  When DPDK is being compiled in C++ project using g++ then
'invalid conversion from' error appears. Added explicit
typecast on function return to get rid of the error.

Signed-off-by: Sergey Balabanov <balabanovsv@ecotelecom.ru>
---
 lib/librte_mbuf/rte_mbuf.h       | 2 +-
 lib/librte_mempool/rte_mempool.h | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
  

Comments

Olivier Matz Aug. 17, 2015, 8:14 a.m. UTC | #1
Hi Sergey,

On 08/12/2015 11:11 AM, Sergey Balabanov wrote:
> When DPDK is being compiled in C++ project using g++ then
> 'invalid conversion from' error appears. Added explicit
> typecast on function return to get rid of the error.
> 
> Signed-off-by: Sergey Balabanov <balabanovsv@ecotelecom.ru>


Fixes: 7755baae8378 ("mbuf: silence warning on pointer arithmetic")
Fixes: 6cf14ce4ce6c ("mempool: silence warning on pointer arithmetic")

Acked-by: Olivier Matz <olivier.matz@6wind.com>

Thanks
  
Joongi Kim Aug. 17, 2015, 12:28 p.m. UTC | #2
I already have fixed this issue at http://dpdk.org/dev/patchwork/patch/6068/
 .
There is another issue related to "underlying type" for enum declarations
http://dpdk.org/dev/patchwork/patch/6067/, for C++11 compilers.

In the second patch I missed updating headers for architectures other than
x86,
so it needs to be updated before applying to the master branch.

It would be great for me to have this fixed on the master branch,
as I am manually applying above patches whenever I pull the latest codes.

Regards,
Joongi

2015년 8월 17일 (월) 오후 5:15, Olivier MATZ <olivier.matz@6wind.com>님이 작성:

> Hi Sergey,
>
> On 08/12/2015 11:11 AM, Sergey Balabanov wrote:
> > When DPDK is being compiled in C++ project using g++ then
> > 'invalid conversion from' error appears. Added explicit
> > typecast on function return to get rid of the error.
> >
> > Signed-off-by: Sergey Balabanov <balabanovsv@ecotelecom.ru>
>
>
> Fixes: 7755baae8378 ("mbuf: silence warning on pointer arithmetic")
> Fixes: 6cf14ce4ce6c ("mempool: silence warning on pointer arithmetic")
>
> Acked-by: Olivier Matz <olivier.matz@6wind.com>
>
> Thanks
>
  
Olivier Matz Aug. 17, 2015, 12:50 p.m. UTC | #3
Hi Joongi,

On 08/17/2015 02:28 PM, Joongi Kim wrote:
> I already have fixed this issue
> at http://dpdk.org/dev/patchwork/patch/6068/ .
> There is another issue related to "underlying type" for enum
> declarations http://dpdk.org/dev/patchwork/patch/6067/, for C++11 compilers.
> 
> In the second patch I missed updating headers for architectures other
> than x86,
> so it needs to be updated before applying to the master branch.
> 
> It would be great for me to have this fixed on the master branch,
> as I am manually applying above patches whenever I pull the latest codes.
> 

+CC Thomas.

Sorry, I missed your previous patches. I think it would indeed be
helpful to have them included before the release to allow compilation
of C++ programs.

I'm wondering if we should add a C++ example in dpdk/examples: people
would see the problem before commiting, or if they miss it, I know some
people are doing automatic compilation tests every day.

Regards,
Olivier



> Regards,
> Joongi
> 
> 2015년 8월 17일 (월) 오후 5:15, Olivier MATZ <olivier.matz@6wind.com
> <mailto:olivier.matz@6wind.com>>님이 작성:
> 
>     Hi Sergey,
> 
>     On 08/12/2015 11:11 AM, Sergey Balabanov wrote:
>     > When DPDK is being compiled in C++ project using g++ then
>     > 'invalid conversion from' error appears. Added explicit
>     > typecast on function return to get rid of the error.
>     >
>     > Signed-off-by: Sergey Balabanov <balabanovsv@ecotelecom.ru
>     <mailto:balabanovsv@ecotelecom.ru>>
> 
> 
>     Fixes: 7755baae8378 ("mbuf: silence warning on pointer arithmetic")
>     Fixes: 6cf14ce4ce6c ("mempool: silence warning on pointer arithmetic")
> 
>     Acked-by: Olivier Matz <olivier.matz@6wind.com
>     <mailto:olivier.matz@6wind.com>>
> 
>     Thanks
>
  
Thomas Monjalon Aug. 17, 2015, 3:38 p.m. UTC | #4
2015-08-17 10:14, Olivier MATZ:
> Hi Sergey,
> 
> On 08/12/2015 11:11 AM, Sergey Balabanov wrote:
> > When DPDK is being compiled in C++ project using g++ then
> > 'invalid conversion from' error appears. Added explicit
> > typecast on function return to get rid of the error.
> > 
> > Signed-off-by: Sergey Balabanov <balabanovsv@ecotelecom.ru>
> 
> 
> Fixes: 7755baae8378 ("mbuf: silence warning on pointer arithmetic")
> Fixes: 6cf14ce4ce6c ("mempool: silence warning on pointer arithmetic")
> 
> Acked-by: Olivier Matz <olivier.matz@6wind.com>

Split and applied, thanks
  

Patch

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index c3b8c98..8c2db1b 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -882,7 +882,7 @@  static inline uint16_t rte_pktmbuf_priv_size(struct rte_mempool *mp);
 static inline struct rte_mbuf *
 rte_mbuf_from_indirect(struct rte_mbuf *mi)
 {
-	return RTE_PTR_SUB(mi->buf_addr, sizeof(*mi) + mi->priv_size);
+	return (struct rte_mbuf *)RTE_PTR_SUB(mi->buf_addr, sizeof(*mi) + mi->priv_size);
 }
 
 /**
diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
index 075bcdf..8abeca9 100644
--- a/lib/librte_mempool/rte_mempool.h
+++ b/lib/librte_mempool/rte_mempool.h
@@ -268,7 +268,7 @@  struct rte_mempool {
 /* return the header of a mempool object (internal) */
 static inline struct rte_mempool_objhdr *__mempool_get_header(void *obj)
 {
-	return RTE_PTR_SUB(obj, sizeof(struct rte_mempool_objhdr));
+	return (struct rte_mempool_objhdr *)RTE_PTR_SUB(obj, sizeof(struct rte_mempool_objhdr));
 }
 
 /**
@@ -290,7 +290,7 @@  static inline struct rte_mempool *rte_mempool_from_obj(void *obj)
 static inline struct rte_mempool_objtlr *__mempool_get_trailer(void *obj)
 {
 	struct rte_mempool *mp = rte_mempool_from_obj(obj);
-	return RTE_PTR_ADD(obj, mp->elt_size);
+	return (struct rte_mempool_objtlr *)RTE_PTR_ADD(obj, mp->elt_size);
 }
 
 /**