static char*
aligned_address (char *mem, size_t size, size_t alignment)
{
- char *aligned = (char*)((gulong)(mem + (alignment - 1)) & ~(alignment - 1));
- g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((gulong)aligned & (alignment - 1)));
+ char *aligned = (char*)((size_t)(mem + (alignment - 1)) & ~(alignment - 1));
+ g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((size_t)aligned & (alignment - 1)));
return aligned;
}
mono_valloc (void *addr, size_t length, int flags)
{
void *ptr;
- int mflags = MEM_COMMIT;
+ int mflags = MEM_RESERVE|MEM_COMMIT;
int prot = prot_from_flags (flags);
/* translate the flags */
mflags |= MAP_PRIVATE;
ptr = mmap (addr, length, prot, mflags, -1, 0);
- if (ptr == (void*)-1) {
+ if (ptr == MAP_FAILED) {
int fd = open ("/dev/zero", O_RDONLY);
if (fd != -1) {
ptr = mmap (addr, length, prot, mflags, fd, 0);
close (fd);
}
- if (ptr == (void*)-1)
+ if (ptr == MAP_FAILED)
return NULL;
}
return ptr;
mflags |= MAP_32BIT;
ptr = mmap (0, length, prot, mflags, fd, offset);
- if (ptr == (void*)-1)
+ if (ptr == MAP_FAILED)
return NULL;
*ret_handle = (void*)length;
return ptr;
}
#endif // HAVE_MMAP
+#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS)
+
static int use_shared_area;
static gboolean
if (!use_shared_area) {
if (g_getenv ("MONO_DISABLE_SHARED_AREA"))
use_shared_area = -1;
- use_shared_area = 1;
+ else
+ use_shared_area = 1;
}
return use_shared_area == -1;
}
-#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS)
-
static int
mono_shared_area_instances_slow (void **array, int count, gboolean cleanup)
{