From patchwork Tue Jun 6 06:20:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sunliming X-Patchwork-Id: 690001 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EBF0AC7EE24 for ; Tue, 6 Jun 2023 06:21:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234982AbjFFGVO (ORCPT ); Tue, 6 Jun 2023 02:21:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234984AbjFFGVB (ORCPT ); Tue, 6 Jun 2023 02:21:01 -0400 Received: from mail-qk1-f194.google.com (mail-qk1-f194.google.com [209.85.222.194]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED55C10D3; Mon, 5 Jun 2023 23:20:45 -0700 (PDT) Received: by mail-qk1-f194.google.com with SMTP id af79cd13be357-75d13719304so491449885a.3; Mon, 05 Jun 2023 23:20:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686032445; x=1688624445; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=21KuDm7E1j2X3eQMy2+wyemXDR46+T1mk758fuRtSIk=; b=eEiDpA+aM5BgbrQyI0563Fqpmkrstb19/uSdDQEMcTq9Q4gkspABlAbRvziBypRR2Z 8oYj74dPPHUIfSQtaP0iebxD+c67OZtVgQfhQfy2NpQ5hx15ZG8xQR1KuDx5vqNielHy QZ1Raa42lT16hlDfTE48yNzg8YOlhsUFqss3kLdy9tnUrTeSxKclrdca1zM6weIXqJQp ULdm2aNpqhH1WQAMbfNF8LcKObh8BGJ2A9h7XYIRjplZZyLMD2x9HQK5dflBt8JGJvXN MGAKZXv7A53IL/i/zvsMLyz+XsQzIs9OAE780gi2T6MSqxQMq0e+OBDGfy4OaoOwF4Ht dq3Q== X-Gm-Message-State: AC+VfDzNsRtHD2DYQR/MyWe70wHTjBZJpymP92V6OmJNZX3ZO0nBBUMX DvV07zqZ5HHBBeEp5nr75b3sONeDNXett8Mqsw== X-Google-Smtp-Source: ACHHUZ7sV7mYt96+zd7ZHFso7k5JxEMoWC4puU+K6E95zXwv4zI5VpW9i41m8Pvto3ceWZEfuv4ZKw== X-Received: by 2002:a05:620a:6502:b0:75b:23a1:411 with SMTP id qb2-20020a05620a650200b0075b23a10411mr990861qkn.39.1686032444981; Mon, 05 Jun 2023 23:20:44 -0700 (PDT) Received: from localhost.localdomain ([116.128.244.169]) by smtp.gmail.com with ESMTPSA id w7-20020a634907000000b0052c3f0ae381sm4960841pga.78.2023.06.05.23.20.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 23:20:44 -0700 (PDT) From: sunliming To: mhiramat@kernel.org, beaub@linux.microsoft.com, rostedt@goodmis.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kelulanainsley@gmail.com, sunliming Subject: [PATCH v3 1/4] tracing/user_events: Fix the incorrect trace record for empty arguments events Date: Tue, 6 Jun 2023 14:20:24 +0800 Message-Id: <20230606062027.1008398-2-sunliming@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230606062027.1008398-1-sunliming@kylinos.cn> References: <20230606062027.1008398-1-sunliming@kylinos.cn> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org The user_events support events that has empty arguments. But the trace event is discarded and not really committed when the arguments is empty. Fix this by not attempting to copy in zero-length data. Signed-off-by: sunliming --- kernel/trace/trace_events_user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index 0d91dac206ff..698703a3d234 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -1399,7 +1399,7 @@ static void user_event_ftrace(struct user_event *user, struct iov_iter *i, if (unlikely(!entry)) return; - if (unlikely(!copy_nofault(entry + 1, i->count, i))) + if (unlikely(i->count != 0 && !copy_nofault(entry + 1, i->count, i))) goto discard; if (!list_empty(&user->validators) && @@ -1440,7 +1440,7 @@ static void user_event_perf(struct user_event *user, struct iov_iter *i, perf_fetch_caller_regs(regs); - if (unlikely(!copy_nofault(perf_entry + 1, i->count, i))) + if (unlikely(i->count != 0 && !copy_nofault(perf_entry + 1, i->count, i))) goto discard; if (!list_empty(&user->validators) && From patchwork Tue Jun 6 06:20:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sunliming X-Patchwork-Id: 690394 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B77AC7EE2E for ; Tue, 6 Jun 2023 06:21:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235292AbjFFGVb (ORCPT ); Tue, 6 Jun 2023 02:21:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234917AbjFFGVM (ORCPT ); Tue, 6 Jun 2023 02:21:12 -0400 Received: from mail-ot1-f67.google.com (mail-ot1-f67.google.com [209.85.210.67]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E28CB10EF; Mon, 5 Jun 2023 23:20:51 -0700 (PDT) Received: by mail-ot1-f67.google.com with SMTP id 46e09a7af769-6af713338ccso3409357a34.0; Mon, 05 Jun 2023 23:20:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686032451; x=1688624451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0Wp+Nr/5/fNTTFPeTaVacXKMU22jIpYdcfNJ7LUWQ4s=; b=N7+cd5NhCjywsqLyD63L4j7an4t6grXuJ2+9k7VOtBRE2QIWOGNsazmxLFQIudad1N MeYi0h9CrP2w7Mn63+tywuZIOZNykiSFi3j44CgVepLd4nFKuors2SUrT8/RZWRAdI6V akX2yP5lpV+Pp0ef/2tffhp82E21jdo/0xsGDB6FkEr0KEuKx70vq4bIPNcNKNiWgCKT C7dcccY8GMYFTmyMGK/C1zr/m6hEePJplw6c5wPL4tE8+ZpsH+NI+ryn/kWMxlLVfve/ rzZ/00U5wl/MlQKyGVsbjXM4NNr9W5yAi4Qex8huVDZuS+rGZf0Ktg6IsKCxh62St0/8 JT0w== X-Gm-Message-State: AC+VfDz/eRDy6pkaFWW29HQfIcw/Wq8u4nJJ6PeRu0WOSy1IvSnrhnmK cHlHaxCsWuHkziqldWWbWA== X-Google-Smtp-Source: ACHHUZ4lzxa5cVf6KHAc4U7TMd72sACGByjIUQNOFB5VJqIxECQZeq66I9VjVL7ejJO7+oHOTZIsZQ== X-Received: by 2002:a9d:7494:0:b0:6ad:e8ad:bb1e with SMTP id t20-20020a9d7494000000b006ade8adbb1emr684016otk.21.1686032451032; Mon, 05 Jun 2023 23:20:51 -0700 (PDT) Received: from localhost.localdomain ([116.128.244.169]) by smtp.gmail.com with ESMTPSA id w7-20020a634907000000b0052c3f0ae381sm4960841pga.78.2023.06.05.23.20.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 23:20:50 -0700 (PDT) From: sunliming To: mhiramat@kernel.org, beaub@linux.microsoft.com, rostedt@goodmis.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kelulanainsley@gmail.com, sunliming Subject: [PATCH v3 2/4] selftests/user_events: Add ftrace self-test for empty arguments events Date: Tue, 6 Jun 2023 14:20:25 +0800 Message-Id: <20230606062027.1008398-3-sunliming@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230606062027.1008398-1-sunliming@kylinos.cn> References: <20230606062027.1008398-1-sunliming@kylinos.cn> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Tests to ensure events that has empty arguments can input trace record correctly when using ftrace. Signed-off-by: sunliming --- .../selftests/user_events/ftrace_test.c | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/testing/selftests/user_events/ftrace_test.c index 6e8c4b47281c..abfb49558a26 100644 --- a/tools/testing/selftests/user_events/ftrace_test.c +++ b/tools/testing/selftests/user_events/ftrace_test.c @@ -316,6 +316,39 @@ TEST_F(user, write_events) { ASSERT_EQ(EINVAL, errno); } +TEST_F(user, write_empty_events) { + struct user_reg reg = {0}; + struct iovec io[1]; + int before = 0, after = 0; + + reg.size = sizeof(reg); + reg.name_args = (__u64)"__test_event"; + reg.enable_bit = 31; + reg.enable_addr = (__u64)&self->check; + reg.enable_size = sizeof(self->check); + + io[0].iov_base = ®.write_index; + io[0].iov_len = sizeof(reg.write_index); + + /* Register should work */ + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); + ASSERT_EQ(0, reg.write_index); + ASSERT_EQ(0, self->check); + + /* Enable event */ + self->enable_fd = open(enable_file, O_RDWR); + ASSERT_NE(-1, write(self->enable_fd, "1", sizeof("1"))) + + /* Event should now be enabled */ + ASSERT_EQ(1 << reg.enable_bit, self->check); + + /* Write should make it out to ftrace buffers */ + before = trace_bytes(); + ASSERT_NE(-1, writev(self->data_fd, (const struct iovec *)io, 1)); + after = trace_bytes(); + ASSERT_GT(after, before); +} + TEST_F(user, write_fault) { struct user_reg reg = {0}; struct iovec io[2]; From patchwork Tue Jun 6 06:20:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sunliming X-Patchwork-Id: 690000 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6987AC7EE24 for ; Tue, 6 Jun 2023 06:21:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234917AbjFFGVt (ORCPT ); Tue, 6 Jun 2023 02:21:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235027AbjFFGVQ (ORCPT ); Tue, 6 Jun 2023 02:21:16 -0400 Received: from mail-ot1-f65.google.com (mail-ot1-f65.google.com [209.85.210.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48ED2E44; Mon, 5 Jun 2023 23:20:55 -0700 (PDT) Received: by mail-ot1-f65.google.com with SMTP id 46e09a7af769-6b0d38ce700so4323507a34.2; Mon, 05 Jun 2023 23:20:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686032454; x=1688624454; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jenmxpk3FCUjrB1H59Y+BPd1oj6QHHG+nDgkIblmsLc=; b=jl6VK1lzKHRENIXwTvwq/9RkwDX+yUsOxdCFrddd8R+Tui23Hn6d0pLETOzFpd6tkr N0sa2diAiSvfdhkTOOU1+Ko6djPeIot1iT5+ijNCfQxKtiC04H/Enxinc5JwM3+mkO2g XxRAcq2Is0KWMf/hGuRaeT9xnNsX5Okqz8yUlHIaaZupbzChWk/4vTlA37O+CIBXI5VP g3E0dLHQKkcONQ+ab9hs3AxxC/D0wBIluGr+srZAZgHLz4/Vp4ORUCU/luT8s94hP0bq rv0cKvqJLh4PnhHpTf06NSihIVZMy//GHHL8tLY7IETxeTaRCpfUFFIhgYZfLWGOWbWS 6bzQ== X-Gm-Message-State: AC+VfDyFuxGnIK9ZWBpul1zf0K4hB8xDZJehqahIUJ6Bxaso6JaFLUWQ vBEQ+tMz1jUIogG5lfmVjDNUY3uvX1ApEVH9mA== X-Google-Smtp-Source: ACHHUZ4SKLh21gHOApj5OPYGpmfaNf5ntQ0gowoeOveRDuuez09xTBqHjoD3idjdHNELC9kMFBEDnA== X-Received: by 2002:a05:6830:193:b0:6b1:6958:9e1a with SMTP id q19-20020a056830019300b006b169589e1amr1383293ota.15.1686032454596; Mon, 05 Jun 2023 23:20:54 -0700 (PDT) Received: from localhost.localdomain ([116.128.244.169]) by smtp.gmail.com with ESMTPSA id w7-20020a634907000000b0052c3f0ae381sm4960841pga.78.2023.06.05.23.20.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 23:20:54 -0700 (PDT) From: sunliming To: mhiramat@kernel.org, beaub@linux.microsoft.com, rostedt@goodmis.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kelulanainsley@gmail.com, sunliming Subject: [PATCH v3 3/4] selftests/user_events: Clear the events after perf self-test Date: Tue, 6 Jun 2023 14:20:26 +0800 Message-Id: <20230606062027.1008398-4-sunliming@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230606062027.1008398-1-sunliming@kylinos.cn> References: <20230606062027.1008398-1-sunliming@kylinos.cn> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org When the self test is completed, perf self-test left the user events not to be cleared. Clear the events by unregister and delete the event. Signed-off-by: sunliming --- .../testing/selftests/user_events/perf_test.c | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/testing/selftests/user_events/perf_test.c b/tools/testing/selftests/user_events/perf_test.c index a070258d4449..e97f24ab6e2f 100644 --- a/tools/testing/selftests/user_events/perf_test.c +++ b/tools/testing/selftests/user_events/perf_test.c @@ -81,6 +81,32 @@ static int get_offset(void) return offset; } +static int clear(int *check) +{ + struct user_unreg unreg = {0}; + + unreg.size = sizeof(unreg); + unreg.disable_bit = 31; + unreg.disable_addr = (__u64)check; + + int fd = open(data_file, O_RDWR); + + if (fd == -1) + return -1; + + if (ioctl(fd, DIAG_IOCSUNREG, &unreg) == -1) + if (errno != ENOENT) + return -1; + + if (ioctl(fd, DIAG_IOCSDEL, "__test_event") == -1) + if (errno != ENOENT) + return -1; + + close(fd); + + return 0; +} + FIXTURE(user) { int data_fd; int check; @@ -93,6 +119,9 @@ FIXTURE_SETUP(user) { FIXTURE_TEARDOWN(user) { close(self->data_fd); + + if (clear(&self->check) != 0) + printf("WARNING: Clear didn't work!\n"); } TEST_F(user, perf_write) { From patchwork Tue Jun 6 06:20:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sunliming X-Patchwork-Id: 690393 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AAD27C7EE2A for ; Tue, 6 Jun 2023 06:21:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235342AbjFFGVv (ORCPT ); Tue, 6 Jun 2023 02:21:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235057AbjFFGVR (ORCPT ); Tue, 6 Jun 2023 02:21:17 -0400 Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 27971E7A; Mon, 5 Jun 2023 23:21:01 -0700 (PDT) Received: by mail-qk1-f196.google.com with SMTP id af79cd13be357-75d46c7cd6cso236203285a.3; Mon, 05 Jun 2023 23:21:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686032460; x=1688624460; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rc7PLQvFEE8X9O2VY6JsXWP7Dk9wQWFYyen6iuJwNw0=; b=PlQleMlrvEziD3KF10E3UJhzXd4aIVHD0MsKcsLCor46sY6E10l+OGahrbAtqJeGxN KcTPhsQ8QvUN9T65TKOEmvLSmbyZKWmXQzn9AQ37bupJDkJK3oP/tYrZE/u3JOx5kpLB LxRS/ANQHDg7cOIxEujCWr+E5n0UX4XmwuRaK1+3QMcyFjUaupPejRJb/AXJIB8irtPL NE6zKNLg9lDWgDk/wBG4BY1AQ/8dNEmiKdu2UWLiYo1KjCVZOS+iF7A/Kz87uQeoJAZy RcnxxgQuYqbc9Kc5wJiA1f20gRcRj0sRrorZHajvg/GqA5QbwZ6KAz57oXJJm0JK/qVU mEkw== X-Gm-Message-State: AC+VfDxjbxxQyu3osBDJxI7D1kkmk0NuUxB92is65WbR/b4SJDSTFX07 Ri+zDj16jOTGxKNXzMtrCg== X-Google-Smtp-Source: ACHHUZ6MTemUniypbt8RB6q/OMvYfJGTX2Zc6eFR1oaXfgXtfhvZBVGdVIf2m/ROdkWZBhlS5FO0Gw== X-Received: by 2002:a05:620a:26a2:b0:75b:23a1:833d with SMTP id c34-20020a05620a26a200b0075b23a1833dmr830213qkp.56.1686032460250; Mon, 05 Jun 2023 23:21:00 -0700 (PDT) Received: from localhost.localdomain ([116.128.244.169]) by smtp.gmail.com with ESMTPSA id w7-20020a634907000000b0052c3f0ae381sm4960841pga.78.2023.06.05.23.20.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 23:20:59 -0700 (PDT) From: sunliming To: mhiramat@kernel.org, beaub@linux.microsoft.com, rostedt@goodmis.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kelulanainsley@gmail.com, sunliming Subject: [PATCH v3 4/4] selftests/user_events: Add perf self-test for empty arguments events Date: Tue, 6 Jun 2023 14:20:27 +0800 Message-Id: <20230606062027.1008398-5-sunliming@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230606062027.1008398-1-sunliming@kylinos.cn> References: <20230606062027.1008398-1-sunliming@kylinos.cn> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Tests to ensure events that has empty arguments can input trace record correctly when using perf. Signed-off-by: sunliming --- .../testing/selftests/user_events/perf_test.c | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tools/testing/selftests/user_events/perf_test.c b/tools/testing/selftests/user_events/perf_test.c index e97f24ab6e2f..8b09be566fa2 100644 --- a/tools/testing/selftests/user_events/perf_test.c +++ b/tools/testing/selftests/user_events/perf_test.c @@ -189,6 +189,59 @@ TEST_F(user, perf_write) { ASSERT_EQ(0, self->check); } +TEST_F(user, perf_empty_events) { + struct perf_event_attr pe = {0}; + struct user_reg reg = {0}; + struct perf_event_mmap_page *perf_page; + int page_size = sysconf(_SC_PAGESIZE); + int id, fd; + __u32 *val; + + reg.size = sizeof(reg); + reg.name_args = (__u64)"__test_event"; + reg.enable_bit = 31; + reg.enable_addr = (__u64)&self->check; + reg.enable_size = sizeof(self->check); + + /* Register should work */ + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); + ASSERT_EQ(0, reg.write_index); + ASSERT_EQ(0, self->check); + + /* Id should be there */ + id = get_id(); + ASSERT_NE(-1, id); + + pe.type = PERF_TYPE_TRACEPOINT; + pe.size = sizeof(pe); + pe.config = id; + pe.sample_type = PERF_SAMPLE_RAW; + pe.sample_period = 1; + pe.wakeup_events = 1; + + /* Tracepoint attach should work */ + fd = perf_event_open(&pe, 0, -1, -1, 0); + ASSERT_NE(-1, fd); + + perf_page = mmap(NULL, page_size * 2, PROT_READ, MAP_SHARED, fd, 0); + ASSERT_NE(MAP_FAILED, perf_page); + + /* Status should be updated */ + ASSERT_EQ(1 << reg.enable_bit, self->check); + + /* Ensure write shows up at correct offset */ + ASSERT_NE(-1, write(self->data_fd, ®.write_index, + sizeof(reg.write_index))); + val = (void *)(((char *)perf_page) + perf_page->data_offset); + ASSERT_EQ(PERF_RECORD_SAMPLE, *val); + + munmap(perf_page, page_size * 2); + close(fd); + + /* Status should be updated */ + ASSERT_EQ(0, self->check); +} + int main(int argc, char **argv) { return test_harness_run(argc, argv);