From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_REPLYTO_END_DIGIT, MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS,UPPERCASE_50_75 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (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) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 674451F4B4 for ; Fri, 23 Oct 2020 09:50:21 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B7F743858006; Fri, 23 Oct 2020 09:50:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B7F743858006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1603446619; bh=TL9wc7vSOww8p0bzENiqoM/KP4T+Ihb7gpxrgRQiL10=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=no/s4jbxRO2k3EjMrf/F2EJ+CeAbt3LczczZjll5RX1pQ0977P+LBXWhHD2iuLHXU D6Yt1DQDXIC3H5uxWNecowH3Hp/5q5t5mzDnwt1r5yc4fHcl3knltVu2q/qemFJ4Tg AFD6iabiR3u0TXDiNJUHnLXxy/dy3dBBbb4ieZSc= Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id C78B03858006 for ; Fri, 23 Oct 2020 09:50:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C78B03858006 Received: by mail-wm1-x336.google.com with SMTP id c77so795157wmd.4 for ; Fri, 23 Oct 2020 02:50: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:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=TL9wc7vSOww8p0bzENiqoM/KP4T+Ihb7gpxrgRQiL10=; b=HZKWUIL6rqgQCouJCcZroOIyDF9lAmXxlPKI8+lpAEt3YMph4Jvl/eH5vbOsJlfHPz lcnmcXmYP5I5pyVu5M3wOiQoDU8w0MMuQFcEUlEfpgifJFbRaLg5iqxwj6vjQreTBgwu Edd6k5e59vlyoYDuMB11epOycyzmkqvekOQdBw1AjyDEhVfTmn6hSAW5o3FXkG50v4Yl zov7TQhanPI4rr833qgfhO2O8/a+n9QKyNYiFOfn90DPe1ih6u0wQPn9eLG9A99ylAWu 7xGT4yZn+BoVMhLKltZ3xW2Q8TV+re4JYCvQl0K6MFkvPmicfQFkIwHMjK/AoLFsiCgZ /Qgg== X-Gm-Message-State: AOAM533P/Xb4DvN/lx9HOujDoZ9se2cRmZCCPVAzugbHRrGkYhiIZg57 jK+wYFrX03G1huqgbvI2uaM= X-Google-Smtp-Source: ABdhPJyvfCs3InrCTZe7NoDIGdWnyW/spMpEi1PCDCY55PEPXwDI5qqvMk5yf0l81U9F58ttgghdrg== X-Received: by 2002:a1c:48d4:: with SMTP id v203mr1412145wma.122.1603446615961; Fri, 23 Oct 2020 02:50:15 -0700 (PDT) Received: from [192.168.1.143] ([170.253.60.68]) by smtp.gmail.com with ESMTPSA id v6sm2168301wmj.6.2020.10.23.02.50.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 23 Oct 2020 02:50:15 -0700 (PDT) Subject: sys/queue.h: Add macros present on BSDs To: "libc-alpha@sourceware.org" References: <33af3ca2-d6ea-5f75-6ad2-e2f43eefe4fa@gmail.com> <907cf2f7-70de-42c3-a738-d7e6a14327de@gmail.com> <213d9db0-ebf5-ddcc-c796-2478143db9c9@gmail.com> Message-ID: <75e66480-ccbf-d2f0-7787-5a1b2573d622@gmail.com> Date: Fri, 23 Oct 2020 11:50:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit 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: , From: Alejandro Colomar via Libc-alpha Reply-To: Alejandro Colomar Cc: linux-man , "Michael Kerrisk \(man-pages\)" Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" On 2020-10-21 06:53, Michael Kerrisk (man-pages) wrote: > On 10/20/20 1:42 PM, Alejandro Colomar wrote: >> >> >> On 2020-10-20 13:22, Hans Petter Selasky wrote: >>> Hi, >>> >>> You may want to import new queue macros from FreeBSD, especially for C++ >>> use. >>> >>> https://svnweb.freebsd.org/base/head/sys/sys/queue.h >>> >>> https://svnweb.freebsd.org/base?view=revision&revision=284915 >>> >>> --HPS >> >> >> Hi Hans, >> >> Thanks for the suggestion. >> >> I'll add the documentation to the manual pages commented out >> (as with other queue.h macros that aren't present on glibc), >> and if glibc adds them in the future, >> it can then be uncommented. > > Thanks for that, Alex. (And thanks for the heads-up, Hans.) > > Cheers, > > Michael > After Hans' suggestion, I decided to find all macros available on BSDs and not on glibc. You may want to add them to glibc. I'll write them when I have some time. Here's the list of what I could find: * OpenBSD: struct TYPE * SLIST_END(SLIST_HEAD *head); SLIST_FOREACH_SAFE(VARNAME, SLIST_HEAD *head, FIELDNAME, TEMP_VARNAME); void SLIST_REMOVE_AFTER(struct TYPE *elm, FIELDNAME); struct TYPE * LIST_END(LIST_HEAD *head); LIST_FOREACH_SAFE(VARNAME, LIST_HEAD *head, FIELDNAME, TEMP_VARNAME); void LIST_REPLACE(struct TYPE *elm, struct TYPE *elm2, FIELDNAME); struct TYPE * SIMPLEQ_END(SIMPLEQ_HEAD *head); SIMPLEQ_FOREACH_SAFE(VARNAME, SIMPLEQ_HEAD *head, FIELDNAME, TEMP_VARNAME); void SIMPLEQ_REMOVE_AFTER(SIMPLEQ_HEAD *head, struct TYPE *elm, FIELDNAME); struct TYPE * TAILQ_END(TAILQ_HEAD *head); TAILQ_FOREACH_SAFE(VARNAME, TAILQ_HEAD *head, FIELDNAME, TEMP_VARNAME); TAILQ_FOREACH_REVERSE_SAFE(VARNAME, TAILQ_HEAD *head, HEADNAME, FIELDNAME, TEMP_VARNAME); void TAILQ_REPLACE(TAILQ_HEAD *head, struct TYPE *elm, struct TYPE *elm2, FIELDNAME); struct TYPE * CIRCLEQ_END(CIRCLEQ_HEAD *head); CIRCLEQ_FOREACH_SAFE(VARNAME, CIRCLEQ_HEAD *head, FIELDNAME, TEMP_VARNAME); CIRCLEQ_FOREACH_REVERSE_SAFE(VARNAME, CIRCLEQ_HEAD *head, FIELDNAME, TEMP_VARNAME); void CIRCLEQ_REPLACE(CIRCLEQ_HEAD *head, struct TYPE *elm, struct TYPE *elm2, FIELDNAME); * FreeBSD: SLIST_CLASS_ENTRY(CLASSTYPE); SLIST_CLASS_HEAD(HEADNAME, CLASSTYPE); STAILQ_CLASS_ENTRY(CLASSTYPE); STAILQ_CLASS_HEAD(HEADNAME, CLASSTYPE); LIST_CLASS_ENTRY(CLASSTYPE); LIST_CLASS_HEAD(HEADNAME, CLASSTYPE); TAILQ_CLASS_ENTRY(CLASSTYPE); TAILQ_CLASS_HEAD(HEADNAME, CLASSTYPE); * Interesting, but not present on BSDs (at list on the ones I checked): SIMPLEQ_CLASS_ENTRY(CLASSTYPE); SIMPLEQ_CLASS_HEAD(HEADNAME, CLASSTYPE); CIRCLEQ_CLASS_ENTRY(CLASSTYPE); CIRCLEQ_CLASS_HEAD(HEADNAME, CLASSTYPE);