kernel: disable pre-emption when accessing per-cpu variables
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <socks/status.h>
|
#include <socks/status.h>
|
||||||
#include <socks/compiler.h>
|
#include <socks/compiler.h>
|
||||||
|
#include <socks/sched.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -11,9 +12,13 @@ extern "C" {
|
|||||||
#define DEFINE_PERCPU_VAR(type, name) \
|
#define DEFINE_PERCPU_VAR(type, name) \
|
||||||
__section(".data.percpu") type name
|
__section(".data.percpu") type name
|
||||||
|
|
||||||
#define percpu_get(var) __percpu_get(var)
|
#define percpu_get(var) \
|
||||||
|
__extension__({ \
|
||||||
|
preempt_disable(); \
|
||||||
|
__percpu_get(var); \
|
||||||
|
})
|
||||||
|
|
||||||
#define percpu_put(var)
|
#define percpu_put(var) preempt_enable();
|
||||||
|
|
||||||
extern kern_status_t init_per_cpu_areas(void);
|
extern kern_status_t init_per_cpu_areas(void);
|
||||||
extern void *__percpu_get(void *var);
|
extern void *__percpu_get(void *var);
|
||||||
|
|||||||
Reference in New Issue
Block a user