19 if (out ==
NULL || length == 0 || minBase > maxBase)
26 if (maxBase + length < maxBase || maxBase + length > ports.length)
33 if (base == ports.length)
45 if (length == 0 || base + length < base || base + length > ports.length)
#define IO_PORT_MAX
Maximum I/O port number.
uint64_t io_reserve(port_t *out, port_t minBase, port_t maxBase, uint64_t alignment, uint64_t length, const char *owner)
Find and reserve a range of I/O ports if available.
void io_release(port_t base, uint64_t length)
Release a previously reserved range of I/O ports.
uint16_t port_t
I/O port type.
#define LOCK_CREATE()
Create a lock initializer.
#define LOCK_SCOPE(lock)
Acquires a lock for the reminder of the current scope.
#define ENOSPC
No space left on device.
#define EINVAL
Invalid argument.
#define EOVERFLOW
Value too large for defined data type.
#define errno
Error number variable.
void bitmap_clear_range(bitmap_t *map, uint64_t low, uint64_t high)
Clear a range of bits in the bitmap.
uint64_t bitmap_find_clear_region_and_set(bitmap_t *map, uint64_t minIdx, uintptr_t maxIdx, uint64_t length, uint64_t alignment)
Find a clear region of specified length and alignment, and set it.
#define BITMAP_CREATE(name, bits)
Define and create a bitmap and its buffer.
#define NULL
Pointer error value.
#define ERR
Integer error value.
A simple ticket lock implementation.