mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
929 B
31 lines
929 B
/* Copyright (c) 2016 Facebook |
|
* |
|
* This program is free software; you can redistribute it and/or |
|
* modify it under the terms of version 2 of the GNU General Public |
|
* License as published by the Free Software Foundation. |
|
*/ |
|
#ifndef __PERCPU_FREELIST_H__ |
|
#define __PERCPU_FREELIST_H__ |
|
#include <linux/spinlock.h> |
|
#include <linux/percpu.h> |
|
|
|
struct pcpu_freelist_head { |
|
struct pcpu_freelist_node *first; |
|
raw_spinlock_t lock; |
|
}; |
|
|
|
struct pcpu_freelist { |
|
struct pcpu_freelist_head __percpu *freelist; |
|
}; |
|
|
|
struct pcpu_freelist_node { |
|
struct pcpu_freelist_node *next; |
|
}; |
|
|
|
void pcpu_freelist_push(struct pcpu_freelist *, struct pcpu_freelist_node *); |
|
struct pcpu_freelist_node *pcpu_freelist_pop(struct pcpu_freelist *); |
|
void pcpu_freelist_populate(struct pcpu_freelist *s, void *buf, u32 elem_size, |
|
u32 nr_elems); |
|
int pcpu_freelist_init(struct pcpu_freelist *); |
|
void pcpu_freelist_destroy(struct pcpu_freelist *s); |
|
#endif
|
|
|