Bug 22615 – Wrong OS version and struct kevent_t in FreeBSD 13

Status
NEW
Severity
normal
Priority
P3
Component
phobos
Product
D
Version
D2
Platform
x86_64
OS
FreeBSD
Creation time
2021-12-21T08:51:17Z
Last change time
2024-12-01T16:39:44Z
Assigned to
No Owner
Creator
Eugene
Moved to GitHub: phobos#10486 →

Comments

Comment #0 by dee0xeed — 2021-12-21T08:51:17Z
test program: import std.stdio; import core.sys.freebsd.config; import core.sys.freebsd.sys.event; void main(string[] args) { writefln("FreeBSD_version = %s", __FreeBSD_version); writefln("sizeof(kevent_t) = %s", kevent_t.sizeof); } output: @bsd:~/d> ./freebsdver FreeBSD_version = 1104000 sizeof(kevent_t) = 32 actual version @bsd:~/d> uname -K 1300139 NOTE: /usr/include/d/dmd/core/sys/freebsd/sys/event.h do contain correct definition of kevent_t for versions 12+ (with ulong[4] ext field), but because of wrong kernel version size of kevent_t is also incorrect.
Comment #1 by dee0xeed — 2021-12-21T18:28:53Z
@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
Comment #2 by dee0xeed — 2021-12-21T18:43:56Z
LDC2 stdlib module (/usr/local/include/d/core/sys/freebsd/sys/event.d) does not contain struct kevent_t for versions 12+ at all, so, "no problem" :)
Comment #3 by robert.schadek — 2024-12-01T16:39:44Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/10486 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB