BXE: min->MIN, plus an spatch
[akaros.git] / kern / include / slab.h
index 79787e9..7e5189c 100644 (file)
@@ -59,8 +59,10 @@ struct kmem_slab {
        size_t num_busy_obj;
        size_t num_total_obj;
        union {
-               struct kmem_bufctl_list bufctl_freelist;
-               void *free_small_obj;
+               struct kmem_bufctl_list bufctl_freelist
+                   WHEN(obj_size > SLAB_LARGE_CUTOFF);
+               void *free_small_obj
+                   WHEN(obj_size <= SLAB_LARGE_CUTOFF);
        };
 };
 TAILQ_HEAD(kmem_slab_list, kmem_slab);
@@ -69,7 +71,7 @@ TAILQ_HEAD(kmem_slab_list, kmem_slab);
 struct kmem_cache {
        SLIST_ENTRY(kmem_cache) link;
        spinlock_t cache_lock;
-       const char *name;
+       const char *NTS name;
        size_t obj_size;
        int align;
        int flags;
@@ -78,6 +80,7 @@ struct kmem_cache {
        struct kmem_slab_list empty_slab_list;
        void (*ctor)(void *, size_t);
        void (*dtor)(void *, size_t);
+       unsigned long nr_cur_alloc;
 };
 
 /* List of all kmem_caches, sorted in order of size */
@@ -85,7 +88,7 @@ SLIST_HEAD(kmem_cache_list, kmem_cache);
 extern struct kmem_cache_list kmem_caches;
 
 /* Cache management */
-struct kmem_cache *kmem_cache_create(const char *name, size_t obj_size,
+struct kmem_cache *kmem_cache_create(const char *NTS name, size_t obj_size,
                                      int align, int flags,
                                      void (*ctor)(void *, size_t),
                                      void (*dtor)(void *, size_t));
@@ -95,7 +98,6 @@ void *kmem_cache_alloc(struct kmem_cache *cp, int flags);
 void kmem_cache_free(struct kmem_cache *cp, void *buf);
 /* Back end: internal functions */
 void kmem_cache_init(void);
-void kmem_cache_grow(struct kmem_cache *cp);
 void kmem_cache_reap(struct kmem_cache *cp);
 
 /* Debug */