kboot: space_avail -- how much space exists from 'start' to end of segment

Sponsored by:		Netflix
Reviewed by:		tsoome
Differential Revision:	https://reviews.freebsd.org/D38313
This commit is contained in:
Warner Losh 2023-02-03 08:38:22 -07:00
parent 33e5b27254
commit 81fbd74a4b
2 changed files with 20 additions and 0 deletions

View File

@ -44,6 +44,7 @@ void remove_avail(uint64_t start, uint64_t end, uint64_t type);
uint64_t first_avail(uint64_t align, uint64_t min_size, uint64_t type);
void print_avail(void);
bool populate_avail_from_iomem(void);
uint64_t space_avail(uint64_t start);
/* util.c */
bool file2str(const char *fn, char *buffer, size_t buflen);

View File

@ -344,3 +344,22 @@ populate_avail_from_iomem(void)
close(fd);
return true;
}
/*
* Return the amount of space available in the segment that @start@ lives in,
* from @start@ to the end of the segment.
*/
uint64_t
space_avail(uint64_t start)
{
for (int i = 0; i < nr_seg; i++) {
if (start >= segs[i].start && start <= segs[i].end)
return segs[i].end - start;
}
/*
* Properly used, we should never get here. Unsure if this should be a
* panic or not.
*/
return 0;
}