29 |
struct hurd_slab_space; |
struct hurd_slab_space; |
30 |
typedef struct hurd_slab_space *hurd_slab_space_t; |
typedef struct hurd_slab_space *hurd_slab_space_t; |
31 |
|
|
32 |
|
/* Initialize the slab object pointed to by BUFFER. HOOK is as |
33 |
|
provided to hurd_slab_create. */ |
34 |
|
typedef error_t (*hurd_slab_constructor_t) (void *hook, void *buffer); |
35 |
|
|
36 |
|
/* Destroy the slab object pointed to by BUFFER. HOOK is as provided |
37 |
|
to hurd_slab_create. */ |
38 |
|
typedef void (*hurd_slab_destructor_t) (void *hook, void *buffer); |
39 |
/* Initialize the slab object pointed to by BUFFER. */ |
/* Initialize the slab object pointed to by BUFFER. */ |
40 |
typedef error_t (*hurd_slab_constructor_t) (void *buffer); |
typedef error_t (*hurd_slab_constructor_t) (void *buffer); |
41 |
|
|
42 |
/* Destroy the slab object pointed to by BUFFER. */ |
/* Destroy the slab object pointed to by BUFFER. */ |
43 |
typedef void (*hurd_slab_destructor_t) (void *buffer); |
typedef void (*hurd_slab_destructor_t) (void *buffer); |
44 |
|
|
45 |
/* Create a new slab space with the given object size, alignment, |
|
46 |
constructor and destructor. ALIGNMENT can be zero. */ |
/* Create a new slab space with the given object size, alignment, |
47 |
|
constructor and destructor. ALIGNMENT can be zero. HOOK is passed |
48 |
|
as the first argument to the constructor and destructor. */ |
49 |
error_t hurd_slab_create (size_t size, size_t alignment, |
error_t hurd_slab_create (size_t size, size_t alignment, |
50 |
hurd_slab_constructor_t constructor, |
hurd_slab_constructor_t constructor, |
51 |
hurd_slab_destructor_t destructor, |
hurd_slab_destructor_t destructor, |
52 |
|
void *hook, |
53 |
hurd_slab_space_t *space); |
hurd_slab_space_t *space); |
54 |
|
|
55 |
/* Allocate a new object from the slab space SPACE. */ |
/* Allocate a new object from the slab space SPACE. */ |