[dpdk-dev] [PATCH] net/virtio-user: fix O_CLOEXEC undeclared error

Yuanhan Liu yuanhan.liu at linux.intel.com
Wed Jun 29 03:56:10 CEST 2016


On Tue, Jun 28, 2016 at 10:41:24AM +0100, Ferruh Yigit wrote:
> On 6/26/2016 2:49 PM, Jianfeng Tan wrote:
> > On some older systems, such as SUSE 11, the compiling error shows
> > as:
> >    .../dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.c:67:22:
> >          error: ‘O_CLOEXEC’ undeclared (first use in this function)
> > 
> > The fix is to declare _GNU_SOURCE macro before include fcntl.h.
> > 
> > Fixes: 37a7eb2ae816 ("net/virtio-user: add device emulation layer")
> > 
> > Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
> > ---
> >  drivers/net/virtio/virtio_user/virtio_user_dev.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> > index 3d12a32..180f824 100644
> > --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> > +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> > @@ -31,6 +31,7 @@
> >   *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> >   */
> >  
> > +#define _GNU_SOURCE
> This flag enables glibc extensions, and kind of problem on code
> portability. How big problem is it?

Honestly, I don't know. But I was also thinking that define _GNU_SOURCE
here is an overkill to me. For this issue, we may simply fix it by
reference the O_CLOEXEC flag only when it's defined.

> Is there any platform that DPDK runs on which uses a libc that isn't
> compatible with what this flag provides?
> 
> And it seems this flag already used in DPDK, including libraries.

Yes, "git grep _GNU_SOURCE" shows a lot of such usage.

	--yliu

> If we
> are agree on using glibc extensions, does it make sense to move this
> flag into a single common location (like mk/exec-env/) ?
> 
> >  #include <stdint.h>
> >  #include <stdio.h>
> >  #include <fcntl.h>
> > 


More information about the dev mailing list