[Issue 22615] Wrong OS version and struct kevent_t in FreeBSD 13

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Dec 21 18:28:53 UTC 2021


https://issues.dlang.org/show_bug.cgi?id=22615

--- Comment #1 from Eugene <dee0xeed at gmail.com> ---
@bsd:~/d> dmd --version
DMD64 D Compiler v2.098.0

LDC2 standart library does not have core.sys.freebsd.config module,
but kevent_t.sizeof is also wrong:

bsd:~/d> ldc2 -v
binary    /usr/local/bin/ldc2
version   1.23.0 (DMD v2.093.1, LLVM 10.0.1)
@bsd:~/d> ldc2 freebsdver.d
@bsd:~/d> ./freebsdver 
sizeof(kevent_t) = 32

Must be 64, see exerpt from /usr/include/sys/event.h:

new, 12+:

struct kevent {
        __uintptr_t     ident;          // identifier for this event
        short           filter;         // filter for event
        unsigned short  flags;          // action flags for kqueue
        unsigned int    fflags;         // filter flag value
        __int64_t       data;           // filter data value
        void            *udata;         // opaque user data identifier
        __uint64_t      ext[4];         // extensions
};

old, 11-:

#if defined(_WANT_FREEBSD11_KEVENT)
// Older structure used in FreeBSD 11.x and older.
struct kevent_freebsd11 {
        __uintptr_t     ident;          // identifier for this event
        short           filter;         // filter for event
        unsigned short  flags;
        unsigned int    fflags;
        __intptr_t      data;
        void            *udata;         // opaque user data identifier
};
#endif

--


More information about the Digitalmars-d-bugs mailing list