Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2126321pxj; Thu, 20 May 2021 00:15:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJym8RgLe/9Ud0IOLyhVXIfWfrsfcuRk6Nni3puMxNLqdDc0IXpvNMzfdwXKZEnn1huEFG5y X-Received: by 2002:a17:906:a393:: with SMTP id k19mr3228980ejz.462.1621494936307; Thu, 20 May 2021 00:15:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621494936; cv=none; d=google.com; s=arc-20160816; b=MpxNwlXpUbM0wfgqJ1LitaLoI/GU1yezSw+XZjLQnt5dAfqGqbnN5HL2vRr3WLKOTy Rdy87zY5R929IgTTZH42k+TyR+8Z91uZ6NICtdm4fHb5je9cw/64rluc6O4WHH8PExKM HAjcj0aJr1AvXE70h3SMD2kZKrk5fKDd5jXoC/Pe2rlSNrKeSTyS2m+LbUDCfeob1v9q enJUdv3uppS5hwV9xZ9HKGAeP+2o6FPVWk8AkcFa7zEZNyrEyXeRFFANJa8HmC7rzaF8 wM/P5oz9PAQGXtcjJRSlZIxpp9oFh8YPke9nN1AkukPriNdKtwsW8+x7HGMYj6IUhZIZ z7hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=X397uYzu/1SGZ7jXQoaSeO5WeNNNY9/Yz6fG++yQyTE=; b=N6mZseqOIGaCtbufGLrfqPTsLzzBVXA17Kbm5ZEcS7pFWxeCHyWZUqmvZxmA6LV0K5 5RDMCWWTAtTRak7cf+kqspp7G7R70BE9PACdvuvNSoGoxRrZv69oXfqIkZF1Bw/8Bi/d e+G2MGbrklTzk+QJNazBxpHYftF2f2b/QLAGYZ0mJ9ni/H3PoxyW6E4dDLXd+9nlvL00 BbQzQ5QHBZLLb0QzEqVAHKSX8IeYyeENmo6U3HAShztKdbPTm27eZbfkHRTSDYYf+Vv8 ud/0A3G8OZLYxr7nj4FWMgWH4nd2V5GAdkGUUE2kYm/mdPKa8fwy4WGK8p6/e5XmFT0U XoKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="H/ThIPcz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g21si1245001edb.315.2021.05.20.00.15.13; Thu, 20 May 2021 00:15:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="H/ThIPcz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230102AbhETHPV (ORCPT + 99 others); Thu, 20 May 2021 03:15:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:59130 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230444AbhETHPV (ORCPT ); Thu, 20 May 2021 03:15:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621494840; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=X397uYzu/1SGZ7jXQoaSeO5WeNNNY9/Yz6fG++yQyTE=; b=H/ThIPczBjR/j/GlgN/LL3yjm28YkRxaLVkDONqVmu5CajZ8jSPP/rpu/S3h1b+l3cNLML 04RIVWAiTaOF8He5cKTVQRO1JdBLIFpBheHekLDkPKf1kMQ4IRmTO0+/k+kujEYgAvFnMM 0ZAA94wXj8WITI3Ze+R2tso3Yy+Qohk= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-282-5VCswhaJNuOsrWINEhfehA-1; Thu, 20 May 2021 03:13:53 -0400 X-MC-Unique: 5VCswhaJNuOsrWINEhfehA-1 Received: by mail-ed1-f69.google.com with SMTP id w1-20020aa7da410000b029038d323eeee3so7027945eds.8 for ; Thu, 20 May 2021 00:13:53 -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=X397uYzu/1SGZ7jXQoaSeO5WeNNNY9/Yz6fG++yQyTE=; b=rgEWM7jDGSMlyvUdEEnhbBVTj7DnyQO4NJRVksFP7S6DVP9l2LNhwFbayEzBrKInU2 A6TguHkVSKhQ9ZH4ueKEyLCGkUg2THNrVmBx2WDSg6ffsjxigXe6GcUo8B2bLZBnuw1b 3RbvdOZ9itblDn79wjgC2qP1D+kuAaH2N7YT3/Yxjom2+Xy/bGVhdSd3qjBZGms28gr4 IIvmn77JfagNiKNc9KsQsh1qfGvkGQPSPw6fqUFIwECvCi06JybNIikgSiOaxY0z/Zdg LUXvIBC//D6rgeFgv8S+0vZY1hpNFpMRoBP/49LuO6d0RNPuzDk49qvlmrVdWzEbbDy+ zNUA== X-Gm-Message-State: AOAM533H3zJ5IRuNP38kP3OCpNayWdUac4TrdGLoZlDycl/MTzyv3FfI kNTu3pCv7jvVp0w4wIAM2DCaDu6ed2TIGd5QeduVsWKYvCUf+1zVExSYXmIkT7LOBO0Wh+9+KeH +XmdLUkbxwnhSfu/Ofj3szJ3I X-Received: by 2002:a17:906:710a:: with SMTP id x10mr3270203ejj.516.1621494832170; Thu, 20 May 2021 00:13:52 -0700 (PDT) X-Received: by 2002:a17:906:710a:: with SMTP id x10mr3270183ejj.516.1621494831957; Thu, 20 May 2021 00:13:51 -0700 (PDT) Received: from x1.bristot.me (host-87-19-51-73.retail.telecomitalia.it. [87.19.51.73]) by smtp.gmail.com with ESMTPSA id qo19sm923768ejb.7.2021.05.20.00.13.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 May 2021 00:13:51 -0700 (PDT) Subject: Re: [RFC PATCH 04/16] rv/include: Add deterministic automata monitor definition via C macros To: Peter Zijlstra Cc: linux-kernel@vger.kernel.org, Steven Rostedt , Tommaso Cucinotta , Kate Carcia , Jonathan Corbet , Ingo Molnar , Mauro Carvalho Chehab , Thomas Gleixner , Will Deacon , Catalin Marinas , "Paul E. McKenney" , Joel Fernandes , Mathieu Desnoyers , Gabriele Paoloni , Juri Lelli , Clark Williams , linux-doc@vger.kernel.org References: <1e67370a0808714325b434edfe8f84178867af47.1621414942.git.bristot@redhat.com> <20210519182739.GG21560@worktop.programming.kicks-ass.net> From: Daniel Bristot de Oliveira Message-ID: Date: Thu, 20 May 2021 09:13:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210519182739.GG21560@worktop.programming.kicks-ass.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/19/21 8:27 PM, Peter Zijlstra wrote: > On Wed, May 19, 2021 at 01:36:25PM +0200, Daniel Bristot de Oliveira wrote: > >> +struct da_monitor { >> + char curr_state; >> + bool monitoring; >> + void *model; >> +}; >> + >> +#define MAX_PID 1024000 > >> +/* >> + * Functions to define, init and get a per-task monitor. >> + * >> + * XXX: Make it dynamic? make it part of the task structure? > > Yes ! > > I'd start with maybe adding a list_head to da_monitor and embedding a > single copy into task_struct and link from there. Yes lists suck, but > how many monitors do you realistically expect to run concurrently? Good to know I can use the task struct! This will make my life easier. I did it this way because I started doing the code all "out-of-tree," as modules... but being in kernel gives such possibilities. I will try to implement your idea! I do not see many concurrent monitors running, and as the list search will be linear to the number of active monitors... it might not even justify any more complex data structure. Thanks Peter! -- Daniel >> + */ >> +#define DECLARE_DA_MON_INIT_PER_TASK(name, type) \ >> + \ >> +struct da_monitor da_mon_##name[MAX_PID]; \ > > That's ~16M of memory, which seems somewhat silly. > >> + \ >> +static inline struct da_monitor *da_get_monitor_##name(pid_t pid) \ >> +{ \ >> + return &da_mon_##name[pid]; \ >> +} \ >> + \ >> +void da_monitor_reset_all_##name(void) \ >> +{ \ >> + struct da_monitor *mon = da_mon_##name; \ >> + int i; \ >> + for (i = 0; i < MAX_PID; i++) \ >> + da_monitor_reset_##name(&mon[i]); \ >> +} \ >> + \ >> +static void da_monitor_init_##name(void) \ >> +{ \ >> + struct da_monitor *mon = da_mon_##name; \ >> + int i; \ >> + \ >> + for (i = 0; i < MAX_PID; i++) { \ >> + mon[i].curr_state = model_get_init_state_##name(); \ >> + mon[i].monitoring = 0; \ >> + mon[i].model = model_get_model_##name(); \ >> + } \ >> +} \ >