forked from Qortal/Brooklyn
2a709f28fa
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
32 lines
929 B
C
32 lines
929 B
C
/* 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
|