Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4921 Serge 1
#ifndef MALLOC_PROVIDED
4349 Serge 2
/*
3
FUNCTION
4
<<__malloc_lock>>, <<__malloc_unlock>>---lock malloc pool
5
 
6
INDEX
7
	__malloc_lock
8
INDEX
9
	__malloc_unlock
10
 
11
ANSI_SYNOPSIS
12
	#include 
13
	void __malloc_lock (struct _reent *<[reent]>);
14
	void __malloc_unlock (struct _reent *<[reent]>);
15
 
16
TRAD_SYNOPSIS
17
	void __malloc_lock(<[reent]>)
18
	struct _reent *<[reent]>;
19
 
20
	void __malloc_unlock(<[reent]>)
21
	struct _reent *<[reent]>;
22
 
23
DESCRIPTION
24
The <> family of routines call these functions when they need to lock
25
the memory pool.  The version of these routines supplied in the library use
26
the lock API defined in sys/lock.h.  If multiple threads of execution can
27
call <>, or if <> can be called reentrantly, then you need to
28
define your own versions of these functions in order to safely lock the
29
memory pool during a call.  If you do not, the memory pool may become
30
corrupted.
31
 
32
A call to <> may call <<__malloc_lock>> recursively; that is,
33
the sequence of calls may go <<__malloc_lock>>, <<__malloc_lock>>,
34
<<__malloc_unlock>>, <<__malloc_unlock>>.  Any implementation of these
35
routines must be careful to avoid causing a thread to wait for a lock
36
that it already holds.
37
*/
38
 
39
#include 
40
#include 
41
 
4921 Serge 42
#ifndef __SINGLE_THREAD__
4349 Serge 43
__LOCK_INIT_RECURSIVE(static, __malloc_lock_object);
4921 Serge 44
#endif
4349 Serge 45
 
46
void
47
__malloc_lock (ptr)
48
     struct _reent *ptr;
49
{
4921 Serge 50
#ifndef __SINGLE_THREAD__
4349 Serge 51
  __lock_acquire_recursive (__malloc_lock_object);
4921 Serge 52
#endif
4349 Serge 53
}
54
 
55
void
56
__malloc_unlock (ptr)
57
     struct _reent *ptr;
58
{
4921 Serge 59
#ifndef __SINGLE_THREAD__
4349 Serge 60
  __lock_release_recursive (__malloc_lock_object);
4921 Serge 61
#endif
4349 Serge 62
}
63
 
4921 Serge 64
#endif