From nobody Thu Sep 03 07:59:16 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hbBnd1p8jz6qrBR for ; Thu, 03 Sep 2026 07:59:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hbBnd09YJz3Xks for ; Thu, 03 Sep 2026 07:59:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788422357; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/Dk2pA6T8w3i5s/QddVd/eMV+h7vNyuOOUEUsVyfe8w=; b=FioH68sOJooYrs+m1PP+xxUI1BLQMGKkMXZFTqcKf+W3lRMgEqRLEdeIpNhpQsM3TMw13b H2XGQMuZfm8NJ1JoJl+pwKdj6z8bUStjK/jZPLydPlr9aZHC/CpLo2jHRicoHA6LM4kpCm RMST29VegPyUT4WMyFH36idFWVDF6NY1qKRBaozt2W0gcoWv2uHbsuRlmroxoPnhnxzaRG nPmMtf7+AfbrwFZPO0jl3GAzAw4V/PK6LTi+NssCIM5UoX401Q+MNTHcxeQ42Es8sPaVt/ mXrjVEKgviMIuzAQR+hNBs38HwjnwYWZk3nLX3TuPDX/RP/vuSDQfSK40iv85w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788422357; a=rsa-sha256; cv=none; b=ribmkkAbLH0yGWkwUX7u1TzUhB2QMKTSukYrFTi6wW+3IA4s4QwQPTW6pUXuCvp0UzjUba fOuqlhcFA/i0bsiA7BgyPssSL5ey1ie6n/jBBLM2dBeW7uwg/g4Ssi0I5MOLXPs49uTuyc Rvua29w0zIX6EvraejFRXGx3hyI8Ys9BdjYCBrEAuUm2Gukl+/7q54OSqUKPWMfkWcd3oi arX0mIng7rDqC/dtE7PtGg/ekLZalmByXB6CFAMcww6zdAFtgjclkEyVjy/X1LCHh0kAZW kqpuiLwaZlujpaR/Qk3G+DWnt7tCENRyMmm8ree3DMAPd8Tt+FiFXlBpoGXerw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788422357; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/Dk2pA6T8w3i5s/QddVd/eMV+h7vNyuOOUEUsVyfe8w=; b=rpFBiN2AbaGiszi0/Y9PK3MJsIPtEWK+9YJCbeSMyzO7tNpQQ2Qv+CLfr5luveZ98Osl8E AOolRUxUBOGwrSVed5sp2g4Nf87JhhvmUvmPZMx+NbblZEtwWJI8A5h8W7yW0/x9R0EwN0 L4+qIh9qlIGFaPH5PjIBjtBp4JrOFlHKvk58hRKAx+CGyEWzLC948IWmfEjoKjrg787aHj 8/afWXJxlVCf377hPl6B/KOfbvTX4RGCX8aTXGmEmyZX+TKs1k3HWc6T3aKiAl/x9SmImH D0M+6alucw7Fh4c6jXEelybecDFKg/JhSAyhp+4u5gxJJLnMx6gfil7VmBJlvA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hbBnc6Bbqz1K3q for ; Thu, 03 Sep 2026 07:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 23004 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 03 Sep 2026 07:59:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 48c0fc0171a1 - main - hastd: Clean up the ebuf code List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 48c0fc0171a166c161a47602da94ef98021c3161 Auto-Submitted: auto-generated Date: Thu, 03 Sep 2026 07:59:16 +0000 Message-Id: <6a9928d4.23004.3581bdd3@gitrepo.freebsd.org> The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=48c0fc0171a166c161a47602da94ef98021c3161 commit 48c0fc0171a166c161a47602da94ef98021c3161 Author: Dag-Erling Smørgrav AuthorDate: 2026-09-03 07:51:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-09-03 07:58:54 +0000 hastd: Clean up the ebuf code Rename the members of struct ebuf to match their function, replace bcopy() with memcpy(), add comments explaining what each function does. Reviewed by: kevans, emaste Differential Revision: https://reviews.freebsd.org/D59310 --- sbin/hastd/ebuf.c | 92 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/sbin/hastd/ebuf.c b/sbin/hastd/ebuf.c index 1ec8dd672c35..8a1de8a180c6 100644 --- a/sbin/hastd/ebuf.c +++ b/sbin/hastd/ebuf.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include @@ -50,11 +50,11 @@ struct ebuf { /* Magic to assert the caller uses valid structure. */ int eb_magic; /* Address where we did the allocation. */ - unsigned char *eb_start; + unsigned char *eb_buf; /* Allocation end address. */ unsigned char *eb_end; /* Start of real data. */ - unsigned char *eb_used; + unsigned char *eb_start; /* Size of real data. */ size_t eb_size; }; @@ -62,6 +62,10 @@ struct ebuf { static int ebuf_head_extend(struct ebuf *eb, size_t size); static int ebuf_tail_extend(struct ebuf *eb, size_t size); +/* + * Allocate an empty ebuf with the expectation that it will later need to + * hold at least `size` bytes. + */ struct ebuf * ebuf_alloc(size_t size) { @@ -74,25 +78,28 @@ ebuf_alloc(size_t size) return (NULL); page_size = getpagesize(); size += page_size; - eb->eb_start = malloc(size); - if (eb->eb_start == NULL) { + eb->eb_buf = malloc(size); + if (eb->eb_buf == NULL) { rerrno = errno; free(eb); errno = rerrno; return (NULL); } - eb->eb_end = eb->eb_start + size; + eb->eb_end = eb->eb_buf + size; /* * We set start address for real data not at the first entry, because * we want to be able to add data at the front. */ - eb->eb_used = eb->eb_start + page_size / 4; + eb->eb_start = eb->eb_buf + page_size / 4; eb->eb_size = 0; eb->eb_magic = EBUF_MAGIC; return (eb); } +/* + * Free `eb`. + */ void ebuf_free(struct ebuf *eb) { @@ -101,17 +108,21 @@ ebuf_free(struct ebuf *eb) eb->eb_magic = 0; - free(eb->eb_start); + free(eb->eb_buf); free(eb); } +/* + * Add `size` bytes to the front of `eb`, copied from `data` if not null + * and otherwise left uninitialized. + */ int ebuf_add_head(struct ebuf *eb, const void *data, size_t size) { PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC); - if (size > (size_t)(eb->eb_used - eb->eb_start)) { + if (size > (size_t)(eb->eb_start - eb->eb_buf)) { /* * We can't add more entries at the front, so we have to extend * our buffer. @@ -119,26 +130,30 @@ ebuf_add_head(struct ebuf *eb, const void *data, size_t size) if (ebuf_head_extend(eb, size) == -1) return (-1); } - PJDLOG_ASSERT(size <= (size_t)(eb->eb_used - eb->eb_start)); + PJDLOG_ASSERT(size <= (size_t)(eb->eb_start - eb->eb_buf)); eb->eb_size += size; - eb->eb_used -= size; + eb->eb_start -= size; /* * If data is NULL the caller just wants to reserve place. */ if (data != NULL) - bcopy(data, eb->eb_used, size); + memcpy(eb->eb_start, data, size); return (0); } +/* + * Add `size` bytes to the back of `eb`, copied from `data` if not null + * and otherwise left uninitialized. + */ int ebuf_add_tail(struct ebuf *eb, const void *data, size_t size) { PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC); - if (size > (size_t)(eb->eb_end - (eb->eb_used + eb->eb_size))) { + if (size > (size_t)(eb->eb_end - (eb->eb_start + eb->eb_size))) { /* * We can't add more entries at the back, so we have to extend * our buffer. @@ -147,18 +162,21 @@ ebuf_add_tail(struct ebuf *eb, const void *data, size_t size) return (-1); } PJDLOG_ASSERT(size <= - (size_t)(eb->eb_end - (eb->eb_used + eb->eb_size))); + (size_t)(eb->eb_end - (eb->eb_start + eb->eb_size))); /* * If data is NULL the caller just wants to reserve space. */ if (data != NULL) - bcopy(data, eb->eb_used + eb->eb_size, size); + memcpy(eb->eb_start + eb->eb_size, data, size); eb->eb_size += size; return (0); } +/* + * Trim `size` bytes from the front of `eb`. + */ void ebuf_del_head(struct ebuf *eb, size_t size) { @@ -166,10 +184,13 @@ ebuf_del_head(struct ebuf *eb, size_t size) PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC); PJDLOG_ASSERT(size <= eb->eb_size); - eb->eb_used += size; + eb->eb_start += size; eb->eb_size -= size; } +/* + * Trim size bytes from the back of `eb`. + */ void ebuf_del_tail(struct ebuf *eb, size_t size) { @@ -181,7 +202,8 @@ ebuf_del_tail(struct ebuf *eb, size_t size) } /* - * Return pointer to the data and data size. + * Return a pointer to the data contained by `eb`. The size of the data + * is returned in `sizep` if not null. */ void * ebuf_data(struct ebuf *eb, size_t *sizep) @@ -191,11 +213,11 @@ ebuf_data(struct ebuf *eb, size_t *sizep) if (sizep != NULL) *sizep = eb->eb_size; - return (eb->eb_size > 0 ? eb->eb_used : NULL); + return (eb->eb_size > 0 ? eb->eb_start : NULL); } /* - * Return data size. + * Return the size of the data contained in `eb`. */ size_t ebuf_size(struct ebuf *eb) @@ -212,25 +234,25 @@ ebuf_size(struct ebuf *eb) static int ebuf_head_extend(struct ebuf *eb, size_t size) { - unsigned char *newstart, *newused; + unsigned char *newbuf, *newstart; size_t newsize, page_size; PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC); page_size = getpagesize(); - newsize = eb->eb_end - eb->eb_start + (page_size / 4) + size; + newsize = eb->eb_end - eb->eb_buf + (page_size / 4) + size; - newstart = malloc(newsize); - if (newstart == NULL) + newbuf = malloc(newsize); + if (newbuf == NULL) return (-1); - newused = - newstart + (page_size / 4) + size + (eb->eb_used - eb->eb_start); + newstart = + newbuf + (page_size / 4) + size + (eb->eb_start - eb->eb_buf); - bcopy(eb->eb_used, newused, eb->eb_size); + bcopy(eb->eb_start, newstart, eb->eb_size); + eb->eb_buf = newbuf; eb->eb_start = newstart; - eb->eb_used = newused; - eb->eb_end = newstart + newsize; + eb->eb_end = newbuf + newsize; return (0); } @@ -241,21 +263,21 @@ ebuf_head_extend(struct ebuf *eb, size_t size) static int ebuf_tail_extend(struct ebuf *eb, size_t size) { - unsigned char *newstart; + unsigned char *newbuf; size_t newsize, page_size; PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC); page_size = getpagesize(); - newsize = eb->eb_end - eb->eb_start + size + ((3 * page_size) / 4); + newsize = eb->eb_end - eb->eb_buf + size + ((3 * page_size) / 4); - newstart = realloc(eb->eb_start, newsize); - if (newstart == NULL) + newbuf = realloc(eb->eb_buf, newsize); + if (newbuf == NULL) return (-1); - eb->eb_used = newstart + (eb->eb_used - eb->eb_start); - eb->eb_start = newstart; - eb->eb_end = newstart + newsize; + eb->eb_start = newbuf + (eb->eb_start - eb->eb_buf); + eb->eb_buf = newbuf; + eb->eb_end = newbuf + newsize; return (0); }