From patchwork Wed Mar 22 23:34:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3070 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.50.79 with SMTP id y76csp543695vsy; Wed, 22 Mar 2017 16:35:36 -0700 (PDT) X-Received: by 10.223.171.78 with SMTP id r14mr36001884wrc.113.1490225736253; Wed, 22 Mar 2017 16:35:36 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n133si4846894wma.21.2017.03.22.16.35.35; Wed, 22 Mar 2017 16:35:36 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D518689735; Thu, 23 Mar 2017 01:34:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EB06268922E for ; Thu, 23 Mar 2017 01:34:33 +0200 (EET) Received: by mail-qk0-f196.google.com with SMTP id n141so28113041qke.3 for ; Wed, 22 Mar 2017 16:34:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=YpRm0qztObMAAfaW7Ntm5EvQp0duwW7pnt1zeoA//8k=; b=QoNoROlcxvas9xZg7cXl8sB6rPThTQ7kHA1512WzvW7By0MeCvJLHJKRrWznlW27sZ T1d/J9BJvPEzxay7dEXNBurFDNNKVyEuZrtBmu8SZoPg+HIlCBo1BaOOpTeFZmGFAmTX VzBVxo6hH9IF2rFJ4LVwDaal5Ga619BtfBWfuNbCLhgxxIAjg6/ZIRxADdwFruW48i/D J8iFjnAvLtcrg5R6LypGJOxsJEg4e1rWiD1z4nYvIjs459riNsfHlo6PRBcvzs2HB1KC rU6/LbdupsfKDW2ZVBGK3QlIEWSLn70uWlkGI5KrCcJvHeujVYBu9yfrPuuWsCLtTonI 4Org== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=YpRm0qztObMAAfaW7Ntm5EvQp0duwW7pnt1zeoA//8k=; b=sSKszBYeC0H1yzdmLV4Kk9YkzXUmnQ7bG5827UKAC0IQm1z9DrdcXh7U7WxKhzn/aY tqLBYKKx6N+BLU18WxN6JCb2dM8c4dlXQNBGYUZTRBG/HEFn1JgzkCStnAcryKMCDXRy 7GMwurvW+nsms8vN/wIkZVmnNeR5l4BBQwPdO3eg5xXsorzx9v+WkokSjX/T1v3hBNFu j+XLpsR7+L8yxyw6VUcj/FZYbrQ8iqmOR6LV69rvsBTIlRtUzDaYl3g+8eLmFMSxdsn8 zmhgM7VInAn1QYJPb4oIPI6vMUXHXhQwzHN3QV1B7b/znQpwzH15QdpW+HKLy5124/2S Trxw== X-Gm-Message-State: AFeK/H1JfyNM9VPp9fS25oT9MmbYbR1UsWtik9IxeABvcoUDGG9LmOfV45NTE9HzxKiFwA== X-Received: by 10.55.48.147 with SMTP id w141mr36161957qkw.306.1490225691938; Wed, 22 Mar 2017 16:34:51 -0700 (PDT) Received: from localhost.localdomain ([181.231.62.139]) by smtp.gmail.com with ESMTPSA id w55sm2055133qtw.9.2017.03.22.16.34.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Mar 2017 16:34:51 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Mar 2017 20:34:08 -0300 Message-Id: <20170322233412.6952-4-jamrial@gmail.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170322233412.6952-1-jamrial@gmail.com> References: <20170322233412.6952-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 3/7] avcodec/parser: convert to stdatomic X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- libavcodec/parser.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 30cfc55cbc..831927e5a7 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -21,10 +21,10 @@ */ #include +#include #include #include "libavutil/avassert.h" -#include "libavutil/atomic.h" #include "libavutil/internal.h" #include "libavutil/mem.h" @@ -32,6 +32,7 @@ #include "parser.h" static AVCodecParser *av_first_parser = NULL; +static AVCodecParser **last_parser = &av_first_parser; AVCodecParser *av_parser_next(const AVCodecParser *p) { @@ -43,9 +44,14 @@ AVCodecParser *av_parser_next(const AVCodecParser *p) void av_register_codec_parser(AVCodecParser *parser) { - do { - parser->next = av_first_parser; - } while (parser->next != avpriv_atomic_ptr_cas((void * volatile *)&av_first_parser, parser->next, parser)); + AVCodecParser **f = last_parser; + const AVCodecParser *cmp = NULL; + + parser->next = NULL; + + while(*f || !atomic_compare_exchange_strong(f, &cmp, parser)) + f = &(*f)->next; + last_parser = &parser->next; } AVCodecParserContext *av_parser_init(int codec_id)