mirror of
https://github.com/holub/mame
synced 2025-05-25 23:35:26 +03:00
67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
//============================================================
|
|
//
|
|
// sdlos_*.c - OS specific low level code
|
|
//
|
|
// Copyright (c) 1996-2010, Nicola Salmoria and the MAME Team.
|
|
// Visit http://mamedev.org for licensing and usage restrictions.
|
|
//
|
|
// SDLMAME by Olivier Galibert and R. Belmont
|
|
//
|
|
//============================================================
|
|
|
|
#include <sys/mman.h>
|
|
#include <signal.h>
|
|
#ifdef MAME_DEBUG
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
// MAME headers
|
|
#include "osdcore.h"
|
|
|
|
|
|
//============================================================
|
|
// osd_alloc_executable
|
|
//
|
|
// allocates "size" bytes of executable memory. this must take
|
|
// things like NX support into account.
|
|
//============================================================
|
|
|
|
void *osd_alloc_executable(size_t size)
|
|
{
|
|
#if defined(SDLMAME_BSD)
|
|
return (void *)mmap(0, size, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, -1, 0);
|
|
#elif defined(SDLMAME_UNIX)
|
|
return (void *)mmap(0, size, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, 0, 0);
|
|
#endif
|
|
}
|
|
|
|
//============================================================
|
|
// osd_free_executable
|
|
//
|
|
// frees memory allocated with osd_alloc_executable
|
|
//============================================================
|
|
|
|
void osd_free_executable(void *ptr, size_t size)
|
|
{
|
|
#ifdef SDLMAME_SOLARIS
|
|
munmap((char *)ptr, size);
|
|
#else
|
|
munmap(ptr, size);
|
|
#endif
|
|
}
|
|
|
|
//============================================================
|
|
// osd_break_into_debugger
|
|
//============================================================
|
|
|
|
void osd_break_into_debugger(const char *message)
|
|
{
|
|
#ifdef MAME_DEBUG
|
|
printf("MAME exception: %s\n", message);
|
|
printf("Attempting to fall into debugger\n");
|
|
kill(getpid(), SIGTRAP);
|
|
#else
|
|
printf("Ignoring MAME exception: %s\n", message);
|
|
#endif
|
|
}
|