shrinker
unsigned long (*count_objects)(struct shrinker *, struct shrink_control *);
unsigned long (*scan_objects)(struct shrinker *, struct shrink_control *);
TAILQ_ENTRY(shrinker) next;
struct shrinker *linuxkpi_shrinker_alloc(
int linuxkpi_register_shrinker(struct shrinker *s);
void linuxkpi_unregister_shrinker(struct shrinker *s);
void linuxkpi_shrinker_free(struct shrinker *shrinker);
#define shrinker_register(shrinker) \
linuxkpi_register_shrinker(shrinker)
#define shrinker_free(shrinker) \
linuxkpi_shrinker_free(shrinker)
shrinker_shrink(struct shrinker *s)
struct shrinker *s;
TAILQ_HEAD(, shrinker) lkpi_shrinkers = TAILQ_HEAD_INITIALIZER(lkpi_shrinkers);
struct shrinker *
struct shrinker *shrinker;
shrinker = kzalloc(sizeof(*shrinker), GFP_KERNEL);
if (shrinker == NULL)
shrinker->flags = flags | SHRINKER_ALLOCATED;
shrinker->seeks = DEFAULT_SEEKS;
return (shrinker);
linuxkpi_register_shrinker(struct shrinker *s)
linuxkpi_unregister_shrinker(struct shrinker *s)
linuxkpi_shrinker_free(struct shrinker *shrinker)
if (shrinker->flags & SHRINKER_REGISTERED)
unregister_shrinker(shrinker);
kfree(shrinker);
static int ttm_dma_pool_mm_shrink(struct shrinker *shrink,
struct shrinker mm_shrink;