aboutsummaryrefslogtreecommitdiff
path: root/kernel/proc/spinlock.c
blob: bf89b8e416c42b384a2614f45fd9c22d0734115f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "globals.h"
#include "main/apic.h"

void spinlock_init(spinlock_t *lock) { lock->s_locked = 0; }

inline void spinlock_lock(spinlock_t *lock)
{
// __sync_bool_compare_and_swap is a GCC intrinsic for atomic compare-and-swap
// If lock->locked is 0, then it is set to 1 and __sync_bool_compare_and_swap
// returns true Otherwise, lock->locked is left at 1 and
// __sync_bool_compare_and_swap returns false
}

inline void spinlock_unlock(spinlock_t *lock)
{
}

inline long spinlock_ownslock(spinlock_t *lock)
{
    return 1;
}