Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
powerpc
include
asm
rheap.h
Go to the documentation of this file.
1
/*
2
* include/asm-ppc/rheap.h
3
*
4
* Header file for the implementation of a remote heap.
5
*
6
* Author: Pantelis Antoniou <
[email protected]
>
7
*
8
* 2004 (c) INTRACOM S.A. Greece. This file is licensed under
9
* the terms of the GNU General Public License version 2. This program
10
* is licensed "as is" without any warranty of any kind, whether express
11
* or implied.
12
*/
13
14
#ifndef __ASM_PPC_RHEAP_H__
15
#define __ASM_PPC_RHEAP_H__
16
17
#include <linux/list.h>
18
19
typedef
struct
_rh_block
{
20
struct
list_head
list
;
21
unsigned
long
start
;
22
int
size
;
23
const
char
*
owner
;
24
}
rh_block_t
;
25
26
typedef
struct
_rh_info
{
27
unsigned
int
alignment
;
28
int
max_blocks
;
29
int
empty_slots
;
30
rh_block_t
*
block
;
31
struct
list_head
empty_list
;
32
struct
list_head
free_list
;
33
struct
list_head
taken_list
;
34
unsigned
int
flags
;
35
}
rh_info_t
;
36
37
#define RHIF_STATIC_INFO 0x1
38
#define RHIF_STATIC_BLOCK 0x2
39
40
typedef
struct
_rh_stats
{
41
unsigned
long
start
;
42
int
size
;
43
const
char
*
owner
;
44
}
rh_stats_t
;
45
46
#define RHGS_FREE 0
47
#define RHGS_TAKEN 1
48
49
/* Create a remote heap dynamically */
50
extern
rh_info_t
*
rh_create
(
unsigned
int
alignment
);
51
52
/* Destroy a remote heap, created by rh_create() */
53
extern
void
rh_destroy
(
rh_info_t
*
info
);
54
55
/* Initialize in place a remote info block */
56
extern
void
rh_init
(
rh_info_t
*
info
,
unsigned
int
alignment
,
int
max_blocks,
57
rh_block_t
*
block
);
58
59
/* Attach a free region to manage */
60
extern
int
rh_attach_region
(
rh_info_t
*
info
,
unsigned
long
start
,
int
size
);
61
62
/* Detach a free region */
63
extern
unsigned
long
rh_detach_region
(
rh_info_t
*
info
,
unsigned
long
start
,
int
size
);
64
65
/* Allocate the given size from the remote heap (with alignment) */
66
extern
unsigned
long
rh_alloc_align
(
rh_info_t
*
info
,
int
size
,
int
alignment
,
67
const
char
*
owner
);
68
69
/* Allocate the given size from the remote heap */
70
extern
unsigned
long
rh_alloc
(
rh_info_t
*
info
,
int
size
,
const
char
*
owner
);
71
72
/* Allocate the given size from the given address */
73
extern
unsigned
long
rh_alloc_fixed
(
rh_info_t
*
info
,
unsigned
long
start
,
int
size
,
74
const
char
*
owner
);
75
76
/* Free the allocated area */
77
extern
int
rh_free
(
rh_info_t
*
info
,
unsigned
long
start
);
78
79
/* Get stats for debugging purposes */
80
extern
int
rh_get_stats
(
rh_info_t
*
info
,
int
what
,
int
max_stats,
81
rh_stats_t
*
stats
);
82
83
/* Simple dump of remote heap info */
84
extern
void
rh_dump
(
rh_info_t
*
info
);
85
86
/* Set owner of taken block */
87
extern
int
rh_set_owner
(
rh_info_t
*
info
,
unsigned
long
start
,
const
char
*
owner
);
88
89
#endif
/* __ASM_PPC_RHEAP_H__ */
Generated on Thu Jan 10 2013 13:13:27 for Linux Kernel by
1.8.2