diff --git a/libguile/poll.c b/libguile/poll.c index d61d51979..1bb75727b 100644 --- a/libguile/poll.c +++ b/libguile/poll.c @@ -184,6 +184,7 @@ scm_init_poll (void) { #if HAVE_POLL scm_c_define_gsubr ("primitive-poll", 4, 0, 0, scm_primitive_poll); + scm_c_define ("%sizeof-struct-pollfd", scm_from_size_t (sizeof (struct pollfd))); #else scm_misc_error ("%init-poll", "`poll' unavailable on this platform", SCM_EOL); #endif diff --git a/module/ice-9/poll.scm b/module/ice-9/poll.scm index cf61294d7..2ba868748 100644 --- a/module/ice-9/poll.scm +++ b/module/ice-9/poll.scm @@ -38,6 +38,9 @@ (load-extension (string-append "libguile-" (effective-version)) "scm_init_poll")) +(if (not (= %sizeof-struct-pollfd 8)) + (error "Unexpected struct pollfd size" %sizeof-struct-pollfd)) + (if (defined? 'POLLIN) (export POLLIN))