mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 12:54:27 +00:00
Remove PAGE_SIZE from hastd
It may not be known at compile time so we should detect it at run time. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D35118
This commit is contained in:
parent
d843dd0e1a
commit
ea578b34cb
|
@ -70,12 +70,14 @@ struct ebuf *
|
||||||
ebuf_alloc(size_t size)
|
ebuf_alloc(size_t size)
|
||||||
{
|
{
|
||||||
struct ebuf *eb;
|
struct ebuf *eb;
|
||||||
|
size_t page_size;
|
||||||
int rerrno;
|
int rerrno;
|
||||||
|
|
||||||
eb = malloc(sizeof(*eb));
|
eb = malloc(sizeof(*eb));
|
||||||
if (eb == NULL)
|
if (eb == NULL)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
size += PAGE_SIZE;
|
page_size = getpagesize();
|
||||||
|
size += page_size;
|
||||||
eb->eb_start = malloc(size);
|
eb->eb_start = malloc(size);
|
||||||
if (eb->eb_start == NULL) {
|
if (eb->eb_start == NULL) {
|
||||||
rerrno = errno;
|
rerrno = errno;
|
||||||
|
@ -88,7 +90,7 @@ ebuf_alloc(size_t size)
|
||||||
* We set start address for real data not at the first entry, because
|
* We set start address for real data not at the first entry, because
|
||||||
* we want to be able to add data at the front.
|
* we want to be able to add data at the front.
|
||||||
*/
|
*/
|
||||||
eb->eb_used = eb->eb_start + PAGE_SIZE / 4;
|
eb->eb_used = eb->eb_start + page_size / 4;
|
||||||
eb->eb_size = 0;
|
eb->eb_size = 0;
|
||||||
eb->eb_magic = EBUF_MAGIC;
|
eb->eb_magic = EBUF_MAGIC;
|
||||||
|
|
||||||
|
@ -215,17 +217,18 @@ static int
|
||||||
ebuf_head_extend(struct ebuf *eb, size_t size)
|
ebuf_head_extend(struct ebuf *eb, size_t size)
|
||||||
{
|
{
|
||||||
unsigned char *newstart, *newused;
|
unsigned char *newstart, *newused;
|
||||||
size_t newsize;
|
size_t newsize, page_size;
|
||||||
|
|
||||||
PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
|
PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
|
||||||
|
|
||||||
newsize = eb->eb_end - eb->eb_start + (PAGE_SIZE / 4) + size;
|
page_size = getpagesize();
|
||||||
|
newsize = eb->eb_end - eb->eb_start + (page_size / 4) + size;
|
||||||
|
|
||||||
newstart = malloc(newsize);
|
newstart = malloc(newsize);
|
||||||
if (newstart == NULL)
|
if (newstart == NULL)
|
||||||
return (-1);
|
return (-1);
|
||||||
newused =
|
newused =
|
||||||
newstart + (PAGE_SIZE / 4) + size + (eb->eb_used - eb->eb_start);
|
newstart + (page_size / 4) + size + (eb->eb_used - eb->eb_start);
|
||||||
|
|
||||||
bcopy(eb->eb_used, newused, eb->eb_size);
|
bcopy(eb->eb_used, newused, eb->eb_size);
|
||||||
|
|
||||||
|
@ -243,11 +246,12 @@ static int
|
||||||
ebuf_tail_extend(struct ebuf *eb, size_t size)
|
ebuf_tail_extend(struct ebuf *eb, size_t size)
|
||||||
{
|
{
|
||||||
unsigned char *newstart;
|
unsigned char *newstart;
|
||||||
size_t newsize;
|
size_t newsize, page_size;
|
||||||
|
|
||||||
PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
|
PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
|
||||||
|
|
||||||
newsize = eb->eb_end - eb->eb_start + size + ((3 * PAGE_SIZE) / 4);
|
page_size = getpagesize();
|
||||||
|
newsize = eb->eb_end - eb->eb_start + size + ((3 * page_size) / 4);
|
||||||
|
|
||||||
newstart = realloc(eb->eb_start, newsize);
|
newstart = realloc(eb->eb_start, newsize);
|
||||||
if (newstart == NULL)
|
if (newstart == NULL)
|
||||||
|
|
Loading…
Reference in a new issue