#ifndef __KERN_SYNC_SYNC_H__
|
|
#define __KERN_SYNC_SYNC_H__
|
|
|
|
#include <x86.h>
|
|
#include <intr.h>
|
|
#include <mmu.h>
|
|
#include <assert.h>
|
|
#include <atomic.h>
|
|
#include <sched.h>
|
|
|
|
static inline bool
|
|
__intr_save(void) {
|
|
if (read_eflags() & FL_IF) {
|
|
intr_disable();
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static inline void
|
|
__intr_restore(bool flag) {
|
|
if (flag) {
|
|
intr_enable();
|
|
}
|
|
}
|
|
|
|
#define local_intr_save(x) do { x = __intr_save(); } while (0)
|
|
#define local_intr_restore(x) __intr_restore(x);
|
|
|
|
#endif /* !__KERN_SYNC_SYNC_H__ */
|
|
|