Revision f53422e82464594d569eca1cb3130b3f9984f7ca authored by Daniel Fort on 23 November 2016, 05:10:23 UTC, committed by Daniel Fort on 23 November 2016, 05:10:23 UTC
1 parent 4a29a79
util.c
#include <dryos.h>
#include <property.h>
#include <util.h>
/* helper functions for atomic in-/decrasing variables */
void util_atomic_inc(uint32_t *value)
{
uint32_t old_int = cli();
(*value)++;
sei(old_int);
}
void util_atomic_dec(uint32_t *value)
{
uint32_t old_int = cli();
(*value)--;
sei(old_int);
}
/* simple binary search */
/* crit returns negative if the tested value is too high, positive if too low, 0 if perfect */
int bin_search(int lo, int hi, CritFunc crit)
{
ASSERT(crit);
if (lo >= hi-1) return lo;
int m = (lo+hi)/2;
int c = crit(m);
if (c == 0) return m;
if (c > 0) return bin_search(m, hi, crit);
return bin_search(lo, m, crit);
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...