*
* Copyright (C) 2005-2009 Novell, Inc. (http://www.novell.com)
*/
+#if defined(__native_client__)
+#include "console-null.c"
+#else
#include <config.h>
#include <glib.h>
#include <mono/metadata/object-internals.h>
#include <mono/metadata/class-internals.h>
#include <mono/metadata/domain-internals.h>
+#include <mono/metadata/gc-internal.h>
#include <mono/metadata/metadata.h>
#include <mono/metadata/threadpool.h>
static void
tty_teardown (void)
{
+ int unused;
+
MONO_ARCH_SAVE_REGS;
if (!setup_finished)
return;
if (teardown_str != NULL) {
- write (STDOUT_FILENO, teardown_str, strlen (teardown_str));
+ unused = write (STDOUT_FILENO, teardown_str, strlen (teardown_str));
g_free (teardown_str);
teardown_str = NULL;
}
MonoMethod *im;
MonoVTable *vtable;
+ /* FIXME: this should likely iterate all the domains, instead */
if (!domain->domain)
return;
mono_thread_pool_add ((MonoObject *) load_value, msg, NULL, NULL);
}
+static int need_cancel = FALSE;
+/* this is executed from the finalizer thread */
+void
+mono_console_handle_async_ops (void)
+{
+ if (need_cancel) {
+ need_cancel = FALSE;
+ do_console_cancel_event ();
+ }
+}
+
static gboolean in_sigint;
static void
sigint_handler (int signo)
in_sigint = TRUE;
save_errno = errno;
- do_console_cancel_event ();
+ need_cancel = TRUE;
+ mono_gc_finalize_notify ();
errno = save_errno;
in_sigint = FALSE;
}
static void
sigcont_handler (int signo, void *the_siginfo, void *data)
{
+ int unused;
// Ignore error, there is not much we can do in the sigcont handler.
tcsetattr (STDIN_FILENO, TCSANOW, &mono_attr);
if (keypad_xmit_str != NULL)
- write (STDOUT_FILENO, keypad_xmit_str, strlen (keypad_xmit_str));
+ unused = write (STDOUT_FILENO, keypad_xmit_str, strlen (keypad_xmit_str));
// Call previous handler
if (save_sigcont.sa_sigaction != NULL &&
return TRUE;
}
+#endif /* #if defined(__native_client__) */
+