From nobody Thu Jul 11 19:31:07 2024 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 4WKlFl4rJ1z5RHYr; Thu, 11 Jul 2024 19:31:07 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WKlFl4RGqz4D2x; Thu, 11 Jul 2024 19:31:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1720726267; 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=XZN4uy5P3tp0ZUmZ7bKwdbVZRwiDXyootvaix713huo=; b=uGnAlyMWdfv3KlLAhHVTgFA5OnSwJiX7cH479Cn3yl5n6SeO/V3IxaTMBXJZaOGaDzkwzy 7aMA7X+M32bqNryJt0wIizLnedfoBOpd/OiLZCrrbCMyxe/YxOIFP9Qb/zJfyCvCdFGrie JxBmME8VcpY6xngmAWjdRFT64Lu9J7Kl24Q4ACOyDTQg549yHAlFA9IhR3WWMFJ8atDP+i Bq7n3/9gFz5J9DRsIprNJlMZL4Fct+NRiz0zdBcxCAQHOV1DPWCQJ/LHplVkG8+LK1GnTB KFFm0yYP9wbTtmcDAoO7C2rpMI+ghM5vMMmFIl8WE+js8Qrq7QSz0OmSsnV63A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1720726267; a=rsa-sha256; cv=none; b=tz/ryDlqDSkYHlJsMeDnkyAzybT9VOvrTUfoaDq1by53vGq28S/XTMOyIB6nc8fHGuBuGx cI3eRaABnIx98EuP5e6lEoxGZZvHhK86zl+gLqILSVPV31unTDxFw/L1ZBmPzUNDaVco3B wJzBQ/gdNTiKK81rNtzg2FSxzPGkKWsmsEuk1zpTTiwNzp7ms4OUAujWBKzLrmbAOVdm7k QSyOKnw67GYa6zWtoIx4Bu6tRQO92WZzp6fNzOIoQi3Kso4NuHrH3XoXTZpLrdnVAdsGea w+/6oo48UZokIjev905ovYbWStU/Vy2Nv16DpcTyUxQmqLcbEN2KHa1lb2LqXg== 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=1720726267; 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=XZN4uy5P3tp0ZUmZ7bKwdbVZRwiDXyootvaix713huo=; b=A7qZuLPGmseejoodkDHb4VhmwNlvd96PGzY/RMGKx17hftRXIavywD3rADFVVkHD9g2whz U0ODVXXfB8c2K/dph4lRHUQCMB2lbo7nH81ehLikgpuyDXTkGKUIQ+SLjLmJQEBi+SY9pC wg53P5oRL/HDPt/2YsnFMRMCeE719+gd2tOG5BM+g7PVMctvFrRQwqLHmL5sjaAcXfeW23 Yx22dJ81juY4xQI6i1UN6wEOh7JpgehHhAgtkjS9saeG53eP53yUPpaPTHPahzlUFU09Go 5H5PA5VFUV6LWKATuTK6ye9FB6UgKEnPtvEBE83M2GUP9j4Oc24txPbWwNX59A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WKlFl436Pz1Byf; Thu, 11 Jul 2024 19:31:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 46BJV71m070147; Thu, 11 Jul 2024 19:31:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 46BJV7ac070144; Thu, 11 Jul 2024 19:31:07 GMT (envelope-from git) Date: Thu, 11 Jul 2024 19:31:07 GMT Message-Id: <202407111931.46BJV7ac070144@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: a161269b2451 - main - buf_ring: Make buf_ring.h amenable to userspace compilation 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a161269b2451140a45de2d0cae0dad84f9e7b439 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a161269b2451140a45de2d0cae0dad84f9e7b439 commit a161269b2451140a45de2d0cae0dad84f9e7b439 Author: Mark Johnston AuthorDate: 2024-07-11 18:55:11 +0000 Commit: Mark Johnston CommitDate: 2024-07-11 18:55:44 +0000 buf_ring: Make buf_ring.h amenable to userspace compilation This will be useful for adding test cases. Reviewed by: andrew MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D45869 --- sys/sys/buf_ring.h | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/sys/sys/buf_ring.h b/sys/sys/buf_ring.h index 32c9f5b15f22..cb18175c3a75 100644 --- a/sys/sys/buf_ring.h +++ b/sys/sys/buf_ring.h @@ -30,11 +30,18 @@ #ifndef _SYS_BUF_RING_H_ #define _SYS_BUF_RING_H_ +#include +#include +#include #include #ifdef DEBUG_BUFRING +#ifdef _KERNEL #include #include +#else +#error "DEBUG_BUFRING is only supported in kernel" +#endif #endif struct buf_ring { @@ -361,8 +368,36 @@ buf_ring_count(struct buf_ring *br) & br->br_prod_mask); } +#ifdef _KERNEL struct buf_ring *buf_ring_alloc(int count, struct malloc_type *type, int flags, struct mtx *); void buf_ring_free(struct buf_ring *br, struct malloc_type *type); +#else -#endif +#include + +static inline struct buf_ring * +buf_ring_alloc(int count) +{ + struct buf_ring *br; + + KASSERT(powerof2(count), ("buf ring must be size power of 2")); + + br = calloc(1, sizeof(struct buf_ring) + count * sizeof(void *)); + if (br == NULL) + return (NULL); + br->br_prod_size = br->br_cons_size = count; + br->br_prod_mask = br->br_cons_mask = count - 1; + br->br_prod_head = br->br_cons_head = 0; + br->br_prod_tail = br->br_cons_tail = 0; + return (br); +} + +static inline void +buf_ring_free(struct buf_ring *br) +{ + free(br); +} + +#endif /* !_KERNEL */ +#endif /* _SYS_BUF_RING_H_ */