[Barrelfish-users] About ump_impl.h

tomsun.0.7 tomsun.0.7 at gmail.com
Mon Feb 2 08:15:19 CET 2015


I am the one who is porting applications to Barrelfish. Again, I come
across some problems on C++ compatibility.

At first, I tried test program for e1000 driver, and it worked well.
However, when I port an application using this driver, I found something


../include/barrelfish/ump_impl.h: In function ‘errval_t
> ump_chan_state_init(ump_chan_state*, volatile void*, size_t,
> ump_direction)’:

../include/barrelfish/ump_impl.h:127:12: error: *invalid conversion*
from ‘*volatile
> void**’ to ‘*volatile ump_message**’ [-fpermissive]

     c->buf = buf;


../include/barrelfish/ump_impl.h: In function ‘volatile ump_message*
> ump_impl_poll(ump_chan_state*)’:

../include/barrelfish/ump_impl.h:152:53: error: *no matching function* for
> call to ‘*ump_control::ump_control(volatile ump_control&)*’

     struct ump_control ctrl = c->buf[c->pos].header.control;


In a word, C++ thinks *it is dangerous to cast a volatile type into a
non-volatile type* and I think so, too.

So, is there any elegant solution to solve this problem?
Looking forward to your kind reply, thanks a lot!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20150202/d408a59f/attachment.html 

More information about the Barrelfish-users mailing list