From patchwork Sat Nov 25 00:33:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rostislav Pehlivanov X-Patchwork-Id: 6345 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp2882223jah; Fri, 24 Nov 2017 16:40:44 -0800 (PST) X-Google-Smtp-Source: AGs4zMa1W1LmjFTuIWu9AT9r8haXjLg6kp2LhuYeNC8JNDmnRFWh51cpACPd7N0KZf4wIWovw3qi X-Received: by 10.28.94.75 with SMTP id s72mr10477005wmb.112.1511570444509; Fri, 24 Nov 2017 16:40:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511570444; cv=none; d=google.com; s=arc-20160816; b=d8trS7I3ux48CkRoUkZ9RjBVZ7j7P515VUdVCOKF3TEQuv/Wg3F7jaBLVqF69wyra3 qKwVWhPtArs0o+/20oXVJkzgvPvToHMsAWPFKgnGm9GIFKyzS8IJKubreYyT/FBbTFli DbAVPxtO91uAzO2S5Qm0yz8a1mIdupiwFByFNfUKWZ3TtKdG8lL/GXU0mYH1yVKbTMcP byvu3QSWtmTUhLxwPNYfraRIjxeQo2o3bPoE0V2GmVkOlytGj590Om9rzNVimLhVoaXC irYnKC4KEySbTa+gc/sDqTEzb1y1iQxfYavpFyfyW+dlH6PlhvPwV8JlIWh9bSTzATQx z7fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=n5cXQ9LtVxcvVnka7LeCti4wQHodLO74RwCG28lcUp8=; b=TIu6xvJZQKV/QWa5L+obk+mUTAhTQfzrEA6yQGJDkoN0sCHe+KabwBhVmOgm7NFMus tR7VBfS2rfUUgUnXFJZDznyz1zuu87R/FrndWpiqyCf//SUJ6+9LYoLKx5qwBlqT9dT1 dayqVW3BJH2Qf3rrlvL2fC3L01giaeiri2AinppAnsQZ5+xi6YMONALQHR4q1iKVPau/ NEwgSjTai8pLAcecfOhndEUqN/ZdlvHWG+R/ci0ypgnpHNXsqIdhqBZ7rod8yC5jQpJM HEVZfJfuYnxO/66otUf8aNtEVD5/HlCieqoBuEXK9seJUrvvSIxf7WlwTXQhPTtWnX+X 9jWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=gTfhd68C; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l12si2082732wrl.519.2017.11.24.16.40.44; Fri, 24 Nov 2017 16:40:44 -0800 (PST) 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 header.s=20161025 header.b=gTfhd68C; 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 5513468A070; Sat, 25 Nov 2017 02:40:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 909F368019C for ; Sat, 25 Nov 2017 02:40:36 +0200 (EET) Received: by mail-wm0-f68.google.com with SMTP id b189so24898065wmd.0 for ; Fri, 24 Nov 2017 16:40:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jbKHu2gJf59Cx3l69V39enEoObu3OPuO+Bxgd2gtEKI=; b=gTfhd68Ciu6YA+tuMjpgfoSks4cEXYDSbQcFmZ0q+nHtXdw1YO+X/pd3M5wUaHug43 PI43dErY25wv407tZMESwReZtTNOktrTYcNje97axpJg0nE1uo/fESiBMZfzGQqZEpc7 bj065WWrf+7ZZv8oXX4CDFBcU4yC+Ydg7b/B/ALXp4vh2GZYhIhsb7rh8S5yuz+JNIX1 5ev9tG8+qiYb2RFp8/Mx2vRXOR/YthhJWOeowK/rWL+cxQo/qvvd+TYiOK/mUoNx6Xte O0E9tEdQGquOZJAM00VZnzcKXQDwqAFDKM+ksGJpK6XaYTUwVyU4/I8eJtGeM/y2cPA7 sfOA== 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; bh=jbKHu2gJf59Cx3l69V39enEoObu3OPuO+Bxgd2gtEKI=; b=PI1TOVZVRHgEikEBdJunRuYeH2iXDBrIz/zOAunywmctxB7TQ6G7+kJDJ/C9A4JgWl e80aaWfRqeWajabuq3mJ/x8dzugNQUf2yeF23r+sRgtBbkrm/2mClAHOXjFCAB3qt/ot Dom7QPjs4TmrhfN8ocSYVS7bqr/3ijKYBqsvuu7krcpxHbabLvYPjILh7bO8HQXHtpMA sKWt9C0fTwJcJ11xDhDzChPlvXdDMtlGfekevcsn5i8360sXdMOJBvFxuZcnpQItOmch iBZqlpPr2Q3d/PJ414fBUIHrPvfytt6v6IPQJX81psohjaExoyysjG9bK9OERcHLBteg iXQA== X-Gm-Message-State: AJaThX6cu3rUDlu6tBgsAxA4Z6ue00YKhtMQeMcwhlzTb2Zdb+8dVuYb rOY3kXxWJ8GjnD7j9v/okHEBTE/z X-Received: by 10.28.125.11 with SMTP id y11mr12913731wmc.115.1511570030854; Fri, 24 Nov 2017 16:33:50 -0800 (PST) Received: from moonbase.pars.ee ([2a00:23c4:7c83:f700:8110:b6b7:54ec:1dae]) by smtp.gmail.com with ESMTPSA id r19sm7510228wrg.83.2017.11.24.16.33.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Nov 2017 16:33:50 -0800 (PST) From: Rostislav Pehlivanov To: ffmpeg-devel@ffmpeg.org Date: Sat, 25 Nov 2017 00:33:45 +0000 Message-Id: <20171125003345.26015-2-atomnuker@gmail.com> X-Mailer: git-send-email 2.15.0.417.g466bffb3ac In-Reply-To: <20171125003345.26015-1-atomnuker@gmail.com> References: <20171125003345.26015-1-atomnuker@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] lavc/utils.c: use C11 atomics for entangled thread handling 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 Cc: Rostislav Pehlivanov MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Rostislav Pehlivanov --- libavcodec/utils.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e50de6e89b..a3cd96ed2e 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -56,6 +56,7 @@ #include "version.h" #include #include +#include #include #include #if CONFIG_ICONV @@ -114,7 +115,7 @@ static int (*lockmgr_cb)(void **mutex, enum AVLockOp op) = NULL; volatile int ff_avcodec_locked; -static int volatile entangled_thread_counter = 0; +atomic_int volatile entangled_thread_counter = ATOMIC_VAR_INIT(0); static void *codec_mutex; static void *avformat_mutex; @@ -1944,11 +1945,12 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec) return -1; } - if (avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, 1) != 1) { + atomic_fetch_add(&entangled_thread_counter, 1); + if (atomic_load(&entangled_thread_counter) != 1) { av_log(log_ctx, AV_LOG_ERROR, "Insufficient thread locking. At least %d threads are " "calling avcodec_open2() at the same time right now.\n", - entangled_thread_counter); + atomic_load(&entangled_thread_counter)); if (!lockmgr_cb) av_log(log_ctx, AV_LOG_ERROR, "No lock manager is set, please see av_lockmgr_register()\n"); ff_avcodec_locked = 1; @@ -1967,7 +1969,7 @@ int ff_unlock_avcodec(const AVCodec *codec) av_assert0(ff_avcodec_locked); ff_avcodec_locked = 0; - avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, -1); + atomic_fetch_add(&entangled_thread_counter, -1); if (lockmgr_cb) { if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE)) return -1;