Received: by 10.223.176.46 with SMTP id f43csp3879174wra; Tue, 23 Jan 2018 00:13:17 -0800 (PST) X-Google-Smtp-Source: AH8x224hvMStTbXVkN+2XV2FwxDH8AcUc7UyB+i0mPIgPlUSug4qA9r0zIE1hijofsawNjq1TYhh X-Received: by 2002:a17:902:7e0c:: with SMTP id b12-v6mr4851391plm.308.1516695197814; Tue, 23 Jan 2018 00:13:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516695197; cv=none; d=google.com; s=arc-20160816; b=lUSI2ISrAJ4COyNa469X2oYj1HTja6vWxSv2gqwhepYAlYCh2NYzuUI0tC9YEtOVR3 37odBREw1mvuV/5VYZZ9SfwDw/hfj8tDfGU0rFzEJkpRiSjUJSxNmIyEIuW0c7lhU1Rn ffhyIwYHSNRHPWnKJx8M7efEgTatOmGvfdGY2Ahk90N6H6D25KxL51TN1EvTWXnJ2lYa tMDa2ljw7kb2DMOtVwcgTW8OklqPKwmcqOV13PT5oqUEyPZT9w6OiwYM8ZNMzmkOEn8y gjRWz2ju6P0a+SdNvVEL3HEcHmv+1Pe8ad2JFEAqkp97JE+icoepkl9X+9rhsGc0Mm5M JPXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=rHKAS27tT49tuYEeuIrm3R+OsX/O7YHErhgfH/gM/l8=; b=AiQD+XaW4irwegIS23eBLz4O/VwFt6m6UlxkKm4aX2BmMEgNvyQdn7hSEmRTuZ6fRZ LDyyy3/wezWhm1EnqM/op9/SnIEoJXwVu/5sDEuORCVyaUk//SfUNT9YQc41ZuGaYD+e 1kInhmvg+JV8VY5j9doRVmXx29EqqXK6nl24DQ4V9nyxHiGNu2jS4vC+qfjxslinqmAJ b7U+2JLtwiAuthmYXvIWgkKR9lSOoUOzmnA211j0aOsYVDfefZGfg4ymXxUA7sAo/Vyc 3+plMGa0KP3UWJ25oyPDfBeYg8VlG0WkIhtVpx1Wr8HD1+anZBP0hWx9/AJAsokmHLC6 8wLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 2-v6si4356154plc.784.2018.01.23.00.13.03; Tue, 23 Jan 2018 00:13:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751265AbeAWIIs (ORCPT + 99 others); Tue, 23 Jan 2018 03:08:48 -0500 Received: from szxga06-in.huawei.com ([45.249.212.32]:38669 "EHLO huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751211AbeAWIIp (ORCPT ); Tue, 23 Jan 2018 03:08:45 -0500 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 3A55AC3B63C6B; Tue, 23 Jan 2018 16:08:32 +0800 (CST) Received: from huawei.com (10.175.102.37) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.361.1; Tue, 23 Jan 2018 16:08:26 +0800 From: To: CC: , , , , Subject: [PATCH RFC 02/16] rcutorture: Add PRCU rcu_torture_ops Date: Tue, 23 Jan 2018 15:59:27 +0800 Message-ID: <1516694381-20333-3-git-send-email-lianglihao@huawei.com> X-Mailer: git-send-email 1.7.12.4 In-Reply-To: <1516694381-20333-1-git-send-email-lianglihao@huawei.com> References: <1516694381-20333-1-git-send-email-lianglihao@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.102.37] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lihao Liang Reviewed-by: Heng Zhang Signed-off-by: Lihao Liang --- include/linux/rcupdate.h | 1 + kernel/rcu/rcutorture.c | 40 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index e1e5d002..12df9709 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -84,6 +84,7 @@ enum rcutorture_type { RCU_SCHED_FLAVOR, RCU_TASKS_FLAVOR, SRCU_FLAVOR, + PRCU_FLAVOR, INVALID_RCU_FLAVOR }; diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index ae6e574d..7d65bf0c 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -768,6 +769,43 @@ static bool __maybe_unused torturing_tasks(void) #endif /* #else #ifdef CONFIG_TASKS_RCU */ +/* + * Definitions for prcu torture testing. + */ + +static int prcu_torture_read_lock(void) __acquires(RCU) +{ + prcu_read_lock(); + return 0; +} + +static void prcu_torture_read_unlock(int idx) __releases(RCU) +{ + prcu_read_unlock(); +} + +static struct rcu_torture_ops prcu_ops = { + .ttype = PRCU_FLAVOR, + .init = rcu_sync_torture_init, + .readlock = prcu_torture_read_lock, + .read_delay = rcu_read_delay, /* just reuse rcu's version. */ + .readunlock = prcu_torture_read_unlock, + .started = rcu_no_completed, + .completed = rcu_no_completed, + .deferred_free = NULL, + .sync = synchronize_prcu, + .exp_sync = synchronize_prcu, + .get_state = NULL, + .cond_sync = NULL, + .call = NULL, + .cb_barrier = NULL, + .fqs = NULL, + .stats = NULL, + .irq_capable = 1, + .can_boost = 0, + .name = "prcu" +}; + /* * RCU torture priority-boost testing. Runs one real-time thread per * CPU for moderate bursts, repeatedly registering RCU callbacks and @@ -1764,7 +1802,7 @@ rcu_torture_init(void) int firsterr = 0; static struct rcu_torture_ops *torture_ops[] = { &rcu_ops, &rcu_bh_ops, &rcu_busted_ops, &srcu_ops, &srcud_ops, - &sched_ops, RCUTORTURE_TASKS_OPS + &sched_ops, &prcu_ops, RCUTORTURE_TASKS_OPS }; if (!torture_init_begin(torture_type, verbose, &torture_runnable)) -- 2.14.1.729.g59c0ea183