source: roaraudio/include/libroar/memmgr.h @ 4790:c1073581d7c2

Last change on this file since 4790:c1073581d7c2 was 4790:c1073581d7c2, checked in by phi, 13 years ago

added support for long (> sizeof(mes.data)-4) cookies, fixed memory use-after-free bug in roard

File size: 3.2 KB
Line 
1//memmgr.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2011
5 *
6 *  This file is part of libroar a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  libroar is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 *  NOTE for everyone want's to change something and send patches:
25 *  read README and HACKING! There a addition information on
26 *  the license of this document you need to read before you send
27 *  any patches.
28 *
29 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
30 *  or libpulse*:
31 *  The libs libroaresd, libroararts and libroarpulse link this lib
32 *  and are therefore GPL. Because of this it may be illigal to use
33 *  them with any software that uses libesd, libartsc or libpulse*.
34 */
35
36#ifndef _LIBROARMEMMGR_H_
37#define _LIBROARMEMMGR_H_
38
39#include "libroar.h"
40
41#ifdef ROAR_USE_MEMMGR
42// those functions are currently not implemeted:
43void * roar_mm_calloc(size_t nmemb, size_t size);
44void * roar_mm_malloc(size_t size);
45void   roar_mm_free(void *ptr);
46void * roar_mm_realloc(void *ptr, size_t size);
47char * roar_mm_strdup(const char *s);
48
49/*
50 * TODO: we need some functions to control the pre-alloc
51 *       of memory.
52 */
53
54#else
55#define roar_mm_calloc(nmemb, size) calloc((nmemb), (size))
56#define roar_mm_malloc(size)        malloc((size))
57#define roar_mm_free(ptr)           free((ptr))
58#define roar_mm_realloc(ptr, size)  realloc((ptr), (size))
59#define roar_mm_strdup(str)         strdup((str))
60#endif
61
62
63// memory locking:
64
65#if defined(ROAR_HAVE_MLOCK) && defined(__linux__)
66#define roar_mm_mlock(addr, len) mlock((addr), (len))
67#elif defined(ROAR_TARGET_MICROCONTROLLER)
68#define roar_mm_mlock(addr, len) 0
69#else
70int roar_mm_mlock(const void *addr, size_t len);
71#endif
72
73#if defined(ROAR_HAVE_MUNLOCK) && defined(__linux__)
74#define roar_mm_munlock(addr, len) munlock((addr), (len))
75#elif defined(ROAR_TARGET_MICROCONTROLLER)
76#define roar_mm_munlock(addr, len) 0
77#else
78int roar_mm_munlock(const void *addr, size_t len);
79#endif
80
81#if defined(ROAR_HAVE_MLOCKALL)
82#define roar_mm_mlockall(flags) mlockall((flags))
83#elif defined(ROAR_TARGET_MICROCONTROLLER)
84#define roar_mm_mlockall(flags) 0
85#else
86#define roar_mm_mlockall(flags) (-1)
87#endif
88
89#if defined(ROAR_HAVE_MUNLOCKALL)
90#define roar_mm_munlockall() munlockall()
91#elif defined(ROAR_TARGET_MICROCONTROLLER)
92#define roar_mm_munlockall() 0
93#else
94#define roar_mm_munlockall() (-1)
95#endif
96
97// for compatibility with old versions:
98#define ROAR_MLOCK _ROAR_MLOCK
99
100// aux functions:
101void * roar_mm_memdup(const void * s, size_t len);
102
103#endif
104
105//ll
Note: See TracBrowser for help on using the repository browser.