From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=BZwo6MvW; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id 287315A026F for ; Tue, 21 Oct 2025 10:01:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761033664; 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:autocrypt:autocrypt; bh=x6ToguGsawqp898BFz1+FIDLN3ZNNeGn81VWfmS9zbI=; b=BZwo6MvW26ButtmkiZYJRPw4CX/PHp1UGEppvu5y3mC50arjIpaDITA9IAbqJdOKxaKamS dGu0WsZNcAGIs/C01AQW4sgowj+A/ODywkrZRSpuuDBD0SJLBwmoAWO35UJwWm8KYinXtB gK0EXcgmLxCzNAotM9FVCaFiVj90eKA= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-613-6HvlAS3TMjeJzdmqRow_dQ-1; Tue, 21 Oct 2025 04:01:02 -0400 X-MC-Unique: 6HvlAS3TMjeJzdmqRow_dQ-1 X-Mimecast-MFC-AGG-ID: 6HvlAS3TMjeJzdmqRow_dQ_1761033661 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-427091d7f2fso1575400f8f.2 for ; Tue, 21 Oct 2025 01:01:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761033661; x=1761638461; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=x6ToguGsawqp898BFz1+FIDLN3ZNNeGn81VWfmS9zbI=; b=uDqZIRCyFpDFgCmwa7ReHcHBfD12pWwyl3+0HOKgQ0QEb2X3Q9lXaFiwLBM+Jg/tqU GqbO9ZIQvR93q1QBMsk/lRvAndrAoMHd3o0/ZV1vI8h/fP78sVKB6umd09NHwuvukaXg j4dt7gS9EdZHQQjO8lf3HBfH3b1fxOIn4NGBtH7g+HG17XL5ex0y87xwnwLYTAb4rYNv 8/YvScQaC6GQLqb0WxQ4+AWee7xdVVy8zinZxymwuQjOImBS47qsYueMEqzC8fyy045S H4qYEH8ELz/Bc9n+ULhTTOgRlcmMB6JNEcPWtlz6Qse0hny5KEH/WNVo0N7c1URJTC9p D1+g== X-Gm-Message-State: AOJu0YxBcqWBtE+ObZjq6JdhbNAgS3VIM3ZJHLPVx3cwZbMDuOGfWd/u cRmMUC5m8vCInbOcql8XR0hsJ+GNsTE6pES/uLZOGBAtK60ONBMT/qP1jKx+nCmg2Vk9Sf84/TQ 9CS7QYQyaO8G6G8zeXdRDnblNWv9tZ5+81R/f2i1RvcyuRPVlcmGO9Q== X-Gm-Gg: ASbGncucxuk16giy8Ws+wwRnbvBe+4uVB0yYBYntne7XwO8IfGiA0RqY54JrZiGzm/I 9JoL0rPWbrK9VTfCRyISCnKf5HNHIvYmysrJqibdWkAMZKyaSFtX8hbgq8s0+Mk5ojWI5DEjvmV QMJOF2XGHjGIwcgQWZQmcMDQs7oTiWkjviG+TgWldhTC/3plraswjJaHOFouLDPAcQyp880LAXL R4KSqWQOx9H5gfaxTNlEaq7bGobpAJyG3QR4lPgc/uZAib/c0C2xfOwJs/PcJK+MH+iWfEL7wI/ NiGnldNsDM95z7VM0rm4c6aKf2OdqoPiV7rqMkNnNXpbM8/3oc6cIKxgdMmoiCQ4CQsne3mcJl+ Dv9eAgBQ4XUC+fHK5rQ55A7TjBW4KP9Tv52+kHA== X-Received: by 2002:a5d:5d82:0:b0:428:3fcb:197f with SMTP id ffacd0b85a97d-4283fcb1b44mr6735886f8f.63.1761033660587; Tue, 21 Oct 2025 01:01:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEFx2T6+/pZEF0EC/jZlWIGrRm5C2hnIxPVdskAUxgLiqHndvzwzhoN3wTHngtM2I5SxmrqSQ== X-Received: by 2002:a5d:5d82:0:b0:428:3fcb:197f with SMTP id ffacd0b85a97d-4283fcb1b44mr6735851f8f.63.1761033659989; Tue, 21 Oct 2025 01:00:59 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:343a:68f:2e91:95c? ([2a01:e0a:e10:ef90:343a:68f:2e91:95c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-427f00ba070sm19248870f8f.42.2025.10.21.01.00.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Oct 2025 01:00:59 -0700 (PDT) Message-ID: <997ad29f-4c62-495b-b4bf-7405dbc55537@redhat.com> Date: Tue, 21 Oct 2025 10:00:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 7/7] passt: Move main event loop processing into passt_worker() To: David Gibson References: <20251017103129.229412-1-lvivier@redhat.com> <20251017103129.229412-8-lvivier@redhat.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: WT8utDdBbfm3OYpP-8h9iit3VvZnC7vXgLEvP53CCuQ_1761033661 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID-Hash: 7RKMU4O6FI5ACVVPEKBUBC3CIJ2ARHI3 X-Message-ID-Hash: 7RKMU4O6FI5ACVVPEKBUBC3CIJ2ARHI3 X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On 20/10/2025 03:43, David Gibson wrote: > On Fri, Oct 17, 2025 at 12:31:29PM +0200, Laurent Vivier wrote: >> Extract the epoll event processing logic from main() into a separate >> passt_worker() function. This refactoring prepares the code for future >> threading support where passt_worker() will be called as a worker thread >> callback. >> >> The new function handles: >> - Processing epoll events and dispatching to protocol handlers >> - Event statistics tracking and printing >> - Post-handler periodic tasks (timers, deferred work) >> - Migration handling >> >> No functional changes, purely a code restructuring. >> >> Signed-off-by: Laurent Vivier > > Looks good as far as it goes, and I've though often in the past that > it would make more sense for the "engine" to go in its own function. > > Wondering if it would make more sense to include the epoll_wait() > itself and the loop in this function, rather than leaving that > outside. > When I introduce the multithreading and the multiqueue, as the thread is driven by the epollfd, the events are managed by the multiqueue part and the epollfd by the multithread part. The "threading" worker is: static void *threading_worker(void *opaque) { struct threading_context *tc = opaque; while (true) { struct epoll_event events[NUM_EPOLL_EVENTS]; int nfds; nfds = epoll_wait(tc->epollfd, events, NUM_EPOLL_EVENTS, TIMER_INTERVAL); if (nfds == -1 && errno != EINTR) die_perror("epoll_wait() failed"); tc->worker(tc->opaque, nfds, events); } return NULL; } And the passt worker is registered with: threading_worker_set(0, passt_worker, NULL, &c); where: int threading_worker_set(unsigned int threadnb, void (*worker)(void *, int, struct epoll_event *), bool (*is_valid)(void *, unsigned int criteria), void *opaque) { struct threading_context *tc; if (threadnb >= ARRAY_SIZE(threads)) return -1; tc = &threads[threadnb]; tc->worker = worker; tc->is_valid = is_valid; tc->opaque = opaque; return 0; } Thanks, Laurent