X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Ftpool-epoll.c;h=41242c6b5e9fda1afca864de7c71a3ecc6d0df82;hb=01bc03ffde6db4fd421f455dd37a083679ccbaa8;hp=82e0bfe8a353c4834440cc37c7916aaa60c732fb;hpb=946e182bd9b7391c9b2b95c7ccb6c31516e850e4;p=mono.git diff --git a/mono/metadata/tpool-epoll.c b/mono/metadata/tpool-epoll.c index 82e0bfe8a35..41242c6b5e9 100644 --- a/mono/metadata/tpool-epoll.c +++ b/mono/metadata/tpool-epoll.c @@ -54,11 +54,13 @@ static void tp_epoll_modify (gpointer p, int fd, int operation, int events, gboolean is_new) { SocketIOData *socket_io_data; - socket_io_data = p; - tp_epoll_data *data = socket_io_data->event_data; + tp_epoll_data *data; struct epoll_event evt; int epoll_op; + socket_io_data = p; + data = socket_io_data->event_data; + memset (&evt, 0, sizeof (evt)); evt.data.fd = fd; if ((events & MONO_POLLIN) != 0) @@ -95,7 +97,6 @@ tp_epoll_wait (gpointer p) { SocketIOData *socket_io_data; int epollfd; - MonoInternalThread *thread; struct epoll_event *events, *evt; int ready = 0, i; gpointer async_results [EPOLL_NEVENTS * 2]; // * 2 because each loop can add up to 2 results here @@ -105,7 +106,6 @@ tp_epoll_wait (gpointer p) socket_io_data = p; data = socket_io_data->event_data; epollfd = data->epollfd; - thread = mono_thread_internal_current (); events = g_new0 (struct epoll_event, EPOLL_NEVENTS); while (1) { @@ -113,8 +113,7 @@ tp_epoll_wait (gpointer p) do { if (ready == -1) { - if (THREAD_WANTS_A_BREAK (thread)) - mono_thread_interruption_checkpoint (); + check_for_interruption_critical (); } ready = epoll_wait (epollfd, events, EPOLL_NEVENTS, -1); } while (ready == -1 && errno == EINTR); @@ -178,7 +177,7 @@ tp_epoll_wait (gpointer p) } LeaveCriticalSection (&socket_io_data->io_lock); threadpool_append_jobs (&async_io_tp, (MonoObject **) async_results, nresults); - mono_gc_bzero (async_results, sizeof (gpointer) * nresults); + mono_gc_bzero_aligned (async_results, sizeof (gpointer) * nresults); } } #undef EPOLL_NEVENTS