summaryrefslogtreecommitdiff
path: root/lib/ultralib/src/os/atomic.c
blob: a0bd8fec4afbbc3ac7c4ec43614ff06d3462ae41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "PR/os_internal.h"

int __osAtomicDec(unsigned int* p) {
    u32 mask;
    int result;

    mask = __osDisableInt();
    if (*p) {
        (*p)--;
        result = 1;
    } else {
        result = 0;
    }
    __osRestoreInt(mask);
    return result;
}