X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=linux%2Fplat.c;h=04ebd12fe6f7997a1695a510999e21903e897226;hb=f4750ef3f52e445cc2a810b0eb45989b8a82c446;hp=4ed1e65d6bd19db099bcf2c5b79df64487df30b8;hpb=ca69c3e5a0ecf407c02dc85c6f3282ebb1efc5a2;p=libpicofe.git diff --git a/linux/plat.c b/linux/plat.c index 4ed1e65..04ebd12 100644 --- a/linux/plat.c +++ b/linux/plat.c @@ -1,10 +1,11 @@ /* - * (C) Gražvydas "notaz" Ignotas, 2008-2010 + * (C) Gražvydas "notaz" Ignotas, 2008-2012 * * This work is licensed under the terms of any of these licenses * (at your option): * - GNU GPL, version 2 or later. * - GNU LGPL, version 2.1 or later. + * - MAME license. * See the COPYING file in the top-level directory. */ @@ -19,7 +20,7 @@ #include #include -#include "../common/plat.h" +#include "../plat.h" /* XXX: maybe unhardcode pagesize? */ #define HUGETLB_PAGESIZE (2 * 1024 * 1024) @@ -136,7 +137,7 @@ int plat_wait_event(int *fds_hnds, int count, int timeout_ms) void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed) { - static int hugetlb_disabled; + static int hugetlb_warned; int prot = PROT_READ | PROT_WRITE; int flags = MAP_PRIVATE | MAP_ANONYMOUS; void *req, *ret; @@ -146,15 +147,17 @@ void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed) prot |= PROT_EXEC; if (is_fixed) flags |= MAP_FIXED; - if (size >= HUGETLB_THRESHOLD && !hugetlb_disabled) + if (size >= HUGETLB_THRESHOLD) flags |= MAP_HUGETLB; ret = mmap(req, size, prot, flags, -1, 0); if (ret == MAP_FAILED && (flags & MAP_HUGETLB)) { - fprintf(stderr, - "warning: failed to do hugetlb mmap (%p, %zu): %d\n", - req, size, errno); - hugetlb_disabled = 1; + if (!hugetlb_warned) { + fprintf(stderr, + "warning: failed to do hugetlb mmap (%p, %zu): %d\n", + req, size, errno); + hugetlb_warned = 1; + } flags &= ~MAP_HUGETLB; ret = mmap(req, size, prot, flags, -1, 0); }