From patchwork Sun Oct 25 09:36:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40856 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6EBE0384C005; Sun, 25 Oct 2020 09:37:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6EBE0384C005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618635; bh=bvARcU6hfWaEKpxggJ8hlpovH82zzk3JbPnktz8aXkg=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=ERgXlWh3XFfh/xAopsEeYUZvORF5YI1qpqHqyD/gHKtC/Ir/V22nGFKYtHNspXAng RaOICxom1Jx/e7dk7m2hneq+IW0Ho41VDDfAB6AvyXvKmUA+zEEl0JFG73MPFLwg6p dPqFApLoNevrXNQqg6uJ9ffPHD4/uLTscQw2bx7I= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by sourceware.org (Postfix) with ESMTPS id D73733857837 for ; Sun, 25 Oct 2020 09:37:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D73733857837 Received: by mail-wr1-x441.google.com with SMTP id h7so8766018wre.4 for ; Sun, 25 Oct 2020 02:37:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bvARcU6hfWaEKpxggJ8hlpovH82zzk3JbPnktz8aXkg=; b=taokhG628D1jjU+fmmLO40BUCaY/affQ0bSAaJQJgNgO8oc7AmrDPuf+NAmaZBfayz /e+OHycRe3eNjBUoxhvNYCvTbTsLc0C5CSI1fFytImJBTqW7bdogweDktdmmuXXG2+S8 QY+v1zsG/CNPGN0OCdNj7/PzJS5li/Vq62sxyYQmc2c4BteZ2j0SZqeeXyClD0saqHqC CNFW3XjWKdbSk2ut8TCmCX2buK7pcwf2IY4U+K3CpG8Nw/xV013GcnWhpkUxtS8Tnuit 3UHIv5ktnvZPUH6GfxmsSo5BFArphAvQpulHdRSn4l7VRf8ead+p/QG++8f+qx9jxkYF +s4w== X-Gm-Message-State: AOAM533NNaxVRr21qMrlVV81W9C3DydZV/LlnGHqrKc+pTLbMUQSKByM 8QYAhaT+fNZS5G48JmvvKAQ= X-Google-Smtp-Source: ABdhPJx+JhOgy10SH6kqSm7+sRVqE0kSX0IOa1pcluvn+Qh2MtChtzG4S7Y6ayjoV9v8ipPY63npFA== X-Received: by 2002:adf:8bdd:: with SMTP id w29mr12929575wra.276.1603618631964; Sun, 25 Oct 2020 02:37:11 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:11 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 01/10] tailq.3: New page that will hold the (tailq) contents of queue.3 Date: Sun, 25 Oct 2020 10:36:43 +0100 Message-Id: <20201025093651.4616-2-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/tailq.3 | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 man3/tailq.3 diff --git a/man3/tailq.3 b/man3/tailq.3 new file mode 100644 index 000000000..c53b3ca4c --- /dev/null +++ b/man3/tailq.3 @@ -0,0 +1,40 @@ +.\" Copyright (c) 1993 +.\" The Regents of the University of California. All rights reserved. +.\" and Copyright (c) 2020 by Alejandro Colomar +.\" +.\" %%%LICENSE_START(BSD_3_CLAUSE_UCB) +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" %%%LICENSE_END +.\" +.\" +.TH TAILQ 3 2020-10-21 "GNU" "Linux Programmer's Manual" +.SH NAME +.SH SYNOPSIS +.SH DESCRIPTION +.SH RETURN VALUE +.SH CONFORMING TO +.SH BUGS +.SH EXAMPLES +.SH SEE ALSO From patchwork Sun Oct 25 09:36:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40857 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0ACD23844015; Sun, 25 Oct 2020 09:37:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0ACD23844015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618637; bh=zHm8AFgqOSAhlultGfzojl6nSuir57s+7VNjy15KpPI=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Xi0FyI20Uu5gro4tXiutL1EqNz/8NWKMxLhArVgyvHP1aJIpKXb+Ojp6VPfMhuVcA 4PnfAesyF8bs/Ln8tKGXKkosp2CjDGKd/mu93tVl/zu2EonpuSehqdiqPpzTmZb08c YSuGFripGgC4BTtQveI8thL0b5VVogmTOQcmbnkY= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id D2FAC385781B for ; Sun, 25 Oct 2020 09:37:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D2FAC385781B Received: by mail-wr1-x42a.google.com with SMTP id g12so8736090wrp.10 for ; Sun, 25 Oct 2020 02:37:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zHm8AFgqOSAhlultGfzojl6nSuir57s+7VNjy15KpPI=; b=B1hX25hzUjzGvlSmqX44MXPuPDGyTRtJJn0S8gPwzMaCVceukl2NvbXxgYPa7Cnvfd /9vdU3WM0jesrinjzBflwYn4mgyWP8tUwYr7ap3HsOGcvJiF5DbztzhJXYCgvo/nFKH8 Z6aZCkjUxt/712Yt3iFnjIpLJN5QdBULV9TLK51s55lJreODTkV8rB/njz1M17+IIWk+ OB3SRY1svu2HwRxEX2+vX0AMuP+VIhOnuEuKGZEITpL1jVxlVwkzKO+9jivZ39ZLIpP+ EQv0xAd7P4sXEOtx2vzg9tx1XuZKotw+czCd7oN6e+iKUAR3XSmNe6qCm4raxFFKl+mS sAOQ== X-Gm-Message-State: AOAM533CtQfXYxVFVvbD/IBeSIO2WaUh63a6difT49KsYEl37MKuDR3R 576Euo8/pyzgzR+bTrtyZHIHdPRMGCc= X-Google-Smtp-Source: ABdhPJxa+mYlpruhy4HTdiatgxLLfn1rcKCGfO6X9/rvSpHTQ4R3sl1a8fFl31iH2Sg69HJJjsFrGg== X-Received: by 2002:adf:e3cb:: with SMTP id k11mr11938637wrm.341.1603618632990; Sun, 25 Oct 2020 02:37:12 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:12 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 02/10] queue.3, tailq.3: NAME: Move code from queue.3 to tailq.3 Date: Sun, 25 Oct 2020 10:36:44 +0100 Message-Id: <20201025093651.4616-3-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, UPPERCASE_50_75 autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/queue.3 | 24 ------------------------ man3/tailq.3 | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/man3/queue.3 b/man3/queue.3 index e4fb5ae79..9b3938226 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -34,30 +34,6 @@ .Dt QUEUE 3 .Os .Sh NAME -.Nm TAILQ_CONCAT , -.Nm TAILQ_EMPTY , -.Nm TAILQ_ENTRY , -.Nm TAILQ_FIRST , -.Nm TAILQ_FOREACH , -.\" .Nm TAILQ_FOREACH_FROM , -.\" .Nm TAILQ_FOREACH_FROM_SAFE , -.Nm TAILQ_FOREACH_REVERSE , -.\" .Nm TAILQ_FOREACH_REVERSE_FROM , -.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE , -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE , -.\" .Nm TAILQ_FOREACH_SAFE , -.Nm TAILQ_HEAD , -.Nm TAILQ_HEAD_INITIALIZER , -.Nm TAILQ_INIT , -.Nm TAILQ_INSERT_AFTER , -.Nm TAILQ_INSERT_BEFORE , -.Nm TAILQ_INSERT_HEAD , -.Nm TAILQ_INSERT_TAIL , -.Nm TAILQ_LAST , -.Nm TAILQ_NEXT , -.Nm TAILQ_PREV , -.Nm TAILQ_REMOVE -.\" .Nm TAILQ_SWAP .Nd implementations of singly-linked lists, singly-linked tail queues, lists, tail queues, and circular queues .Sh SYNOPSIS diff --git a/man3/tailq.3 b/man3/tailq.3 index c53b3ca4c..eb7cec356 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -31,6 +31,30 @@ .\" .TH TAILQ 3 2020-10-21 "GNU" "Linux Programmer's Manual" .SH NAME +.Nm TAILQ_CONCAT , +.Nm TAILQ_EMPTY , +.Nm TAILQ_ENTRY , +.Nm TAILQ_FIRST , +.Nm TAILQ_FOREACH , +.\" .Nm TAILQ_FOREACH_FROM , +.\" .Nm TAILQ_FOREACH_FROM_SAFE , +.Nm TAILQ_FOREACH_REVERSE , +.\" .Nm TAILQ_FOREACH_REVERSE_FROM , +.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE , +.\" .Nm TAILQ_FOREACH_REVERSE_SAFE , +.\" .Nm TAILQ_FOREACH_SAFE , +.Nm TAILQ_HEAD , +.Nm TAILQ_HEAD_INITIALIZER , +.Nm TAILQ_INIT , +.Nm TAILQ_INSERT_AFTER , +.Nm TAILQ_INSERT_BEFORE , +.Nm TAILQ_INSERT_HEAD , +.Nm TAILQ_INSERT_TAIL , +.Nm TAILQ_LAST , +.Nm TAILQ_NEXT , +.Nm TAILQ_PREV , +.Nm TAILQ_REMOVE +.\" .Nm TAILQ_SWAP .SH SYNOPSIS .SH DESCRIPTION .SH RETURN VALUE From patchwork Sun Oct 25 09:36:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40858 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8F92F3871016; Sun, 25 Oct 2020 09:37:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8F92F3871016 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618637; bh=zTwBSEzoEVLynhEGUrIc+2AkRda2F2u3IFY61bEm+8w=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=qdDT/bt2Ne+dUG2278oJmXHpTcZYARJAcYklx/a5h47ZsLd2LiP8tEahn8I0jvCJh MkbPMBJyOdCGEkIxlUZ6b87jM4/mMbkIgytA0l53Py15jM7BLtV4g6jegfc4LX7QDX 5Q8+6Bl6hAq+obA4D7FFR4k+xGs/bWPBHSrrOWVI= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id D51C13851C26 for ; Sun, 25 Oct 2020 09:37:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D51C13851C26 Received: by mail-wm1-x32c.google.com with SMTP id e2so9087713wme.1 for ; Sun, 25 Oct 2020 02:37:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zTwBSEzoEVLynhEGUrIc+2AkRda2F2u3IFY61bEm+8w=; b=NTgDpy9RUlQ/PWiLG8sXGK7O/wjQkQ0Jhal0T4QsAKxsBoyc6Xzc21uQBp/O0nUtBr 4k+Y7BY4Zefr2666Ba5xLW/T05JS6E9FdhEMTWSFx3EGJL/09jDrrdThfYMbUPa0YKi+ /38FbfSwe3tJigSo45xTbaet1ETCYmIZRnN0tA/HP8AQXvkYFncI7QC+VYChu9bpuo8Q jNSq2sbn1DEQKV49l6jUyFcw69x7R72oNFS5IlIqtHwj1u2c5hlttKDxOA0C3XOkzEoL ldo09K7TiILcSCHrlMPCN8lrZj18Puyt6ZjQ+kvjUp7rA/lpCPFzNyFi/URZ8vXdaspo LZGg== X-Gm-Message-State: AOAM532ah9voIQ0Z0KiFbgYvg2qcuxbRrNK0GtyHX0TaOlJn/XSNY+Ir NtVE0g6twPdiyfIFjDkmp7w= X-Google-Smtp-Source: ABdhPJyc62tkNI/00RLwK4Wf/7uB80odC034/rjvheGObdnqbb96/tMjoa/HK/6XmWOQcvIXbFU/DA== X-Received: by 2002:a7b:c04a:: with SMTP id u10mr11379887wmc.83.1603618633973; Sun, 25 Oct 2020 02:37:13 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:13 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 03/10] queue.3, tailq.3: SYNOPSIS: Move code from queue.3 to tailq.3 Date: Sun, 25 Oct 2020 10:36:45 +0100 Message-Id: <20201025093651.4616-4-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, UPPERCASE_50_75 autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/queue.3 | 27 --------------------------- man3/tailq.3 | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/man3/queue.3 b/man3/queue.3 index 9b3938226..cf9770a20 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -37,33 +37,6 @@ .Nd implementations of singly-linked lists, singly-linked tail queues, lists, tail queues, and circular queues .Sh SYNOPSIS -.In sys/queue.h -.\" -.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME" -.Fn TAILQ_EMPTY "TAILQ_HEAD *head" -.Fn TAILQ_ENTRY "TYPE" -.Fn TAILQ_FIRST "TAILQ_HEAD *head" -.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_FROM "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_REVERSE_FROM "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_REVERSE_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.\" .Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.\" .Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.Fn TAILQ_HEAD "HEADNAME" "TYPE" -.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head" -.Fn TAILQ_INIT "TAILQ_HEAD *head" -.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME" -.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME" -.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME" -.\" .Sh DESCRIPTION These macros define and operate on five types of data structures: singly-linked lists, singly-linked tail queues, lists, tail queues, and diff --git a/man3/tailq.3 b/man3/tailq.3 index eb7cec356..2d8280ca8 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -56,6 +56,33 @@ .Nm TAILQ_REMOVE .\" .Nm TAILQ_SWAP .SH SYNOPSIS +.In sys/queue.h +.\" +.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME" +.Fn TAILQ_EMPTY "TAILQ_HEAD *head" +.Fn TAILQ_ENTRY "TYPE" +.Fn TAILQ_FIRST "TAILQ_HEAD *head" +.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" +.\" .Fn TAILQ_FOREACH_FROM "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" +.\" .Fn TAILQ_FOREACH_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" +.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" +.\" .Fn TAILQ_FOREACH_REVERSE_FROM "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" +.\" .Fn TAILQ_FOREACH_REVERSE_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" +.\" .Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" +.\" .Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" +.Fn TAILQ_HEAD "HEADNAME" "TYPE" +.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head" +.Fn TAILQ_INIT "TAILQ_HEAD *head" +.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" +.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" +.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" +.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" +.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME" +.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME" +.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME" +.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" +.\" .Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME" +.\" .SH DESCRIPTION .SH RETURN VALUE .SH CONFORMING TO From patchwork Sun Oct 25 09:36:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40859 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 20A063851C26; Sun, 25 Oct 2020 09:37:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 20A063851C26 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618639; bh=guecr5DI6/52JahPqgCdo/G2hxIP0O/HgEa+e/rvpfk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=xE/N6tyHHeeOtsnrLE178DFEkk9Q8iO38Jt+TY6DH/UGZ6jt9sSmczDfEEaorNjq6 DzRVhgeIfD8AZIXc8YXUzm5Qbk40+WADhuNXGBXj80FlB27u99EuHel34Vwl5Tq9SU 06kGEpNbHck9p8PFyRCEtXXDwXNA5wsAJ0irPRV0= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id A0785385781B for ; Sun, 25 Oct 2020 09:37:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A0785385781B Received: by mail-wm1-x332.google.com with SMTP id 13so8234285wmf.0 for ; Sun, 25 Oct 2020 02:37:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=guecr5DI6/52JahPqgCdo/G2hxIP0O/HgEa+e/rvpfk=; b=MGQBBV6LWBbHEurDmymYzgSszDnhoBaiWdsFNsY4u2BxNmEE5MYqLFRPRuQyEewXtf 0DpzJWRYVlM3Gghfn5CMgB26ZmeYcdzqrU6mG0XU9+BoS8GlKib4Bz2W36wU2ij2DXMz HIk1fJuMCNrWjE+i7CAQbtCiqYA2jGdphWeNo7trWlW+pA4An8Y2AsuN60JODORwlgvD dXXRlLmODWmDcJCDCecWwPX+n8Zfn+aPrIpWcvYkDoELDHTfCrfvs6Hr//8+wsHzS2na FRZ49jO0Tlk3LHopFsMLmN6g770eZOx8A83CmlvhPcRbzwMS/zNIHTGMVzJNSr5/WWjd ORFA== X-Gm-Message-State: AOAM531cJrd16nmctys57PXH6kC/odbhwFcNgLlzNa8Wrz1PYFanOFcn Oe/Afd075Y/JZdUnc7g09PQ= X-Google-Smtp-Source: ABdhPJyAjc1rJLAPmUJCpzhT1SgwwG53wfVqCh+ozH3ua+9NbMDioLRW4tKnwNhIL11OwHVsJ70iCg== X-Received: by 2002:a05:600c:242:: with SMTP id 2mr11220829wmj.165.1603618635650; Sun, 25 Oct 2020 02:37:15 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:14 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 04/10] queue.3, tailq.3: DESCRIPTION: Move code from queue.3 to tailq.3 Date: Sun, 25 Oct 2020 10:36:46 +0100 Message-Id: <20201025093651.4616-5-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/queue.3 | 235 --------------------------------------------------- man3/tailq.3 | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+), 235 deletions(-) diff --git a/man3/queue.3 b/man3/queue.3 index cf9770a20..f6e3b9369 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -169,241 +169,6 @@ The termination condition for traversal is more complex. .It Code size is about 40% greater and operations run about 45% slower than lists. .El -.Pp -In the macro definitions, -.Fa TYPE -is the name of a user defined structure, -that must contain a field of type -.Li SLIST_ENTRY , -.Li STAILQ_ENTRY , -.Li LIST_ENTRY , -.Li TAILQ_ENTRY , -or -.Li CIRCLEQ_ENTRY , -named -.Fa NAME . -The argument -.Fa HEADNAME -is the name of a user defined structure that must be declared -using the macros -.Li SLIST_HEAD , -.Li STAILQ_HEAD , -.Li LIST_HEAD , -.Li TAILQ_HEAD , -or -.Li CIRCLEQ_HEAD . -See the examples below for further explanation of how these -macros are used. -.Ss Tail queues -A tail queue is headed by a structure defined by the -.Nm TAILQ_HEAD -macro. -This structure contains a pair of pointers, -one to the first element in the tail queue and the other to -the last element in the tail queue. -The elements are doubly linked so that an arbitrary element can be -removed without traversing the tail queue. -New elements can be added to the tail queue after an existing element, -before an existing element, at the head of the tail queue, -or at the end of the tail queue. -A -.Fa TAILQ_HEAD -structure is declared as follows: -.Bd -literal -offset indent -TAILQ_HEAD(HEADNAME, TYPE) head; -.Ed -.Pp -where -.Li HEADNAME -is the name of the structure to be defined, and -.Li TYPE -is the type of the elements to be linked into the tail queue. -A pointer to the head of the tail queue can later be declared as: -.Bd -literal -offset indent -struct HEADNAME *headp; -.Ed -.Pp -(The names -.Li head -and -.Li headp -are user selectable.) -.Pp -The macro -.Nm TAILQ_HEAD_INITIALIZER -evaluates to an initializer for the tail queue -.Fa head . -.Pp -The macro -.Nm TAILQ_CONCAT -concatenates the tail queue headed by -.Fa head2 -onto the end of the one headed by -.Fa head1 -removing all entries from the former. -.Pp -The macro -.Nm TAILQ_EMPTY -evaluates to true if there are no items on the tail queue. -.Pp -The macro -.Nm TAILQ_ENTRY -declares a structure that connects the elements in -the tail queue. -.Pp -The macro -.Nm TAILQ_FIRST -returns the first item on the tail queue or NULL if the tail queue -is empty. -.Pp -The macro -.Nm TAILQ_FOREACH -traverses the tail queue referenced by -.Fa head -in the forward direction, assigning each element in turn to -.Fa var . -.Fa var -is set to -.Dv NULL -if the loop completes normally, or if there were no elements. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_FROM -.\" behaves identically to -.\" .Nm TAILQ_FOREACH -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the loop at -.\" .Fa var -.\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.Pp -The macro -.Nm TAILQ_FOREACH_REVERSE -traverses the tail queue referenced by -.Fa head -in the reverse direction, assigning each element in turn to -.Fa var . -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var -.\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp -.\" The macros -.\" .Nm TAILQ_FOREACH_SAFE -.\" and -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE -.\" traverse the list referenced by -.\" .Fa head -.\" in the forward or reverse direction respectively, -.\" assigning each element in turn to -.\" .Fa var . -.\" However, unlike their unsafe counterparts, -.\" .Nm TAILQ_FOREACH -.\" and -.\" .Nm TAILQ_FOREACH_REVERSE -.\" permit to both remove -.\" .Fa var -.\" as well as free it from within the loop safely without interfering with the -.\" traversal. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_FROM_SAFE -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_SAFE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the loop at -.\" .Fa var -.\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var -.\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.Pp -The macro -.Nm TAILQ_INIT -initializes the tail queue referenced by -.Fa head . -.Pp -The macro -.Nm TAILQ_INSERT_HEAD -inserts the new element -.Fa elm -at the head of the tail queue. -.Pp -The macro -.Nm TAILQ_INSERT_TAIL -inserts the new element -.Fa elm -at the end of the tail queue. -.Pp -The macro -.Nm TAILQ_INSERT_AFTER -inserts the new element -.Fa elm -after the element -.Fa listelm . -.Pp -The macro -.Nm TAILQ_INSERT_BEFORE -inserts the new element -.Fa elm -before the element -.Fa listelm . -.Pp -The macro -.Nm TAILQ_LAST -returns the last item on the tail queue. -If the tail queue is empty the return value is -.Dv NULL . -.Pp -The macro -.Nm TAILQ_NEXT -returns the next item on the tail queue, or NULL if this item is the last. -.Pp -The macro -.Nm TAILQ_PREV -returns the previous item on the tail queue, or NULL if this item -is the first. -.Pp -The macro -.Nm TAILQ_REMOVE -removes the element -.Fa elm -from the tail queue. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_SWAP -.\" swaps the contents of -.\" .Fa head1 -.\" and -.\" .Fa head2 . -.Pp -See the EXAMPLES section below for an example program using a tail queue. .Sh EXAMPLES .Ss Tail queue example .Bd -literal diff --git a/man3/tailq.3 b/man3/tailq.3 index 2d8280ca8..144a86f3f 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -84,6 +84,241 @@ .\" .Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME" .\" .SH DESCRIPTION +.Pp +In the macro definitions, +.Fa TYPE +is the name of a user defined structure, +that must contain a field of type +.Li SLIST_ENTRY , +.Li STAILQ_ENTRY , +.Li LIST_ENTRY , +.Li TAILQ_ENTRY , +or +.Li CIRCLEQ_ENTRY , +named +.Fa NAME . +The argument +.Fa HEADNAME +is the name of a user defined structure that must be declared +using the macros +.Li SLIST_HEAD , +.Li STAILQ_HEAD , +.Li LIST_HEAD , +.Li TAILQ_HEAD , +or +.Li CIRCLEQ_HEAD . +See the examples below for further explanation of how these +macros are used. +.Ss Tail queues +A tail queue is headed by a structure defined by the +.Nm TAILQ_HEAD +macro. +This structure contains a pair of pointers, +one to the first element in the tail queue and the other to +the last element in the tail queue. +The elements are doubly linked so that an arbitrary element can be +removed without traversing the tail queue. +New elements can be added to the tail queue after an existing element, +before an existing element, at the head of the tail queue, +or at the end of the tail queue. +A +.Fa TAILQ_HEAD +structure is declared as follows: +.Bd -literal -offset indent +TAILQ_HEAD(HEADNAME, TYPE) head; +.Ed +.Pp +where +.Li HEADNAME +is the name of the structure to be defined, and +.Li TYPE +is the type of the elements to be linked into the tail queue. +A pointer to the head of the tail queue can later be declared as: +.Bd -literal -offset indent +struct HEADNAME *headp; +.Ed +.Pp +(The names +.Li head +and +.Li headp +are user selectable.) +.Pp +The macro +.Nm TAILQ_HEAD_INITIALIZER +evaluates to an initializer for the tail queue +.Fa head . +.Pp +The macro +.Nm TAILQ_CONCAT +concatenates the tail queue headed by +.Fa head2 +onto the end of the one headed by +.Fa head1 +removing all entries from the former. +.Pp +The macro +.Nm TAILQ_EMPTY +evaluates to true if there are no items on the tail queue. +.Pp +The macro +.Nm TAILQ_ENTRY +declares a structure that connects the elements in +the tail queue. +.Pp +The macro +.Nm TAILQ_FIRST +returns the first item on the tail queue or NULL if the tail queue +is empty. +.Pp +The macro +.Nm TAILQ_FOREACH +traverses the tail queue referenced by +.Fa head +in the forward direction, assigning each element in turn to +.Fa var . +.Fa var +is set to +.Dv NULL +if the loop completes normally, or if there were no elements. +.\" .Pp +.\" The macro +.\" .Nm TAILQ_FOREACH_FROM +.\" behaves identically to +.\" .Nm TAILQ_FOREACH +.\" when +.\" .Fa var +.\" is NULL, else it treats +.\" .Fa var +.\" as a previously found TAILQ element and begins the loop at +.\" .Fa var +.\" instead of the first element in the TAILQ referenced by +.\" .Fa head . +.Pp +The macro +.Nm TAILQ_FOREACH_REVERSE +traverses the tail queue referenced by +.Fa head +in the reverse direction, assigning each element in turn to +.Fa var . +.\" .Pp +.\" The macro +.\" .Nm TAILQ_FOREACH_REVERSE_FROM +.\" behaves identically to +.\" .Nm TAILQ_FOREACH_REVERSE +.\" when +.\" .Fa var +.\" is NULL, else it treats +.\" .Fa var +.\" as a previously found TAILQ element and begins the reverse loop at +.\" .Fa var +.\" instead of the last element in the TAILQ referenced by +.\" .Fa head . +.\" .Pp +.\" The macros +.\" .Nm TAILQ_FOREACH_SAFE +.\" and +.\" .Nm TAILQ_FOREACH_REVERSE_SAFE +.\" traverse the list referenced by +.\" .Fa head +.\" in the forward or reverse direction respectively, +.\" assigning each element in turn to +.\" .Fa var . +.\" However, unlike their unsafe counterparts, +.\" .Nm TAILQ_FOREACH +.\" and +.\" .Nm TAILQ_FOREACH_REVERSE +.\" permit to both remove +.\" .Fa var +.\" as well as free it from within the loop safely without interfering with the +.\" traversal. +.\" .Pp +.\" The macro +.\" .Nm TAILQ_FOREACH_FROM_SAFE +.\" behaves identically to +.\" .Nm TAILQ_FOREACH_SAFE +.\" when +.\" .Fa var +.\" is NULL, else it treats +.\" .Fa var +.\" as a previously found TAILQ element and begins the loop at +.\" .Fa var +.\" instead of the first element in the TAILQ referenced by +.\" .Fa head . +.\" .Pp +.\" The macro +.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE +.\" behaves identically to +.\" .Nm TAILQ_FOREACH_REVERSE_SAFE +.\" when +.\" .Fa var +.\" is NULL, else it treats +.\" .Fa var +.\" as a previously found TAILQ element and begins the reverse loop at +.\" .Fa var +.\" instead of the last element in the TAILQ referenced by +.\" .Fa head . +.Pp +The macro +.Nm TAILQ_INIT +initializes the tail queue referenced by +.Fa head . +.Pp +The macro +.Nm TAILQ_INSERT_HEAD +inserts the new element +.Fa elm +at the head of the tail queue. +.Pp +The macro +.Nm TAILQ_INSERT_TAIL +inserts the new element +.Fa elm +at the end of the tail queue. +.Pp +The macro +.Nm TAILQ_INSERT_AFTER +inserts the new element +.Fa elm +after the element +.Fa listelm . +.Pp +The macro +.Nm TAILQ_INSERT_BEFORE +inserts the new element +.Fa elm +before the element +.Fa listelm . +.Pp +The macro +.Nm TAILQ_LAST +returns the last item on the tail queue. +If the tail queue is empty the return value is +.Dv NULL . +.Pp +The macro +.Nm TAILQ_NEXT +returns the next item on the tail queue, or NULL if this item is the last. +.Pp +The macro +.Nm TAILQ_PREV +returns the previous item on the tail queue, or NULL if this item +is the first. +.Pp +The macro +.Nm TAILQ_REMOVE +removes the element +.Fa elm +from the tail queue. +.\" .Pp +.\" The macro +.\" .Nm TAILQ_SWAP +.\" swaps the contents of +.\" .Fa head1 +.\" and +.\" .Fa head2 . +.Pp +See the EXAMPLES section below for an example program using a tail queue. .SH RETURN VALUE .SH CONFORMING TO .SH BUGS From patchwork Sun Oct 25 09:36:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40860 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3532E3877021; Sun, 25 Oct 2020 09:37:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3532E3877021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618640; bh=7YzaZ8g+9Me2W3OhhJNjRksjTTLuR4CJc0EX3VfDJFA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=t+UbpRyifggZp9jB1vPAbMhOr1qpy3px502ei9i9BrZpQdsLFzxg/KUocmDNZtNTY omjG5P32/v5L/fvDFNu1hn5R0MJYWjjGSh9H6/pywrQNqmCO9nHdyUIZ4Kv1GMGllv bVP8crtrKJECsogTUJhaN0jxLUy2KIez3gZrwfyE= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 00C9A383F86C for ; Sun, 25 Oct 2020 09:37:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 00C9A383F86C Received: by mail-wm1-x332.google.com with SMTP id c16so9072854wmd.2 for ; Sun, 25 Oct 2020 02:37:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7YzaZ8g+9Me2W3OhhJNjRksjTTLuR4CJc0EX3VfDJFA=; b=bqx+rVsA6db9b765rT6SkjP9DH7VxnEAbuZZCpoTjICkmSTUoB3a7OFEQ/LjkUi7tv RqaRtHx56pzV/uIoB0z1o3C8eHPOsdkQ0ycQYVQ1QIeaDBujFIvd6T2rpchzjfuhb7fk 0pxaHVnCZ6pvPQbCuZms2L6PNqlnB90f0c7eabHEQNIOcIl+Hd+DKW46XByEA/D0pWLB nQZxnkJGBfD0cTocNjd6WahnKgefK4zXs0zbWV3mGYd48zByKljsemlfMyCkjmZ7vvG5 Mh0a+EheXgJg8tcQLgn0rHPd4eszU1Jr+9lhnvKzXm0Bz2cpG7mpdMyndCh6zb4s9ErW Qdlw== X-Gm-Message-State: AOAM5311AlX3uJP2pfnAMJFz4SZnwAyePtfJooyQYQSNtlhN1UNLqWXX 9jqOCjYL3KovHWKjF2EV7D8xfPJJs7I= X-Google-Smtp-Source: ABdhPJxahUAdeqUDV8pzfhBzWMCYVTCYNrsOly29sHuNfgdt5/FnvTfgvqnT+lawLjulv9PgRm1WMA== X-Received: by 2002:a7b:c113:: with SMTP id w19mr11322785wmi.25.1603618637055; Sun, 25 Oct 2020 02:37:17 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:16 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 05/10] queue.3, tailq.3: EXAMPLES: Move code from queue.3 to tailq.3 Date: Sun, 25 Oct 2020 10:36:47 +0100 Message-Id: <20201025093651.4616-6-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/queue.3 | 56 ---------------------------------------------------- man3/tailq.3 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/man3/queue.3 b/man3/queue.3 index f6e3b9369..4c597e123 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -170,62 +170,6 @@ The termination condition for traversal is more complex. Code size is about 40% greater and operations run about 45% slower than lists. .El .Sh EXAMPLES -.Ss Tail queue example -.Bd -literal -#include -#include -#include -#include - -struct entry { - int data; - TAILQ_ENTRY(entry) entries; /* Tail queue. */ -}; - -TAILQ_HEAD(tailhead, entry); - -int -main(void) -{ - struct entry *n1, *n2, *n3, *np; - struct tailhead head; /* Tail queue head. */ - int i; - - TAILQ_INIT(&head); /* Initialize the queue. */ - - n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ - TAILQ_INSERT_HEAD(&head, n1, entries); - - n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */ - TAILQ_INSERT_TAIL(&head, n1, entries); - - n2 = malloc(sizeof(struct entry)); /* Insert after. */ - TAILQ_INSERT_AFTER(&head, n1, n2, entries); - - n3 = malloc(sizeof(struct entry)); /* Insert before. */ - TAILQ_INSERT_BEFORE(n2, n3, entries); - - TAILQ_REMOVE(&head, n2, entries); /* Deletion. */ - free(n2); - /* Forward traversal. */ - i = 0; - TAILQ_FOREACH(np, &head, entries) - np->data = i++; - /* Reverse traversal. */ - TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries) - printf("%i\en", np->data); - /* TailQ Deletion. */ - n1 = TAILQ_FIRST(&head); - while (n1 != NULL) { - n2 = TAILQ_NEXT(n1, entries); - free(n1); - n1 = n2; - } - TAILQ_INIT(&head); - - exit(EXIT_SUCCESS); -} -.Ed .Sh CONFORMING TO Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008. Present on the BSDs. diff --git a/man3/tailq.3 b/man3/tailq.3 index 144a86f3f..28a7ac509 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -323,4 +323,60 @@ See the EXAMPLES section below for an example program using a tail queue. .SH CONFORMING TO .SH BUGS .SH EXAMPLES +.Ss Tail queue example +.Bd -literal +#include +#include +#include +#include + +struct entry { + int data; + TAILQ_ENTRY(entry) entries; /* Tail queue. */ +}; + +TAILQ_HEAD(tailhead, entry); + +int +main(void) +{ + struct entry *n1, *n2, *n3, *np; + struct tailhead head; /* Tail queue head. */ + int i; + + TAILQ_INIT(&head); /* Initialize the queue. */ + + n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ + TAILQ_INSERT_HEAD(&head, n1, entries); + + n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */ + TAILQ_INSERT_TAIL(&head, n1, entries); + + n2 = malloc(sizeof(struct entry)); /* Insert after. */ + TAILQ_INSERT_AFTER(&head, n1, n2, entries); + + n3 = malloc(sizeof(struct entry)); /* Insert before. */ + TAILQ_INSERT_BEFORE(n2, n3, entries); + + TAILQ_REMOVE(&head, n2, entries); /* Deletion. */ + free(n2); + /* Forward traversal. */ + i = 0; + TAILQ_FOREACH(np, &head, entries) + np->data = i++; + /* Reverse traversal. */ + TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries) + printf("%i\en", np->data); + /* TailQ Deletion. */ + n1 = TAILQ_FIRST(&head); + while (n1 != NULL) { + n2 = TAILQ_NEXT(n1, entries); + free(n1); + n1 = n2; + } + TAILQ_INIT(&head); + + exit(EXIT_SUCCESS); +} +.Ed .SH SEE ALSO From patchwork Sun Oct 25 09:36:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40861 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B60CB3836C73; Sun, 25 Oct 2020 09:37:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B60CB3836C73 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618641; bh=GmFsaFA25us30rWI60UZvjBk6riGs2muZRmRsoyHlBk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=lugSsrLrQJwJTiVKJ7jUdJ4xs6G2JVL29wrxQNnTugheng40REkTtUp3EG3gn2YqC zqyxOEV/Z4YIAu/oKtdQYL3GzvCG6VF1ZvBe1jNXHeYy1f2y0apAqU7oNRBgX6arys 7Qo+yJf+yEmYlDlGAR/zAVQ3eONoXyFWaMZOULQA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by sourceware.org (Postfix) with ESMTPS id 568F6383F876 for ; Sun, 25 Oct 2020 09:37:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 568F6383F876 Received: by mail-wm1-x341.google.com with SMTP id k18so9050947wmj.5 for ; Sun, 25 Oct 2020 02:37:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GmFsaFA25us30rWI60UZvjBk6riGs2muZRmRsoyHlBk=; b=uLoluCLy8AD7wIU/i2e91Co82Ojiht/FU2HHVSGoaJqxRxg2x9EczEkjIUDbeqxwmo Cjcf/15eSqnjeK1Mi+4pJwKn4XpqG6yZrtzhTjsWK2m7z0dqpjyDz9OY2M1jwuemlfrL eqtNDP/X9u46wqgtGKn6KYxuM/2bZSldvBx8FBfpzWd8baxfnp/sSCZFT0QAKXrYFNzt uesqTnpzlF42uH6n7MF1asJfs4UWzBaU6GJkseZdDbSSzYzlN48pcYoj6V/py9XCw1oK cVDo/Yd8fiWY7X/TheIhh0uFliOhz1b0aCMhHTgc632ZYe03NFII0HdLdRW9XlshbWlg nsYA== X-Gm-Message-State: AOAM5310wskZzb96Z3nGnGM+e0bD7WV1SPonNa0HDLCGAmK5IlcvC70d 8INt31Pb3yWQ/kcQvwxjCFBUCBK1Stc= X-Google-Smtp-Source: ABdhPJzXdFa+8LsvPnO0LIDvKt3NFzKOsdoFtj2Z6N/tFvWaiVv4ixwj2fr9ognpX8grmat298FdXQ== X-Received: by 2002:a1c:f417:: with SMTP id z23mr10319916wma.57.1603618638473; Sun, 25 Oct 2020 02:37:18 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:17 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 06/10] tailq.3: Copy and adapt code from queue.3 Date: Sun, 25 Oct 2020 10:36:48 +0100 Message-Id: <20201025093651.4616-7-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/tailq.3 | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/man3/tailq.3 b/man3/tailq.3 index 28a7ac509..6f2466cbf 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -89,26 +89,14 @@ In the macro definitions, .Fa TYPE is the name of a user defined structure, that must contain a field of type -.Li SLIST_ENTRY , -.Li STAILQ_ENTRY , -.Li LIST_ENTRY , .Li TAILQ_ENTRY , -or -.Li CIRCLEQ_ENTRY , named .Fa NAME . The argument .Fa HEADNAME is the name of a user defined structure that must be declared -using the macros -.Li SLIST_HEAD , -.Li STAILQ_HEAD , -.Li LIST_HEAD , -.Li TAILQ_HEAD , -or -.Li CIRCLEQ_HEAD . -See the examples below for further explanation of how these -macros are used. +using the macro +.Li TAILQ_HEAD . .Ss Tail queues A tail queue is headed by a structure defined by the .Nm TAILQ_HEAD @@ -317,10 +305,12 @@ from the tail queue. .\" .Fa head1 .\" and .\" .Fa head2 . -.Pp -See the EXAMPLES section below for an example program using a tail queue. .SH RETURN VALUE .SH CONFORMING TO +Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008. +Present on the BSDs. +(TAILQ functions first appeared in +.Bx 4.4 ). .SH BUGS .SH EXAMPLES .Ss Tail queue example @@ -340,9 +330,9 @@ TAILQ_HEAD(tailhead, entry); int main(void) { - struct entry *n1, *n2, *n3, *np; + struct entry *n1, *n2, *n3, *np; struct tailhead head; /* Tail queue head. */ - int i; + int i; TAILQ_INIT(&head); /* Initialize the queue. */ From patchwork Sun Oct 25 09:36:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40862 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 45D83388187F; Sun, 25 Oct 2020 09:37:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 45D83388187F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618644; bh=2gh7dE25r2SaTrnfXH6WRA5QunHoMXliWIwCg2GppbE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=mQ/dk27BesRWxitpejTqsbMclEGqOz/qvB+X84do5s9RvHID7SaUHZkhVf5fI7uqC Z5mbURByog9SunlvdE2m6KniWeUmQ2PDz5QekYREcWIB59CtT4xnG9Kk9NFaUEqgUV jSQe6THOMBSTcPTPtW4JBl1dRCjwLB/0LwA8aqIs= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by sourceware.org (Postfix) with ESMTPS id C8005383F876 for ; Sun, 25 Oct 2020 09:37:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C8005383F876 Received: by mail-wm1-x344.google.com with SMTP id v5so8239525wmh.1 for ; Sun, 25 Oct 2020 02:37:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2gh7dE25r2SaTrnfXH6WRA5QunHoMXliWIwCg2GppbE=; b=ldvyZRBofg139tbGBid6zMbBS+rv96Y+FsMtlxSYqLFLtdagHIXz4eKBCYKErnDli1 t/4p53BoH8S1TFuZ5y/HoQYIOh1TxF1L+TjLg7G8MQiaP8Vdw4sp0JlBtJwWTV9lp/QK A7SCrofunCK8NA1AzoExuwwTGECukG4pYmVE0x1nCP4HFBqO0/uguhb/qeZDzbq48PZU up46x0/sk1BctUfxSTOL5Hx3ZDX5SEo54cBiSsuOPJtquJP+F7gcCY6ECQvXBxu+lgQh 40DvHbPYPZ+unj5Bc0Af9PETXftV8u6c/iq7nav/IslUb2pLRaUotpskN6a8bKaRMyMC l11Q== X-Gm-Message-State: AOAM531DDLQj1zDI4pUp+Zq0bAew4o+LeHfxJt5P/f1V5+a1rA944sRm hLmOG3JCdskVc2LCk3KCEtHbkCMRFww= X-Google-Smtp-Source: ABdhPJxNnh4BxlANXc4RQcnWvcnj9CNrJEJ8MJAjlKQgK//gMjAAf7BzFJ62vITcRnV3obEyfelhAg== X-Received: by 2002:a7b:c305:: with SMTP id k5mr11126321wmj.102.1603618639871; Sun, 25 Oct 2020 02:37:19 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:19 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 07/10] tailq.3: ffix: Use man markup Date: Sun, 25 Oct 2020 10:36:49 +0100 Message-Id: <20201025093651.4616-8-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, UPPERCASE_50_75 autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/tailq.3 | 362 +++++++++++++++++++++++++++------------------------ 1 file changed, 195 insertions(+), 167 deletions(-) diff --git a/man3/tailq.3 b/man3/tailq.3 index 6f2466cbf..e38cc7e86 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -31,75 +31,101 @@ .\" .TH TAILQ 3 2020-10-21 "GNU" "Linux Programmer's Manual" .SH NAME -.Nm TAILQ_CONCAT , -.Nm TAILQ_EMPTY , -.Nm TAILQ_ENTRY , -.Nm TAILQ_FIRST , -.Nm TAILQ_FOREACH , -.\" .Nm TAILQ_FOREACH_FROM , -.\" .Nm TAILQ_FOREACH_FROM_SAFE , -.Nm TAILQ_FOREACH_REVERSE , -.\" .Nm TAILQ_FOREACH_REVERSE_FROM , -.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE , -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE , -.\" .Nm TAILQ_FOREACH_SAFE , -.Nm TAILQ_HEAD , -.Nm TAILQ_HEAD_INITIALIZER , -.Nm TAILQ_INIT , -.Nm TAILQ_INSERT_AFTER , -.Nm TAILQ_INSERT_BEFORE , -.Nm TAILQ_INSERT_HEAD , -.Nm TAILQ_INSERT_TAIL , -.Nm TAILQ_LAST , -.Nm TAILQ_NEXT , -.Nm TAILQ_PREV , -.Nm TAILQ_REMOVE -.\" .Nm TAILQ_SWAP +TAILQ_CONCAT, +TAILQ_EMPTY, +TAILQ_ENTRY, +TAILQ_FIRST, +TAILQ_FOREACH, +.\"TAILQ_FOREACH_FROM, +.\"TAILQ_FOREACH_FROM_SAFE, +TAILQ_FOREACH_REVERSE, +.\"TAILQ_FOREACH_REVERSE_FROM, +.\"TAILQ_FOREACH_REVERSE_FROM_SAFE, +.\"TAILQ_FOREACH_REVERSE_SAFE, +.\"TAILQ_FOREACH_SAFE, +TAILQ_HEAD, +TAILQ_HEAD_INITIALIZER, +TAILQ_INIT, +TAILQ_INSERT_AFTER, +TAILQ_INSERT_BEFORE, +TAILQ_INSERT_HEAD, +TAILQ_INSERT_TAIL, +TAILQ_LAST, +TAILQ_NEXT, +TAILQ_PREV, +TAILQ_REMOVE +.\"TAILQ_SWAP .SH SYNOPSIS -.In sys/queue.h -.\" -.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME" -.Fn TAILQ_EMPTY "TAILQ_HEAD *head" -.Fn TAILQ_ENTRY "TYPE" -.Fn TAILQ_FIRST "TAILQ_HEAD *head" -.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_FROM "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_REVERSE_FROM "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_FOREACH_REVERSE_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.\" .Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.\" .Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var" -.Fn TAILQ_HEAD "HEADNAME" "TYPE" -.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head" -.Fn TAILQ_INIT "TAILQ_HEAD *head" -.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME" -.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME" -.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME" -.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME" -.\" .Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME" -.\" +.nf +.B #include sys/queue.h +.PP +.BI "void TAILQ_CONCAT(TAILQ_HEAD *" head1 ", TAILQ_HEAD *" head2 "," +.BI " TAILQ_ENTRY " NAME ");" +.PP +.BI "int TAILQ_EMPTY(TAILQ_HEAD *" head ");" +.PP +.B TAILQ_ENTRY(TYPE); +.PP +.BI "TYPE *TAILQ_FIRST(TAILQ_HEAD *" head ");" +.PP +.BI "TAILQ_FOREACH(TYPE *" var ", TAILQ_HEAD *" head ", TAILQ_ENTRY " NAME ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_FROM(TYPE *" var ", TAILQ_HEAD *" head ", TAILQ_ENTRY " NAME ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_FROM_SAFE(TYPE *" var ", TAILQ_HEAD *" head ", TAILQ_ENTRY " NAME ", TYPE *" temp_var ");" +.PP +.BI "TAILQ_FOREACH_REVERSE(TYPE *" var ", TAILQ_HEAD *" head ", HEADNAME," +.BI " TAILQ_ENTRY " NAME ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_REVERSE_FROM(TYPE *" var ", TAILQ_HEAD *" head ", HEADNAME, TAILQ_ENTRY " NAME ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_REVERSE_FROM_SAFE(TYPE *" var ", TAILQ_HEAD *" head ", HEADNAME, TAILQ_ENTRY " NAME ", TYPE *" temp_var ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_REVERSE_SAFE(TYPE *" var ", TAILQ_HEAD *" head ", HEADNAME, TAILQ_ENTRY " NAME ", TYPE *" temp_var ");" +.\" .PP +.\" .BI "TAILQ_FOREACH_SAFE(TYPE *" var ", TAILQ_HEAD *" head ", TAILQ_ENTRY " NAME ", TYPE *" temp_var ");" +.PP +.B TAILQ_HEAD(HEADNAME, TYPE); +.PP +.BI "TAILQ_HEAD TAILQ_HEAD_INITIALIZER(TAILQ_HEAD " head ");" +.PP +.BI "void TAILQ_INIT(TAILQ_HEAD *" head ");" +.PP +.BI "void TAILQ_INSERT_AFTER(TAILQ_HEAD *" head ", TYPE *" listelm ", TYPE *" elm "," +.BI " TAILQ_ENTRY " NAME ");" +.PP +.BI "void TAILQ_INSERT_BEFORE(TYPE *" listelm ", TYPE *" elm ", TAILQ_ENTRY " NAME ");" +.PP +.BI "void TAILQ_INSERT_HEAD(TAILQ_HEAD *" head ", TYPE *" elm ", TAILQ_ENTRY " NAME ");" +.PP +.BI "void TAILQ_INSERT_TAIL(TAILQ_HEAD *" head ", TYPE *" elm ", TAILQ_ENTRY " NAME ");" +.PP +.BI "TYPE *TAILQ_LAST(TAILQ_HEAD *" head ", HEADNAME);" +.PP +.BI "TYPE *TAILQ_NEXT(TYPE *" elm ", TAILQ_ENTRY " NAME ");" +.PP +.BI "TYPE *TAILQ_PREV(TYPE *" elm ", HEADNAME, TAILQ_ENTRY " NAME ");" +.PP +.BI "void TAILQ_REMOVE(TAILQ_HEAD *" head ", TYPE *" elm ", TAILQ_ENTRY " NAME ");" +.\" .PP +.\" .BI "void TAILQ_SWAP(TAILQ_HEAD *" head1 ", TAILQ_HEAD *" head2 ", TYPE, TAILQ_ENTRY " NAME ");" .SH DESCRIPTION -.Pp +.PP In the macro definitions, -.Fa TYPE +.I TYPE is the name of a user defined structure, that must contain a field of type -.Li TAILQ_ENTRY , +.IR TAILQ_ENTRY , named -.Fa NAME . +.IR NAME . The argument -.Fa HEADNAME +.I HEADNAME is the name of a user defined structure that must be declared using the macro -.Li TAILQ_HEAD . +.BR TAILQ_HEAD (). .Ss Tail queues A tail queue is headed by a structure defined by the -.Nm TAILQ_HEAD +.BR TAILQ_HEAD () macro. This structure contains a pair of pointers, one to the first element in the tail queue and the other to @@ -110,211 +136,213 @@ New elements can be added to the tail queue after an existing element, before an existing element, at the head of the tail queue, or at the end of the tail queue. A -.Fa TAILQ_HEAD +.I TAILQ_HEAD structure is declared as follows: -.Bd -literal -offset indent +.PP +.in +4 +.EX TAILQ_HEAD(HEADNAME, TYPE) head; -.Ed -.Pp +.EE +.in +.PP where -.Li HEADNAME +.I HEADNAME is the name of the structure to be defined, and -.Li TYPE +.I TYPE is the type of the elements to be linked into the tail queue. A pointer to the head of the tail queue can later be declared as: -.Bd -literal -offset indent +.PP +.in +4 +.EX struct HEADNAME *headp; -.Ed -.Pp +.EE +.in +.PP (The names -.Li head +.I head and -.Li headp +.I headp are user selectable.) -.Pp +.PP The macro -.Nm TAILQ_HEAD_INITIALIZER +.BR TAILQ_HEAD_INITIALIZER () evaluates to an initializer for the tail queue -.Fa head . -.Pp +.IR head . +.PP The macro -.Nm TAILQ_CONCAT +.BR TAILQ_CONCAT () concatenates the tail queue headed by -.Fa head2 +.I head2 onto the end of the one headed by -.Fa head1 +.I head1 removing all entries from the former. -.Pp +.PP The macro -.Nm TAILQ_EMPTY +.BR TAILQ_EMPTY () evaluates to true if there are no items on the tail queue. -.Pp +.PP The macro -.Nm TAILQ_ENTRY +.BR TAILQ_ENTRY () declares a structure that connects the elements in the tail queue. -.Pp +.PP The macro -.Nm TAILQ_FIRST +.BR TAILQ_FIRST () returns the first item on the tail queue or NULL if the tail queue is empty. -.Pp +.PP The macro -.Nm TAILQ_FOREACH +.BR TAILQ_FOREACH () traverses the tail queue referenced by -.Fa head +.I head in the forward direction, assigning each element in turn to -.Fa var . -.Fa var -is set to -.Dv NULL -if the loop completes normally, or if there were no elements. -.\" .Pp +.IR var . +.I var +is set to NULL if the loop completes normally, +or if there were no elements. +.\" .PP .\" The macro -.\" .Nm TAILQ_FOREACH_FROM +.\" .BR TAILQ_FOREACH_FROM () .\" behaves identically to -.\" .Nm TAILQ_FOREACH +.\" .BR TAILQ_FOREACH () .\" when -.\" .Fa var +.\" .I var .\" is NULL, else it treats -.\" .Fa var +.\" .I var .\" as a previously found TAILQ element and begins the loop at -.\" .Fa var +.\" .I var .\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.Pp +.\" .IR head . +.PP The macro -.Nm TAILQ_FOREACH_REVERSE +.BR TAILQ_FOREACH_REVERSE () traverses the tail queue referenced by -.Fa head +.I head in the reverse direction, assigning each element in turn to -.Fa var . -.\" .Pp +.IR var . +.\" .PP .\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM +.\" .BR TAILQ_FOREACH_REVERSE_FROM () .\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE +.\" .BR TAILQ_FOREACH_REVERSE () .\" when -.\" .Fa var +.\" .I var .\" is NULL, else it treats -.\" .Fa var +.\" .I var .\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var +.\" .I var .\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp +.\" .IR head . +.\" .PP .\" The macros -.\" .Nm TAILQ_FOREACH_SAFE +.\" .BR TAILQ_FOREACH_SAFE () .\" and -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE +.\" .BR TAILQ_FOREACH_REVERSE_SAFE () .\" traverse the list referenced by -.\" .Fa head +.\" .I head .\" in the forward or reverse direction respectively, .\" assigning each element in turn to -.\" .Fa var . +.\" .IR var . .\" However, unlike their unsafe counterparts, -.\" .Nm TAILQ_FOREACH +.\" .BR TAILQ_FOREACH () .\" and -.\" .Nm TAILQ_FOREACH_REVERSE +.\" .BR TAILQ_FOREACH_REVERSE () .\" permit to both remove -.\" .Fa var +.\" .I var .\" as well as free it from within the loop safely without interfering with the .\" traversal. -.\" .Pp +.\" .PP .\" The macro -.\" .Nm TAILQ_FOREACH_FROM_SAFE +.\" .BR TAILQ_FOREACH_FROM_SAFE () .\" behaves identically to -.\" .Nm TAILQ_FOREACH_SAFE +.\" .BR TAILQ_FOREACH_SAFE () .\" when -.\" .Fa var +.\" .I var .\" is NULL, else it treats -.\" .Fa var +.\" .I var .\" as a previously found TAILQ element and begins the loop at -.\" .Fa var +.\" .I var .\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp +.\" .IR head . +.\" .PP .\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE +.\" .BR TAILQ_FOREACH_REVERSE_FROM_SAFE () .\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE +.\" .BR TAILQ_FOREACH_REVERSE_SAFE () .\" when -.\" .Fa var +.\" .I var .\" is NULL, else it treats -.\" .Fa var +.\" .I var .\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var +.\" .I var .\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.Pp +.\" .IR head . +.PP The macro -.Nm TAILQ_INIT +.BR TAILQ_INIT () initializes the tail queue referenced by -.Fa head . -.Pp +.IR head . +.PP The macro -.Nm TAILQ_INSERT_HEAD +.BR TAILQ_INSERT_HEAD () inserts the new element -.Fa elm +.I elm at the head of the tail queue. -.Pp +.PP The macro -.Nm TAILQ_INSERT_TAIL +.BR TAILQ_INSERT_TAIL () inserts the new element -.Fa elm +.I elm at the end of the tail queue. -.Pp +.PP The macro -.Nm TAILQ_INSERT_AFTER +.BR TAILQ_INSERT_AFTER () inserts the new element -.Fa elm +.I elm after the element -.Fa listelm . -.Pp +.IR listelm . +.PP The macro -.Nm TAILQ_INSERT_BEFORE +.BR TAILQ_INSERT_BEFORE () inserts the new element -.Fa elm +.I elm before the element -.Fa listelm . -.Pp +.IR listelm . +.PP The macro -.Nm TAILQ_LAST +.BR TAILQ_LAST () returns the last item on the tail queue. -If the tail queue is empty the return value is -.Dv NULL . -.Pp +If the tail queue is empty the return value is NULL. +.PP The macro -.Nm TAILQ_NEXT +.BR TAILQ_NEXT () returns the next item on the tail queue, or NULL if this item is the last. -.Pp +.PP The macro -.Nm TAILQ_PREV +.BR TAILQ_PREV () returns the previous item on the tail queue, or NULL if this item is the first. -.Pp +.PP The macro -.Nm TAILQ_REMOVE +.BR TAILQ_REMOVE () removes the element -.Fa elm +.I elm from the tail queue. -.\" .Pp +.\" .PP .\" The macro -.\" .Nm TAILQ_SWAP +.\" .BR TAILQ_SWAP () .\" swaps the contents of -.\" .Fa head1 +.\" .I head1 .\" and -.\" .Fa head2 . +.\" .IR head2 . .SH RETURN VALUE .SH CONFORMING TO Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008. Present on the BSDs. -(TAILQ functions first appeared in -.Bx 4.4 ). +(TAILQ functions first appeared in 4.4BSD). .SH BUGS .SH EXAMPLES -.Ss Tail queue example -.Bd -literal +.EX #include #include #include @@ -368,5 +396,5 @@ main(void) exit(EXIT_SUCCESS); } -.Ed +.EE .SH SEE ALSO From patchwork Sun Oct 25 09:36:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40863 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB0793887004; Sun, 25 Oct 2020 09:37:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB0793887004 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618644; bh=z/M70yZJhqYIUP8P4knVSoIbgEPd1mftgBf9Tc7ZVfE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Xr6YnTJkXY4dZb2KvR6+lpX0c+AMq7k7CmD3MgQzfjPpqvjGNkiQuuXzj4KDMGzKv GZSVpoYE/tBUKq9+PlrcRkpogyAOPctyZzzM252PZE/IzmfUMM0zuGm8HZbJ/0A7x3 kYsXp9PyJiAeywLfLDRZJKtv+3ZSFHiIxfBEb/Rc= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by sourceware.org (Postfix) with ESMTPS id 2D7F9388187D for ; Sun, 25 Oct 2020 09:37:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2D7F9388187D Received: by mail-wm1-x343.google.com with SMTP id l15so9084018wmi.3 for ; Sun, 25 Oct 2020 02:37:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=z/M70yZJhqYIUP8P4knVSoIbgEPd1mftgBf9Tc7ZVfE=; b=hHmdS8QMSR20sJFjwgW1sJkaSEvJfzlvorG4y0b0o++YUoElRbcwY4f8YEWorWZ8yU KGGVTq5vXNbdUS4W9e2TwcJThLAyYamWHeaD/a0LS75zA+QuJ7LPBBha8rCZHkf4cV55 RcljvZbXTMqP8VrTrbV8iGu7OgdFxUXUq/2kMW9A4aYElJt/mTVQxr+2mNRI0bGjtiq4 855jj4M1wJhnxBVWUSyX8Ig7oedLNhhuzr9ku+8QxcM8wOgQl8LmSm1ZwrVvECIRBiWB gD/Iacofm8Y/jGIuItjOjJdfnBo/53vcP3ZIoftyQYJsVsA/anu7ZCLOp8kqH5HaG6qP QUFQ== X-Gm-Message-State: AOAM531PlNM+U4rmk2h04GHT3pgTpU+VklCNhYV2aRd0SqCMpcYgx3J7 UNmg2aJ+W39XA/C7um4PQ7Q= X-Google-Smtp-Source: ABdhPJydBeUheDg0iXm3iV2S3SdEBu6muTtnJu8sBWeoitm2VXAt61ZV7wwSUGZ3bL23ZFFyZxtcmQ== X-Received: by 2002:a1c:2581:: with SMTP id l123mr10723213wml.169.1603618641356; Sun, 25 Oct 2020 02:37:21 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:20 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 08/10] tailq.3: Add remaining details to complete the page Date: Sun, 25 Oct 2020 10:36:50 +0100 Message-Id: <20201025093651.4616-9-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/tailq.3 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/man3/tailq.3 b/man3/tailq.3 index e38cc7e86..cac4a9c3f 100644 --- a/man3/tailq.3 +++ b/man3/tailq.3 @@ -55,6 +55,7 @@ TAILQ_NEXT, TAILQ_PREV, TAILQ_REMOVE .\"TAILQ_SWAP +\- implementation of a doubly-linked tail queue .SH SYNOPSIS .nf .B #include sys/queue.h @@ -110,6 +111,7 @@ TAILQ_REMOVE .\" .PP .\" .BI "void TAILQ_SWAP(TAILQ_HEAD *" head1 ", TAILQ_HEAD *" head2 ", TYPE, TAILQ_ENTRY " NAME ");" .SH DESCRIPTION +These macros define and operate on doubly-linked tail queues. .PP In the macro definitions, .I TYPE @@ -336,11 +338,44 @@ from the tail queue. .\" and .\" .IR head2 . .SH RETURN VALUE +.BR TAILQ_EMPTY () +returns nonzero if the queue is empty, +and zero if the queue contains at least one entry. +.PP +.BR TAILQ_FIRST (), +.BR TAILQ_LAST (), +.BR TAILQ_NEXT (), +and +.BR TAILQ_PREV () +return a pointer to the first, last, next or previous +.I TYPE +structure, respectively. +.PP +.BR TAILQ_HEAD_INITIALIZER () +returns an initializer that can be assigned to the queue +.IR head . .SH CONFORMING TO Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008. Present on the BSDs. (TAILQ functions first appeared in 4.4BSD). .SH BUGS +The macros +.BR TAILQ_FOREACH () +and +.BR TAILQ_FOREACH_REVERSE () +don't allow +.I var +to be removed or freed within the loop, +as it would interfere with the traversal. +The macros +.BR TAILQ_FOREACH_SAFE () +and +.BR TAILQ_FOREACH_REVERSE_SAFE (), +which are present on the BSDs but are not present in glibc, +fix this limitation by allowing +.I var +to safely be removed from the list and freed from within the loop +without interfering with the traversal. .SH EXAMPLES .EX #include @@ -398,3 +433,5 @@ main(void) } .EE .SH SEE ALSO +.BR insque (3), +.BR queue (3) From patchwork Sun Oct 25 09:36:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40864 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB5943877036; Sun, 25 Oct 2020 09:37:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB5943877036 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618646; bh=NsMRM8Lc5LxtI0tFEUeV57fC51qzgscnLLqMxddYEdk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=QJrIHBTux+nKKzKo7vFYdv4ROz3W0Zo1Vuwr4upERkJgXWILeA9Tc6CLvGvcf/7t6 L4q2wD+qIu57ZT44cuwUozuLBBmKQZH+SKxSGVS6sI/GH8wSigpq9yPEQZ1vw3RgLR nJMr1lueIEWUpapXxbHl9RyWhTAZA4gPqXC/+BNQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by sourceware.org (Postfix) with ESMTPS id 939B4383F876 for ; Sun, 25 Oct 2020 09:37:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 939B4383F876 Received: by mail-wm1-x32e.google.com with SMTP id d3so9082921wma.4 for ; Sun, 25 Oct 2020 02:37:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NsMRM8Lc5LxtI0tFEUeV57fC51qzgscnLLqMxddYEdk=; b=rhmaJ9yBDC0hgp1TQTs5laV8Tm2fIMbrJRNDUy9k3MMpHn7zfCM5ITcX2kOWENcYzm hvT2mzqExP92k02cBR5yNSKD1FbrVZc3CKfLMGCn+k8xnjdXNsFW8PHWoyYv3Q9ofuZL VxjvZVkcFng7JPBEVO66KoYQ6bM0DvphBN2k08K6p6vGbf1DTbrUtp3Y/v133PrEzJx2 fItto5lauH6vEADdXAM9w6UwTa9bFn8RAIJKjMOi8pKXTemePcbbebrf/SMY4FXeMr0g ck4YvVf3AzQ7DZL1YiZQlgvXpxmgBlAitFMRc4c4l1ju07e3lC7AM5NjM36LPpcEqjNd u/cA== X-Gm-Message-State: AOAM532w1jjlXC3Ia3jh67kJTlp6rlDTAVJ0/vaogiDsmE8bBdEj2EoK Yi0swrUYWk6Lk0EnN/orhJ0= X-Google-Smtp-Source: ABdhPJyynniFMq/LgCdhRr7Bgsn1O4Q2kU4vRAMRAvvjPphBNrSVKgMAhj39RUqw+tQxY1PHQX1AoA== X-Received: by 2002:a7b:cc8b:: with SMTP id p11mr11104321wma.100.1603618642753; Sun, 25 Oct 2020 02:37:22 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:22 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 09/10] TAILQ_CONCAT.3, TAILQ_EMPTY.3, TAILQ_ENTRY.3, TAILQ_FIRST.3, TAILQ_FOREACH.3, TAILQ_FOREACH_REVERSE.3, TAILQ_HEAD.3, TAILQ_HEAD_INITIALIZER.3, TAILQ_INIT.3, TAILQ_INSERT_AFTER.3, TAILQ_INSERT_BEFORE.3, TAILQ_INSERT_HEAD.3, TAILQ_INSERT_TAIL.3, TAILQ_LAST.3, TAILQ_NEXT.3, TAILQ_PREV.3, TAILQ_REMOVE.3, TAILQ_SWAP.3: Link to the new tailq(3) page instead of queue(3) Date: Sun, 25 Oct 2020 10:36:51 +0100 Message-Id: <20201025093651.4616-10-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/TAILQ_CONCAT.3 | 2 +- man3/TAILQ_EMPTY.3 | 2 +- man3/TAILQ_ENTRY.3 | 2 +- man3/TAILQ_FIRST.3 | 2 +- man3/TAILQ_FOREACH.3 | 2 +- man3/TAILQ_FOREACH_REVERSE.3 | 2 +- man3/TAILQ_HEAD.3 | 2 +- man3/TAILQ_HEAD_INITIALIZER.3 | 2 +- man3/TAILQ_INIT.3 | 2 +- man3/TAILQ_INSERT_AFTER.3 | 2 +- man3/TAILQ_INSERT_BEFORE.3 | 2 +- man3/TAILQ_INSERT_HEAD.3 | 2 +- man3/TAILQ_INSERT_TAIL.3 | 2 +- man3/TAILQ_LAST.3 | 2 +- man3/TAILQ_NEXT.3 | 2 +- man3/TAILQ_PREV.3 | 2 +- man3/TAILQ_REMOVE.3 | 2 +- man3/TAILQ_SWAP.3 | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/man3/TAILQ_CONCAT.3 b/man3/TAILQ_CONCAT.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_CONCAT.3 +++ b/man3/TAILQ_CONCAT.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_EMPTY.3 b/man3/TAILQ_EMPTY.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_EMPTY.3 +++ b/man3/TAILQ_EMPTY.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_ENTRY.3 b/man3/TAILQ_ENTRY.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_ENTRY.3 +++ b/man3/TAILQ_ENTRY.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_FIRST.3 b/man3/TAILQ_FIRST.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_FIRST.3 +++ b/man3/TAILQ_FIRST.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_FOREACH.3 b/man3/TAILQ_FOREACH.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_FOREACH.3 +++ b/man3/TAILQ_FOREACH.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_FOREACH_REVERSE.3 b/man3/TAILQ_FOREACH_REVERSE.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_FOREACH_REVERSE.3 +++ b/man3/TAILQ_FOREACH_REVERSE.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_HEAD.3 b/man3/TAILQ_HEAD.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_HEAD.3 +++ b/man3/TAILQ_HEAD.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_HEAD_INITIALIZER.3 b/man3/TAILQ_HEAD_INITIALIZER.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_HEAD_INITIALIZER.3 +++ b/man3/TAILQ_HEAD_INITIALIZER.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_INIT.3 b/man3/TAILQ_INIT.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_INIT.3 +++ b/man3/TAILQ_INIT.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_INSERT_AFTER.3 b/man3/TAILQ_INSERT_AFTER.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_INSERT_AFTER.3 +++ b/man3/TAILQ_INSERT_AFTER.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_INSERT_BEFORE.3 b/man3/TAILQ_INSERT_BEFORE.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_INSERT_BEFORE.3 +++ b/man3/TAILQ_INSERT_BEFORE.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_INSERT_HEAD.3 b/man3/TAILQ_INSERT_HEAD.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_INSERT_HEAD.3 +++ b/man3/TAILQ_INSERT_HEAD.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_INSERT_TAIL.3 b/man3/TAILQ_INSERT_TAIL.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_INSERT_TAIL.3 +++ b/man3/TAILQ_INSERT_TAIL.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_LAST.3 b/man3/TAILQ_LAST.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_LAST.3 +++ b/man3/TAILQ_LAST.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_NEXT.3 b/man3/TAILQ_NEXT.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_NEXT.3 +++ b/man3/TAILQ_NEXT.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_PREV.3 b/man3/TAILQ_PREV.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_PREV.3 +++ b/man3/TAILQ_PREV.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_REMOVE.3 b/man3/TAILQ_REMOVE.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_REMOVE.3 +++ b/man3/TAILQ_REMOVE.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 diff --git a/man3/TAILQ_SWAP.3 b/man3/TAILQ_SWAP.3 index c2956c9fc..c766ff4e7 100644 --- a/man3/TAILQ_SWAP.3 +++ b/man3/TAILQ_SWAP.3 @@ -1 +1 @@ -.so man3/queue.3 +.so man3/tailq.3 From patchwork Sun Oct 25 09:36:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 40865 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 86C0C3887016; Sun, 25 Oct 2020 09:37:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 86C0C3887016 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603618648; bh=ZviR5ABzeaglht3JlFCOD8lTjS1yxlmpQ0ICm7ozI3s=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=nbLREYuhhSul44hIG5M5Z7ZNpdVwH8vF6Iz7Rl5FZp1KOKGbBHUTJGQlm5LZzT4NP Vq+YjFNAG9X8onutNKV70yl1tB1ETkS6Sa8Kyx78oOwZNJGh7MNzH91S/uCv60KNPr AfI03IBp7nEC4+/C8gvOJS6NQB5u05i6BE/FFGnc= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id F295C388700A for ; Sun, 25 Oct 2020 09:37:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F295C388700A Received: by mail-wm1-x330.google.com with SMTP id a72so8237553wme.5 for ; Sun, 25 Oct 2020 02:37:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZviR5ABzeaglht3JlFCOD8lTjS1yxlmpQ0ICm7ozI3s=; b=ZJhET27IMZtH1rFFOG/P/J3KYcevkJdhxuFRAt8sjduK9eVlyj49+q/TZFbP4scz80 /zpYRo7kD/Y8xmicAcLlB4SJsmcBmM5qobythTyMzt/Q9VUozG1/VuAl5Hs0ivcl0GxA itetwFpzAYp0K0BQmgOBAISdEEnKuVx9rf88TOiUhIWVnvqkLSqgekqZctjSYSQq2geA nNf+IN3letajr/15vYq9sGbXphhx8wDFeqbr+QMTClC5CQ/JcoGp01G4W4gI7MYa5lFL FWiYTAEMrat2dOO1dOna1jMqi5a5/CStuRpSuUWXG9Gpr7xzNtYe/PtUXWV1qXKMqJiP wecA== X-Gm-Message-State: AOAM530w1RPUnsLOpxEaGaZMZnuUGqOlVrT4LfJ/TRKX1zU0p+FxxVyG 8G0jpd2cwlq5wC05DWUYdDi3Q2mimLE= X-Google-Smtp-Source: ABdhPJw5sGdF+iQuljQzjxHpM604uyRdYNMy9MLm4tIh90pRvYaVYbJ1GdTFswA3lZXYLxq6nFPgyg== X-Received: by 2002:a7b:c113:: with SMTP id w19mr11323220wmi.25.1603618644197; Sun, 25 Oct 2020 02:37:24 -0700 (PDT) Received: from localhost.localdomain ([170.253.60.68]) by smtp.googlemail.com with ESMTPSA id m8sm15776446wrw.17.2020.10.25.02.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2020 02:37:23 -0700 (PDT) To: mtk.manpages@gmail.com Subject: [PATCH 10/10] queue.3: SEE ALSO: Add tailq(3) Date: Sun, 25 Oct 2020 10:36:52 +0100 Message-Id: <20201025093651.4616-11-colomar.6.4.3@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201025093651.4616-1-colomar.6.4.3@gmail.com> References: <20201025093651.4616-1-colomar.6.4.3@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alejandro Colomar via Libc-alpha From: Alejandro Colomar Reply-To: Alejandro Colomar Cc: Alejandro Colomar , linux-man@vger.kernel.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Signed-off-by: Alejandro Colomar --- man3/queue.3 | 1 + 1 file changed, 1 insertion(+) diff --git a/man3/queue.3 b/man3/queue.3 index 4c597e123..1c9a6f573 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -182,4 +182,5 @@ functions first appeared in .Xr list 3 .Xr slist 3 .Xr stailq 3 +.Xr tailq 3 .\" .Xr tree 3