* THE SOFTWARE.
*/
#include <windows.h>
+#include <mmsystem.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
return TRUE;
}
+#ifdef CONFIG_MARU
void os_setup_early_signal_handling(void)
{
- /* Note: cpu_interrupt() is currently not SMP safe, so we force
- QEMU to run on a single CPU */
- HANDLE h;
- DWORD_PTR mask, smask;
- int i;
-
SetConsoleCtrlHandler(qemu_ctrl_handler, TRUE);
+}
+#else
+static TIMECAPS mm_tc;
- h = GetCurrentProcess();
- if (GetProcessAffinityMask(h, &mask, &smask)) {
- for(i = 0; i < 32; i++) {
- if (mask & (1 << i))
- break;
- }
- if (i != 32) {
- mask = 1 << i;
- SetProcessAffinityMask(h, mask);
- }
- }
+static void os_undo_timer_resolution(void)
+{
+ timeEndPeriod(mm_tc.wPeriodMin);
+}
+
+void os_setup_early_signal_handling(void)
+{
+ SetConsoleCtrlHandler(qemu_ctrl_handler, TRUE);
+ timeGetDevCaps(&mm_tc, sizeof(mm_tc));
+ timeBeginPeriod(mm_tc.wPeriodMin);
+ atexit(os_undo_timer_resolution);
}
+#endif /* CONFIG_MARU */
/* Look for support files in the same directory as the executable. */
char *os_find_datadir(const char *argv0)
OVERLAPPED overlap;
BOOL ret;
memset(&overlap, 0, sizeof(overlap));
-
+#ifndef CONFIG_MARU
file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-
+#else
+ file = CreateFile(g_win32_locale_filename_from_utf8(filename), GENERIC_WRITE, FILE_SHARE_READ, NULL,
+ OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
if (file == INVALID_HANDLE_VALUE) {
return -1;
}