qemu/qemu-malloc.c
<<
>>
Prefs
   1/*
   2 * malloc-like functions for system emulation.
   3 *
   4 * Copyright (c) 2006 Fabrice Bellard
   5 *
   6 * Permission is hereby granted, free of charge, to any person obtaining a copy
   7 * of this software and associated documentation files (the "Software"), to deal
   8 * in the Software without restriction, including without limitation the rights
   9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 * copies of the Software, and to permit persons to whom the Software is
  11 * furnished to do so, subject to the following conditions:
  12 *
  13 * The above copyright notice and this permission notice shall be included in
  14 * all copies or substantial portions of the Software.
  15 *
  16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 * THE SOFTWARE.
  23 */
  24#include "qemu-common.h"
  25#include <stdlib.h>
  26
  27static void *oom_check(void *ptr)
  28{
  29    if (ptr == NULL) {
  30        abort();
  31    }
  32    return ptr;
  33}
  34
  35void *get_mmap_addr(unsigned long size)
  36{
  37    return NULL;
  38}
  39
  40void qemu_free(void *ptr)
  41{
  42    free(ptr);
  43}
  44
  45void *qemu_malloc(size_t size)
  46{
  47    if (!size) {
  48        abort();
  49    }
  50    return oom_check(malloc(size));
  51}
  52
  53void *qemu_realloc(void *ptr, size_t size)
  54{
  55    if (size) {
  56        return oom_check(realloc(ptr, size));
  57    } else {
  58        if (ptr) {
  59            return realloc(ptr, size);
  60        }
  61    }
  62    abort();
  63}
  64
  65void *qemu_mallocz(size_t size)
  66{
  67    void *ptr;
  68    ptr = qemu_malloc(size);
  69    memset(ptr, 0, size);
  70    return ptr;
  71}
  72
  73char *qemu_strdup(const char *str)
  74{
  75    char *ptr;
  76    size_t len = strlen(str);
  77    ptr = qemu_malloc(len + 1);
  78    memcpy(ptr, str, len + 1);
  79    return ptr;
  80}
  81
  82char *qemu_strndup(const char *str, size_t size)
  83{
  84    const char *end = memchr(str, 0, size);
  85    char *new;
  86
  87    if (end) {
  88        size = end - str;
  89    }
  90
  91    new = qemu_malloc(size + 1);
  92    new[size] = 0;
  93
  94    return memcpy(new, str, size);
  95}
  96