Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1594454

Re: opaque types instead of union epoll_data

From Carlos O'Donell <carlos@redhat.com>
Newsgroups linux.kernel
Subject Re: opaque types instead of union epoll_data
Date 2017-03-07 18:40 +0100
Message-ID <tirfA-2oi-7@gated-at.bofh.it> (permalink)
References <timzf-7wm-1@gated-at.bofh.it>
Organization Red Hat

Show all headers | View raw


On 03/07/2017 07:31 AM, Sodagudi Prasad wrote:
> uapi structs epoll_data are more opaque than user space expects.
> kernel have defined as __u64 instead of the union epoll_data. Because
> of this libc have redefined struct epoll_event with union data
> member.

We do the same in glibc.

> https://android.googlesource.com/platform/bionic.git/+/master/libc/include/sys/epoll.h
> typedef union epoll_data {
>   void* ptr;
>   int fd;
>   uint32_t u32;
>   uint64_t u64;
> } epoll_data_t;
> struct epoll_event {
>   uint32_t events;
>   epoll_data_t data;
> }
> 
> Kernel UAPI header defined as "include/uapi/linux/eventpoll.h"
> struct epoll_event {
>         __u32 events;
>         __u64 data;  =====>opaque type instead of union epoll_data
> } EPOLL_PACKED;
> 
> 
> Because of this we are landing into some issues as we copy kernel
> headers. Will it be going to be addressed?

What issues are you having? 

Exactly what problems are you running in to? 

Using all of the UAPI headers directly is not a workable
solution, there is a lot of definition and cleanup work to do there.
Some of the headers are immediately useful, but others, as you note
require quite a bit of work to become useful.

The underlying issue of a mismatch between userspace expectations
and UAPI definitions will get addressed when someone, maybe you, 
works diligently to enhance the kernel UAPI headers to be generally 
useful to userspace.

I don't know anyone else who is working on this problem. Though I
have a vested interested in it as a glibc maintainer, since it would
be nice to avoid duplicate headers where possible between the kernel
and userspace.

-- 
Cheers,
Carlos.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

opaque types instead of union epoll_data Sodagudi Prasad <psodagud@codeaurora.org> - 2017-03-07 13:40 +0100
  Re: opaque types instead of union epoll_data Carlos O'Donell <carlos@redhat.com> - 2017-03-07 18:40 +0100
    Re: opaque types instead of union epoll_data Greg KH <gregkh@linuxfoundation.org> - 2017-03-07 19:30 +0100
      Re: opaque types instead of union epoll_data Carlos O'Donell <carlos@redhat.com> - 2017-03-08 18:40 +0100
        Re: opaque types instead of union epoll_data Greg KH <gregkh@linuxfoundation.org> - 2017-03-08 19:10 +0100

csiph-web