From d08d481912b9a2dc3388f8e1183cea0bf3ffae9f Mon Sep 17 00:00:00 2001 From: Dmitriy Anisimkov Date: Sat, 8 Aug 2020 18:49:27 +0600 Subject: [Ada] Sockets.Poll implementation gcc/ada/ * Makefile.rtl (GNATRTL_SOCKETS_OBJS): New object g-socpol$(objext) New source files noted: g-socpol.adb, g-socpol.ads, g-socpol__dummy.adb, g-socpol__dummy.ads, g-sopowa.adb, g-sopowa__posix.adb, g-sopowa__mingw.adb, g-spogwa.adb, g-spogwa.ads. * impunit.adb (Non_Imp_File_Names_95): New base filename g-socpol in "GNAT Library Units" section for GNAT.Sockets.Poll unit. * libgnat/g-socket.ads, libgnat/g-socket.adb: (Raise_Socket_Error): Moved from body to private part of specification to use in GNAT.Sockets.Poll. * libgnat/g-socpol.ads, libgnat/g-socpol.adb: Main unit of the implementation. * libgnat/g-socpol__dummy.ads, libgnat/g-socpol__dummy.adb: Empty unit for the systems without sockets support. * libgnat/g-spogwa.ads, libgnat/g-spogwa.adb: Generic unit implementing sockets poll on top of select system call. * libgnat/g-sopowa.adb (Wait): Separate implementation for operation systems with poll system call support. * libgnat/g-sopowa__posix.adb (Wait): Separate implementation for POSIX select system call. * libgnat/g-sopowa__mingw.adb (Wait): Separate implementation for Windows select system call. * gsocket.h (_WIN32_WINNT): Increase to 0x0600 for winsock2.h to allow WSAPoll related definitions. * s-oscons-tmplt.c: Fix comment next to #endif for #if defined (__linux__) || defined (__ANDROID__) line. Include for all except VxWorks and Windows. (SIZEOF_nfds_t): New definition. (SIZEOF_fd_type): New definition. (SIZEOF_pollfd_events): New definition. (POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL): New definitions for VxWorks to be able to emulate poll on top of select in it. Define POLLPRI as zero on Windows as it is not supported there. (Poll_Linkname): New definition, because the poll system call has different name in Windows and POSIX. --- gcc/ada/gsocket.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/ada/gsocket.h') diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h index e10f954..ba51fb1 100644 --- a/gcc/ada/gsocket.h +++ b/gcc/ada/gsocket.h @@ -80,6 +80,12 @@ #define FD_SETSIZE 1024 #ifdef __MINGW32__ +/* winsock2.h allows WSAPoll related definitions only when + * _WIN32_WINNT >= 0x0600 */ +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600 +#define _WIN32_WINNT 0x0600 +#endif + #include #include #include -- cgit v1.1