Subversion Repositories HelenOS-historic

Rev

Rev 1428 | Rev 1702 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1428 Rev 1576
Line 76... Line 76...
76
typedef struct {
76
typedef struct {
77
    char *name;
77
    char *name;
78
 
78
 
79
    link_t link;
79
    link_t link;
80
    /* Configuration */
80
    /* Configuration */
81
    size_t size;      /**< Size of SLAB position - align_up(sizeof(obj)) */
81
    size_t size;      /**< Size of slab position - align_up(sizeof(obj)) */
82
    int (*constructor)(void *obj, int kmflag);
82
    int (*constructor)(void *obj, int kmflag);
83
    int (*destructor)(void *obj);
83
    int (*destructor)(void *obj);
84
    int flags;        /**< Flags changing behaviour of cache */
84
    int flags;        /**< Flags changing behaviour of cache */
85
 
85
 
86
    /* Computed values */
86
    /* Computed values */
Line 89... Line 89...
89
 
89
 
90
    /* Statistics */
90
    /* Statistics */
91
    atomic_t allocated_slabs;
91
    atomic_t allocated_slabs;
92
    atomic_t allocated_objs;
92
    atomic_t allocated_objs;
93
    atomic_t cached_objs;
93
    atomic_t cached_objs;
94
    atomic_t magazine_counter; /*<< How many magazines in magazines list */
94
    atomic_t magazine_counter; /**< How many magazines in magazines list */
95
 
95
 
96
    /* Slabs */
96
    /* Slabs */
97
    link_t full_slabs;     /**< List of full slabs */
97
    link_t full_slabs;     /**< List of full slabs */
98
    link_t partial_slabs;  /**< List of partial slabs */
98
    link_t partial_slabs;  /**< List of partial slabs */
99
    SPINLOCK_DECLARE(slablock);
99
    SPINLOCK_DECLARE(slablock);
Line 115... Line 115...
115
 
115
 
116
extern void * slab_alloc(slab_cache_t *cache, int flags);
116
extern void * slab_alloc(slab_cache_t *cache, int flags);
117
extern void slab_free(slab_cache_t *cache, void *obj);
117
extern void slab_free(slab_cache_t *cache, void *obj);
118
extern count_t slab_reclaim(int flags);
118
extern count_t slab_reclaim(int flags);
119
 
119
 
120
/** Initialize SLAB subsytem */
120
/** Initialize slab subsytem */
121
extern void slab_cache_init(void);
121
extern void slab_cache_init(void);
122
extern void slab_enable_cpucache(void);
122
extern void slab_enable_cpucache(void);
123
 
123
 
124
/* KConsole debug */
124
/* kconsole debug */
125
extern void slab_print_list(void);
125
extern void slab_print_list(void);
126
 
126
 
127
/* Malloc support */
127
/* malloc support */
128
extern void * malloc(unsigned int size, int flags);
128
extern void * malloc(unsigned int size, int flags);
129
extern void free(void *obj);
129
extern void free(void *obj);
130
#endif
130
#endif