diff options
Diffstat (limited to 'python/gevent/libev/libev_vfd.h')
-rw-r--r-- | python/gevent/libev/libev_vfd.h | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/python/gevent/libev/libev_vfd.h b/python/gevent/libev/libev_vfd.h index ec16a28..ff30fd8 100644 --- a/python/gevent/libev/libev_vfd.h +++ b/python/gevent/libev/libev_vfd.h @@ -1,11 +1,12 @@ #ifdef _WIN32 -#ifdef _WIN64 -typedef PY_LONG_LONG vfd_socket_t; +/* see discussion in the libuv directory: this is a SOCKET which is a + HANDLE which is a PVOID (even though they're really small ints), + and CPython and PyPy return that SOCKET cast to an int from + fileno() +*/ +typedef intptr_t vfd_socket_t; #define vfd_socket_object PyLong_FromLongLong -#else -typedef long vfd_socket_t; -#define vfd_socket_object PyInt_FromLong -#endif + #ifdef LIBEV_EMBED /* * If libev on win32 is embedded, then we can use an @@ -53,13 +54,13 @@ static CRITICAL_SECTION* vfd_make_lock() #define VFD_GIL_DECLARE PyGILState_STATE ___save #define VFD_GIL_ENSURE ___save = PyGILState_Ensure() #define VFD_GIL_RELEASE PyGILState_Release(___save) -#else +#else /* ! WITH_THREAD */ #define VFD_LOCK_ENTER #define VFD_LOCK_LEAVE #define VFD_GIL_DECLARE #define VFD_GIL_ENSURE #define VFD_GIL_RELEASE -#endif +#endif /*_WITH_THREAD */ /* * Given a virtual fd returns an OS handle or -1 @@ -67,7 +68,7 @@ static CRITICAL_SECTION* vfd_make_lock() */ static vfd_socket_t vfd_get(int fd) { - int handle = -1; + vfd_socket_t handle = -1; VFD_LOCK_ENTER; if (vfd_entries != NULL && fd >= 0 && fd < vfd_num) handle = vfd_entries[fd].handle; @@ -201,7 +202,7 @@ done: #define vfd_free(fd) vfd_free_((fd), 0) #define EV_WIN32_CLOSE_FD(fd) vfd_free_((fd), 1) -#else +#else /* !LIBEV_EMBED */ /* * If libev on win32 is not embedded in gevent, then * the only way to map vfds is to use the default of @@ -211,13 +212,14 @@ done: #define vfd_get(fd) _get_osfhandle((fd)) #define vfd_open(fd) _open_osfhandle((fd), 0) #define vfd_free(fd) -#endif -#else +#endif /* LIBEV_EMBED */ + +#else /* !_WIN32 */ /* * On non-win32 platforms vfd_* are noop macros */ typedef int vfd_socket_t; #define vfd_get(fd) (fd) -#define vfd_open(fd) ((int)(fd)) +#define vfd_open(fd) (fd) #define vfd_free(fd) -#endif +#endif /* _WIN32 */ |