From patchwork Fri Jul 15 18:57:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Sergey Fedorov X-Patchwork-Id: 72130 Delivered-To: patches@linaro.org Received: by 10.140.29.52 with SMTP id a49csp769995qga; Fri, 15 Jul 2016 11:57:35 -0700 (PDT) X-Received: by 10.25.209.21 with SMTP id i21mr6486268lfg.5.1468609054856; Fri, 15 Jul 2016 11:57:34 -0700 (PDT) Return-Path: Received: from mail-lf0-x236.google.com (mail-lf0-x236.google.com. [2a00:1450:4010:c07::236]) by mx.google.com with ESMTPS id g7si7442569lfg.76.2016.07.15.11.57.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Jul 2016 11:57:34 -0700 (PDT) Received-SPF: pass (google.com: domain of sergey.fedorov@linaro.org designates 2a00:1450:4010:c07::236 as permitted sender) client-ip=2a00:1450:4010:c07::236; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: domain of sergey.fedorov@linaro.org designates 2a00:1450:4010:c07::236 as permitted sender) smtp.mailfrom=sergey.fedorov@linaro.org; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: by mail-lf0-x236.google.com with SMTP id l69so37522749lfg.1 for ; Fri, 15 Jul 2016 11:57:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QJMYTuqCUTMyTziR+vsshbmVBCAU4C52k3mX71mdblM=; b=V8z0+ruEhDTNTCKLn88OZkG9GhuEJBvf5gGV/cvoOpMKwLxdMklJ/whjrYi3VzJt/X 1fb58+PFw80k4VCBtHgmw40wMy6UtdDBWmeMe7IX0+nRo9wsEP0zAiQl9/asK+gyY/jI EBfRMADTAPXO0Q2U6+LDjyTKeMeeMIpZ+vjWo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QJMYTuqCUTMyTziR+vsshbmVBCAU4C52k3mX71mdblM=; b=KtUtGveu8DAxebKMJf0hve/CMr6FveZZyJwMPWmlgIdYgV1Oj0i3M7MHKht9Xnz/mn z30dMSts4EGMBclK74Owc9E4SKamZBMgdQmpslkAkID5RKUAdIXwQHiEzwgG+T1C3vy7 1oPMATNLKOCicjRZ3CPzfTXZUqBhcXIRdnpWaXJvj5ZwOVxWvID4kHOTYHMWlB633DMO drTvJ2lv8e1l9IjTJvwIj3ln59Zy11p834oxWEEQDCufZk9fhVDS8oSecS6efX02GJ6j 7+AFASFPshQF7AeV6jE8t8R/kvwjdfxz+W1GCtk++ljklOJdXrCYQAYdOm3VAJfrX/rC UCTw== X-Gm-Message-State: ALyK8tLPO/xODWB9WaG/VNS1Z9g5iq+g93c5+o6pJQuxDWXVDVLV/k50v5T2reF5goySp51KGQk= X-Received: by 10.46.32.68 with SMTP id g65mr9254032ljg.51.1468609054483; Fri, 15 Jul 2016 11:57:34 -0700 (PDT) Return-Path: Received: from sergey-laptop.Dlink (broadband-46-188-120-37.2com.net. [46.188.120.37]) by smtp.gmail.com with ESMTPSA id 35sm2126381ljb.10.2016.07.15.11.57.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 15 Jul 2016 11:57:33 -0700 (PDT) From: Sergey Fedorov To: qemu-devel@nongnu.org Cc: patches@linaro.org, Sergey Fedorov , MTTCG Devel , =?UTF-8?B?S09OUkFEIEZyw6lkw6lyaWM=?= , Alvise Rigo , "Emilio G. Cota" , =?UTF-8?Q?Alex_Benn=c3=a9e?= , Paolo Bonzini , Richard Henderson , Peter Maydell , Sergey Fedorov Subject: [PATCH v4 01/12] atomic: introduce atomic_dec_fetch. Date: Fri, 15 Jul 2016 21:57:15 +0300 Message-Id: <20160715185726.10181-2-sergey.fedorov@linaro.org> X-Mailer: git-send-email 2.9.1 In-Reply-To: <20160715185726.10181-1-sergey.fedorov@linaro.org> References: <20160715185726.10181-1-sergey.fedorov@linaro.org> MIME-Version: 1.0 From: Alex Bennée Useful for counting down. Signed-off-by: Alex Bennée Signed-off-by: Sergey Fedorov --- include/qemu/atomic.h | 4 ++++ 1 file changed, 4 insertions(+) -- 2.9.1 diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index 7e13fca351d1..560b1af703a8 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -160,6 +160,8 @@ #define atomic_fetch_and(ptr, n) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST) #define atomic_fetch_or(ptr, n) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST) +#define atomic_dec_fetch(ptr) __atomic_sub_fetch(ptr, 1, __ATOMIC_SEQ_CST) + /* And even shorter names that return void. */ #define atomic_inc(ptr) ((void) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST)) #define atomic_dec(ptr) ((void) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST)) @@ -355,6 +357,8 @@ #define atomic_fetch_or __sync_fetch_and_or #define atomic_cmpxchg __sync_val_compare_and_swap +#define atomic_dec_fetch(ptr) __sync_sub_and_fetch(ptr, 1) + /* And even shorter names that return void. */ #define atomic_inc(ptr) ((void) __sync_fetch_and_add(ptr, 1)) #define atomic_dec(ptr) ((void) __sync_fetch_and_add(ptr, -1))