X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Ftpool-epoll.c;h=43a196dc9ede90ebb3cb5cc2d1a2123e10b44b23;hb=39538a54aa230a60d2cfbca491e02bcda8b7c07b;hp=18c6a204bfb30cdc093f78cde1ca1de5f67110bd;hpb=3dbe897dc7f270d1944c2ae238de40af88fd1746;p=mono.git diff --git a/mono/metadata/tpool-epoll.c b/mono/metadata/tpool-epoll.c index 18c6a204bfb..43a196dc9ed 100644 --- a/mono/metadata/tpool-epoll.c +++ b/mono/metadata/tpool-epoll.c @@ -7,6 +7,7 @@ * * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) * Copyright 2004-2011 Novell, Inc (http://www.novell.com) + * Copyright 2011 Xamarin Inc (http://www.xamarin.com) */ struct _tp_epoll_data { @@ -30,8 +31,18 @@ tp_epoll_init (SocketIOData *data) result->epollfd = epoll_create (256); /* The number does not really matter */ fcntl (result->epollfd, F_SETFD, FD_CLOEXEC); #endif - if (result->epollfd == -1) + if (result->epollfd == -1) { + int err = errno; + if (g_getenv ("MONO_DEBUG")) { +#ifdef EPOLL_CLOEXEC + g_message ("epoll_create1(EPOLL_CLOEXEC) failed: %d %s", err, g_strerror (err)); +#else + g_message ("epoll_create(256) failed: %d %s", err, g_strerror (err)); +#endif + } + return NULL; + } data->shutdown = tp_epoll_shutdown; data->modify = tp_epoll_modify; @@ -159,7 +170,7 @@ tp_epoll_wait (gpointer p) } LeaveCriticalSection (&socket_io_data->io_lock); threadpool_append_jobs (&async_io_tp, (MonoObject **) async_results, nresults); - memset (async_results, 0, sizeof (gpointer) * nresults); + mono_gc_bzero (async_results, sizeof (gpointer) * nresults); } } #undef EPOLL_NEVENTS