From patchwork Sun Aug 27 15:57:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826917 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=La/9oz/c; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMBq1N1Kz1yZ9 for ; Tue, 29 Aug 2023 06:11:15 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYT-00083p-Az; Mon, 28 Aug 2023 16:09:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYS-00083d-4J for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:44 -0400 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYP-0007KP-W4 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:43 -0400 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-4ff09632194so5829453e87.2 for ; Mon, 28 Aug 2023 13:09:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253380; x=1693858180; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dbhAj08KImMbc5WgMU+hBPHTP5Ms6a+YvM+aYhMORU8=; b=La/9oz/c4RqUcF6ejn8c4GnWqJMVTQHvbQZxibT1WCREo9H0ubzq7wVw9AZg5XkaZ7 CRNDZgRjiIoXSCbUuVq+dI59IWAi21foQhHXs6r1aRPUqow8hlsZbonkrVm8uxMJOPMX FDSBYyOVsBq8vLWL0jmHKcWJDxmy5GL7MCN1oT+JLH1vNVBwFwdyx3/ktUFZQJT1S/Nz DCWrZISgQm7NeA1XA1FMsdwBE813leHK26UfrHq+ksEL55gGp7mXYlTWWjXoZ003/c5z NJgqQ8SeGlLf3Q51a5GFPQqv1tOY/+8WqZCE/bVmJfpSHnagnvaVWm1ygkft8zcyrMx6 nHgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253380; x=1693858180; 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=dbhAj08KImMbc5WgMU+hBPHTP5Ms6a+YvM+aYhMORU8=; b=UO90tP2UrZ6obw81TOj4kSWzyA1aW+/ScNvMHK9OFKxPD1dzw9VUGpIzCvaLvfmWOk dP4kkQBv9D7gwhqG8jnihsSr13gOM7PS2ecJytH/sEkBeVuiwCEujvM0yyxqZkeSjUUR 9vP3nRsI/wE/z9jrns/P/lsQGsm/Qv8eQGkvRE5hA+nIV9z7rBIIcnXiNAz1PJDGzvzx cBK2LSaOJunGYRBF5jQsXOaM2L3iYQaOIDESQopQQvbqAQOBqURSM8l0grMlTUHLA+rP r6NHJw2Zh/j912fnktGxXb4tFniTLpj16t4AjlgGbMKPsLZyQ/6pYr6vqYSN5WA8w9XQ aDHQ== X-Gm-Message-State: AOJu0YxlEqjvTwCGnrP4EbkDs5ycep0H1mHTbIT+XDUULesv6V0dSwOK KnHscMRWxM+SnIWiF9l5JV96asTMYEnGaw== X-Google-Smtp-Source: AGHT+IEGsjyuXD+mOUef1EmG3IL1w8WwYC6SiGoWRcJTtRMMnLVyoY+u93xQnU6RX30XUfglTnt4sg== X-Received: by 2002:ac2:4c07:0:b0:500:12c6:c915 with SMTP id t7-20020ac24c07000000b0050012c6c915mr16308664lfq.67.1693253379523; Mon, 28 Aug 2023 13:09:39 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:39 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Kyle Evans , Karim Taha Subject: [PATCH 01/32] bsd-user: define TARGET_RFSPAWN for rfork to use vfork(2) semantics. Date: Sun, 27 Aug 2023 17:57:15 +0200 Message-Id: <20230827155746.84781-2-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::130; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lf1-x130.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Kyle Evans Signed-off-by: Kyle Evans Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/syscall_defs.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bsd-user/syscall_defs.h b/bsd-user/syscall_defs.h index e4825f2662..daf7f5637e 100644 --- a/bsd-user/syscall_defs.h +++ b/bsd-user/syscall_defs.h @@ -179,6 +179,10 @@ struct target_freebsd__wrusage { struct target_freebsd_rusage wru_children; }; +/* sys/unistd.h */ +/* user: vfork(2) semantics, clear signals */ +#define TARGET_RFSPAWN (1U << 31) + #define safe_syscall0(type, name) \ type safe_##name(void) \ { \ From patchwork Sun Aug 27 15:57:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826914 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=d9I3ClXV; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZM9j18zWz1yZ9 for ; Tue, 29 Aug 2023 06:10:16 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYW-00084Q-1x; Mon, 28 Aug 2023 16:09:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYU-00084I-VA for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:46 -0400 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYS-0007Ke-Qn for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:46 -0400 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-522bd411679so4780541a12.0 for ; Mon, 28 Aug 2023 13:09:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253383; x=1693858183; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PFNgHRhY13yJagY0ZOeRM3jCRo6vXgEQlGw8Bpoa4tg=; b=d9I3ClXVkBbT9zoJ/GspOYLvTozatz0OOWwFZ/o4WnkDTaZWHqo3ESs2XE4jkce7Lg MzpAL/iqycClSvLMrEyL9Xpux5ztqECvPk5Qg3Je5OuJtofs9M/MGiNlsl9W55fHbInw YW3tt3qsrR/BMqu6+Dm6z61v8F8CtNCQJjyoRIrWW+nUSNAMaDlKfkuZN3B9VU10z/Eh j4lzT1wVyQx2ecUimPM+mOTz+rEsozTCnJkzmxImxAObRu3/3/Okuh8a3rHbe5RbZR35 6hkx/+lDB2/kv3zINKP6P6+y1ludv0UUOgflxhb/EC44Xs/WanjX1lWNE4RJLP+N4c39 UWNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253383; x=1693858183; 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=PFNgHRhY13yJagY0ZOeRM3jCRo6vXgEQlGw8Bpoa4tg=; b=IDluuW3FM7uxTrhfad8c5bmPj9nHoq/J2AIGw89+d7izXsP/nQkJ/iVx5YFgiN9TFK 2+DHnrf+G5Bj/xVmoMX68hx6nItyCUJdlhhyNQbDW4uqVFo8x5DoN5U3ZxRNb2s66Kau +CIxks+CVRtb2G2nTrYxH6Qv6gz0XHwSGmqnyCaLlU/LV6SS3ykTVSSY4aL8KkGlTW0f entjwvIhKBWqeZzPeTg97tVeuxNcQroX4leJxujIG9B+84z6NvXAZQJ9HBBV/2c+zXgI laBrtnHH9I8Wj9T2qzyTWU9nRpO9t7kzXOXzgIK1j812xq7QII6S6E68Z2OelSO3idXE QVPg== X-Gm-Message-State: AOJu0YxbRWZ0J6jZSa0NmWNrFyTaPpFWvHccT2OYSYIPmSaIOeuz5yHg YrhJMtdA7oGSb5KeNiLqv6bTvlXspC3kdQ== X-Google-Smtp-Source: AGHT+IFYJBISP2tuD6rfeRXdnhlfTJ4u/TdgQgJ0Fqovb7M2IdAgofwZ6S7EaAKmdnavb6hTc9njzw== X-Received: by 2002:a17:906:30da:b0:9a1:2a25:197e with SMTP id b26-20020a17090630da00b009a12a25197emr20191674ejb.50.1693253382852; Mon, 28 Aug 2023 13:09:42 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:42 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 02/32] bsd-user: Implement procctl(2) system call. Date: Sun, 27 Aug 2023 17:57:16 +0200 Message-Id: <20230827155746.84781-3-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::52a; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ed1-x52a.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Implement procctl flags and related structs: struct target_procctl_reaper_status struct target_procctl_reaper_pidinfo struct target_procctl_reaper_pids struct target_procctl_reaper_kill Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/syscall_defs.h | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/bsd-user/syscall_defs.h b/bsd-user/syscall_defs.h index daf7f5637e..25b3d304ca 100644 --- a/bsd-user/syscall_defs.h +++ b/bsd-user/syscall_defs.h @@ -183,6 +183,48 @@ struct target_freebsd__wrusage { /* user: vfork(2) semantics, clear signals */ #define TARGET_RFSPAWN (1U << 31) +/* + * from sys/procctl.h + */ +#define TARGET_PROC_SPROTECT 1 +#define TARGET_PROC_REAP_ACQUIRE 2 +#define TARGET_PROC_REAP_RELEASE 3 +#define TARGET_PROC_REAP_STATUS 4 +#define TARGET_PROC_REAP_GETPIDS 5 +#define TARGET_PROC_REAP_KILL 6 + +struct target_procctl_reaper_status { + uint32_t rs_flags; + uint32_t rs_children; + uint32_t rs_descendants; + uint32_t rs_reaper; + uint32_t rs_pid; + uint32_t rs_pad0[15]; +}; + +struct target_procctl_reaper_pidinfo { + uint32_t pi_pid; + uint32_t pi_subtree; + uint32_t pi_flags; + uint32_t pi_pad0[15]; +}; + +struct target_procctl_reaper_pids { + uint32_t rp_count; + uint32_t rp_pad0[15]; + abi_ulong rp_pids; +}; + +struct target_procctl_reaper_kill { + int32_t rk_sig; + uint32_t rk_flags; + uint32_t rk_subtree; + uint32_t rk_killed; + uint32_t rk_fpid; + uint32_t rk_pad0[15]; +}; + + #define safe_syscall0(type, name) \ type safe_##name(void) \ { \ From patchwork Sun Aug 27 15:57:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826936 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=Vw57Euc1; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMD40Qn7z1yZ9 for ; Tue, 29 Aug 2023 06:12:20 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYZ-00085D-TF; Mon, 28 Aug 2023 16:09:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYY-00084n-BV for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:50 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYW-0007M9-3r for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:50 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2bcc187e0b5so55539951fa.1 for ; Mon, 28 Aug 2023 13:09:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253386; x=1693858186; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q1pQkOPxif6RkQkw16h21pj3Ra8V8ap9FhBipr/WEhc=; b=Vw57Euc1jEsX+y3QdbDi+cBMAEntYXQ0kG47dZ6Nsi7XlIYeBoyYOzAxge+G6sRNNi 9nykmyJOYcEkoYicH1DfkmBEWYpvOutCi0PBBQT/yvJ7aV0aNxtcYLQF8LANdGiRiME5 dl7IM5ZWv4dPMRIH0DTx5Y35wHK1YyETkaWCDjo5TCf8dTXIq0SA7FSywgRMMZCbJOmC iA7rwe02mYDE2IBpSkxgpGniSG9U80X1CfKqlz5NV+e+DlIID5yPf/lRUREXg+Rwy0GY LbyM0ICs46DsyJWAVd8CvEfkzzA3lCy6ws64J2mh9NQ5F03CiFqgeWZYhgwayGCPXOT5 5nwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253386; x=1693858186; 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=Q1pQkOPxif6RkQkw16h21pj3Ra8V8ap9FhBipr/WEhc=; b=YLFsSS+puo8SfRMzpZActi59fQzG/Xoqd788FjtL3R9YxApfr8gD/zHQb5yR97j76U CQ2hwi+Mzduved0NX+ovIrVObH9/JNWHHx1biQMIuGVblvyCAkCb6NVwjEkkzOtKhusP xfcyaa7MRMGEZpTtx7HagcQAVgyzeUOWTVi49noha8tlU5aiB/upS1KqW2krqZSSocaz qbY4Xg/3HA7HlikGRMYbZr5bQDxkqSBevY90wVxhpabf68QOgvtEldzffZvPStTT9tW2 v4b1kgoyFeoe+sEUsS4YS8g75aJmWhTXmOK/wx5/FCVLCLzNPmhaAAv+C6xhnuZvRjq5 UJgQ== X-Gm-Message-State: AOJu0YwnZXSxpmuG7DDtqydKs8PeT9CSJ1OkpzmDsa2Mfvm0A7U8JXfi 2mFbMcxik756Iw+Tdu4Z6Cc1mUSol5AWvw== X-Google-Smtp-Source: AGHT+IFqGm3metR2WlQBz8nFBf2KY8tcis9CD1DWqj1LTNQPdYNxRXQZ+8jPRefYWstmmQ4J2D7CCw== X-Received: by 2002:a05:651c:104:b0:2bc:c326:54a2 with SMTP id a4-20020a05651c010400b002bcc32654a2mr15433816ljb.50.1693253385616; Mon, 28 Aug 2023 13:09:45 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:45 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 03/32] bsd-user: Implement host_to_target_siginfo. Date: Sun, 27 Aug 2023 17:57:17 +0200 Message-Id: <20230827155746.84781-4-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::233; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x233.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Used in wait6 system call Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/signal-common.h | 1 + bsd-user/signal.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/bsd-user/signal-common.h b/bsd-user/signal-common.h index 6f90345bb2..e37e1c3f9c 100644 --- a/bsd-user/signal-common.h +++ b/bsd-user/signal-common.h @@ -35,6 +35,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp); long do_sigreturn(CPUArchState *env, abi_ulong addr); void force_sig_fault(int sig, int code, abi_ulong addr); +void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info); int host_to_target_signal(int sig); void host_to_target_sigset(target_sigset_t *d, const sigset_t *s); void process_pending_signals(CPUArchState *env); diff --git a/bsd-user/signal.c b/bsd-user/signal.c index 4db85a3485..3ee2ceb910 100644 --- a/bsd-user/signal.c +++ b/bsd-user/signal.c @@ -311,6 +311,12 @@ static void tswap_siginfo(target_siginfo_t *tinfo, const target_siginfo_t *info) } } +void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info) +{ + host_to_target_siginfo_noswap(tinfo, info); + tswap_siginfo(tinfo, tinfo); +} + int block_signals(void) { TaskState *ts = (TaskState *)thread_cpu->opaque; From patchwork Sun Aug 27 15:57:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826927 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=UXe45DZq; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCn3ZSMz1yZ9 for ; Tue, 29 Aug 2023 06:12:05 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYc-00085T-5c; Mon, 28 Aug 2023 16:09:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYa-00085E-Vz for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:53 -0400 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYY-0007MT-SW for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:52 -0400 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-99df431d4bfso476349966b.1 for ; Mon, 28 Aug 2023 13:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253389; x=1693858189; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sIeO8W0baR2FISp4wtor7bsCo4X20vsw4pEiY+bS7hY=; b=UXe45DZqSjV/7ERj8gOsg3X3JtRofUv76ggCYfIm4gDnZE4ys9wllrzspMx2H3+cXo 3JirH3anyQol8pITozuof3EeCuL1STRtzb2RGIHXuGgryU34sat2rbMwMkpXoQCrvj9a WKGtArkvFj0ok7YSlQHyBCve476O9B9CAJpoempIhLvOKYb9WoBI0/JOlrCR/Ke4ljgF 16Yvh9D9JjvBJZNyhonCxcVVSXGIyHZ0wBQNOBsYZgGJuZVED8LDkzQyl1g2UuXa5Vd1 sjQSylsi67MbL/ifgtjJVtaGz6b6N8W53l3zNJV+0qXDUfAGW1w7pZ1j6ZfdFz8dBEUb geiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253389; x=1693858189; 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=sIeO8W0baR2FISp4wtor7bsCo4X20vsw4pEiY+bS7hY=; b=immJglHQTP9bc8JL5PMPS2oYfll8XqPP4U3y6QcHWgStyUzM7c2/13CVphlLBSu8Gf nFeWFVRarccPYlZlyDeXqLsWIZyj+dMNh1/o9xsBkgof2TxIvB9KVY6ZSLwOQqZ0FbZR zcAyQpeHPjw79moPW6Ml4HFlLlHFhXyegS8vI/39Uv99LZBvI8icLiFcUY6SnsDjAp7G b2Yjq6tJ3KWvC3quHsoVVqf3nhoIT+1mM+U8naIfbQlSCEKyM3HnN08ZSVRT/JNMo6JM H/timuFMzMlKH9eASsSJnYA7DcMcMpDnEofvvcwLrnT4sL7Xhg4Q+edEtmo/jiIAqhBO cf5Q== X-Gm-Message-State: AOJu0Ywen2B7lvQH/gkNY2775AZL1xA5jvYXrVb5vt4xnNmfewcPk5nN 9OLYaF9QJUAHVmPL9cD0cWipszgU0T7mXw== X-Google-Smtp-Source: AGHT+IFI2EjjaRlpAR3b935AUJQNH5mHU3elIFh0nC2+/IdRJ8AkTbL95wz9T/41kNm6spMFoXkr0A== X-Received: by 2002:a17:906:2932:b0:99b:4ed4:5527 with SMTP id v18-20020a170906293200b0099b4ed45527mr19047930ejd.25.1693253389331; Mon, 28 Aug 2023 13:09:49 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:49 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 04/32] bsd-user: Add freebsd_exec_common and do_freebsd_procctl to qemu.h. Date: Sun, 27 Aug 2023 17:57:18 +0200 Message-Id: <20230827155746.84781-5-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62a; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62a.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/main.c | 2 +- bsd-user/qemu.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bsd-user/main.c b/bsd-user/main.c index 381bb18df8..b94b2d34b6 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -88,7 +88,7 @@ unsigned long reserved_va = MAX_RESERVED_VA; unsigned long reserved_va; #endif -static const char *interp_prefix = CONFIG_QEMU_INTERP_PREFIX; +const char *interp_prefix = CONFIG_QEMU_INTERP_PREFIX; const char *qemu_uname_release; char qemu_proc_pathname[PATH_MAX]; /* full path to exeutable */ diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index 6724bb9f0a..23bbdd3e0c 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -113,6 +113,7 @@ typedef struct TaskState { } __attribute__((aligned(16))) TaskState; void stop_all_tasks(void); +extern const char *interp_prefix; extern const char *qemu_uname_release; /* @@ -251,6 +252,12 @@ abi_long get_errno(abi_long ret); bool is_error(abi_long ret); int host_to_target_errno(int err); +/* os-proc.c */ +abi_long freebsd_exec_common(abi_ulong path_or_fd, abi_ulong guest_argp, + abi_ulong guest_envp, int do_fexec); +abi_long do_freebsd_procctl(void *cpu_env, int idtype, abi_ulong arg2, + abi_ulong arg3, abi_ulong arg4, abi_ulong arg5, abi_ulong arg6); + /* os-sys.c */ abi_long do_freebsd_sysctl(CPUArchState *env, abi_ulong namep, int32_t namelen, abi_ulong oldp, abi_ulong oldlenp, abi_ulong newp, abi_ulong newlen); From patchwork Sun Aug 27 15:57:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826930 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=HffbjqPw; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCt4hHjz1yZ9 for ; Tue, 29 Aug 2023 06:12:10 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYf-00085x-MU; Mon, 28 Aug 2023 16:09:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYe-00085l-9U for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:56 -0400 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYb-0007Mn-Th for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:56 -0400 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-99357737980so465110066b.2 for ; Mon, 28 Aug 2023 13:09:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253392; x=1693858192; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ETrIkboCdNG5TY6Olv4gNscxKovUUjaRuzTvH5OG5es=; b=HffbjqPwN8YiBfcZnG8/RFU7oxYvouiDTWF4bwGz4omEKE9D5H7KtKpYZ+UukBhhVp zG6r2kWi2RsU5JDcbn1wnXB0uQY9P3uKCADupb6P9pbI3uEpATl8qvxCs/fxOQ96atwV WFgkC0HBPdaSn0aINyM1yr+TOfoF+QBrMsI9y/bQFIWyTzrOBgxdpLZOOs+bH82ApDNW ALC+7pzTgkeG0YYmNC+3Y4eRuRP0z+HyICOH27+LEla9ubCO2v4MSBgNfN8pbOZDcMNX FI8N/nlWvLEibuISjxWYYtOJ4uQB2t1CBYRJqZYmiQxc/DGiEYzSZNg/TIzLz4y5Qo+r h5qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253392; x=1693858192; 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=ETrIkboCdNG5TY6Olv4gNscxKovUUjaRuzTvH5OG5es=; b=fsw1gSi90x7AqYpiwTNrOW9I3XH5zyJmnjUU68ykQV/U5F9qqVrJ+a5Fnryl49durT ZLGdi91bjJFMhELxbquU7eYZkAeH3VVCaUep6iT8C55BUB43wnWSmLkjZpHGC7u2B2Pq X/GiYyB9z3eO2HYf3GvlYBQsR6+xZvIf90DbwpqQV6aZ6xy0Dp79H5Wy3gX/+uTkdB20 MAC1TUPyKBfjThNb0MDZnr4o1e63qRhuNBVsxihFnK1Inx4PrQV5xrF9HGmuMBC/oHFX YcKN0flbqF4pTrg3d9dWkSs3lKWPX10Qn28kC4NDtI1V6IyA5JRlGHNvCDK/ZACOCqJh gykg== X-Gm-Message-State: AOJu0YxFZ1bO0by7JcATu9nnU2S9GVOMLQIDttQaZZZAy0e5ajigeKQ7 cZmXYWAJooPuAT0XiKwXhAiOJ87oV1ZaSw== X-Google-Smtp-Source: AGHT+IH/clYZWHFwv+qNl3TTmuIabmmgZ7ismPJwgZ5dhfUvsp7n9Oh56FLuB9ur/QU7hE7LSn9RCw== X-Received: by 2002:a17:907:75fb:b0:9a4:ea7a:d0bb with SMTP id jz27-20020a17090775fb00b009a4ea7ad0bbmr7398200ejc.76.1693253392280; Mon, 28 Aug 2023 13:09:52 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:52 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 05/32] bsd-user: add extern declarations for bsd-proc.c conversion functions Date: Sun, 27 Aug 2023 17:57:19 +0200 Message-Id: <20230827155746.84781-6-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::632; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x632.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/qemu-bsd.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 bsd-user/qemu-bsd.h diff --git a/bsd-user/qemu-bsd.h b/bsd-user/qemu-bsd.h new file mode 100644 index 0000000000..b93a0b7fd5 --- /dev/null +++ b/bsd-user/qemu-bsd.h @@ -0,0 +1,38 @@ +/* + * BSD conversion extern declarations + * + * Copyright (c) 2013 Stacey D. Son + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#ifndef QEMU_BSD_H +#define QEMU_BSD_H + +#include +#include + +/* bsd-proc.c */ +int target_to_host_resource(int code); +rlim_t target_to_host_rlim(abi_llong target_rlim); +abi_llong host_to_target_rlim(rlim_t rlim); +abi_long host_to_target_rusage(abi_ulong target_addr, + const struct rusage *rusage); +abi_long host_to_target_wrusage(abi_ulong target_addr, + const struct __wrusage *wrusage); +int host_to_target_waitstatus(int status); +void h2g_rusage(const struct rusage *rusage, + struct target_freebsd_rusage *target_rusage); + +#endif /* QEMU_BSD_H */ From patchwork Sun Aug 27 15:57:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826925 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=fbi9+D+N; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCV2004z1yZ9 for ; Tue, 29 Aug 2023 06:11:50 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYi-00086T-97; Mon, 28 Aug 2023 16:10:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYf-00085w-L0 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:57 -0400 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYd-0007Mx-FP for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:09:57 -0400 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-99de884ad25so484487266b.3 for ; Mon, 28 Aug 2023 13:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253394; x=1693858194; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4iSOxLEnRmlavXANl3gqOotvuJhzKvKKZdyP5X9HPaY=; b=fbi9+D+NbCwA4HiNy1AlK/6nW02NdzBv04mn1HMJ06MqrLWHXLgyEU3Mli0WFCMXql Tr2FoS1ba8DxwAAhT5tSdRTuXb+jMFjJkn+TtoFmI63gmzPHveRo+kZXX0Al/AVUpEz8 8QTxkMu3l5VB9KVZtvF+3KX7HunTMKBs+QjxBvbrxFW/T9oKy6jXws+bUYhmR+j8RrsI iRKLUq5/oxLfc1h+OT/YGOqYYIAEA8UI6s36COeMJ9WTdFA4CwUDbx8zdQYrXXHOC7iQ wr9EYMy+9JTtHm7JRD9mKh/FSxluyGJ9r6VpToDfgmEU7FKDAJ12xbJ5rdv2Kz7pPeg5 LI0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253394; x=1693858194; 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=4iSOxLEnRmlavXANl3gqOotvuJhzKvKKZdyP5X9HPaY=; b=iO4RsHGs7ja7tDsoL4ClonyWlJ1hFGMPL1tlrakN5OOB3rr+ewsL3lh7SCLH6n95lr DATMUYmvQCiZen/29BTBzfrPgVi2cDTOxZNKzgGqaoXpRWZtqshq6XmK6AzCRJ2hXiE6 FUmP7Dcj1j9yKqrbi7OH6YHhmDpnIF+EzL541negMlAlNlkJy5i+yqW+yMVX0NBn3ai8 BcWecvSUkPOkyeInjhcwBxV631KLBKMdGFEkxFdJfGf+SEOzRWBVv/qIDN/YfSkZUvsv 5Fmb3d/FQqjH10ufN9wxaYIfzk7bjfNnUb8K/zeDHnhhg/hIn3LTiDvipt4cy3zPPQFY n6hw== X-Gm-Message-State: AOJu0Yx2B+9UtcfEqVlSxy59AkNwual3dVx5bwxSorvVpRzDSOKh7oz/ vDUF0vKvzVXOeDnCgs5kjC2hCQguUCRfDQ== X-Google-Smtp-Source: AGHT+IEkmiREQG85IEJKqj+gwYuardZ3dDpryZ8jbw0QIw+ekvXjAtlRd0scRMLgTsQpeif0Jdf3hA== X-Received: by 2002:a17:906:cc18:b0:99b:f58d:1c49 with SMTP id ml24-20020a170906cc1800b0099bf58d1c49mr22079541ejb.53.1693253393875; Mon, 28 Aug 2023 13:09:53 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:53 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Karim Taha Subject: [PATCH 06/32] bsd-user: Add bsd-proc.c to meson.build Date: Sun, 27 Aug 2023 17:57:20 +0200 Message-Id: <20230827155746.84781-7-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::632; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x632.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Warner Losh Signed-off-by: Warner Losh Signed-off-by: Karim Taha --- bsd-user/bsd-proc.h | 4 ++++ bsd-user/meson.build | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index a1061bffb8..048773a75d 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -22,6 +22,10 @@ #include +#include "qemu-bsd.h" +#include "gdbstub/syscalls.h" +#include "qemu/plugin.h" + /* exit(2) */ static inline abi_long do_bsd_exit(void *cpu_env, abi_long arg1) { diff --git a/bsd-user/meson.build b/bsd-user/meson.build index 5243122fc5..b97fce1472 100644 --- a/bsd-user/meson.build +++ b/bsd-user/meson.build @@ -7,6 +7,7 @@ bsd_user_ss = ss.source_set() common_user_inc += include_directories('include') bsd_user_ss.add(files( + 'bsd-proc.c', 'bsdload.c', 'elfload.c', 'main.c', @@ -16,6 +17,11 @@ bsd_user_ss.add(files( 'uaccess.c', )) +elf = cc.find_library('elf', required: true) +procstat = cc.find_library('procstat', required: true) +kvm = cc.find_library('kvm', required: true) +bsd_user_ss.add(elf, procstat, kvm) + # Pull in the OS-specific build glue, if any subdir(targetos) From patchwork Sun Aug 27 15:57:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826916 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=o1fZi32+; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZM9x06nnz1yZ9 for ; Tue, 29 Aug 2023 06:10:28 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYk-000873-IR; Mon, 28 Aug 2023 16:10:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYi-00086X-Pv for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:00 -0400 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYg-0007NA-AF for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:00 -0400 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2bcb50e194dso55285851fa.3 for ; Mon, 28 Aug 2023 13:09:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253396; x=1693858196; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Lf4E6n27eQkUsjdF4nO89SKJQY0WwuuH7rr5VrB/ebI=; b=o1fZi32+prVPdO7T/litxi+4cxvwN7Py90zu9XcmWctwKneTTOPqHwb1Q6vkabnejY RVW5IUiq8L5B/07AZAauOw15eV9sal5T4S7GtjKSSziMQgd1L8L5hR8V0PpzH0Ldji+O 2toEGn2UFOkgXrylTWMyqsMp34vHSsfYtSsDYWCCnCQNyeMhdGh/6A+WithL5PA/ZXHp UoVeZOmBF3TJJ8WTX9sKrVliyQkx8K6CvoeL+f5Oj19bpon8ZF/KGyLFXXe2n+kTt8wz HT9sQ0127l39/MBzh/kWKg1aZWibdqjjSyAPbYF0uJedE0FD1PL3ElL+DzVqQ1E2h4SF qVYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253396; x=1693858196; 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=Lf4E6n27eQkUsjdF4nO89SKJQY0WwuuH7rr5VrB/ebI=; b=FoN17gFQ3BrMT8weKGcP0ygSvKQe4FKPDLMcJe6M6iUPvajeaxDNj+t/Lxw65jgfiG o9r2Z/uazeKF1bkKgsCq2AMVykN41v1oRecTYDtHR8SaaWkPMxZ52SmrNVKUxcXDTuv8 a/mwFv/B/u6KXAJdXwQQdOdPRiYOQwNsOwLy28pphnDZAghDSnqG53BXBaOvbPn4POd+ +xNEB21btfGxWsKNgQfqT05mJGAIXVf6DnNe8kYuGqzlpE0BbMDgc0lpEycb0UlWuLpY 5b/jSM7fZ/lRjKWi6Uv9CjAs9Xkt0ShVQATllG9GUg3G76KCS18428r59Iq5Lq76BRRO Nufw== X-Gm-Message-State: AOJu0Yzk0wKjyUfU5MSkIVhWOwRwVfUx0C8+AqdjbSceMbDyfLD6/yQx X6yiRkLYbBo7NtQNPvOH1BQ+UafvfmuX7w== X-Google-Smtp-Source: AGHT+IEowMzLfNzbq6UjnJxzJvdaMqouDlsCAbWsOBAebBQWXbbuNzgdoI1pMmF6zVP50sUQWlnH4A== X-Received: by 2002:a2e:8ecc:0:b0:2b5:bc27:d6eb with SMTP id e12-20020a2e8ecc000000b002b5bc27d6ebmr19665528ljl.8.1693253396260; Mon, 28 Aug 2023 13:09:56 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:09:55 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 07/32] bsd-user: Implement target_to_host_resource conversion function Date: Sun, 27 Aug 2023 17:57:21 +0200 Message-Id: <20230827155746.84781-8-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::231; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x231.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha --- bsd-user/bsd-proc.c | 83 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 bsd-user/bsd-proc.c diff --git a/bsd-user/bsd-proc.c b/bsd-user/bsd-proc.c new file mode 100644 index 0000000000..ae2e636bb3 --- /dev/null +++ b/bsd-user/bsd-proc.c @@ -0,0 +1,83 @@ +/* + * BSD process related system call helpers + * + * Copyright (c) 2013-14 Stacey D. Son + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +#include "qemu/osdep.h" + +#include +#include +#include +#include +#include + +#include "qemu.h" +#include "qemu-bsd.h" +#include "signal-common.h" + +#include "bsd-proc.h" + +/* + * resource/rusage conversion + */ +int target_to_host_resource(int code) +{ + + switch (code) { + case TARGET_RLIMIT_AS: + return RLIMIT_AS; + + case TARGET_RLIMIT_CORE: + return RLIMIT_CORE; + + case TARGET_RLIMIT_CPU: + return RLIMIT_CPU; + + case TARGET_RLIMIT_DATA: + return RLIMIT_DATA; + + case TARGET_RLIMIT_FSIZE: + return RLIMIT_FSIZE; + + case TARGET_RLIMIT_MEMLOCK: + return RLIMIT_MEMLOCK; + + case TARGET_RLIMIT_NOFILE: + return RLIMIT_NOFILE; + + case TARGET_RLIMIT_NPROC: + return RLIMIT_NPROC; + + case TARGET_RLIMIT_RSS: + return RLIMIT_RSS; + + case TARGET_RLIMIT_SBSIZE: + return RLIMIT_SBSIZE; + + case TARGET_RLIMIT_STACK: + return RLIMIT_STACK; + + case TARGET_RLIMIT_SWAP: + return RLIMIT_SWAP; + + case TARGET_RLIMIT_NPTS: + return RLIMIT_NPTS; + + default: + return code; + } +} + From patchwork Sun Aug 27 15:57:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826935 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=ObadcteV; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMD15JNWz1yhW for ; Tue, 29 Aug 2023 06:12:17 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiYs-00087o-IR; Mon, 28 Aug 2023 16:10:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYn-00087U-8U for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:05 -0400 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYl-0007Nn-3l for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:05 -0400 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-9a2a4a5472dso779246066b.1 for ; Mon, 28 Aug 2023 13:10:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253401; x=1693858201; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D3DrY2drMITN1M+I93LgIZwfu7VR/2IaNaUCsMyK3Qs=; b=ObadcteVjd/Re/6c0+rrcCOBhYMx6g323Vm1TlcarSnCZlSG4t8qm6NS9J8uw4nxUH /ual7NkKDUmXNZVA6JlUnnjKH43sVZPc8mvCONTDj0F73bpAavosehJn67Ylq3fPtDC8 LC/lXb4GEp5QlRZfXCXZ9DCLGtwJvKEsmqtKAQsV47DLS9B/SNrlDUJc9Sj5zsHu56X/ XOM9a0leJpkLF7P4SOPF7PuxsQu/yDIjiy4AiV8uH/uDZWetK2p1N5LbeazRoVpQ0k9l xv3prMDwS6zHUdkGUpGTwW5Vlr9nWzxoKfr6EML65dIcGTu0b1q9KRXwVxhWpTK9mZmo /dQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253401; x=1693858201; 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=D3DrY2drMITN1M+I93LgIZwfu7VR/2IaNaUCsMyK3Qs=; b=gllpCEVXXYWzRGPTKOonsCN1r3hZ5kKgpt93Unhj+MdCFmO6lmk/De8lNo+3l/XFui JTmQU+qU2I7LzJsh9dtTkrlxgLl5nlRXgZ0gTPcw79AWmgJCptM6byc625UPVK+5E6Od YBjMTm3ojZdb2gev7QDJV3yvtj7EzB606R+WnumI5V5j1lxEndikxu6ezABDTwGcskKo gb8UNHDusq7sb+i8E6Ku6vMweu915g26WVCNoKMfBwkT714iu4V7e417xZgxwDcX7YWT lBPlUBnjaXGsm3kPU5VnTYU+KMZwCzxPiUTb0qJ+mO9AZTR9k/xje8/jzJgwaf127QUa DV6Q== X-Gm-Message-State: AOJu0Ywp96XVTODJyjkyPb3Qr70aMrZko9kSH5yDDb8Vhm3mjLYw90ci a9qr2FyfLydfda7vCLxaqOKcs0YHa5AVjw== X-Google-Smtp-Source: AGHT+IGNs6ERLdiW902NBvc+5SwYVlpnQ9tovL0gfpTT9i3ISTWmMI05VL6Z7VeQb5Xsv0/64ChEsg== X-Received: by 2002:a17:906:8a49:b0:9a5:c95b:45e3 with SMTP id gx9-20020a1709068a4900b009a5c95b45e3mr109306ejc.26.1693253401416; Mon, 28 Aug 2023 13:10:01 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.09.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:01 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 08/32] bsd-user: Implement target_to_host_rlim and host_to_target_rlim conversion. Date: Sun, 27 Aug 2023 17:57:22 +0200 Message-Id: <20230827155746.84781-9-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62b; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62b.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/bsd-user/bsd-proc.c b/bsd-user/bsd-proc.c index ae2e636bb3..12e43cfeca 100644 --- a/bsd-user/bsd-proc.c +++ b/bsd-user/bsd-proc.c @@ -81,3 +81,36 @@ int target_to_host_resource(int code) } } +rlim_t target_to_host_rlim(abi_llong target_rlim) +{ + abi_llong target_rlim_swap; + rlim_t result; + + target_rlim_swap = tswap64(target_rlim); + if (target_rlim_swap == TARGET_RLIM_INFINITY) { + return RLIM_INFINITY; + } + + result = target_rlim_swap; + if (target_rlim_swap != (rlim_t)result) { + return RLIM_INFINITY; + } + + return result; +} + +abi_llong host_to_target_rlim(rlim_t rlim) +{ + abi_llong target_rlim_swap; + abi_llong result; + + if (rlim == RLIM_INFINITY || rlim != (abi_llong)rlim) { + target_rlim_swap = TARGET_RLIM_INFINITY; + } else { + target_rlim_swap = rlim; + } + result = tswap64(target_rlim_swap); + + return result; +} + From patchwork Sun Aug 27 15:57:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826919 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=Dz00dyfl; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMC21pWGz1yZ9 for ; Tue, 29 Aug 2023 06:11:26 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZG-0000Hx-OC; Mon, 28 Aug 2023 16:10:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYx-0008B6-7p for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:15 -0400 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYu-0007aC-2d for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:14 -0400 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-99bcf2de59cso479201366b.0 for ; Mon, 28 Aug 2023 13:10:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253409; x=1693858209; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ndeNKsdGcTFoKqxXfBgmIgWoV6MfU8iaJxUoXl7FUgE=; b=Dz00dyfloFHYsiU6muXzypwa2AYnRwtNReGwl0DzjW1Alu33p5jXaWvLLhtGaSeIlK ki77EyW+CA1hhcB3rqqhtmA0TEO+TYnnuHJgTYathnXVpjRVbTQ11T8hFwfeS6AIWkp1 UYdjkAa0xeWCNRA2F78dzAzT1BlfRvBVJc82W5Hk6eX+NM2YqVhWgQNAufAe2yKCeqMH xa1cvbbgQmnNEB2X5QyEqZdlWKgAHK5HcnH2WTPZavPPjhB+VlfE7B0i8OdmKt45k2gf EMjDIpxUUNKxb1XEKRMeQlReE9Iq4LSi28O5DIE6koZMA7Iequf3EZAMrjQn4WeuKYQP 6xVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253409; x=1693858209; 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=ndeNKsdGcTFoKqxXfBgmIgWoV6MfU8iaJxUoXl7FUgE=; b=BbVogYp96p3ZWYS7ehCHC3FK7e32xgSUKBIr8zy2XfD4ScJt/yDqrERYsAsFomVtAZ 6DKo5y2nsTWCZh1pWje41h5c0TrN95R+xyxF4CoI8jorK+bd0x6RzK4bwjpw+ygbRC4y SsKM1r+Dho/OWMvGSVTku5mFqz+z6T74SxZ2RwW7VWBzZowFYX233kCTEoDN6gEaa+GJ 18fGNtGoFfoGgSs2wC/r6NIiqQj2A5HIevunyLlXMl2sG7gO7ecCucVPyy/fVJYd+Cg3 YqYN4KqWfzk6DU6v0RZg4Fuu8pIqOaZi8puvv/l1XDLLd2F0H1imD0ksKgb5gqs5h2pO EADQ== X-Gm-Message-State: AOJu0YwSuIgETUCoXlOqTRF0P2RUH5KlJoD537ohk4N9lToiKoH3e3Kv uydX3k30fjcSfAU50PwDYan7HUFKWHA/2g== X-Google-Smtp-Source: AGHT+IHQ6eWd9yoGCwpIgf7FlpHny0+1t06KrQbZklfYRKZX+46zWPXeERrjEGRxHgaR6PtxwnxHCg== X-Received: by 2002:a17:906:2932:b0:99b:4ed4:5527 with SMTP id v18-20020a170906293200b0099b4ed45527mr19048258ejd.25.1693253409227; Mon, 28 Aug 2023 13:10:09 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:08 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 09/32] bsd-user: Implement host_to_target_rusage and host_to_target_wrusage. Date: Sun, 27 Aug 2023 17:57:23 +0200 Message-Id: <20230827155746.84781-10-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62d; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62d.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.c | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/bsd-user/bsd-proc.c b/bsd-user/bsd-proc.c index 12e43cfeca..8e6dd5e427 100644 --- a/bsd-user/bsd-proc.c +++ b/bsd-user/bsd-proc.c @@ -114,3 +114,57 @@ abi_llong host_to_target_rlim(rlim_t rlim) return result; } +void h2g_rusage(const struct rusage *rusage, + struct target_freebsd_rusage *target_rusage) +{ + __put_user(rusage->ru_utime.tv_sec, &target_rusage->ru_utime.tv_sec); + __put_user(rusage->ru_utime.tv_usec, &target_rusage->ru_utime.tv_usec); + + __put_user(rusage->ru_stime.tv_sec, &target_rusage->ru_stime.tv_sec); + __put_user(rusage->ru_stime.tv_usec, &target_rusage->ru_stime.tv_usec); + + __put_user(rusage->ru_maxrss, &target_rusage->ru_maxrss); + __put_user(rusage->ru_idrss, &target_rusage->ru_idrss); + __put_user(rusage->ru_idrss, &target_rusage->ru_idrss); + __put_user(rusage->ru_isrss, &target_rusage->ru_isrss); + __put_user(rusage->ru_minflt, &target_rusage->ru_minflt); + __put_user(rusage->ru_majflt, &target_rusage->ru_majflt); + __put_user(rusage->ru_nswap, &target_rusage->ru_nswap); + __put_user(rusage->ru_inblock, &target_rusage->ru_inblock); + __put_user(rusage->ru_oublock, &target_rusage->ru_oublock); + __put_user(rusage->ru_msgsnd, &target_rusage->ru_msgsnd); + __put_user(rusage->ru_msgrcv, &target_rusage->ru_msgrcv); + __put_user(rusage->ru_nsignals, &target_rusage->ru_nsignals); + __put_user(rusage->ru_nvcsw, &target_rusage->ru_nvcsw); + __put_user(rusage->ru_nivcsw, &target_rusage->ru_nivcsw); +} + +abi_long host_to_target_rusage(abi_ulong target_addr, + const struct rusage *rusage) +{ + struct target_freebsd_rusage *target_rusage; + + if (!lock_user_struct(VERIFY_WRITE, target_rusage, target_addr, 0)) { + return -TARGET_EFAULT; + } + h2g_rusage(rusage, target_rusage); + unlock_user_struct(target_rusage, target_addr, 1); + + return 0; +} + +abi_long host_to_target_wrusage(abi_ulong target_addr, + const struct __wrusage *wrusage) +{ + struct target_freebsd__wrusage *target_wrusage; + + if (!lock_user_struct(VERIFY_WRITE, target_wrusage, target_addr, 0)) { + return -TARGET_EFAULT; + } + h2g_rusage(&wrusage->wru_self, &target_wrusage->wru_self); + h2g_rusage(&wrusage->wru_children, &target_wrusage->wru_children); + unlock_user_struct(target_wrusage, target_addr, 1); + + return 0; +} + From patchwork Sun Aug 27 15:57:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826918 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=HWvH3HmE; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMBq4HkKz1yhW for ; Tue, 29 Aug 2023 06:11:15 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZ2-0008K2-Kk; Mon, 28 Aug 2023 16:10:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiYx-0008Ei-Tl for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:16 -0400 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYv-0007aQ-LS for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:15 -0400 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-99c136ee106so467362466b.1 for ; Mon, 28 Aug 2023 13:10:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253411; x=1693858211; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uXUwd7KLSf4xksoT9hSYDjHq1uy0u6BKwi1S++lsL2o=; b=HWvH3HmErDnNrL9I/Wp3YTLHptNCr3Sl/xMeP2DIvwueQbz5imLGtL8RlrPnzQuAT7 GV/meGQMb7c4qLU4IvyX1kr/VRxYDQzSPYiw7fQvrAOd6/HJTmM6uV8oEZtRrTKkV3fI mWfVJS99Dbr891AvC3hghaUz55ClyWMWzk8rwEK0QB2+8+JWmQD5I9+lRmlFYK0Z8mx0 KgYKvrRS8pHSpXWVDvj2Lu/Sfzstgs5dlJ4+XFzdsho/4R27IF8Oh4pIlfle/nvv9Kh5 6i5047AhqvYL2vJVRyOI0xYoPyGGHfWo4BhHnIw59EOnpyCPuGgs6MhocT4JRlY2n8kc Rwkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253411; x=1693858211; 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=uXUwd7KLSf4xksoT9hSYDjHq1uy0u6BKwi1S++lsL2o=; b=R80SpATwMr0r+nK+adTnrWQGKIArU+RmvKJiNVp6tFTrU25GBcCPxym5GRWNcFHVbl aaIZALosTG5mDfE0Xmmnd0A3m36unWXocxVXvlxHAMd+6IhNswbONwVBB4xnI+XrsbX6 wfyu8JnlQN13yARpyiNeZBCHoz/arFmBG8++5AcBxZhW07SwTVa6Q95U0hw7ZlRg0X4t ZDGlZZMKnLkfvEd8QqjtZ2CIBJ/VZwCXCsgzAW3vMBT/hQkHzPESVjlCCM396nVQRvrX +QDRKDBDt3HXXygMIA8ptzqNbCa/VNyxVWsPt6N89Uj7L/nBtCnMXMyizHg5BF01ifbh tJuQ== X-Gm-Message-State: AOJu0Yw05EEiOmL+d9O/Rp9NuXbGYXlRba6cXRVS/n/7tpXKKx/nGg89 JCoB7KyfIX9LTBZO4IGtpHS2W2z9ILEyDQ== X-Google-Smtp-Source: AGHT+IGQWz9vyORvyQ/H5HDxMmwd9Y5rXLPutJrGjnbEajWzlDEJyL3dXZKCAKE7sZNntIGNkSMllQ== X-Received: by 2002:a17:907:c299:b0:9a1:ff2f:28f1 with SMTP id tk25-20020a170907c29900b009a1ff2f28f1mr11127426ejc.40.1693253411564; Mon, 28 Aug 2023 13:10:11 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:11 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 10/32] bsd-user: Implement host_to_target_waitstatus conversion. Date: Sun, 27 Aug 2023 17:57:24 +0200 Message-Id: <20230827155746.84781-11-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::630; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x630.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bsd-user/bsd-proc.c b/bsd-user/bsd-proc.c index 8e6dd5e427..49c0fb67d0 100644 --- a/bsd-user/bsd-proc.c +++ b/bsd-user/bsd-proc.c @@ -168,3 +168,20 @@ abi_long host_to_target_wrusage(abi_ulong target_addr, return 0; } +/* + * wait status conversion. + * + * Map host to target signal numbers for the wait family of syscalls. + * Assume all other status bits are the same. + */ +int host_to_target_waitstatus(int status) +{ + if (WIFSIGNALED(status)) { + return host_to_target_signal(WTERMSIG(status)) | (status & ~0x7f); + } + if (WIFSTOPPED(status)) { + return (host_to_target_signal(WSTOPSIG(status)) << 8) | (status & 0xff); + } + return status; +} + From patchwork Sun Aug 27 15:57:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826924 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=EtmSxWzl; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCT0Xsjz1yZ9 for ; Tue, 29 Aug 2023 06:11:48 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZI-0000Z3-NE; Mon, 28 Aug 2023 16:10:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZ1-0008KT-Md for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:20 -0400 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiYy-0007ai-R8 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:18 -0400 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2bb9a063f26so55474641fa.2 for ; Mon, 28 Aug 2023 13:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253414; x=1693858214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F1kvUaujUbfIE3YRxf4HkJ0zNC+AtY4GwgRBRBxQqoc=; b=EtmSxWzliP7HheTOeDyQkkMzdn/FbLvn732adSLDYnhZtiOSOWrnlZj/AuDlkoewoK 0BIcDKdKbW5qcqS18htDNh+x30+FDcBLLtJQXt/QO4osy+da9rzKiwLvyRETTWO3CSyw LHkedeUm8OQJiAqqSej3AhCd/bM17z9j+KetxfR5NQH+lexYlkeEY3rVd3iKcVSiDhBK NU9ORGydzSAzls1Cq5DYNguF9QlfD5FWIRnnUZ1+TLjjgoiroaA79nz+GmB77xsHZ3D4 kadXbzejyVVItsDlMiDdxDhNIuH2u71VQE59ePDeeblB2j8vfforXHL2B96F0nldj4MJ mFqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253414; x=1693858214; 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=F1kvUaujUbfIE3YRxf4HkJ0zNC+AtY4GwgRBRBxQqoc=; b=hYDEY6RxA3Vu3SbcfVWnFVMZylhWWGIjmuWqg858JLi4IwIH5euDdfZ4lT5b/2eWIH o5ulCqY8vyUZ5h2Asq3NC87bLhezsm47kal6gJVbDhU+W//oGPx7s5JyNQx6iuvPYAbp R85feoxZHDUivDKHHGs8gc0XNpubvoppERErqiird1aHjo3w77QkDHH8r18pu1rKxSyj K9U7VXjhvh3BUYYWuWE0cXB3mjuOe9VjsqE1y3s/RwQVSecwe8aTk/RS7h+M5UzKYiW7 ebvoi7qodGLQc2vNplTbquPOjpddgF59q0HQBoUUD4SvzZxIVY4TsH+o3VeH9D5XZUGI CJZw== X-Gm-Message-State: AOJu0YwxiDmz/Pwtrx424g6nwn4jQgwEYKcQir0udziaVjW4o3xbEDOM shpV5GBwUx3cxeVcuasBvHmE0uuh6JtAag== X-Google-Smtp-Source: AGHT+IG6rqgeLpGqsUwW6kdrdReScPduqqNd0Zkxt9zZEgvysPminC1q2wO3eIo6fG+qFzIDgjXbww== X-Received: by 2002:a05:651c:104:b0:2bc:c326:54a2 with SMTP id a4-20020a05651c010400b002bcc32654a2mr15434383ljb.50.1693253414017; Mon, 28 Aug 2023 13:10:14 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:13 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Kyle Evans , Karim Taha Subject: [PATCH 11/32] bsd-user: Get number of cpus. Date: Sun, 27 Aug 2023 17:57:25 +0200 Message-Id: <20230827155746.84781-12-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::229; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x229.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Kyle Evans Signed-off-by: Kyle Evans Signed-off-by: Karim Taha --- bsd-user/bsd-proc.c | 39 +++++++++++++++++++++++++++++++++++++++ bsd-user/bsd-proc.h | 2 ++ 2 files changed, 41 insertions(+) diff --git a/bsd-user/bsd-proc.c b/bsd-user/bsd-proc.c index 49c0fb67d0..dd6bad6de3 100644 --- a/bsd-user/bsd-proc.c +++ b/bsd-user/bsd-proc.c @@ -185,3 +185,42 @@ int host_to_target_waitstatus(int status) return status; } +int bsd_get_ncpu(void) +{ + static int ncpu = -1; + + if (ncpu != -1) { + return ncpu; + } + if (ncpu == -1) { + cpuset_t mask; + + CPU_ZERO(&mask); + + if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(mask), + &mask) == 0) { + ncpu = CPU_COUNT(&mask); + } + } +#ifdef _SC_NPROCESSORS_ONLN + if (ncpu == -1) + ncpu = sysconf(_SC_NPROCESSORS_ONLN); +#endif +#if defined(CTL_HW) && defined(HW_NCPU) + if (ncpu == -1) { + int mib[2] = {CTL_HW, HW_NCPU}; + size_t sz; + + sz = sizeof(ncpu); + if (sysctl(mib, 2, &ncpu, &sz, NULL, NULL) == -1) { + ncpu = -1; + } + } +#endif + if (ncpu == -1) { + gemu_log("XXX Missing bsd_get_ncpu() implementation\n"); + ncpu = 1; + } + return ncpu; +} + diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index 048773a75d..b6225e520e 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -26,6 +26,8 @@ #include "gdbstub/syscalls.h" #include "qemu/plugin.h" +int bsd_get_ncpu(void); + /* exit(2) */ static inline abi_long do_bsd_exit(void *cpu_env, abi_long arg1) { From patchwork Sun Aug 27 15:57:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826920 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=FMoUmGIf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMC74VFHz1yZ9 for ; Tue, 29 Aug 2023 06:11:31 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZE-0000FX-PH; Mon, 28 Aug 2023 16:10:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZ3-0008MH-TC for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:21 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZ1-0007bD-Fs for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:21 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-99bf1f632b8so486488066b.1 for ; Mon, 28 Aug 2023 13:10:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253417; x=1693858217; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=30X8xyseiqtr0009VlIfSZJgdjDQukn2S+OSMnNY5VA=; b=FMoUmGIfPNIdkTpt6vCEDhMEFxoqY7GIX4/YnfhJkQHJyKckYnPr7QPVSIf+TMfhwq NyVkv0QhQHiQOFU2O9ZIWtfpkbprV1MqzwvE02dAoqpZvKLv9f1XHPj7GtEICOtprM5b FrpYxTWn1NAMaGSkDdBpyel5nMou5atjBWENPPwd5cPKGEGrgu3PB31i15yCpXtFpO4y DpmSHt9cwsQT/bk6CLQMG3E+YxTNK8VdFSizUl9qHSdPInycMrpvejeIMkZd9a7IZKLA /bkWhSnhJh2d4Hsfrtq9pZ8Nr6ajlD4nyMp3Z27gKScGeckYWkYou9PyxAefvCG7D6lF Y4PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253417; x=1693858217; 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=30X8xyseiqtr0009VlIfSZJgdjDQukn2S+OSMnNY5VA=; b=cQHZ15NZbIU9SaR5VegvncFTGFil93VQWN1O7O87eXqB0BrEdUqxIgKq86HZ9Ewqkn UbnVc1CaiwAHSwx6mwFu+uYQYxAsiqQTX87xkxRUimtbvYqiCPIGq8PWWwfHIfymN36D iIlS1jixqZBO/iiVPKVUwFq3BJCs3TXCDQf0AEfibIdaJIR8ddvnUTzvj6FMKqFo6F9M HBTFS7/S1eqqxjsCI6nRXI9g3uv6nLNUKAae1w5aZUYpnbsbWYw73DxPIIEbTNamwz5G 7SCJm6fvD3d9fU/Cuc9gVocoWftE/o7PEsf3BHfFMRIKSpz9DA/548c5TmVGfQ3Jl3dY 9peg== X-Gm-Message-State: AOJu0YxdtoaoWvJQP8KgGB5HXENP+lN1zV+KPHJy5LveVgVFZJTCSJe1 9J/NZmS02UFGJqUzoyIcynUIyTnryxJqAg== X-Google-Smtp-Source: AGHT+IFPq0EoLbzv5T5HPgl+63Ws4/VWyVIEAiTlERS1+gjvnWNLt/0YuzrfCaFEOBc14n0f76H3Lg== X-Received: by 2002:a17:906:109a:b0:9a5:c54f:da1c with SMTP id u26-20020a170906109a00b009a5c54fda1cmr653164eju.47.1693253416523; Mon, 28 Aug 2023 13:10:16 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:16 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 12/32] bsd-user: Implement getgroups(2) and setgroups(2) system calls. Date: Sun, 27 Aug 2023 17:57:26 +0200 Message-Id: <20230827155746.84781-13-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62e; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62e.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha --- bsd-user/bsd-proc.h | 44 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 9 +++++++ 2 files changed, 53 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index b6225e520e..ecd6a13c2d 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -41,4 +41,48 @@ static inline abi_long do_bsd_exit(void *cpu_env, abi_long arg1) return 0; } +/* getgroups(2) */ +static inline abi_long do_bsd_getgroups(abi_long gidsetsize, abi_long arg2) +{ + abi_long ret; + uint32_t *target_grouplist; + gid_t *grouplist; + int i; + + grouplist = alloca(gidsetsize * sizeof(gid_t)); + ret = get_errno(getgroups(gidsetsize, grouplist)); + if (gidsetsize != 0) { + if (!is_error(ret)) { + target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 2, 0); + if (!target_grouplist) { + return -TARGET_EFAULT; + } + for (i = 0; i < ret; i++) { + target_grouplist[i] = tswap32(grouplist[i]); + } + unlock_user(target_grouplist, arg2, gidsetsize * 2); + } + } + return ret; +} + +/* setgroups(2) */ +static inline abi_long do_bsd_setgroups(abi_long gidsetsize, abi_long arg2) +{ + uint32_t *target_grouplist; + gid_t *grouplist; + int i; + + grouplist = alloca(gidsetsize * sizeof(gid_t)); + target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * 2, 1); + if (!target_grouplist) { + return -TARGET_EFAULT; + } + for (i = 0; i < gidsetsize; i++) { + grouplist[i] = tswap32(target_grouplist[i]); + } + unlock_user(target_grouplist, arg2, 0); + return get_errno(setgroups(gidsetsize, grouplist)); +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 2224a280ea..17160ab532 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -220,6 +220,15 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_exit(cpu_env, arg1); break; + case TARGET_FREEBSD_NR_getgroups: /* getgroups(2) */ + ret = do_bsd_getgroups(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_setgroups: /* setgroups(2) */ + ret = do_bsd_setgroups(arg1, arg2); + break; + + /* * File system calls. */ From patchwork Sun Aug 27 15:57:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826937 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=qZ0BHCYI; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMDH2kDmz1yZ9 for ; Tue, 29 Aug 2023 06:12:31 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZH-0000Rz-MY; Mon, 28 Aug 2023 16:10:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZ6-0008U2-1v for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:26 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZ2-0007bk-TK for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:23 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b9c907bc68so53840961fa.2 for ; Mon, 28 Aug 2023 13:10:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253419; x=1693858219; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NNWJX9N7eMedxWSpyDRMtxE1oCTIUjFxpuItWl9On+4=; b=qZ0BHCYIhPdNNW+FJOBZNlcr7dmB8gXNLHNC315KUn/zPKhPEcEZvv1ZQkAP8Ty633 RLS8geZz8k8Fc0EVXoiPTDgiiNC+MZOVBX9aWEari2SARUYwW8kpjurg9BI8zF0oE4aV nfP8dcOiWuzfw4K1cN6Ze8iAXW0X8gbLWBa+W15vl9B0a6OQD7pXa/cjSxkwhSHuIqcX 8lK+X29cZDNnZxCpWek9eeX1+Qz8hNcLQ2/qoT34KnuXmRH4/GPArX5DxAaXcR0uKJBQ 1zOoMjvVdxgAoG/RApQhWeNKTwsAz5MWNWB7iiJL2CRJ83y1XWEfPlyBkdzA79QP9+x1 IWDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253419; x=1693858219; 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=NNWJX9N7eMedxWSpyDRMtxE1oCTIUjFxpuItWl9On+4=; b=BkdCTzVOo9DeHyus8QqU1j3JtM3lTQdWDWndQMoaZjt8DEfDAh4EM3wm1hWLXMd4OI OCnPqcTw334b7S2SEC/ay8y7ggp1fCxioovzrPlFrZr9JI5GrLlZcE1AyvJDTOoC2A4t CNT/fAMlQTxmZSHFTKC5HHoBPqme0CTW6CWkZXFHrbVCp9AG8nDA3SX0hw7pitQ2jfxV 1JaUmYaGmdYCveT8eoC+/iU7G5YdmxjNGsOHz7WSJrCZPSrgk3tkwSUk4dxk61A0gMXR aQ93E4ju5nqO+TkBsSZzFk7o15zyiEsMuJf3FemPt8Put6Jro9iHC2htH4nMneCsEbP6 xJRw== X-Gm-Message-State: AOJu0Yy84D67Gr/T8k5lQaiEFM5GZt0tNKQXDqkxvg7s/FJgZX7IiQXn Cj1Lod5cWOFMsXfOd+dNRGxONbuLfBWgSA== X-Google-Smtp-Source: AGHT+IG54bJ+aJ/nrh0yu39bT+T7T1eJ4/h2hZ62sNEFLp7PVlQfiqaUOAAZSLPaAtJyopq4kCjfPw== X-Received: by 2002:a2e:6a03:0:b0:2bc:d993:b7ba with SMTP id f3-20020a2e6a03000000b002bcd993b7bamr13007296ljc.27.1693253418828; Mon, 28 Aug 2023 13:10:18 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:18 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 13/32] bsd-user: Implement umask(2), setlogin(2) and getlogin(2) Date: Sun, 27 Aug 2023 17:57:27 +0200 Message-Id: <20230827155746.84781-14-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::233; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x233.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 39 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 12 +++++++++++ 2 files changed, 51 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index ecd6a13c2d..5228b4be78 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -26,6 +26,7 @@ #include "gdbstub/syscalls.h" #include "qemu/plugin.h" +extern int _getlogin(char*, int); int bsd_get_ncpu(void); /* exit(2) */ @@ -85,4 +86,42 @@ static inline abi_long do_bsd_setgroups(abi_long gidsetsize, abi_long arg2) return get_errno(setgroups(gidsetsize, grouplist)); } +/* umask(2) */ +static inline abi_long do_bsd_umask(abi_long arg1) +{ + return get_errno(umask(arg1)); +} + +/* setlogin(2) */ +static inline abi_long do_bsd_setlogin(abi_long arg1) +{ + abi_long ret; + void *p; + + p = lock_user_string(arg1); + if (p == NULL) { + return -TARGET_EFAULT; + } + ret = get_errno(setlogin(p)); + unlock_user(p, arg1, 0); + + return ret; +} + +/* getlogin(2) */ +static inline abi_long do_bsd_getlogin(abi_long arg1, abi_long arg2) +{ + abi_long ret; + void *p; + + p = lock_user_string(arg1); + if (p == NULL) { + return -TARGET_EFAULT; + } + ret = get_errno(_getlogin(p, arg2)); + unlock_user(p, arg1, 0); + + return ret; +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 17160ab532..194248924d 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -228,6 +228,18 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_setgroups(arg1, arg2); break; + case TARGET_FREEBSD_NR_umask: /* umask(2) */ + ret = do_bsd_umask(arg1); + break; + + case TARGET_FREEBSD_NR_setlogin: /* setlogin(2) */ + ret = do_bsd_setlogin(arg1); + break; + + case TARGET_FREEBSD_NR_getlogin: /* getlogin(2) */ + ret = do_bsd_getlogin(arg1, arg2); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826921 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=edfB5AYH; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMC75zG0z1yhW for ; Tue, 29 Aug 2023 06:11:31 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZI-0000Xn-Dg; Mon, 28 Aug 2023 16:10:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZ8-00005q-Ka for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:28 -0400 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZ5-0007dR-8P for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:25 -0400 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-991c786369cso469091166b.1 for ; Mon, 28 Aug 2023 13:10:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253421; x=1693858221; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yVIqVPnkGSyrltmga8v21mUu5LLn049UQ+w7KAp37Ns=; b=edfB5AYHyGXvYK1m8vFLKptoaI+NEPZQ9qPDry6mkkd1xYBECg+K3MNMA67Og0ntnJ gx4LLEbfWiDxQFW1jbWVE9cT+TzZg/mDslgUxjFhJyJ4ME/i7J1fbsfrV/X0khK/Wjs3 A7e5eeLJWNB9da/tajUNOk5bkYusDgmqPZkqD8oIC/QLAk45mZK1TU14ewUIme6Z50cK vjTTCOmqIXA70aocfJPEar9GIUGvZTFKSv1zGtS9L5dlYkWBpoU0r08XRel9yXDLBa5Q tO4PmIrhQIBV+yRC4vrqxr3Bzp6+YZcN0dNxPDQ7LMpRKGfWAzkSRMtf0bU0KtiJnTji VRLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253421; x=1693858221; 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=yVIqVPnkGSyrltmga8v21mUu5LLn049UQ+w7KAp37Ns=; b=copasMdrFOw99bYRgKmvyVmzK6aN2Er+KA48qIERgW5KO5m7XGChvw+Rsz0HMWjqe8 T/jPVJylBkBsoSLjA09puf3kmUe8+apNqj8xEMSPI6MBhPuFBuMhY8ud6xExGa73/FyZ mmEZ6TDiUxhctPA5dujL2RFS1FfPjH1saQGxEejDAc0XQpvtUzRp/G4LwnO1TqV/WCvx uahaiCTilrXEXAvhkyESHsme8qMD3GvmU/EyDNxRNLlxG59rLTXH/pEqqp1G15jT5AGh gtymM1FXCOq8/Vm4zORCqKoZb0oatDDrdJaV1pwZxVDCqgeb27uFbZjUmOX+Gj/TMpiD lfJg== X-Gm-Message-State: AOJu0Yzf6fbihPEiNjSX9OphJEsRM51GHqOcQOsmQCrXMq6pWCdVmu1z D+7EXbupAxlzfrZIMPYOJ2WkKvsn/4vlZQ== X-Google-Smtp-Source: AGHT+IEjeFF1xIrnHQ06JZXYpSLb6kQkxJh90GpsOcVsottbXmW0rGmtMqDGZ01++Dt+dSezJoue6g== X-Received: by 2002:a17:906:32d6:b0:9a1:8ee9:cc0b with SMTP id k22-20020a17090632d600b009a18ee9cc0bmr17532430ejk.21.1693253420795; Mon, 28 Aug 2023 13:10:20 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:20 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 14/32] bsd-user: Implement getrusage(2). Date: Sun, 27 Aug 2023 17:57:28 +0200 Message-Id: <20230827155746.84781-15-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62b; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62b.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 13 +++++++++++++ bsd-user/freebsd/os-syscall.c | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index 5228b4be78..ddb5a4d452 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -124,4 +124,17 @@ static inline abi_long do_bsd_getlogin(abi_long arg1, abi_long arg2) return ret; } +/* getrusage(2) */ +static inline abi_long do_bsd_getrusage(abi_long who, abi_ulong target_addr) +{ + abi_long ret; + struct rusage rusage; + + ret = get_errno(getrusage(who, &rusage)); + if (!is_error(ret)) { + host_to_target_rusage(target_addr, &rusage); + } + return ret; +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 194248924d..f7c4a64f9a 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -240,6 +240,10 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_getlogin(arg1, arg2); break; + case TARGET_FREEBSD_NR_getrusage: /* getrusage(2) */ + ret = do_bsd_getrusage(arg1, arg2); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826926 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=lfsuS1tH; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCc1C25z1yZ9 for ; Tue, 29 Aug 2023 06:11:56 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZJ-0000eD-FZ; Mon, 28 Aug 2023 16:10:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZA-00007y-KL for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:30 -0400 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZ8-0007fk-DM for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:28 -0400 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2bd0bc8b429so24007891fa.2 for ; Mon, 28 Aug 2023 13:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253424; x=1693858224; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=57sl4ID1/SSP42rUJKmuub1xcVM/sJL+siK5hXwzvDk=; b=lfsuS1tHWGnNXiPW2sCjjIzNhe7ow+QGOW7uFkjlepGOLqKrJPxpEow3X8rEH/rB6j krIrSm3StTE6/0N1LSwRaQ/fw2sHkIe6hGxAZcHidSmqfp8wHlSB+bHV0iZyNeOmX4O1 CCZuOOCmef9S5s8SET8uonEcMLIqCRxW3LlUVTZQTLN+tjnjpErpEWhc0SZioOhPahq9 sAPetDzh+XWepA1bbwP9ASVBwzJ5FICXLIq8hRbtAmg0fnIErQ4uQPxH1u8I/5gzSP7W tROrPb/L12U26wk3Jqcy5y61Ogperhx7xPz3z9rZGsh2Wqh4qMLsbNZsNzDdW4W6mvVb dPgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253424; x=1693858224; 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=57sl4ID1/SSP42rUJKmuub1xcVM/sJL+siK5hXwzvDk=; b=NlrzKeAVuPIvpQG4CxMm3ubwzbPSX7GL7LqdVFJIs/FWtdVKhBciNHgKtZGVORsT/1 Y2/KCoQd8azs3MDB7D5YjYoye3BzhZfhoJo5CrGx/AULGYGd/F71wSc5/FdD4ORCGHUq dZPv8TD9UFsAwb4GtBQ4qCdoH/V7Ywx/qBCPtcPThlHTXSAgFgEKNGvTsIBbfv9ASqg7 1u6bbYq9sm5LZ4Vr2vuua0L3bR89tr7YyKSYyEIz3XZhrG1pCWZC6WcQdS46AkNbpg6k 8m9LWgEOwBWPHQHBCcXqn3LpBoknUW+uKEvd5Jc/BuKLiEyQPPUVFXyZKP7juxcFe7TN Bdww== X-Gm-Message-State: AOJu0YyeVNbzA7JktCZA8JsEPldK1vQB8uwHBFFW6m8cRZRGX38XN68R 8uAW4BA3FHLdcJP8T2M/p6AR8bbVTyuyow== X-Google-Smtp-Source: AGHT+IHE5GEP9h7hPNAAVQ/NUX7eCLLMph1Evb+Qxv+6oVPcR9tDvYiIiWB5YWLaWJv0heE1DaV9Aw== X-Received: by 2002:a2e:984e:0:b0:2bb:89e6:184a with SMTP id e14-20020a2e984e000000b002bb89e6184amr19852213ljj.10.1693253424213; Mon, 28 Aug 2023 13:10:24 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:23 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 15/32] bsd-user: Implement getrlimit(2) and setrlimit(2) Date: Sun, 27 Aug 2023 17:57:29 +0200 Message-Id: <20230827155746.84781-16-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::231; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x231.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 59 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 8 +++++ 2 files changed, 67 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index ddb5a4d452..2c225b12bc 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -137,4 +137,63 @@ static inline abi_long do_bsd_getrusage(abi_long who, abi_ulong target_addr) return ret; } +/* getrlimit(2) */ +static inline abi_long do_bsd_getrlimit(abi_long arg1, abi_ulong arg2) +{ + abi_long ret; + int resource = target_to_host_resource(arg1); + struct target_rlimit *target_rlim; + struct rlimit rlim; + + switch (resource) { + case RLIMIT_STACK: + rlim.rlim_cur = target_dflssiz; + rlim.rlim_max = target_maxssiz; + ret = 0; + break; + + case RLIMIT_DATA: + rlim.rlim_cur = target_dfldsiz; + rlim.rlim_max = target_maxdsiz; + ret = 0; + break; + + default: + ret = get_errno(getrlimit(resource, &rlim)); + break; + } + if (!is_error(ret)) { + if (!lock_user_struct(VERIFY_WRITE, target_rlim, arg2, 0)) { + return -TARGET_EFAULT; + } + target_rlim->rlim_cur = host_to_target_rlim(rlim.rlim_cur); + target_rlim->rlim_max = host_to_target_rlim(rlim.rlim_max); + unlock_user_struct(target_rlim, arg2, 1); + } + return ret; +} + +/* setrlimit(2) */ +static inline abi_long do_bsd_setrlimit(abi_long arg1, abi_ulong arg2) +{ + abi_long ret; + int resource = target_to_host_resource(arg1); + struct target_rlimit *target_rlim; + struct rlimit rlim; + + if (RLIMIT_STACK == resource) { + /* XXX We should, maybe, allow the stack size to shrink */ + ret = -TARGET_EPERM; + } else { + if (!lock_user_struct(VERIFY_READ, target_rlim, arg2, 1)) { + return -TARGET_EFAULT; + } + rlim.rlim_cur = target_to_host_rlim(target_rlim->rlim_cur); + rlim.rlim_max = target_to_host_rlim(target_rlim->rlim_max); + unlock_user_struct(target_rlim, arg2, 0); + ret = get_errno(setrlimit(resource, &rlim)); + } + return ret; +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index f7c4a64f9a..5467cb2341 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -244,6 +244,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_getrusage(arg1, arg2); break; + case TARGET_FREEBSD_NR_getrlimit: /* getrlimit(2) */ + ret = do_bsd_getrlimit(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_setrlimit: /* setrlimit(2) */ + ret = do_bsd_setrlimit(arg1, arg2); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826923 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=jpCrcsPY; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCQ4hwJz1yZ9 for ; Tue, 29 Aug 2023 06:11:46 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZJ-0000dV-EV; Mon, 28 Aug 2023 16:10:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZD-0000Dd-6s for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:32 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZA-0007hv-LA for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:30 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2bc63e0d8cdso53699211fa.2 for ; Mon, 28 Aug 2023 13:10:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253427; x=1693858227; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+FfDO/oLREWOgvChfreFQXRNc1C18wUr8pkfeiWN8VI=; b=jpCrcsPY5hVRUwIqq4jQRbqCBIfKjSiu3o88+sJhjpkmVjXtxwUI2thQvObrlGTdJc SAp6m1j9IUnEsc/6+LUP9j9lrKZAMj8x+EU6jrd3zK5gvBdQ0VnwLsYEAbrx2ZsuXWq7 r9srfBNERfblEldOTUVEtnpAuDw9E+JH3U3pzCag5dIPdlpSKoBvk/thNaEQ6XEOsVeB zRMlE9YiELSXs9ZlGlDOFKKp60cGVWAN2nfcylfKwOnQAcDVk1szMldxLGqRz1WUwZg0 9s6eGcdmmWSUVY2DUaIHXN030y6XqpYLgN698azY1k4f8WcCIG1przHYtlspyOShdRwm VR9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253427; x=1693858227; 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=+FfDO/oLREWOgvChfreFQXRNc1C18wUr8pkfeiWN8VI=; b=gR2GrBpOk1ZXP0ccU7jVl/nmGrKLuCGvVaSWhWiUtJwbQ5lEVAMMG378ly17FKJCUI 8UAVpAxtmTWXQH5YI1WCCAdApF3qnbvqdzi9w8DLrcY6PP/jCWv+Q94iAROO4ZRUqR0l FpJDHU120ReTQlm5WN1zx25ae3LjevBgqqchPrYkHq0aTMJyoyeWAC+OBfcWmzMxA9Ai XfNAoP4N3gvqwAv5OC5PoJZNrUoYrCHPadTe/JGMYvwSGVTNpl3AFD/tmRZNLAhArMyB 9kUsY+UaIPUKhMFyCNx+HtAr5OXTeusvgGTGQhdQB88e8nmagMAAS50Qp9dS6HZ30wvj KShQ== X-Gm-Message-State: AOJu0Yxm6ql4TOx+U7SyW3oKg6v6u6ioUBfc8mSHeyD75b/VeFl7Lnqd vPojNLsTKrHiWCi3w8mehNzI2ory7esHHA== X-Google-Smtp-Source: AGHT+IEkT2JXnI2KqwYxR2vn+N1qILBUtPvQJdEctPEbean7FBovJ7es+jx9sKBwtLSzyi4n+V9YFw== X-Received: by 2002:a2e:9c1a:0:b0:2bc:b224:98ac with SMTP id s26-20020a2e9c1a000000b002bcb22498acmr19066298lji.31.1693253426622; Mon, 28 Aug 2023 13:10:26 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:26 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 16/32] bsd-user: Implement several get/set system calls: Date: Sun, 27 Aug 2023 17:57:30 +0200 Message-Id: <20230827155746.84781-17-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::233; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x233.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son getpid(2), getppid(2), getpgrp(2) setreuid(2), setregid(2) getuid(2), geteuid(2), getgid(2), getegid(2), getpgid(2) setuid(2), seteuid(2), setgid(2), setegid(2), setpgid(2) Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 90 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 60 +++++++++++++++++++++++ 2 files changed, 150 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index 2c225b12bc..98be0be2b9 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -196,4 +196,94 @@ static inline abi_long do_bsd_setrlimit(abi_long arg1, abi_ulong arg2) return ret; } +/* getpid(2) */ +static inline abi_long do_bsd_getpid(void) +{ + return get_errno(getpid()); +} + +/* getppid(2) */ +static inline abi_long do_bsd_getppid(void) +{ + return get_errno(getppid()); +} + +/* getuid(2) */ +static inline abi_long do_bsd_getuid(void) +{ + return get_errno(getuid()); +} + +/* geteuid(2) */ +static inline abi_long do_bsd_geteuid(void) +{ + return get_errno(geteuid()); +} + +/* getgid(2) */ +static inline abi_long do_bsd_getgid(void) +{ + return get_errno(getgid()); +} + +/* getegid(2) */ +static inline abi_long do_bsd_getegid(void) +{ + return get_errno(getegid()); +} + +/* setuid(2) */ +static inline abi_long do_bsd_setuid(abi_long arg1) +{ + return get_errno(setuid(arg1)); +} + +/* seteuid(2) */ +static inline abi_long do_bsd_seteuid(abi_long arg1) +{ + return get_errno(seteuid(arg1)); +} + +/* setgid(2) */ +static inline abi_long do_bsd_setgid(abi_long arg1) +{ + return get_errno(setgid(arg1)); +} + +/* setegid(2) */ +static inline abi_long do_bsd_setegid(abi_long arg1) +{ + return get_errno(setegid(arg1)); +} + +/* getpgid(2) */ +static inline abi_long do_bsd_getpgid(pid_t pid) +{ + return get_errno(getpgid(pid)); +} + +/* setpgid(2) */ +static inline abi_long do_bsd_setpgid(int pid, int pgrp) +{ + return get_errno(setpgid(pid, pgrp)); +} + +/* getpgrp(2) */ +static inline abi_long do_bsd_getpgrp(void) +{ + return get_errno(getpgrp()); +} + +/* setreuid(2) */ +static inline abi_long do_bsd_setreuid(abi_long arg1, abi_long arg2) +{ + return get_errno(setreuid(arg1, arg2)); +} + +/* setregid(2) */ +static inline abi_long do_bsd_setregid(abi_long arg1, abi_long arg2) +{ + return get_errno(setregid(arg1, arg2)); +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 5467cb2341..af3aff778d 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -252,6 +252,66 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_setrlimit(arg1, arg2); break; + case TARGET_FREEBSD_NR_getpid: /* getpid(2) */ + ret = do_bsd_getpid(); + break; + + case TARGET_FREEBSD_NR_getppid: /* getppid(2) */ + ret = do_bsd_getppid(); + break; + + case TARGET_FREEBSD_NR_getuid: /* getuid(2) */ + ret = do_bsd_getuid(); + break; + + case TARGET_FREEBSD_NR_geteuid: /* geteuid(2) */ + ret = do_bsd_geteuid(); + break; + + case TARGET_FREEBSD_NR_getgid: /* getgid(2) */ + ret = do_bsd_getgid(); + break; + + case TARGET_FREEBSD_NR_getegid: /* getegid(2) */ + ret = do_bsd_getegid(); + break; + + case TARGET_FREEBSD_NR_setuid: /* setuid(2) */ + ret = do_bsd_setuid(arg1); + break; + + case TARGET_FREEBSD_NR_seteuid: /* seteuid(2) */ + ret = do_bsd_seteuid(arg1); + break; + + case TARGET_FREEBSD_NR_setgid: /* setgid(2) */ + ret = do_bsd_setgid(arg1); + break; + + case TARGET_FREEBSD_NR_setegid: /* setegid(2) */ + ret = do_bsd_setegid(arg1); + break; + + case TARGET_FREEBSD_NR_getpgrp: /* getpgrp(2) */ + ret = do_bsd_getpgrp(); + break; + + case TARGET_FREEBSD_NR_getpgid: /* getpgid(2) */ + ret = do_bsd_getpgid(arg1); + break; + + case TARGET_FREEBSD_NR_setpgid: /* setpgid(2) */ + ret = do_bsd_setpgid(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_setreuid: /* setreuid(2) */ + ret = do_bsd_setreuid(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_setregid: /* setregid(2) */ + ret = do_bsd_setregid(arg1, arg2); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826929 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=Wop8TLqA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCr3d74z1yZ9 for ; Tue, 29 Aug 2023 06:12:08 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZK-0000kk-7t; Mon, 28 Aug 2023 16:10:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZH-0000Rs-GP for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:35 -0400 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZF-0007iu-0D for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:35 -0400 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-9a2a4a5472dso779333366b.1 for ; Mon, 28 Aug 2023 13:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253431; x=1693858231; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/mU1Nz0rgUrkX9WjeK377VjwdSgr6nNU4OZSDXdnTPY=; b=Wop8TLqACsZcMSGFkQXkz5mlJH+ROhzCEVNAMmWtTT97FaDjkYH69Okb4nLCfo1x/G 1pV5MUvbhuQVrvQBp/MlQrf/Sgmwyp6Y+GR8h8GYFBUoN88j545+54v6UsFMuDLpP39L heMyEWGD9i8ta8bSREF9U39Zb/GlkkYXP5bT70wM2532P61oLMBnhEO+wANFGNvVIMTy BRBBzZdxpk+btDOeuLjxkIZDSqNJvMqAOYxNx2K0+RQJW4T9NlxA7jJO4xP3uEe8O6Po F5snKpDyS4jRUEEslszUPsV+T1q70lpyGJGgMxh9CHAwy02zkqVcH4xsUdj9nRTsLuk3 y6Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253431; x=1693858231; 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=/mU1Nz0rgUrkX9WjeK377VjwdSgr6nNU4OZSDXdnTPY=; b=evUAq0f5L0HR3owTEtXA86yJJfCBOZh87jXv0dlKKNG3qVpxEsgWFT3tGyhbX+6bf3 K6zkCQOWBfKjPcEk8EIJePWXojISjXHsxJ1RJzc3V6lo7qHh+3kDzutggzTkd4P9TS2g wmZmotcIE8YW9Y0bS/8oE9/FQ8ka6/xmzFu+et4/9dNUUcJa5Cg+kz+hybPTk/xUrCqm lvjCrVmIAagpYIofbLaQUbKgEV05Cm5McAfkkcCU9xQv2i8RhXvUJdvmZObAArmFeGXP 0YXnNIcBh49YrrEc6lYnhrVe5i1HRZAoExmYa6DVnkq7CJuebk0wwin4sPvdoFq3CgZV s6BQ== X-Gm-Message-State: AOJu0YxQUFqjxpfO0VQvmHMNZMFv2FrgqpoCvKqBYKld0WKH9LvKV3/b rv7OZ1/iBU+bf8fTwbmaDKa3eYHUX65QyA== X-Google-Smtp-Source: AGHT+IEqvOBv2TRfSd/G/cgPCruhNWsfD9tZxdYRCzzRWA70772RMQieQFHSjdqLbr4lcm7Zc520og== X-Received: by 2002:a17:907:1614:b0:9a5:c2c0:1d0f with SMTP id hb20-20020a170907161400b009a5c2c01d0fmr595336ejc.12.1693253431325; Mon, 28 Aug 2023 13:10:31 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:31 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 17/32] bsd-user: Implement get/set[resuid/resgid/sid] and issetugid. Date: Sun, 27 Aug 2023 17:57:31 +0200 Message-Id: <20230827155746.84781-18-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::634; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x634.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 76 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 28 +++++++++++++ 2 files changed, 104 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index 98be0be2b9..5c072d75b7 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -286,4 +286,80 @@ static inline abi_long do_bsd_setregid(abi_long arg1, abi_long arg2) return get_errno(setregid(arg1, arg2)); } +/* setresgid(2) */ +static inline abi_long do_bsd_setresgid(gid_t rgid, gid_t egid, gid_t sgid) +{ + return get_errno(setresgid(rgid, egid, sgid)); +} + +/* setresuid(2) */ +static inline abi_long do_bsd_setresuid(uid_t ruid, uid_t euid, uid_t suid) +{ + return get_errno(setresuid(ruid, euid, suid)); +} + +/* getresuid(2) */ +static inline abi_long do_bsd_getresuid(abi_ulong arg1, abi_ulong arg2, + abi_ulong arg3) +{ + abi_long ret; + uid_t ruid, euid, suid; + + ret = get_errno(getresuid(&ruid, &euid, &suid)); + if (is_error(ret)) { + return ret; + } + if (put_user_s32(ruid, arg1)) { + return -TARGET_EFAULT; + } + if (put_user_s32(euid, arg2)) { + return -TARGET_EFAULT; + } + if (put_user_s32(suid, arg3)) { + return -TARGET_EFAULT; + } + return ret; +} + +/* getresgid(2) */ +static inline abi_long do_bsd_getresgid(abi_ulong arg1, abi_ulong arg2, + abi_ulong arg3) +{ + abi_long ret; + uid_t ruid, euid, suid; + + ret = get_errno(getresgid(&ruid, &euid, &suid)); + if (is_error(ret)) { + return ret; + } + if (put_user_s32(ruid, arg1)) { + return -TARGET_EFAULT; + } + if (put_user_s32(euid, arg2)) { + return -TARGET_EFAULT; + } + if (put_user_s32(suid, arg3)) { + return -TARGET_EFAULT; + } + return ret; +} + +/* getsid(2) */ +static inline abi_long do_bsd_getsid(abi_long arg1) +{ + return get_errno(getsid(arg1)); +} + +/* setsid(2) */ +static inline abi_long do_bsd_setsid(void) +{ + return get_errno(setsid()); +} + +/* issetugid(2) */ +static inline abi_long do_bsd_issetugid(void) +{ + return get_errno(issetugid()); +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index af3aff778d..bbfd260fe0 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -312,6 +312,34 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_setregid(arg1, arg2); break; + case TARGET_FREEBSD_NR_getresuid: /* getresuid(2) */ + ret = do_bsd_getresuid(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_getresgid: /* getresgid(2) */ + ret = do_bsd_getresgid(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_setresuid: /* setresuid(2) */ + ret = do_bsd_setresuid(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_setresgid: /* setresgid(2) */ + ret = do_bsd_setresgid(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_getsid: /* getsid(2) */ + ret = do_bsd_getsid(arg1); + break; + + case TARGET_FREEBSD_NR_setsid: /* setsid(2) */ + ret = do_bsd_setsid(); + break; + + case TARGET_FREEBSD_NR_issetugid: /* issetugid(2) */ + ret = do_bsd_issetugid(); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826922 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=Qe1Jy164; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCC5k1Mz1yhW for ; Tue, 29 Aug 2023 06:11:35 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZM-0000wK-Hh; Mon, 28 Aug 2023 16:10:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZK-0000no-GR for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:38 -0400 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZI-0007j6-5V for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:38 -0400 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2bccda76fb1so54916481fa.2 for ; Mon, 28 Aug 2023 13:10:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253434; x=1693858234; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uGJcl3BOXhUnndM8ORtPwX5e+vJ4bSok+GBn3iB9dGo=; b=Qe1Jy164KGnzx3V4d//xK12d6hhRdQyh5PfKSyhhNpyWk+YE54jFsD0R5ObiivrobF 58S+9Cm7u81I9Bdo/J3vOSzOSnaQ/k5Mz4M6oMujAgrnqQJTOJP3ILGK+0Ijf5FnBXaF A5TVSNwLMtUgyqgWL41t8kM8tUXyfEzj6vf3LeT4HHTSkManur/B7jStDRkkSsHX1gB3 2O+X83krc6Ial3FfTf8Pa7m94ZT9t8VxkpRqHYnTouwicwSVaKDPwXXEc/YaCBXK2ZHO 4WVpD3oHV9WkO3yVF6Queo8tvVZZJ/hvbtz56TLrpYXihq5tDl2DxKSlbbvt+5QI94zt WsPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253434; x=1693858234; 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=uGJcl3BOXhUnndM8ORtPwX5e+vJ4bSok+GBn3iB9dGo=; b=EFTVnhYnyOqsL+Ajyzr9GwGQ4CsuC1GPeITxkbTZDdNf84d1y5lKjB6q3x7sILGicL gPi6zAxgA4piuzieWLyf3hlUjBubt+gLabBF2ivd07ywJJ0gNuL3i0NvnncnC0h3u2tI TP/zA2Kwc1QwxO4uugqORkF83id3k+sQAuo+ZZiJGhin1VAU/c62zvf3FNFAjQi7HI3p +XY2apl+XoEtxO5nPAuxBPGfnuTgGGNCDNlyijwISVY9NVe9EpjSZyNvhizy3tzEGryJ IGi+Y07yAPW5XdDQ4rZBOJyikqmys2iKuf8gPZImQ5ylshSYdNY2Jyqh5EsMB/jbfwgB rWsQ== X-Gm-Message-State: AOJu0YyC/4ZgGPwO2bm7LW4L73osYeNEE7L0OAT/Y1VMlg8HYZqYQfLx QOridrJejWXeWFjZ7zWv0GFO0+ewArhOEQ== X-Google-Smtp-Source: AGHT+IHTcuH27i3giVmLPm/P4QdcbCobNzweiPeEzRd8rMUFTzhXg1ucU0KmnSg0/+DnARmJDgJq9Q== X-Received: by 2002:a2e:8717:0:b0:2bc:c11c:4471 with SMTP id m23-20020a2e8717000000b002bcc11c4471mr18016366lji.21.1693253433925; Mon, 28 Aug 2023 13:10:33 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:33 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 18/32] bsd-user: Add stubs for profil(2), ktrace(2), utrace(2) and ptrace(2). Date: Sun, 27 Aug 2023 17:57:32 +0200 Message-Id: <20230827155746.84781-19-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::22d; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x22d.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/bsd-proc.h | 28 ++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index 5c072d75b7..c9b5a4cbb6 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -362,4 +362,32 @@ static inline abi_long do_bsd_issetugid(void) return get_errno(issetugid()); } +/* profil(2) */ +static inline abi_long do_bsd_profil(abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4) +{ + return -TARGET_ENOSYS; +} + +/* ktrace(2) */ +static inline abi_long do_bsd_ktrace(abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4) +{ + return -TARGET_ENOSYS; +} + +/* utrace(2) */ +static inline abi_long do_bsd_utrace(abi_long arg1, abi_long arg2) +{ + return -TARGET_ENOSYS; +} + + +/* ptrace(2) */ +static inline abi_long do_bsd_ptrace(abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4) +{ + return -TARGET_ENOSYS; +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index bbfd260fe0..7c5c17e70b 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -340,6 +340,22 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_issetugid(); break; + case TARGET_FREEBSD_NR_profil: /* profil(2) */ + ret = do_bsd_profil(arg1, arg2, arg3, arg4); + break; + + case TARGET_FREEBSD_NR_ktrace: /* ktrace(2) */ + ret = do_bsd_ktrace(arg1, arg2, arg3, arg4); + break; + + case TARGET_FREEBSD_NR_utrace: /* utrace(2) */ + ret = do_bsd_utrace(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_ptrace: /* ptrace(2) */ + ret = do_bsd_ptrace(arg1, arg2, arg3, arg4); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826939 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=WY1aOkas; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMDV2wjLz1yZ9 for ; Tue, 29 Aug 2023 06:12:42 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZO-0000zI-7J; Mon, 28 Aug 2023 16:10:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZL-0000v0-Lv for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:39 -0400 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZJ-0007jJ-Br for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:39 -0400 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-99c1f6f3884so450006466b.0 for ; Mon, 28 Aug 2023 13:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253436; x=1693858236; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tsF5lR/xA+aNMrZWO0/VuSFRuaGJ+PJkz50iHadMyng=; b=WY1aOkasH4eO94tZkL2By8Ou73oyIV0hV3FzeBd/wU30cbzpo7Bm3NA5BwD/EHbCv6 RglJA1LMmq2i9xDTs5FNKzw9Qrk+PbWxlPczTzD2stIvz5ki7APV2hEXjGHisQD5h035 zNCigN6Uov4f+bNOj2TcwDJLH/XDTH3kjcL/GyrYmWX8ce+f4rBh0qvzyYsSkojsoz+c eU71ZxoYaSvJFLoTm2Aa+KST+n51cZIb2apGB3mBVn/QernPIfRqs9aDxb+81INTvV4B OIMGsmvJ3Agr5CxuWrhfAC36CXFPkaatf7uXcvFM97tVLayEnyaTMXGxNgIVN4Tj9+do o/NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253436; x=1693858236; 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=tsF5lR/xA+aNMrZWO0/VuSFRuaGJ+PJkz50iHadMyng=; b=OAs4Oa0Dmfr7/3tNQGFEHS1w7Des/bWwtqv6+lLk7IF0SUyU77+qfJuL3W9YP3X8d6 94TX3bFsp/RgrBEuwUvciJ1c2JNvlHyZfqntyjalaUmB2RAOhpkLVnNf0V+KCmN2s+BI oiL77JOQ0pcLc6XE6GfCgKuewwyHy82meyWe1YfKnxh2t8tWpvXy+vJco/ZIHZQ7Ewr9 Zk2YnZM5ATGOSkAxmJSP74CiVf42KBJlE6YyYtzKooaHxVkIG45LV/AVaWAhwmJ/MTaw WcKW5r5QnfMAGoWMiZc7ahncjItzpk3BZucV05hn13oJ6cj/wvgX7KGXxuA0Fc0MRXm8 wkaw== X-Gm-Message-State: AOJu0Ywz7VnC9Z/tqZGknxr0GXYZ3PQptkJ0nPGUGaDtnmuNTFySamsG 4ay+e+GvBZ0UkJMsWxNRH3SnEczrRhXf+A== X-Google-Smtp-Source: AGHT+IH9FKgqiFkyBU076iZq6Q3ZjPE2ua533pBkpkjHu93m22XMYrs6NDlHJiB3MOBgG8rhT0mPcw== X-Received: by 2002:a17:906:5a55:b0:9a1:c00e:60c5 with SMTP id my21-20020a1709065a5500b009a1c00e60c5mr13727313ejc.48.1693253435703; Mon, 28 Aug 2023 13:10:35 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:35 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 19/32] bsd-user: Implement getpriority(2) and setpriority(2). Date: Sun, 27 Aug 2023 17:57:33 +0200 Message-Id: <20230827155746.84781-20-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::636; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x636.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha --- bsd-user/bsd-proc.h | 27 +++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 8 ++++++++ 2 files changed, 35 insertions(+) diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h index c9b5a4cbb6..c7769e3560 100644 --- a/bsd-user/bsd-proc.h +++ b/bsd-user/bsd-proc.h @@ -390,4 +390,31 @@ static inline abi_long do_bsd_ptrace(abi_long arg1, abi_long arg2, return -TARGET_ENOSYS; } +/* getpriority(2) */ +static inline abi_long do_bsd_getpriority(abi_long which, abi_long who) +{ + abi_long ret; + /* + * Note that negative values are valid for getpriority, so we must + * differentiate based on errno settings. + */ + errno = 0; + ret = getpriority(which, who); + if (ret == -1 && errno != 0) { + ret = -host_to_target_errno(errno); + return ret; + } + /* Return value is a biased priority to avoid negative numbers. */ + ret = 20 - ret; + + return ret; +} + +/* setpriority(2) */ +static inline abi_long do_bsd_setpriority(abi_long which, abi_long who, + abi_long prio) +{ + return get_errno(setpriority(which, who, prio)); +} + #endif /* !BSD_PROC_H_ */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 7c5c17e70b..0f25187d63 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -356,6 +356,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_ptrace(arg1, arg2, arg3, arg4); break; + case TARGET_FREEBSD_NR_getpriority: /* getpriority(2) */ + ret = do_bsd_getpriority(arg1, arg2); + break; + + case TARGET_FREEBSD_NR_setpriority: /* setpriority(2) */ + ret = do_bsd_setpriority(arg1, arg2, arg3); + break; + /* * File system calls. From patchwork Sun Aug 27 15:57:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826944 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=LiPQUUzf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMFP2FFxz1yZ9 for ; Tue, 29 Aug 2023 06:13:29 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZO-0000ze-Kw; Mon, 28 Aug 2023 16:10:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZN-0000xC-B3 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:41 -0400 Received: from mail-lf1-x12c.google.com ([2a00:1450:4864:20::12c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZL-0007kZ-0U for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:41 -0400 Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-500a398cda5so5842387e87.0 for ; Mon, 28 Aug 2023 13:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253437; x=1693858237; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=51bkr9hASitHvEDp68cWD5IuyPCVoWzgBGQbztfhBlw=; b=LiPQUUzfEg6GX/mLWlS+VlP45tV0M2nWQn2R2WsalfZauStJ6XgikqbpcZ2erXS/PF UnajJ144Fi6Vh0hXm0kyQ9n/uprOk3HHO4r1DnZlCiAfSUAJdP17H/RdrUcbwl/VtnVN +ovT00s1iZvOpUYkAmnUXUxFkSNpm+GUw0qLExe/f7VNu0KkxB9uMFJRNDA4/Y5lnlhs PwNPIF047d8Qshkmky/5RBjMVbRZ9EZd06tWKv9Dg9nGl/OV1ILFbU5EI7PG6RPuCwG8 FLUv3CJK+NlfHD/dRbPz4tHr6LBLBkmqzM7y3Dg7oK3AIj4oTuQVYTnfyihueakD7MR0 C/Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253437; x=1693858237; 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=51bkr9hASitHvEDp68cWD5IuyPCVoWzgBGQbztfhBlw=; b=YeqJzy1ve7VeHYzYqGIpmHo9xB3J0yNVWmPxfIFar7F62AhzDskZCbhvVdsDylLB6N 4kx4Djzk30xrWfbDnbN/N5d2Qogoe5YWJKZNk2hefvtWboavRFoEW40INQBvDkmLith9 1c4fjGHE7YqelgxtLMxw9gA3ZWupqlYadc9G6hY46Rxr00/SJMDhQVUX6g8yYlS36Rns M30YzjkBngl+bbB4zk3DBFrz/pBE+fLv/VhNzDesP4QJaPagKYMHhQ2fQjcNDAEp6Fmb Inm+AyPdv7TGADRkdkiLWfdfvvCDkKJT9DcZPsi1kjO+2zhsX87fO4AnNlYi1RHnCPCX 9Wyg== X-Gm-Message-State: AOJu0YxptBGQy0j2iYtZ51rdi6zzbWniasC69ilt6vZRwZS9iufb5/1K zUepjslupwoz/6IoqrsIQ5q6j3QM7LCBug== X-Google-Smtp-Source: AGHT+IHoxYMMtNm3ML4CxFOYviJq7lNkTC73PW2Qv8seYeFraGb6b0VdN5Qxjmpdxa9GwOcJ0+ImdQ== X-Received: by 2002:a2e:9357:0:b0:2b7:33b9:8809 with SMTP id m23-20020a2e9357000000b002b733b98809mr19068156ljh.16.1693253436984; Mon, 28 Aug 2023 13:10:36 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:36 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Karim Taha Subject: [PATCH 20/32] bsd-user: Add freebsd/os-proc.c to meson.build Date: Sun, 27 Aug 2023 17:57:34 +0200 Message-Id: <20230827155746.84781-21-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::12c; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lf1-x12c.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Karim Taha --- bsd-user/freebsd/meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/bsd-user/freebsd/meson.build b/bsd-user/freebsd/meson.build index f87c788e84..d169e31235 100644 --- a/bsd-user/freebsd/meson.build +++ b/bsd-user/freebsd/meson.build @@ -1,4 +1,5 @@ bsd_user_ss.add(files( + 'os-proc.c', 'os-sys.c', 'os-syscall.c', )) From patchwork Sun Aug 27 15:57:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826931 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=niCss6cr; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCv0W1cz1yhW for ; Tue, 29 Aug 2023 06:12:11 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZT-0001O2-Az; Mon, 28 Aug 2023 16:10:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZR-0001Aq-Ft for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:45 -0400 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZO-0007l7-7Q for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:45 -0400 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-52a250aa012so4855851a12.3 for ; Mon, 28 Aug 2023 13:10:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253440; x=1693858240; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7UpKos6Sxr5kN6Czip5qxzC0d38rC3L1LguZr4TDVG0=; b=niCss6crqHs9OgaM/o6ByjbfbEebIepthFawHXfDzbD8pIJupCi3FJZ+bdwk+nsMHD qEQ1ek3rEjoWZaT7Y8rRb1PplamFZ4d5KEkEOMEFy/yaR8KuBzjdG1PPAoRoG7apoAvF wZvlTWH13cUvMbl+zqnpuzH1fxNhhtMNR+Vb19GP3SdZ6fU+mDYSTwwZ4K3+22kGkj4p BqvW93XfHH6pih/WKphGhlNxsS9K+d9CvTRbAKPROq7lUEpOAb2eRgKqMbtll7cls2/8 f9EhvmQM55BQGIlLEVO2Y86S4AS0MduZl3AnuQQYKNxeEm94b29XnqKVdr7e2wYrG0pM gJUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253440; x=1693858240; 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=7UpKos6Sxr5kN6Czip5qxzC0d38rC3L1LguZr4TDVG0=; b=KJ1PSegpTBEH1AAF4oRoC3MGqQ7VHc/tqsGNqz0v9WteOjF671mbpB1fA3k3IduH9f gFeuuH2LUn88DT828RzrvIJlAKOPb7fZU9ycnSba9FV+N0jDCOrHEYkn8ezd6fdGDZoe opuboUZ04KwmCyvr7DO16GWSe+vgu2ZXyWuumBLmOu8WJKRR/tzzSP3kcny5pLhblc17 HN9kgWz1njv6jmkOnYlL7QY1KB/BU2TfYDrdCjDwaZF/vn1fRSmA0cuL6jVwnr48KX9q 0jbcIU91qH4SXGOvI3WlTldLImYVnEM1wJN12Bziv1CMljApTwwgF8BGPwOPBoJ2Ltgo XKeg== X-Gm-Message-State: AOJu0Yyn062YNkG3v/j7DQIxgaaWzUKm+jzrf+WX/ncP7Dig+ja9sQOf +Mb43WmMeOTt3eHw2dDj2uJbERPhI2q4qQ== X-Google-Smtp-Source: AGHT+IEVrGP9lXyNk9HrkvNLUrc1iPKQCZe6zxuK2Ui71VPx3/lb3OCiW4fHZrPIK5MS868z5Vshfw== X-Received: by 2002:a17:907:a07a:b0:9a1:bd82:de30 with SMTP id ia26-20020a170907a07a00b009a1bd82de30mr13046240ejc.2.1693253440010; Mon, 28 Aug 2023 13:10:40 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:39 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 21/32] bsd-user: Implement get_filename_from_fd. Date: Sun, 27 Aug 2023 17:57:35 +0200 Message-Id: <20230827155746.84781-22-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::52b; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ed1-x52b.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.c | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 bsd-user/freebsd/os-proc.c diff --git a/bsd-user/freebsd/os-proc.c b/bsd-user/freebsd/os-proc.c new file mode 100644 index 0000000000..5cd800e607 --- /dev/null +++ b/bsd-user/freebsd/os-proc.c @@ -0,0 +1,74 @@ +/* + * FreeBSD process related emulation code + * + * Copyright (c) 2013-15 Stacey D. Son + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +#include "qemu/osdep.h" + +#include +#include +#include +struct kinfo_proc; +#include + +#include "qemu.h" + +/* + * Get the filename for the given file descriptor. + * Note that this may return NULL (fail) if no longer cached in the kernel. + */ +static char * +get_filename_from_fd(pid_t pid, int fd, char *filename, size_t len) +{ + char *ret = NULL; + unsigned int cnt; + struct procstat *procstat = NULL; + struct kinfo_proc *kp = NULL; + struct filestat_list *head = NULL; + struct filestat *fst; + + procstat = procstat_open_sysctl(); + if (procstat == NULL) + goto out; + + kp = procstat_getprocs(procstat, KERN_PROC_PID, pid, &cnt); + if (kp == NULL) + goto out; + + head = procstat_getfiles(procstat, kp, 0); + if (head == NULL) + goto out; + + STAILQ_FOREACH(fst, head, next) { + if (fd == fst->fs_fd) { + if (fst->fs_path != NULL) { + (void)strlcpy(filename, fst->fs_path, len); + ret = filename; + } + break; + } + } + +out: + if (head != NULL) + procstat_freefiles(procstat, head); + if (kp != NULL) + procstat_freeprocs(procstat, kp); + if (procstat != NULL) + procstat_close(procstat); + return ret; +} + From patchwork Sun Aug 27 15:57:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826942 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=TqW9IQMH; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMF65PjYz1yZ9 for ; Tue, 29 Aug 2023 06:13:14 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZX-0001iF-JT; Mon, 28 Aug 2023 16:10:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZW-0001dg-2d for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:50 -0400 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZT-0007mu-Fj for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:49 -0400 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-99de884ad25so484573066b.3 for ; Mon, 28 Aug 2023 13:10:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253445; x=1693858245; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IPaJlwWvW4Ocf8/31j+3OB7HSlabElE5TQ7jHnnbRPc=; b=TqW9IQMH9Gg0gRkLaTRWjczNIJFWFp8220viOrJZ9PBUtWSuleQpYbMPrX3pRNqVau zT9DUjasO4KVSQ6NV+5za9Wg0k4nXSh4/HKSXXx9hR7E5Zn7oJkziIzQpezkyD/4Gei0 CmKzk7uTyYf/GYzP9/pmHphuBGRvTAAxyzhEbhiXqPOL7Y2o88GEblRJjBFR3aRTOM1M sqi7eNLlIsy3Pv3M+fVfmbeQ6ggUol2l993q6UPvk0OnPZ3mwvv1bXZBy2hSg9Qpla8j 6kkGshwFFUGSZXfAqxnaiYUK4mJvGaEcdn+j5KvenUo6zrPFzpngQbWozN15JIZrCcyV XQWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253445; x=1693858245; 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=IPaJlwWvW4Ocf8/31j+3OB7HSlabElE5TQ7jHnnbRPc=; b=EUS5kkR3gNEh5/384oTZccb6JZsNh3lJC9NdDtOqSlfsWCi2jGNsztROX1TOUl+Ww9 lNAfNCNUOeD/ghEnVa0cOXLiAbCFIoZfn05pZqsbrU+soKh4VVIFA8SKiMvc7Z4j2hN7 7FC0qsq3z4r9IVlLwT4IIC9Sc3Db/YiIXeW6Vv0YcUrANyv+IIuKI7iY4h4bIfmQRgdN e1QC71ZrQ3AcPUxRitjiDgBrfD7w0jWXNrPSwyP7L1aAnAG4ftGV+eAV+5mLwFkodW4E m/tSY3bbgdjeDLP+DPJQ3tKFPnD4NinNwn71vd78R/q20u1/hW58x0oeWif9bd1j6Zb0 9+Xg== X-Gm-Message-State: AOJu0YxJThoaNi8EE9Rk4VqnEeqpn2Ar6QXzM2uUJduLZvV6ifHyYOxO wHntOeoMBO54deKlN3FDiW4rth1Aaw4erw== X-Google-Smtp-Source: AGHT+IHNWH09W8cqnqlTfm2yldjmlCnAi9N96bPSKvwENS2esiQGmUNC7l6aVAjt1PB0nGNPc7c0rw== X-Received: by 2002:a17:907:6087:b0:9a2:1bd8:a6a with SMTP id ht7-20020a170907608700b009a21bd80a6amr9960448ejc.41.1693253445125; Mon, 28 Aug 2023 13:10:45 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:44 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 22/32] bsd-user: Implement freebsd_exec_common, used in implementing execve/fexecve. Date: Sun, 27 Aug 2023 17:57:36 +0200 Message-Id: <20230827155746.84781-23-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::633; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x633.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Acked-by: Richard Henderson --- bsd-user/freebsd/os-proc.c | 177 +++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) diff --git a/bsd-user/freebsd/os-proc.c b/bsd-user/freebsd/os-proc.c index 5cd800e607..396f258a64 100644 --- a/bsd-user/freebsd/os-proc.c +++ b/bsd-user/freebsd/os-proc.c @@ -72,3 +72,180 @@ out: return ret; } +/* + * execve/fexecve + */ +abi_long freebsd_exec_common(abi_ulong path_or_fd, abi_ulong guest_argp, + abi_ulong guest_envp, int do_fexec) +{ + char **argp, **envp, **qargp, **qarg1, **qarg0, **qargend; + int argc, envc; + abi_ulong gp; + abi_ulong addr; + char **q; + int total_size = 0; + void *p; + abi_long ret; + + argc = 0; + for (gp = guest_argp; gp; gp += sizeof(abi_ulong)) { + if (get_user_ual(addr, gp)) { + return -TARGET_EFAULT; + } + if (!addr) { + break; + } + argc++; + } + envc = 0; + for (gp = guest_envp; gp; gp += sizeof(abi_ulong)) { + if (get_user_ual(addr, gp)) { + return -TARGET_EFAULT; + } + if (!addr) { + break; + } + envc++; + } + + qarg0 = argp = g_new0(char *, argc + 9); + /* save the first agrument for the emulator */ + *argp++ = (char *)getprogname(); + qargp = argp; + *argp++ = (char *)getprogname(); + qarg1 = argp; + envp = g_new0(char *, envc + 1); + for (gp = guest_argp, q = argp; gp; gp += sizeof(abi_ulong), q++) { + if (get_user_ual(addr, gp)) { + ret = -TARGET_EFAULT; + goto execve_end; + } + if (!addr) { + break; + } + *q = lock_user_string(addr); + if (*q == NULL) { + ret = -TARGET_EFAULT; + goto execve_end; + } + total_size += strlen(*q) + 1; + } + *q++ = NULL; + qargend = q; + + for (gp = guest_envp, q = envp; gp; gp += sizeof(abi_ulong), q++) { + if (get_user_ual(addr, gp)) { + ret = -TARGET_EFAULT; + goto execve_end; + } + if (!addr) { + break; + } + *q = lock_user_string(addr); + if (*q == NULL) { + ret = -TARGET_EFAULT; + goto execve_end; + } + total_size += strlen(*q) + 1; + } + *q = NULL; + + /* + * This case will not be caught by the host's execve() if its + * page size is bigger than the target's. + */ + if (total_size > MAX_ARG_PAGES * TARGET_PAGE_SIZE) { + ret = -TARGET_E2BIG; + goto execve_end; + } + + if (do_fexec) { + if (((int)path_or_fd > 0 && + is_target_elf_binary((int)path_or_fd)) == 1) { + char execpath[PATH_MAX]; + + /* + * The executable is an elf binary for the target + * arch. execve() it using the emulator if we can + * determine the filename path from the fd. + */ + if (get_filename_from_fd(getpid(), (int)path_or_fd, execpath, + sizeof(execpath)) != NULL) { + memmove(qarg1 + 2, qarg1, (qargend-qarg1) * sizeof(*qarg1)); + qarg1[1] = qarg1[0]; + qarg1[0] = (char *)"-0"; + qarg1 += 2; + qargend += 2; + *qarg1 = execpath; +#ifndef DONT_INHERIT_INTERP_PREFIX + memmove(qarg1 + 2, qarg1, (qargend-qarg1) * sizeof(*qarg1)); + *qarg1++ = (char *)"-L"; + *qarg1++ = (char *)interp_prefix; +#endif + ret = get_errno(execve(qemu_proc_pathname, qargp, envp)); + } else { + /* Getting the filename path failed. */ + ret = -TARGET_EBADF; + goto execve_end; + } + } else { + ret = get_errno(fexecve((int)path_or_fd, argp, envp)); + } + } else { + int fd; + + p = lock_user_string(path_or_fd); + if (p == NULL) { + ret = -TARGET_EFAULT; + goto execve_end; + } + + /* + * Check the header and see if it a target elf binary. If so + * then execute using qemu user mode emulator. + */ + fd = open(p, O_RDONLY | O_CLOEXEC); + if (fd > 0 && is_target_elf_binary(fd) == 1) { + close(fd); + /* execve() as a target binary using emulator. */ + memmove(qarg1 + 2, qarg1, (qargend-qarg1) * sizeof(*qarg1)); + qarg1[1] = qarg1[0]; + qarg1[0] = (char *)"-0"; + qarg1 += 2; + qargend += 2; + *qarg1 = (char *)p; +#ifndef DONT_INHERIT_INTERP_PREFIX + memmove(qarg1 + 2, qarg1, (qargend-qarg1) * sizeof(*qarg1)); + *qarg1++ = (char *)"-L"; + *qarg1++ = (char *)interp_prefix; +#endif + ret = get_errno(execve(qemu_proc_pathname, qargp, envp)); + } else { + close(fd); + /* Execve() as a host native binary. */ + ret = get_errno(execve(p, argp, envp)); + } + unlock_user(p, path_or_fd, 0); + } + +execve_end: + for (gp = guest_argp, q = argp; *q; gp += sizeof(abi_ulong), q++) { + if (get_user_ual(addr, gp) || !addr) { + break; + } + unlock_user(*q, addr, 0); + } + + for (gp = guest_envp, q = envp; *q; gp += sizeof(abi_ulong), q++) { + if (get_user_ual(addr, gp) || !addr) { + break; + } + unlock_user(*q, addr, 0); + } + + g_free(qarg0); + g_free(envp); + + return ret; +} + From patchwork Sun Aug 27 15:57:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826928 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=OCGY+Dbt; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCq5DPpz1yZ9 for ; Tue, 29 Aug 2023 06:12:07 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiZa-0001jD-2D; Mon, 28 Aug 2023 16:10:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiZY-0001ib-B4 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:52 -0400 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiZW-0007nE-52 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:10:52 -0400 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-99d937b83efso475918066b.3 for ; Mon, 28 Aug 2023 13:10:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253448; x=1693858248; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5EMdXrfH+xePejoOiwwGdtX0Hn6WMJbM7pyz92IZwhk=; b=OCGY+DbtZzlJJ6YDxYzFugoXryZvwEIQ9SDdu/2/UxGI8E7UsENmL6tKbtiQ6MmFRH bz/0REnrCyqHq128aL/oFBJytpUtt3Ku1wRaE78xJMpaifRXlpgh+wKRji6JQnZERGdr jTrV5b+TB5liPtoB/TceYu418770Tz2NoOkzZ8hNOkWRUMT2f314INmjbmme8gdn65ux WhUJRUZOqicohG7VY7EUxztkFSQmGU7cHTOUDZOeEOYIhfl+axEhYhQ6Tu4MzpNGeft8 nWYkBZh+1OaIfv54bF/dnQmWeJ+jKXqZQq+et0jbMb9MPovsKSI3rXD5B19yJq9qIttF 4lGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253448; x=1693858248; 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=5EMdXrfH+xePejoOiwwGdtX0Hn6WMJbM7pyz92IZwhk=; b=aVKcbIC7w89vjZYM8I1x1wOpNyEi+351351xaJGCmSnnTstm2NVGWhofgLYv0OnxbL isyrP+ZaEX2zocjuPUW/G6ciQzeeHDLaO6ig+9URi3I/Jgw/7eGSBWOh0NIXWkotxH7f ORBnaRWiAl+GS5YFsblNkYlA2L9He2ZA4qurwp0EfJfbymNbf79cFbbEN79hJ5m9Qgsa buYqqN1yCXk42TT+KAref3lfil1Negcl9PanLt+AmjHK2mhH5wWV25awQECtTaYglCzb tSag1+OO6YIOF5sjsvtSKn30OV0hqOORUgHXldjKgUw2L3PZ641KK+IkJbi9iNnsSLFS VL6w== X-Gm-Message-State: AOJu0YyyZ1LLFm6dosrB3Dj6SxrtkGRgUa/hrbteYM7QaJDqv//VEiyM Ou4yQ/Wp/Vn62tA0Aij6ipkDkiTPFINVGg== X-Google-Smtp-Source: AGHT+IFeJ8HOei2pMQPAky0ZRCZltSMCehB7pxvIjYgBrvF0j/Wg21CuGGLBb8e/L1MpbjYLzF8vuQ== X-Received: by 2002:a17:907:7622:b0:9a1:f5b1:c867 with SMTP id jy2-20020a170907762200b009a1f5b1c867mr10531658ejc.41.1693253448052; Mon, 28 Aug 2023 13:10:48 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:10:47 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 23/32] bsd-user: Implement t2h procctl control request commands and h2t reaper status struct conversion. Date: Sun, 27 Aug 2023 17:57:37 +0200 Message-Id: <20230827155746.84781-24-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62d; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62d.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha --- bsd-user/freebsd/os-proc.c | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/bsd-user/freebsd/os-proc.c b/bsd-user/freebsd/os-proc.c index 396f258a64..f069472156 100644 --- a/bsd-user/freebsd/os-proc.c +++ b/bsd-user/freebsd/os-proc.c @@ -249,3 +249,55 @@ execve_end: return ret; } +#include + +static abi_long +t2h_procctl_cmd(int target_cmd, int *host_cmd) +{ + + switch(target_cmd) { + case TARGET_PROC_SPROTECT: + *host_cmd = PROC_SPROTECT; + break; + + case TARGET_PROC_REAP_ACQUIRE: + *host_cmd = PROC_REAP_ACQUIRE; + break; + + case TARGET_PROC_REAP_RELEASE: + *host_cmd = PROC_REAP_RELEASE; + break; + + case TARGET_PROC_REAP_STATUS: + *host_cmd = PROC_REAP_STATUS; + break; + + case TARGET_PROC_REAP_KILL: + *host_cmd = PROC_REAP_KILL; + break; + + default: + return (-TARGET_EINVAL); + } + + return 0; +} + +static abi_long +h2t_reaper_status(struct procctl_reaper_status *host_rs, + abi_ulong target_rs_addr) +{ + struct target_procctl_reaper_status *target_rs; + + if (!lock_user_struct(VERIFY_WRITE, target_rs, target_rs_addr, 0)) + return -TARGET_EFAULT; + __put_user(host_rs->rs_flags, &target_rs->rs_flags); + __put_user(host_rs->rs_children, &target_rs->rs_children); + __put_user(host_rs->rs_descendants, &target_rs->rs_descendants); + __put_user(host_rs->rs_reaper, &target_rs->rs_reaper); + __put_user(host_rs->rs_pid, &target_rs->rs_pid); + unlock_user_struct(target_rs, target_rs_addr, 1); + + return 0; +} + From patchwork Sun Aug 27 15:57:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826941 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=dN+ucFYR; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMDq01P5z1yhW for ; Tue, 29 Aug 2023 06:12:59 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaia8-00059X-6N; Mon, 28 Aug 2023 16:11:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaia7-00050S-3z for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:27 -0400 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaia4-0007oU-L8 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:26 -0400 Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-99bed101b70so446511866b.3 for ; Mon, 28 Aug 2023 13:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253483; x=1693858283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sV7fWmjGs0AzU7QjCNSEch83JqZsqRJhPpjwbfOHKt4=; b=dN+ucFYR5em6eR4Anv2zqpRL8e9R91SQA6rLBwRB8jF2nXqlxSyn9F+Fnm6YKd2aF8 aNHAkhuFQE2mR0+iEfKOmfZA6xTAhRIzhePsI9i44XiThjvqDbgaOuJoLcctb5kgZ9/r 37Es5N9Kjgea+y1ZKytkJjEE6oVi/B4vD9WxVxtqgsSNjxa0XkCZ7Lzo5msqoNNtC0w+ Cal/keQGy/mp5xMEU8q41rJ+Ec7QbUjNVX0WbLe8Vrkp/iIYVI/PJOLc3NK9XbIvDhgg 8WXMn6pNSnlZiGjBa3UVAZiVhjMDTNjMLD0Qi6pN6nWgAix2nhJTyI5vriWNVp+MKrf9 4obQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253483; x=1693858283; 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=sV7fWmjGs0AzU7QjCNSEch83JqZsqRJhPpjwbfOHKt4=; b=gKSoUp3hYzXQQ1i8Au19hfykgu7oMbEpUCxTNA82WHn72oGNw1BsSLw4dGkzmRUE5K PZorixkBHNZDYn9taays3jyc4VQe8bn38hru+5X9ZOO+7hMi8Tev32fypiWn7C0Wk3Hw ZsuPlA3i1gdhpIOpsqsqMOfRqYushbw7Yk/jv0wjPSfqsMgpKtlclot4D3ssU9gwMqf2 Pqjx2dsBCdzraCi7XgV7aQQvdDpEVZi7k5jGYzF9PoigiWSPJiJ4DOmivXEtyGX6iNUa NduKaUSyk6txqTxJNfsvLJ2+nsKPNNpmSh0VYM241oRKl3MmdcgpZIzsuS1TuDbmBHe6 8cSw== X-Gm-Message-State: AOJu0YzagNwfh5s52XD2fJT6abd/Ji+Iz7CBGHuSVqMFiCJekc5r9HGZ h1F7xijkKaoBzxMPjk5+edAAXKUFEVUTng== X-Google-Smtp-Source: AGHT+IERaIpUN6xbk5gAJ8eueSSdkC3IY8X/1pR6zLB+4+fk7m9Pd2ZZjs0NUrw+ugTCrHmpPFyewA== X-Received: by 2002:a17:907:2718:b0:9a1:cdf1:ba3 with SMTP id w24-20020a170907271800b009a1cdf10ba3mr12033631ejk.27.1693253482814; Mon, 28 Aug 2023 13:11:22 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.10.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:22 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 24/32] bsd-user: Implement h2t reaper_pidinfo and h2t/t2h reaper_kill structs conversion functions. Date: Sun, 27 Aug 2023 17:57:38 +0200 Message-Id: <20230827155746.84781-25-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::629; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x629.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha --- bsd-user/freebsd/os-proc.c | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/bsd-user/freebsd/os-proc.c b/bsd-user/freebsd/os-proc.c index f069472156..a413109bc2 100644 --- a/bsd-user/freebsd/os-proc.c +++ b/bsd-user/freebsd/os-proc.c @@ -301,3 +301,53 @@ h2t_reaper_status(struct procctl_reaper_status *host_rs, return 0; } +static abi_long +t2h_reaper_kill(abi_ulong target_rk_addr, struct procctl_reaper_kill *host_rk) +{ + struct target_procctl_reaper_kill *target_rk; + + if (!lock_user_struct(VERIFY_READ, target_rk, target_rk_addr, 1)) + return -TARGET_EFAULT; + __get_user(host_rk->rk_sig, &target_rk->rk_sig); + __get_user(host_rk->rk_flags, &target_rk->rk_flags); + __get_user(host_rk->rk_subtree, &target_rk->rk_subtree); + __get_user(host_rk->rk_killed, &target_rk->rk_killed); + __get_user(host_rk->rk_fpid, &target_rk->rk_fpid); + unlock_user_struct(target_rk, target_rk_addr, 0); + + return 0; +} + +static abi_long +h2t_reaper_kill(struct procctl_reaper_kill *host_rk, abi_ulong target_rk_addr) +{ + struct target_procctl_reaper_kill *target_rk; + + if (!lock_user_struct(VERIFY_WRITE, target_rk, target_rk_addr, 0)) + return -TARGET_EFAULT; + __put_user(host_rk->rk_sig, &target_rk->rk_sig); + __put_user(host_rk->rk_flags, &target_rk->rk_flags); + __put_user(host_rk->rk_subtree, &target_rk->rk_subtree); + __put_user(host_rk->rk_killed, &target_rk->rk_killed); + __put_user(host_rk->rk_fpid, &target_rk->rk_fpid); + unlock_user_struct(target_rk, target_rk_addr, 1); + + return 0; +} + +static abi_long +h2t_procctl_reaper_pidinfo(struct procctl_reaper_pidinfo *host_pi, + abi_ulong target_pi_addr) +{ + struct target_procctl_reaper_pidinfo *target_pi; + + if (!lock_user_struct(VERIFY_WRITE, target_pi, target_pi_addr, 0)) + return -TARGET_EFAULT; + __put_user(host_pi->pi_pid, &target_pi->pi_pid); + __put_user(host_pi->pi_subtree, &target_pi->pi_subtree); + __put_user(host_pi->pi_flags, &target_pi->pi_flags); + unlock_user_struct(target_pi, target_pi_addr, 1); + + return 0; +} + From patchwork Sun Aug 27 15:57:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826932 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=BZc3PxJN; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCv44ytz20b9 for ; Tue, 29 Aug 2023 06:12:11 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaF-0005cl-U0; Mon, 28 Aug 2023 16:11:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaA-0005R9-Qr for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:30 -0400 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaia8-0007ov-Dh for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:30 -0400 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-99bcc0adab4so475719166b.2 for ; Mon, 28 Aug 2023 13:11:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253486; x=1693858286; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RTmkbch1x0LOvGOCfdEY6bQHPYXVPXeFLnKoWA6XJJ4=; b=BZc3PxJN1VxBI0Nb1eyyBBK0w6WmcmK/arnWNXotA4j1WfelC78f1cDeMQiKZeMgUC roFWmlEjQWWZk4T3mdfBRWptCCFvmud3BuO0Y/uvv7eWIESatOB9HZ4iT51dyNlCqVF0 kwoDIG5mv9wVnflhuAA5LKcR1GDsAVleZ3FlFksoY6aMz4Wr2cl/H1VdzAzWmouVq66c PZ9KWuXqjKMRTQFNFgRBME2I0TE7CR2GR+ux+27bctV6stDkL4Zu72JUB3M+GDJKd+Ti XQ03ByYx4K8KY6RsNYwLbsLsl+Li0n5ct9FeSObye0V5DBF8Wbwm75c5WtbAxIPPuo88 811A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253486; x=1693858286; 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=RTmkbch1x0LOvGOCfdEY6bQHPYXVPXeFLnKoWA6XJJ4=; b=ZzCBhFrhOxZY7ky8Q1+PD+qY8aEC3Lngg6SPY26UP6IeHIv3UtfvSEm9HjUB8odDyJ xWb1GK/LryuBQr2hxHjXEwLZXSrFM2egNbyJh20K2s1hF5Y5rCHAZXVUszr6sRsH1dcX aRL8+4YG3SW7vubS3rZYXMCMsgSAt7JEg+R0YLBDSk9Pr3OQ3oH9vRAsbnlsbzRjijss wfOcS2SohXTY126K1EZFtIQqIRo1C86Ggo+DmvKyC4C7ang/lzo4VozZJM9IqH8Djumf z1n3zLeFn86qcr5ipcOzsYJR926cDu+3AmNzBCarfJy6TBD7iKwbenJyY38I8t9eJx9t 484w== X-Gm-Message-State: AOJu0YyxneoMiIag8rV90mNB/2NS5ApPoQLncRkXblT3YvCRAzhvrc52 pVOv8KAbYBMVHc8QM1E/yW5/5d+5w2HWvw== X-Google-Smtp-Source: AGHT+IEkcv5XXMZ+kTZ2cnf+8uX2OKWGNrx0Mvf5PhaP63if7WrCXCwJr57YrqeGk1wSOQ9DpCH63A== X-Received: by 2002:a17:906:2215:b0:9a2:2635:daa9 with SMTP id s21-20020a170906221500b009a22635daa9mr9582962ejs.6.1693253486562; Mon, 28 Aug 2023 13:11:26 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:26 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 25/32] bsd-user: Implement procctl(2) system call. Date: Sun, 27 Aug 2023 17:57:39 +0200 Message-Id: <20230827155746.84781-26-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::636; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x636.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Acked-by: Richard Henderson --- bsd-user/freebsd/os-proc.c | 114 ++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 3 + 2 files changed, 117 insertions(+) diff --git a/bsd-user/freebsd/os-proc.c b/bsd-user/freebsd/os-proc.c index a413109bc2..3e6903d8cd 100644 --- a/bsd-user/freebsd/os-proc.c +++ b/bsd-user/freebsd/os-proc.c @@ -351,3 +351,117 @@ h2t_procctl_reaper_pidinfo(struct procctl_reaper_pidinfo *host_pi, return 0; } +abi_long +do_freebsd_procctl(void *cpu_env, int idtype, abi_ulong arg2, abi_ulong arg3, + abi_ulong arg4, abi_ulong arg5, abi_ulong arg6) +{ + abi_long error = 0, target_rp_pids; + void *data; + int host_cmd, flags; + uint32_t u, target_rp_count; + union { + struct procctl_reaper_status rs; + struct procctl_reaper_pids rp; + struct procctl_reaper_kill rk; + } host; + struct target_procctl_reaper_pids *target_rp; + id_t id; /* 64-bit */ + int target_cmd; + abi_ulong target_arg; + +#if TARGET_ABI_BITS == 32 + /* See if we need to align the register pairs. */ + if (regpairs_aligned(cpu_env)) { + id = (id_t)target_arg64(arg3, arg4); + target_cmd = (int)arg5; + target_arg = arg6; + } else { + id = (id_t)target_arg64(arg2, arg3); + target_cmd = (int)arg4; + target_arg = arg5; + } +#else + id = (id_t)arg2; + target_cmd = (int)arg3; + target_arg = arg4; +#endif + + error = t2h_procctl_cmd(target_cmd, &host_cmd); + if (error) + return error; + + switch (host_cmd) { + case PROC_SPROTECT: + data = &flags; + break; + + case PROC_REAP_ACQUIRE: + case PROC_REAP_RELEASE: + if (target_arg == 0) + data = NULL; + else + error = -TARGET_EINVAL; + break; + + case PROC_REAP_STATUS: + data = &host.rs; + break; + + case PROC_REAP_GETPIDS: + if (!lock_user_struct(VERIFY_READ, target_rp, target_arg, 1)) { + return -TARGET_EFAULT; + } + __get_user(target_rp_count, &target_rp->rp_count); + __get_user(target_rp_pids, &target_rp->rp_pids); + unlock_user_struct(target_rp, target_arg, 0); + host.rp.rp_count = target_rp_count; + /* XXX we should check target_rc_count to see if it is reasonable. */ + host.rp.rp_pids = alloca(target_rp_count * + sizeof(struct procctl_reaper_pidinfo)); + if (host.rp.rp_pids == NULL) + error = -TARGET_ENOMEM; + else + data = &host.rp; + break; + + case PROC_REAP_KILL: + error = t2h_reaper_kill(target_arg, &host.rk); + break; + } + + if (error) + return error; + + error = get_errno(procctl(idtype, id, host_cmd, data)); + + if (error) + return error; + + switch(host_cmd) { + case PROC_SPROTECT: + if (put_user_s32(flags, target_arg)) + return -TARGET_EFAULT; + break; + + case PROC_REAP_STATUS: + error = h2t_reaper_status(&host.rs, target_arg); + break; + + case PROC_REAP_GETPIDS: + /* copyout reaper pidinfo */ + for (u = 0; u < target_rp_count; u++) { + error = h2t_procctl_reaper_pidinfo(&host.rp.rp_pids[u], + target_rp_pids + + (u * sizeof(struct target_procctl_reaper_pidinfo))); + if (error) + break; + } + break; + + case PROC_REAP_KILL: + error = h2t_reaper_kill(&host.rk, target_arg); + break; + } + + return error; +} diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 0f25187d63..43f4561301 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -364,6 +364,9 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_setpriority(arg1, arg2, arg3); break; + case TARGET_FREEBSD_NR_procctl: /* procctl(2) */ + ret = do_freebsd_procctl(cpu_env, arg1, arg2, arg3, arg4, arg5, arg6); + break; /* * File system calls. From patchwork Sun Aug 27 15:57:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826933 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=qOwH4hmf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMCw6Wjjz1yZ9 for ; Tue, 29 Aug 2023 06:12:12 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaR-0005y4-LV; Mon, 28 Aug 2023 16:11:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaG-0005i6-Cv for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:37 -0400 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaB-0007pN-Vp for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:36 -0400 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b9f0b7af65so53943021fa.1 for ; Mon, 28 Aug 2023 13:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253490; x=1693858290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bEN8JiRMi42PBjG91cv3MvhEwJ8nLtmK3KuWnVz9XHY=; b=qOwH4hmf95pSL5weELYzdHWc35ZgKJNJqh+y5s+ighgBMRxHRG+kcoXFhfY7Soxeq5 7YJRT2B4j1NVh1GoWYLDJTmtj+FBkaYVahVkif9XVGCQEhDynUmvgH1OYniHcxQv9WdO k18jHfJ7DNYwqlmRD4AyC09cZT8a7Ih7k0fJpWXNvUKVJG5zvGbKJB8P7ygUAZ3xgSye Jsqxbsih8W4PGt0mU/7QKKDdSOsjBqktYKXv3L/9RWZU/2r2o8IROdnqx55Maa78D/xG jgLQywBWrycNm+kxrxueqy1SnQxMX/QfWPVDO2sGnKNUHA/1gW4dueOFhm6MGxdR1J5w hXig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253490; x=1693858290; 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=bEN8JiRMi42PBjG91cv3MvhEwJ8nLtmK3KuWnVz9XHY=; b=eKqIsMmBNo3zHZJ5fbfL3ohcNJPDziKtCYmbE6jNpkgKyNWITCp4WdOT+5OO4UCzuy rPsqnkIQ81O/4HnylRgr7erb88hJytTamKKvLFOz6ZMzduonSc49yNrjD/A1/ha9uga3 xuyX/xMwx8nSgpXJup+vsyqWkddWA7+VNMUyI/xPiO5xzXy2KbczBgn4znwT5dFwoItz sfOfLJKdCPuGQwwWAYumvQWhnsLJyxl7gpXlKEL273KFqxbOU4oXgquBiFkz0x8Z6Sde b2Ai7gfqRZ9pGHT6APi+LIdrA4nmkujj6EACTN8/jNfOJHIF5k2sZmlV3O3IvRxpJpRB uYoQ== X-Gm-Message-State: AOJu0YyWlzGOo/Yzcgqd+VFgwvDD484KqsmxMmAQDzU0XGqoUVq3FDUf 68xYpK4JgY+0SjmzXJwe58BO3/wN/8q2AQ== X-Google-Smtp-Source: AGHT+IENsScygEyWx6g7u6/CN8rdSs+9SOeX21jBFbVqTlxZ0DGbJH8W35cr6mur/MsMNfdX8nsU+Q== X-Received: by 2002:a05:651c:96:b0:2bc:c557:848a with SMTP id 22-20020a05651c009600b002bcc557848amr14529880ljq.50.1693253489671; Mon, 28 Aug 2023 13:11:29 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:29 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 26/32] bsd-user: Implement execve(2) and fexecve(2) system calls. Date: Sun, 27 Aug 2023 17:57:40 +0200 Message-Id: <20230827155746.84781-27-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::22b; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x22b.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 49 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 10 +++++++ 2 files changed, 59 insertions(+) create mode 100644 bsd-user/freebsd/os-proc.h diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h new file mode 100644 index 0000000000..75ed39f8dd --- /dev/null +++ b/bsd-user/freebsd/os-proc.h @@ -0,0 +1,49 @@ +/* + * process related system call shims and definitions + * + * Copyright (c) 2013-14 Stacey D. Son + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#ifndef BSD_USER_FREEBSD_OS_PROC_H +#define BSD_USER_FREEBSD_OS_PROC_H + +#include +#include +#include +#include +#include +#include +#include + +#include "target_arch_cpu.h" + +/* execve(2) */ +static inline abi_long do_freebsd_execve(abi_ulong path_or_fd, abi_ulong argp, + abi_ulong envp) +{ + + return freebsd_exec_common(path_or_fd, argp, envp, 0); +} + +/* fexecve(2) */ +static inline abi_long do_freebsd_fexecve(abi_ulong path_or_fd, abi_ulong argp, + abi_ulong envp) +{ + + return freebsd_exec_common(path_or_fd, argp, envp, 1); +} + +#endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 43f4561301..3f3ca96752 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -36,6 +36,8 @@ #include "bsd-file.h" #include "bsd-proc.h" +#include "os-proc.h" + /* I/O */ safe_syscall3(int, open, const char *, path, int, flags, mode_t, mode); safe_syscall4(int, openat, int, fd, const char *, path, int, flags, mode_t, @@ -216,6 +218,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, /* * process system calls */ + case TARGET_FREEBSD_NR_execve: /* execve(2) */ + ret = do_freebsd_execve(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_fexecve: /* fexecve(2) */ + ret = do_freebsd_fexecve(arg1, arg2, arg3); + break; + case TARGET_FREEBSD_NR_exit: /* exit(2) */ ret = do_bsd_exit(cpu_env, arg1); break; From patchwork Sun Aug 27 15:57:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826938 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=DAD28W+A; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMDM1vc6z1yZ9 for ; Tue, 29 Aug 2023 06:12:35 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaY-0006sf-Hu; Mon, 28 Aug 2023 16:11:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaG-0005i5-C9 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:37 -0400 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaD-0007pa-Qt for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:36 -0400 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2bcb50e194dso55307631fa.3 for ; Mon, 28 Aug 2023 13:11:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253492; x=1693858292; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tlbKBSPmQsCPqGfy/9OfnhyDKKj90lt8zkXdT5ciTw0=; b=DAD28W+AbBmiGU0BMTvWOfoBqaEoRAdqRcFn6ZU5SmRdfVgR2MMSpR9/gzadH/fxP8 bSo1ZBYyyj0fY1uQM7RsyXvsAcsPD19NBoAaswtIm9BlDJAc/mkUvVV+Tw92jtUyY6YA 6+8nqvd2pkLM2vwBCy2yutrqKJm+b5drRkFTfzqVL54NZypmuMp/IsTclkZZ77HM77GS wa7ZVAm7FmkR1XiduhJeGLZxXbTwwEBUrzFTr1cS7CvUItwpNnnMfW2JKRs9/bkW+YzZ RxFBh3Mn3IKKfadNPjcEwHxr6ggzKdjtyirc0Shdh7odSaA2Xd1x7pJvTI5MJ+zfhHOx 1aHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253492; x=1693858292; 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=tlbKBSPmQsCPqGfy/9OfnhyDKKj90lt8zkXdT5ciTw0=; b=WHm+GKJRQJt7vZy1N8WlnyEQD4ER51VAPiPZk3x1hjTo7sHPu9aY8d9TwGQApdvKI6 yc8wkrjgU7IKVnsNGciCz0Kx+cv8mbHCogBfS3rUCDNemix7r3tNi0me7OHunThEUzEL S2XL+wfu00J1nAx/GQilxqETKzGKttFQJ68oyJkqD8zq/J8wZM2d4Cl+VF86Vj5gYQW3 hZzKjLvI7/2ZaicLD0ckMem2cY3/ank4n6btT8/kUEr4sN1S3QHSEgAhyriBN/v5ayzj QFyMFKLRSx97z0Bs4gBnmDI7VYOtUKS6qeiRbT++OwIxzUz3DozLZfJsEgNFt3QFzYXt 5vpw== X-Gm-Message-State: AOJu0YyUQ01TTdpFmzE2jJNU17Fjp7wz/rLt4ihiE44TL2PHiqlrjz1k 4F+BW7IncDzaPUKkx9y8ZLTtEAlTNbb3tQ== X-Google-Smtp-Source: AGHT+IHMiM1xu/cPJ8p7BUog3vLcrGpL4ck0SbMizkLra9VPIub4j3S3MBJTCM6/Z86vmfnjxBtZ4w== X-Received: by 2002:a05:651c:1056:b0:2bc:c830:4cbb with SMTP id x22-20020a05651c105600b002bcc8304cbbmr14668996ljm.45.1693253491679; Mon, 28 Aug 2023 13:11:31 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:31 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 27/32] bsd-user: Implement wait4(2) and wait6(2) system calls. Date: Sun, 27 Aug 2023 17:57:41 +0200 Message-Id: <20230827155746.84781-28-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::231; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x231.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 75 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 14 +++++++ 2 files changed, 89 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index 75ed39f8dd..544e45b3ef 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -30,6 +30,10 @@ #include "target_arch_cpu.h" +pid_t safe_wait4(pid_t wpid, int *status, int options, struct rusage *rusage); +pid_t safe_wait6(idtype_t idtype, id_t id, int *status, int options, + struct __wrusage *wrusage, siginfo_t *infop); + /* execve(2) */ static inline abi_long do_freebsd_execve(abi_ulong path_or_fd, abi_ulong argp, abi_ulong envp) @@ -46,4 +50,75 @@ static inline abi_long do_freebsd_fexecve(abi_ulong path_or_fd, abi_ulong argp, return freebsd_exec_common(path_or_fd, argp, envp, 1); } +/* wait4(2) */ +static inline abi_long do_freebsd_wait4(abi_long arg1, abi_ulong target_status, + abi_long arg3, abi_ulong target_rusage) +{ + abi_long ret; + int status; + struct rusage rusage, *rusage_ptr = NULL; + + if (target_rusage) { + rusage_ptr = &rusage; + } + ret = get_errno(safe_wait4(arg1, &status, arg3, rusage_ptr)); + if (target_status != 0) { + status = host_to_target_waitstatus(status); + if (put_user_s32(status, target_status) != 0) { + return -TARGET_EFAULT; + } + } + if (target_rusage != 0) { + host_to_target_rusage(target_rusage, &rusage); + } + return ret; +} + +/* wait6(2) */ +static inline abi_long do_freebsd_wait6(void *cpu_env, abi_long idtype, + abi_long id1, abi_long id2, + abi_ulong target_status, abi_long options, abi_ulong target_wrusage, + abi_ulong target_infop, abi_ulong pad1) +{ + abi_long ret; + int status; + struct __wrusage wrusage, *wrusage_ptr = NULL; + siginfo_t info; + void *p; + + if (regpairs_aligned(cpu_env) != 0) { + /* printf("shifting args\n"); */ + /* 64-bit id is aligned, so shift all the arguments over by one */ + id1 = id2; + id2 = target_status; + target_status = options; + options = target_wrusage; + target_wrusage = target_infop; + target_infop = pad1; + } + + if (target_wrusage) { + wrusage_ptr = &wrusage; + } + ret = get_errno(safe_wait6(idtype, target_arg64(id1, id2), &status, options, wrusage_ptr, &info)); + if (target_status != 0) { + status = host_to_target_waitstatus(status); + if (put_user_s32(status, target_status) != 0) { + return -TARGET_EFAULT; + } + } + if (target_wrusage != 0) { + host_to_target_wrusage(target_wrusage, &wrusage); + } + if (target_infop != 0) { + p = lock_user(VERIFY_WRITE, target_infop, sizeof(target_siginfo_t), 0); + if (p == NULL) { + return -TARGET_EFAULT; + } + host_to_target_siginfo(p, &info); + unlock_user(p, target_infop, sizeof(target_siginfo_t)); + } + return ret; +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 3f3ca96752..2775f89304 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -38,6 +38,12 @@ #include "os-proc.h" +/* used in os-proc */ +safe_syscall4(pid_t, wait4, pid_t, wpid, int *, status, int, options, + struct rusage *, rusage); +safe_syscall6(pid_t, wait6, idtype_t, idtype, id_t, id, int *, status, int, + options, struct __wrusage *, wrusage, siginfo_t *, infop); + /* I/O */ safe_syscall3(int, open, const char *, path, int, flags, mode_t, mode); safe_syscall4(int, openat, int, fd, const char *, path, int, flags, mode_t, @@ -226,6 +232,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_freebsd_fexecve(arg1, arg2, arg3); break; + case TARGET_FREEBSD_NR_wait4: /* wait4(2) */ + ret = do_freebsd_wait4(arg1, arg2, arg3, arg4); + break; + + case TARGET_FREEBSD_NR_wait6: /* wait6(2) */ + ret = do_freebsd_wait6(cpu_env, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + break; + case TARGET_FREEBSD_NR_exit: /* exit(2) */ ret = do_bsd_exit(cpu_env, arg1); break; From patchwork Sun Aug 27 15:57:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826940 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=ChbXbzon; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMDp2d8bz1yZ9 for ; Tue, 29 Aug 2023 06:12:58 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaW-0006Xr-KF; Mon, 28 Aug 2023 16:11:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaI-0005ko-88 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:39 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaF-0007pr-N7 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:37 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-99c1f6f3884so450098566b.0 for ; Mon, 28 Aug 2023 13:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253494; x=1693858294; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HsIP+hLVoNZVL2chjKVfWZpIi2TdYp0OHNSsvbgsB80=; b=ChbXbzonPEVsTEkLBYGEkF1Xg4WGV4xAlFbB3O9W+P4NCztD7QX40Rl9M3OQW2c9tl 59D+NwgkifznG6CW0TzFOdEOpRq/bnyQz1+Jre4yk8YL1UkRxTblNIlBUkLUxvN4vh94 4UozfiR+5EYod2P0voG+bGlXAowqitMpeZ0zHWmSE2o8+sRKRkhfKVGUhNJDQ2lsJpQi PdJ2iGgBJpM1gusFxZEWfsrqiRxOlXz+JdyYIfJ4U0qMusYTcDamykpToJGTLBmiWXz+ DqoMQ9aaGzq5yfoLgd+5qSTu62g3/r8fjWGB/ZtjhUOjAwcAtk5VerdP4or/UwST2Eol rQDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253494; x=1693858294; 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=HsIP+hLVoNZVL2chjKVfWZpIi2TdYp0OHNSsvbgsB80=; b=OehPjsdguVhlvlGIkOiaTNg8NlHQ/nzx5yAMe9jgcf+7xNGlTfpg8E5gb7kDC4mwyt saX3X9jONRzZK5ULL7Qbde0gijwhtr62COYneCfyR3KhzqZs+FM+1fnMWGzZCXar0a5b gxgbIkDVaMrEQX3T4EG6qM6jCTk/giXrZOB0rQ+CZo/Lh5KTytE0dcNxS0Bh+GoqtAoR mMXWdgfjnOIVwof1hqVE7nyqVJgcXWOHfGbF5L/uY5nCPcLBDfJU7VokDTynAsp6vZHp 2+VU8yKp3s+aUuhD0Un/OBKN4z9Ox34EExLBOyUVnz1ofRU/Aa7/TiShOIRR/plqddTK QPTw== X-Gm-Message-State: AOJu0YwhrrnPBVLS5V3giSeS9TVucXrcs1ibso0T3PXhNLdSySgvlJwO ZSiGiBAUSuCfAkcNkeZg7nNWcYiu1IKZfw== X-Google-Smtp-Source: AGHT+IFeFoMjcafqbk55YiDYn6TED22FEdCIONZl5+Klj0zoqdlKfWMnfXBm0rA23J8ZPsnZgLPR7Q== X-Received: by 2002:a17:906:6b92:b0:969:93f2:259a with SMTP id l18-20020a1709066b9200b0096993f2259amr19296928ejr.73.1693253494002; Mon, 28 Aug 2023 13:11:34 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:33 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 28/32] bsd-user: Implement setloginclass(2) and getloginclass(2) system calls. Date: Sun, 27 Aug 2023 17:57:42 +0200 Message-Id: <20230827155746.84781-29-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62e; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62e.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 32 ++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 8 ++++++++ 2 files changed, 40 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index 544e45b3ef..7d26d09148 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -121,4 +121,36 @@ static inline abi_long do_freebsd_wait6(void *cpu_env, abi_long idtype, return ret; } +/* setloginclass(2) */ +static inline abi_long do_freebsd_setloginclass(abi_ulong arg1) +{ + abi_long ret; + void *p; + + p = lock_user_string(arg1); + if (p == NULL) { + return -TARGET_EFAULT; + } + ret = get_errno(setloginclass(p)); + unlock_user(p, arg1, 0); + + return ret; +} + +/* getloginclass(2) */ +static inline abi_long do_freebsd_getloginclass(abi_ulong arg1, abi_ulong arg2) +{ + abi_long ret; + void *p; + + p = lock_user_string(arg1); + if (p == NULL) { + return -TARGET_EFAULT; + } + ret = get_errno(getloginclass(p, arg2)); + unlock_user(p, arg1, 0); + + return ret; +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 2775f89304..63e6c6d478 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -372,6 +372,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_bsd_ktrace(arg1, arg2, arg3, arg4); break; + case TARGET_FREEBSD_NR_setloginclass: /* setloginclass(2) */ + ret = do_freebsd_setloginclass(arg1); + break; + + case TARGET_FREEBSD_NR_getloginclass: /* getloginclass(2) */ + ret = do_freebsd_getloginclass(arg1, arg2); + break; + case TARGET_FREEBSD_NR_utrace: /* utrace(2) */ ret = do_bsd_utrace(arg1, arg2); break; From patchwork Sun Aug 27 15:57:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826946 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=iI3QE1mn; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMFR52kPz1yZ9 for ; Tue, 29 Aug 2023 06:13:31 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaX-0006lA-Oa; Mon, 28 Aug 2023 16:11:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaK-0005qs-Ls for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:41 -0400 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaI-0007q9-C2 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:40 -0400 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2bcb89b4767so55162891fa.3 for ; Mon, 28 Aug 2023 13:11:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253496; x=1693858296; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YmMYl0lwlsytwxMprOyvw1gSSdgBh5EwqBMU6oovPxw=; b=iI3QE1mnpTwP7PGiyWn9SleUwA8vhgy/tYQjSUIz+pDDyGudhniaRup5LNWUaQrkuk AT2GJaZk5RHIJxM5ekfUZKWuMrkGecKZlNlbXoljqxLuAYtiGOq6HGLXB/Y9cXN+Ioyn 1qHb+2v0W48odFaGrKPHpgqahcd820XO0/yGnu81GcSiJdojkAtKFi0LNsTC7tdx3lSm /A2qzvrVQk2y9cRxztYIKJnZ6B6rEq4mEb74bKfoFJwbtV0rAFsufJMkJX+2sPrG1+pb iZjvC+qwP13S9Tdy62XSpZyfSXFPGgNU+5crF0G720YsNNkKmUWBbroMjWjbyloRhhfS 3Gmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253496; x=1693858296; 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=YmMYl0lwlsytwxMprOyvw1gSSdgBh5EwqBMU6oovPxw=; b=iMj0YBI76tm9KYRxRUWvTH/yZX4UIzsgx7Biv41ndLLOHDCanGL28MxU6r7kG1Jo52 G16/l9kWbQt7dv/n6MzSMoGTMvjiZJM9nIoWzLayZbUNPwALE1pFoOy6kf33bSGtAxDT 6GYHuw/OMVmclqlJO6crL86frenJ4p2PYuzz5OrJqNVpAbzmy+Q9Tno+WUbTUloounJt Jwves3YQsoIjKEPLPU7Z8F7bOPiNb7zBls1cLpGRlUHC8+CXUKJZpF3VsI/CGjXeyM4c Va58Tx7WH6o7dk8eRYQih+gp08RfvvS8fZd3jZmSdhxJ21uh53bdSpilHg9YWgHjldxZ hCyw== X-Gm-Message-State: AOJu0YyBMKbYbOm7aW/zBGaAS5+h1mVBVVbrH4Z742brbCBTrdHFxo0U it+n8XYe3DF4Cs0pfpaswUcJh2wONZQ1VQ== X-Google-Smtp-Source: AGHT+IF8EieRj90GmQOBnAJCY7nuU989NQZ/qviLV92O1XFWaUYwHAZ6muv5lrjyhgQCMgtSYA5MIg== X-Received: by 2002:a2e:9c81:0:b0:2bc:c3ad:f418 with SMTP id x1-20020a2e9c81000000b002bcc3adf418mr19295984lji.20.1693253496156; Mon, 28 Aug 2023 13:11:36 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:35 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 29/32] bsd-user: Implement pdgetpid(2) and the undocumented setugid. Date: Sun, 27 Aug 2023 17:57:43 +0200 Message-Id: <20230827155746.84781-30-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::234; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x234.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 23 +++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index 7d26d09148..bfd72c726c 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -34,6 +34,8 @@ pid_t safe_wait4(pid_t wpid, int *status, int options, struct rusage *rusage); pid_t safe_wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *infop); +extern int __setugid(int flag); + /* execve(2) */ static inline abi_long do_freebsd_execve(abi_ulong path_or_fd, abi_ulong argp, abi_ulong envp) @@ -153,4 +155,25 @@ static inline abi_long do_freebsd_getloginclass(abi_ulong arg1, abi_ulong arg2) return ret; } +/* pdgetpid(2) */ +static inline abi_long do_freebsd_pdgetpid(abi_long fd, abi_ulong target_pidp) +{ + abi_long ret; + pid_t pid; + + ret = get_errno(pdgetpid(fd, &pid)); + if (!is_error(ret)) { + if (put_user_u32(pid, target_pidp)) { + return -TARGET_EFAULT; + } + } + return ret; +} + +/* undocumented __setugid */ +static inline abi_long do_freebsd___setugid(abi_long arg1) +{ + return get_errno(__setugid(arg1)); +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 63e6c6d478..52be71546a 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -380,6 +380,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_freebsd_getloginclass(arg1, arg2); break; + case TARGET_FREEBSD_NR_pdgetpid: /* pdgetpid(2) */ + ret = do_freebsd_pdgetpid(arg1, arg2); + break; + + case TARGET_FREEBSD_NR___setugid: /* undocumented */ + ret = do_freebsd___setugid(arg1); + break; + case TARGET_FREEBSD_NR_utrace: /* utrace(2) */ ret = do_bsd_utrace(arg1, arg2); break; From patchwork Sun Aug 27 15:57:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826934 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=cdGVrbJB; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMD12FMrz1yZ9 for ; Tue, 29 Aug 2023 06:12:17 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaY-0006mw-5i; Mon, 28 Aug 2023 16:11:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaM-0005v1-E1 for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:43 -0400 Received: from mail-lj1-x235.google.com ([2a00:1450:4864:20::235]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaK-0007qN-7F for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:42 -0400 Received: by mail-lj1-x235.google.com with SMTP id 38308e7fff4ca-2bcd7a207f7so53741151fa.3 for ; Mon, 28 Aug 2023 13:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253498; x=1693858298; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W65M7HH3Q3sGEW0PbGnCjv8Ja2Yp2eCkyr/Z1oFCq/k=; b=cdGVrbJBJHOZGJTea2X4l+bomIL7IzNE5aeEc7H9RpQk/I4LY4t/fyasOrQZVhnmPR mk8BlgDXDwWU3bSQyO+bd8l2cSuiexeAVXpQfexUBlLq7kLFji0mB6KxyZbBwCy733Qm 1/9t65HsWXwDySbO8S1YIFagAQnbRQRSDVb8fRzXcIgvUHdZkS4o8/bHsnpLrlySIDH+ abAxACR9LWEtQoMg34GpsyoqQzrLnUMryUlaHpI6q7ClnTE4yD7ROdhhgjgJ1HVvCq/t N3H0L4xByRe9qiMwyS6K4Bbwym3AB6pk0UzWpsIGVzZ8PLb1y5Vm7XD2JIedd5dgqJJ3 sttQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253498; x=1693858298; 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=W65M7HH3Q3sGEW0PbGnCjv8Ja2Yp2eCkyr/Z1oFCq/k=; b=Qu72wI5/USWp8VZgIWw2CEwXKWJFPxqCb3PEFVcxo515rF7ceJFgCAYu/k5IAbGhcp 78BE63QGFSHOK0nPXFLf5Cgngwpduk0xufbVHcwTuzDhMWpbMrMY4PY1sSdL3WNH9zvC dutuTtm2IIP7CumfQLx6fuU4JAm2jb38tYYMHCGx2N2XJeoxzHgG2xRDszWBr5Ky5Rsf uwDSQhE1pt9R4G4YhT5I3OdFO8IW+UkvS2W6+Ok1a2cFBkSx4dAVBnSojp93O6VPJ6Nt LC1qx/RgAjN9uExakCaqb+ftKDZjuVZp3Bgzo+zadWVdIaPkU0EboA4VzbKHJ0rKyBCr lmhw== X-Gm-Message-State: AOJu0Yyk2nzaQQYkZK5uBs1RaZRT2PeD6S7oyZnYBZFOA5ovlsi5Xy+r jt283PDhmnUJXL2ZYGAC4BeBvM4nLC7C5Q== X-Google-Smtp-Source: AGHT+IG/fbX55k6MzD2qRoM5LOl9VTdhtvZBfnGiOYnIsl3qQ3MFZk1zP3eBtTbebaKnctmBD72Lcw== X-Received: by 2002:a2e:87d5:0:b0:2bc:ed75:1ba with SMTP id v21-20020a2e87d5000000b002bced7501bamr9121062ljj.16.1693253497925; Mon, 28 Aug 2023 13:11:37 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:37 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 30/32] bsd-user: Implement fork(2) and vfork(2) system calls. Date: Sun, 27 Aug 2023 17:57:44 +0200 Message-Id: <20230827155746.84781-31-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::235; envelope-from=kariem.taha2.7@gmail.com; helo=mail-lj1-x235.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 34 ++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 8 ++++++++ 2 files changed, 42 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index bfd72c726c..385fc15adf 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -176,4 +176,38 @@ static inline abi_long do_freebsd___setugid(abi_long arg1) return get_errno(__setugid(arg1)); } +/* fork(2) */ +static inline abi_long do_freebsd_fork(void *cpu_env) +{ + abi_long ret; + abi_ulong child_flag; + + fork_start(); + ret = fork(); + if (ret == 0) { + /* child */ + child_flag = 1; + target_cpu_clone_regs(cpu_env, 0); + } else { + /* parent */ + child_flag = 0; + } + + /* + * The fork system call sets a child flag in the second return + * value: 0 for parent process, 1 for child process. + */ + set_second_rval(cpu_env, child_flag); + + fork_end(child_flag); + + return ret; +} + +/* vfork(2) */ +static inline abi_long do_freebsd_vfork(void *cpu_env) +{ + return do_freebsd_fork(cpu_env); +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 52be71546a..84c9bffff5 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -224,6 +224,14 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, /* * process system calls */ + case TARGET_FREEBSD_NR_fork: /* fork(2) */ + ret = do_freebsd_fork(cpu_env); + break; + + case TARGET_FREEBSD_NR_vfork: /* vfork(2) */ + ret = do_freebsd_vfork(cpu_env); + break; + case TARGET_FREEBSD_NR_execve: /* execve(2) */ ret = do_freebsd_execve(arg1, arg2, arg3); break; From patchwork Sun Aug 27 15:57:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826945 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=MjAulb6X; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMFP2npzz1yhW for ; Tue, 29 Aug 2023 06:13:29 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaX-0006kE-Mq; Mon, 28 Aug 2023 16:11:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaO-0005xA-EO for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:45 -0400 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaM-0007qf-8b for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:44 -0400 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-99c4923195dso446179966b.2 for ; Mon, 28 Aug 2023 13:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253501; x=1693858301; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+Ypl95QnqSChBkm9Ln1newySi5XDxhD4faX84DGp29A=; b=MjAulb6XDnJU1vp2NEnHfrZv4+OWGUInfu2ra5KUqfQ1Boacij56+41IvJEpZhpxn4 NhaeobeGODRQlKnTzsE8/ybYZCublxL0IQMPMz0zzv3eC02rGw+pEeb85Gnxh4sgftdV ZKPH5wm97l0DavSoTAvcl6s7jlCZs6vYSupPTdCYBTofLjSoEGqLmxbO6d1hQ6WHzIT1 bSq9Uo1rZwqW8sJetraX2qpj3m9KMVQ4mGG4uo6lFZI+TmyUItvr+nv1K3Y9jPV4zb6r SOH4tjvwc21hrfnU6MzYbtuTYdGtU/bFj/uopM7Sq/uMNjEFjsm3XHN/rlZvcMfye7W0 97JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253501; x=1693858301; 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=+Ypl95QnqSChBkm9Ln1newySi5XDxhD4faX84DGp29A=; b=Fif0x8QWsAxdg50c4BLe4zkrVNxNhZZqUO81shCA7i4oo/JtMuppY5JTsI7fxIUbrJ TSbbqce/wlc713P6iKZnSzmymxhaDyliFj9wvMS6DdXOuZaV3W6EMaOrpPomHHGg+pNp vdKSRTPDojcyLqWG3ivULKYCA8L74x4ir2dbVu0YaVuVftd33KGr/6IHmIEQpG9vADfl BpbULB/yEQ+JgXBncRsjcktuekt1qxv+98PO1BFPkdfnLV8TynuxdZ5PMGYau87egDxM RWE55BWaRwUE7Eyasp1z/sFGiAJPZIpFnlctr2rJgW/pjdYJ2BqOM+nhq+2e+dSkps+3 6GjA== X-Gm-Message-State: AOJu0YylMljQpC6h6nRgULIUn5/Pgb8dZ964vpx//VUY4ucSkQsRfR+i Vtchd0rrCVJsHTUUxjQKx8GsjnfbzSAkcw== X-Google-Smtp-Source: AGHT+IHP6q8GvNxPOIz9BbvG8MZeiVVqOIVI/gDBYBnf3WhOqIW2TSHhzCNnp2VJ3X8h5de9ZMwxaQ== X-Received: by 2002:a17:906:5392:b0:9a1:debe:6b9b with SMTP id g18-20020a170906539200b009a1debe6b9bmr11693642ejo.35.1693253500489; Mon, 28 Aug 2023 13:11:40 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:40 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 31/32] bsd-user: Implement rfork(2) system call. Date: Sun, 27 Aug 2023 17:57:45 +0200 Message-Id: <20230827155746.84781-32-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::630; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x630.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Reviewed-by: Richard Henderson --- bsd-user/freebsd/os-proc.h | 38 +++++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 4 ++++ 2 files changed, 42 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index 385fc15adf..94824d737a 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -210,4 +210,42 @@ static inline abi_long do_freebsd_vfork(void *cpu_env) return do_freebsd_fork(cpu_env); } +/* rfork(2) */ +static inline abi_long do_freebsd_rfork(void *cpu_env, abi_long flags) +{ + abi_long ret; + abi_ulong child_flag; + + /* + * XXX We need to handle RFMEM here, as well. Neither are safe to execute + * as-is on x86 hosts because they'll split memory but not the stack, + * wreaking havoc on host architectures that use the stack to store the + * return address as both threads try to pop it off. Rejecting RFSPAWN + * entirely for now is ok, the only consumer at the moment is posix_spawn + * and it will fall back to classic vfork(2) if we return EINVAL. + */ + if ((flags & TARGET_RFSPAWN) != 0) + return -TARGET_EINVAL; + fork_start(); + ret = rfork(flags); + if (ret == 0) { + /* child */ + child_flag = 1; + target_cpu_clone_regs(cpu_env, 0); + } else { + /* parent */ + child_flag = 0; + } + + /* + * The fork system call sets a child flag in the second return + * value: 0 for parent process, 1 for child process. + */ + set_second_rval(cpu_env, child_flag); + fork_end(child_flag); + + return ret; + +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 84c9bffff5..4464b3369c 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -232,6 +232,10 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_freebsd_vfork(cpu_env); break; + case TARGET_FREEBSD_NR_rfork: /* rfork(2) */ + ret = do_freebsd_rfork(cpu_env, arg1); + break; + case TARGET_FREEBSD_NR_execve: /* execve(2) */ ret = do_freebsd_execve(arg1, arg2, arg3); break; From patchwork Sun Aug 27 15:57:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karim Taha X-Patchwork-Id: 1826943 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=FpcofFjD; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZMFD6MHxz1yZ9 for ; Tue, 29 Aug 2023 06:13:20 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qaiaX-0006bY-1b; Mon, 28 Aug 2023 16:11:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qaiaQ-00066w-0M for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:47 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qaiaN-0007qs-LX for qemu-devel@nongnu.org; Mon, 28 Aug 2023 16:11:45 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-99bed101b70so446542966b.3 for ; Mon, 28 Aug 2023 13:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693253502; x=1693858302; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wZmRWS4Lgy7toRM0U7Laa3HHLfg2pMqOOkMzLq4+C8s=; b=FpcofFjDqIfaYvPP1Zur1w1fo4VizRrf0dUeJxtK4Pg78Yig4YlS4BY88Td1/tgvWI mtU0kz8Nd5JRxy8y1rCaH6TKhTDNFVPVL7FLR7DH8i5ZHcgbZvlpJkB1c/OUG1vNARKa W1xuuR/rteyEdKWv6SX6bQxc21Iz+x3dIz8qz0wMGpD9FXOa2y8/QvD5rfRdRsQFN/yN S+Ru0In+vjT/DAzVd33BbPtrRuF7ju7QSXuDwDHBjBmzjfKaJvCbdBcF2rJbSusp1367 M2bjNbnN+vAl9yvA043zkVIE169bKP4ku1M7Snlg+Pk0EHBenDpX+WOUtML1Bk9ffaRe 2lAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693253502; x=1693858302; 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=wZmRWS4Lgy7toRM0U7Laa3HHLfg2pMqOOkMzLq4+C8s=; b=ih1sW+Vt0bloQgUjOARevLCH5vLAGw5jwioC55BPeyXFyHzq2PpqHqquN8jalV1kWH ik5LbsZ855H7aCXEMpi/OksJuaXJ2YZXAdCoFxkZXvMo0yJGJhi79e3HbT265SaVv4/Q 6JEWYP4YohNTiU9FDXlJffuOr30gt008eyh21/cjJdCL+jGmRV9XSmqCyHEjB1PYIb5R 46Vs58D2jeg1aWc1oBzofWbGSJkio7QtbYzrITXxUvVES08eaP7PtqMeNJb+/H4FXE7Z E4JLE4skikjQvE68Y9cU5qYmgaYM7YTVObj/Zj5DLLXpN9cPXHQppDNW0VZk6+3OGmuW 0xcQ== X-Gm-Message-State: AOJu0YxCszY/CdvLPihfCnPpgXpjFyuIeKTSwFtVPtssrcl1aZPfoMun cG4M55EjiMu0algtkoL82VcQsFouPzNTtQ== X-Google-Smtp-Source: AGHT+IEdL9eRQq+pxrbdRukOPmEcQku6Hr+QpFZleM0npBCl+VdD8b/ZwpKAmjK29ZqjSYjDWNwGnw== X-Received: by 2002:a17:906:217:b0:9a1:e293:987e with SMTP id 23-20020a170906021700b009a1e293987emr11245056ejd.50.1693253502076; Mon, 28 Aug 2023 13:11:42 -0700 (PDT) Received: from karim.my.domain ([102.60.177.41]) by smtp.gmail.com with ESMTPSA id y16-20020a1709064b1000b009929ab17be0sm5043666eju.162.2023.08.28.13.11.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 13:11:41 -0700 (PDT) From: Karim Taha To: qemu-devel@nongnu.org Cc: imp@bsdimp.com, Stacey Son , Karim Taha Subject: [PATCH 32/32] bsd-user: Implement pdfork(2) system call. Date: Sun, 27 Aug 2023 17:57:46 +0200 Message-Id: <20230827155746.84781-33-kariem.taha2.7@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230827155746.84781-1-kariem.taha2.7@gmail.com> References: <20230827155746.84781-1-kariem.taha2.7@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62e; envelope-from=kariem.taha2.7@gmail.com; helo=mail-ej1-x62e.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stacey Son Signed-off-by: Stacey Son Signed-off-by: Karim Taha Acked-by: Richard Henderson Reviewed-by: Warner Losh --- bsd-user/freebsd/os-proc.h | 32 ++++++++++++++++++++++++++++++++ bsd-user/freebsd/os-syscall.c | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/bsd-user/freebsd/os-proc.h b/bsd-user/freebsd/os-proc.h index 94824d737a..1eaba908a5 100644 --- a/bsd-user/freebsd/os-proc.h +++ b/bsd-user/freebsd/os-proc.h @@ -248,4 +248,36 @@ static inline abi_long do_freebsd_rfork(void *cpu_env, abi_long flags) } +/* pdfork(2) */ +static inline abi_long do_freebsd_pdfork(void *cpu_env, abi_ulong target_fdp, + abi_long flags) +{ + abi_long ret; + abi_ulong child_flag; + int fd; + + fork_start(); + ret = pdfork(&fd, flags); + if (ret == 0) { + /* child */ + child_flag = 1; + target_cpu_clone_regs(cpu_env, 0); + } else { + /* parent */ + child_flag = 0; + } + if (put_user_s32(fd, target_fdp)) { + return -TARGET_EFAULT; + } + + /* + * The fork system call sets a child flag in the second return + * value: 0 for parent process, 1 for child process. + */ + set_second_rval(cpu_env, child_flag); + fork_end(child_flag); + + return ret; +} + #endif /* BSD_USER_FREEBSD_OS_PROC_H */ diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index 4464b3369c..27fc9d21fb 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -236,6 +236,10 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_freebsd_rfork(cpu_env, arg1); break; + case TARGET_FREEBSD_NR_pdfork: /* pdfork(2) */ + ret = do_freebsd_pdfork(cpu_env, arg1, arg2); + break; + case TARGET_FREEBSD_NR_execve: /* execve(2) */ ret = do_freebsd_execve(arg1, arg2, arg3); break;