xref: /haiku/src/system/libroot/posix/malloc/hoard2/arch-specific.h (revision fc7456e9b1ec38c941134ed6d01c438cf289381e)
1 ///-*-C++-*-//////////////////////////////////////////////////////////////////
2 //
3 // Hoard: A Fast, Scalable, and Memory-Efficient Allocator
4 //        for Shared-Memory Multiprocessors
5 // Contact author: Emery Berger, http://www.cs.utexas.edu/users/emery
6 //
7 // Copyright (c) 1998-2000, The University of Texas at Austin.
8 //
9 // This library is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU Library General Public License as
11 // published by the Free Software Foundation, http://www.fsf.org.
12 //
13 // This library is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 // Library General Public License for more details.
17 //
18 //////////////////////////////////////////////////////////////////////////////
19 
20 #ifndef _ARCH_SPECIFIC_H_
21 #define _ARCH_SPECIFIC_H_
22 
23 #include "config.h"
24 
25 #include <new>
26 
27 #include <OS.h>
28 #include <assert.h>
29 
30 #include <locks.h>
31 
32 
33 // TODO: some kind of adaptive mutex (i.e. trying to spin for a while before
34 //  may be a better choice
35 typedef mutex hoardLockType;
36 
37 namespace BPrivate {
38 
39 ///// Lock-related wrappers.
40 
41 void hoardLockInit(hoardLockType &lock, const char *name);
42 void hoardLock(hoardLockType &lock);
43 void hoardUnlock(hoardLockType &lock);
44 
45 ///// Memory-related wrapper.
46 
47 void *hoardSbrk(long size);
48 void hoardUnsbrk(void *ptr, long size);
49 
50 ///// Other.
51 
52 void hoardYield(void);
53 
54 }	// namespace BPrivate
55 
56 #endif // _ARCH_SPECIFIC_H_
57