Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.14-rc3 85 lines 2.2 kB view raw
1/* 2 * include/asm-ppc/rheap.c 3 * 4 * Header file for the implementation of a remote heap. 5 * 6 * Author: Pantelis Antoniou <panto@intracom.gr> 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 19typedef struct _rh_block { 20 struct list_head list; 21 void *start; 22 int size; 23 const char *owner; 24} rh_block_t; 25 26typedef 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 40typedef struct rh_stats_t { 41 void *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 */ 50extern rh_info_t *rh_create(unsigned int alignment); 51 52/* Destroy a remote heap, created by rh_create() */ 53extern void rh_destroy(rh_info_t * info); 54 55/* Initialize in place a remote info block */ 56extern 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 */ 60extern int rh_attach_region(rh_info_t * info, void *start, int size); 61 62/* Detach a free region */ 63extern void *rh_detach_region(rh_info_t * info, void *start, int size); 64 65/* Allocate the given size from the remote heap */ 66extern void *rh_alloc(rh_info_t * info, int size, const char *owner); 67 68/* Allocate the given size from the given address */ 69extern void *rh_alloc_fixed(rh_info_t * info, void *start, int size, 70 const char *owner); 71 72/* Free the allocated area */ 73extern int rh_free(rh_info_t * info, void *start); 74 75/* Get stats for debugging purposes */ 76extern int rh_get_stats(rh_info_t * info, int what, int max_stats, 77 rh_stats_t * stats); 78 79/* Simple dump of remote heap info */ 80extern void rh_dump(rh_info_t * info); 81 82/* Set owner of taken block */ 83extern int rh_set_owner(rh_info_t * info, void *start, const char *owner); 84 85#endif /* __ASM_PPC_RHEAP_H__ */