| /** |
| * @file op_libiberty.h |
| * Wrapper for libiberty - always use this instead of |
| * libiberty.h |
| * |
| * @remark Copyright 2002 OProfile authors |
| * @remark Read the file COPYING |
| * |
| * @author John Levon |
| * @author Philippe Elie |
| */ |
| |
| #ifndef OP_LIBIBERTY_H |
| #define OP_LIBIBERTY_H |
| |
| #include <stddef.h> |
| |
| #include "config.h" |
| |
| #ifdef MALLOC_ATTRIBUTE_OK |
| #define OP_ATTRIB_MALLOC __attribute__((malloc)) |
| #else |
| #define OP_ATTRIB_MALLOC |
| #endif |
| |
| #ifdef HAVE_LIBIBERTY_H |
| #include <libiberty.h> |
| #else |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* some system have a libiberty.a but no libiberty.h so we must provide |
| * ourself the missing proto */ |
| #ifndef HAVE_LIBIBERTY_H |
| /* Set the program name used by xmalloc. */ |
| void xmalloc_set_program_name(char const *); |
| |
| /* Allocate memory without fail. If malloc fails, this will print a |
| message to stderr (using the name set by xmalloc_set_program_name, |
| if any) and then call xexit. */ |
| void * xmalloc(size_t) OP_ATTRIB_MALLOC; |
| |
| /* Reallocate memory without fail. This works like xmalloc. Note, |
| realloc type functions are not suitable for attribute malloc since |
| they may return the same address across multiple calls. */ |
| void * xrealloc(void *, size_t); |
| |
| /* Allocate memory without fail and set it to zero. This works like xmalloc */ |
| void * xcalloc(size_t, size_t) OP_ATTRIB_MALLOC; |
| |
| /* Copy a string into a memory buffer without fail. */ |
| char * xstrdup(char const *) OP_ATTRIB_MALLOC; |
| |
| /** |
| * Duplicates a region of memory without fail. First, alloc_size bytes |
| * are allocated, then copy_size bytes from input are copied into |
| * it, and the new memory is returned. If fewer bytes are copied than were |
| * allocated, the remaining memory is zeroed. |
| */ |
| void * xmemdup(void const *, size_t, size_t) OP_ATTRIB_MALLOC; |
| |
| #endif /* !HAVE_LIBIBERTY_H */ |
| |
| #ifdef ANDROID |
| #define xmalloc(s) malloc(s) |
| #define xrealloc(p,s) realloc(p,s) |
| #define xstrdup(str) strdup(str) |
| #define xmalloc_set_program_name(n) |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* !HAVE_LIBIBERTY_H */ |
| |
| #endif /* OP_LIBIBERTY_H */ |