aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ppc/rheap.h
blob: e6ca1f67cedc0e526ad36d9dba1c784d88db7ad2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
 * include/asm-ppc/rheap.c
 *
 * Header file for the implementation of a remote heap.
 *
 * Author: Pantelis Antoniou <panto@intracom.gr>
 *
 * 2004 (c) INTRACOM S.A. Greece. This file is licensed under
 * the terms of the GNU General Public License version 2. This program
 * is licensed "as is" without any warranty of any kind, whether express
 * or implied.
 */

#ifndef __ASM_PPC_RHEAP_H__
#define __ASM_PPC_RHEAP_H__

#include <linux/list.h>

typedef struct _rh_block {
	struct list_head list;
	void *start;
	int size;
	const char *owner;
} rh_block_t;

typedef struct _rh_info {
	unsigned int alignment;
	int max_blocks;
	int empty_slots;
	rh_block_t *block;
	struct list_head empty_list;
	struct list_head free_list;
	struct list_head taken_list;
	unsigned int flags;
} rh_info_t;

#define RHIF_STATIC_INFO	0x1
#define RHIF_STATIC_BLOCK	0x2

typedef struct rh_stats_t {
	void *start;
	int size;
	const char *owner;
} rh_stats_t;

#define RHGS_FREE	0
#define RHGS_TAKEN	1

/* Create a remote heap dynamically */
extern rh_info_t *rh_create(unsigned int alignment);

/* Destroy a remote heap, created by rh_create() */
extern void rh_destroy(rh_info_t * info);

/* Initialize in place a remote info block */
extern void rh_init(rh_info_t * info, unsigned int alignment, int max_blocks,
		    rh_block_t * block);

/* Attach a free region to manage */
extern int rh_attach_region(rh_info_t * info, void *start, int size);

/* Detach a free region */
extern void *rh_detach_region(rh_info_t * info, void *start, int size);

/* Allocate the given size from the remote heap */
extern void *rh_alloc(rh_info_t * info, int size, const char *owner);

/* Allocate the given size from the given address */
extern void *rh_alloc_fixed(rh_info_t * info, void *start, int size,
			    const char *owner);

/* Free the allocated area */
extern int rh_free(rh_info_t * info, void *start);

/* Get stats for debugging purposes */
extern int rh_get_stats(rh_info_t * info, int what, int max_stats,
			rh_stats_t * stats);

/* Simple dump of remote heap info */
extern void rh_dump(rh_info_t * info);

/* Set owner of taken block */
extern int rh_set_owner(rh_info_t * info, void *start, const char *owner);

#endif				/* __ASM_PPC_RHEAP_H__ */
deletions'>-6/+27 2011-03-25MIPS: VR41xx: Convert to new irq_chip functionsThomas Gleixner2-47/+44 2011-03-25MIPS: TXx9: Convert to new irq_chip functionsThomas Gleixner5-93/+75 2011-03-25MIPS: SNI: Convert to new irq_chip functionsThomas Gleixner4-74/+33 2011-03-25MIPS: Sibyte: Convert to new irq_chip functionsThomas Gleixner2-73/+35 2011-03-25MIPS: IP32: Convert to new irq_chip functionsThomas Gleixner1-92/+42 2011-03-25MIPS: IP27: Convert to new irq_chip functionsThomas Gleixner2-27/+22 2011-03-25MIPS: IP22/IP28: Convert to new irq_chip functionsThomas Gleixner1-34/+26 2011-03-25MIPS: RB532: Convert to new irq_chip functionsThomas Gleixner1-16/+16 2011-03-25MIPS: PowerTV: Convert to new irq_chip functionsThomas Gleixner1-7/+6 2011-03-25MIPS: PNX8550: Convert to new irq_chip functionsThomas Gleixner1-9/+9 2011-03-25MIPS: PNX83xx: Convert to new irq_chip functionsThomas Gleixner1-82/+16 2011-03-25MIPS: msp71xx: Convert to new irq_chip functionsThomas Gleixner3-93/+46 2011-03-25MIPS: Loongson: Convert to new irq_chip functionsThomas Gleixner1-9/+7 2011-03-25MIPS: Use generic show_interrupts()Thomas Gleixner2-41/+3 2011-03-25MIPS: SMTC: Cleanup the hook mess and use irq_dataThomas Gleixner3-39/+39 2011-03-25MIPS: SMTC: Use irq_data in smtc_forward_irq()Thomas Gleixner1-1/+2 2011-03-25MIPS: TXx9: Convert core to new irq_chip functionsThomas Gleixner1-14/+14 2011-03-25MIPS: irq_cpu: Convert to new irq_chip functionsThomas Gleixner1-25/+21 2011-03-25MIPS: RM9000: Convert to new irq_chip functionsThomas Gleixner1-26/+23 2011-03-25MIPS: rm7000: Convert to new irq_chip functionsThomas Gleixner1-9/+9 2011-03-25MIPS: MSC01: Convert to new irq_chip functionsThomas Gleixner1-27/+24 2011-03-25MIPS: GT641xx: Convert to new irq_chip functionsThomas Gleixner1-13/+13 2011-03-25MIPS: GIC: Convert to new irq_chip functionsThomas Gleixner1-25/+18 2011-03-25MIPS: i8259: Convert to new irq_chip functionsThomas Gleixner3-26/+24 2011-03-25MIPS: LASAt: Convert to new irq_chip functionsThomas Gleixner1-8/+8 2011-03-25MIPS: JZ4740: Cleanup the mechanical irq_chip conversion Lars-Peter Clausen1-15/+2 2011-03-25MIPS: JZ4740: GPIO: Use shared irq chip for all gpiosLars-Peter Clausen1-12/+13 2011-03-25MIPS: JZ4740: Convert to new irq functionsThomas Gleixner2-58/+67 2011-03-25MIPS: JAZZ: Convert to new irq_chip functionsThomas Gleixner1-8/+6 2011-03-25MIPS: EMMA: Convert to new irq_chip functionsThomas Gleixner1-40/+27 2011-03-25MIPS: DEC: Convert to new irq_chip functionsThomas Gleixner2-59/+24 2011-03-25MIPS: bcm63xx: Convert to new irq_chip functionsThomas Gleixner1-45/+32 2011-03-25MIPS: ath79: Convert to new irq_chip functionsThomas Gleixner1-13/+10 2011-03-25MIPS: AR7: Convert to new irq_chip functionsThomas Gleixner1-21/+21 2011-03-25MIPS: Alchemy: Convert to new irq chip functionsThomas Gleixner2-57/+59