linux/kernel/bpf/percpu_freelist.h
<<
>>
Prefs
   1/* Copyright (c) 2016 Facebook
   2 *
   3 * This program is free software; you can redistribute it and/or
   4 * modify it under the terms of version 2 of the GNU General Public
   5 * License as published by the Free Software Foundation.
   6 */
   7#ifndef __PERCPU_FREELIST_H__
   8#define __PERCPU_FREELIST_H__
   9#include <linux/spinlock.h>
  10#include <linux/percpu.h>
  11
  12struct pcpu_freelist_head {
  13        struct pcpu_freelist_node *first;
  14        raw_spinlock_t lock;
  15};
  16
  17struct pcpu_freelist {
  18        struct pcpu_freelist_head __percpu *freelist;
  19};
  20
  21struct pcpu_freelist_node {
  22        struct pcpu_freelist_node *next;
  23};
  24
  25void pcpu_freelist_push(struct pcpu_freelist *, struct pcpu_freelist_node *);
  26struct pcpu_freelist_node *pcpu_freelist_pop(struct pcpu_freelist *);
  27void pcpu_freelist_populate(struct pcpu_freelist *s, void *buf, u32 elem_size,
  28                            u32 nr_elems);
  29int pcpu_freelist_init(struct pcpu_freelist *);
  30void pcpu_freelist_destroy(struct pcpu_freelist *s);
  31#endif
  32