From patchwork Thu Jan 6 11:57:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705367 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D019DC4321E for ; Thu, 6 Jan 2022 11:58:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253906.435213 (Exim 4.92) (envelope-from ) id 1n5RP6-0005X3-Gz; Thu, 06 Jan 2022 11:58:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253906.435213; Thu, 06 Jan 2022 11:58:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP6-0005Ww-Cq; Thu, 06 Jan 2022 11:58:00 +0000 Received: by outflank-mailman (input) for mailman id 253906; Thu, 06 Jan 2022 11:57:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP4-0005UX-TC for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:57:58 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e25b206b-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 69607212C7; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3FA9513C4A; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id GIlQDkPZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:55 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e25b206b-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470275; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5R3ZzVCzkcurvfIiXoJfZKNipObEjTIYIL/twAPEHmg=; b=GYmLaoTdv9YvOlvBOvK4jAtMwhOJg02clrHMZYqdYH2gUP1tTILJ7o37Z7FQ5HO9wAmyrg El4HB+u1kC1aILpOQx/jAZ086aghL5uPyYeTLbrCTIPQZUnylW1T3F8KWm0rcei1XFxUvF l+oBSTjAAbERdNv+A6AlQQg+WbaIGrA= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 01/15] mini-os: split struct file definition from its usage Date: Thu, 6 Jan 2022 12:57:27 +0100 Message-Id: <20220106115741.3219-2-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Make the struct file definition standalone and use it for the declaration of the files array. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/lib.h b/include/lib.h index 39d6a18..a638bc9 100644 --- a/include/lib.h +++ b/include/lib.h @@ -181,7 +181,7 @@ struct evtchn_port_info { int bound; }; -extern struct file { +struct file { enum fd_type type; union { struct { @@ -236,7 +236,9 @@ extern struct file { #endif }; int read; /* maybe available for read */ -} files[]; +}; + +extern struct file files[]; int alloc_fd(enum fd_type type); void close_all_files(void); From patchwork Thu Jan 6 11:57:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705376 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C70B9C433EF for ; Thu, 6 Jan 2022 12:00:05 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253948.435385 (Exim 4.92) (envelope-from ) id 1n5RQq-0004QY-D0; Thu, 06 Jan 2022 11:59:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253948.435385; Thu, 06 Jan 2022 11:59:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RQq-0004QR-8c; Thu, 06 Jan 2022 11:59:48 +0000 Received: by outflank-mailman (input) for mailman id 253948; Thu, 06 Jan 2022 11:59:46 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPE-0005UX-Ua for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:09 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e27cd5ea-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 97BA6212C9; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 6E1E113C0D; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 4EmeGUPZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:55 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e27cd5ea-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470275; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=l6pifbgOadZ0E6Wgy90T2ZIm93BZS6I+9qz60NhwbHg=; b=he6FNPlM2m97aBvtYpvwfEY0RsYBMXKDCpgoUo/1sc9lUS1Jw7v153yVQr67iV30WlYYwb TOWWwtkX7hmthBY/Niu1bCvj74zvAk3lH5igNigLiWvhPtLizCsIjUHaznFBukOVdS5m++ NZc6V59v90ZABblqWZQdsO9TPuHm/Zc= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 02/15] mini-os: makes file.read bool and move it ahead of device specific part Date: Thu, 6 Jan 2022 12:57:28 +0100 Message-Id: <20220106115741.3219-3-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 The read member of struct file should be bool. In order to have the device specific part at the end of the structure move "read" ahead of that. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- blkfront.c | 4 ++-- console/xencons_ring.c | 2 +- fbfront.c | 12 ++++++------ include/lib.h | 3 ++- netfront.c | 4 ++-- tpm_tis.c | 2 +- tpmfront.c | 6 +++--- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/blkfront.c b/blkfront.c index 834a978..7c8eb74 100644 --- a/blkfront.c +++ b/blkfront.c @@ -62,7 +62,7 @@ void blkfront_handler(evtchn_port_t port, struct pt_regs *regs, void *data) int fd = dev->fd; if (fd != -1) - files[fd].read = 1; + files[fd].read = true; #endif wake_up(&blkfront_queue); } @@ -484,7 +484,7 @@ int blkfront_aio_poll(struct blkfront_dev *dev) moretodo: #ifdef HAVE_LIBC if (dev->fd != -1) { - files[dev->fd].read = 0; + files[dev->fd].read = false; mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */ } #endif diff --git a/console/xencons_ring.c b/console/xencons_ring.c index b6db74e..c348f3c 100644 --- a/console/xencons_ring.c +++ b/console/xencons_ring.c @@ -102,7 +102,7 @@ void console_handle_input(evtchn_port_t port, struct pt_regs *regs, void *data) int fd = dev ? dev->fd : -1; if (fd != -1) - files[fd].read = 1; + files[fd].read = true; wake_up(&console_queue); #else diff --git a/fbfront.c b/fbfront.c index d3b3848..6725da1 100644 --- a/fbfront.c +++ b/fbfront.c @@ -45,7 +45,7 @@ void kbdfront_handler(evtchn_port_t port, struct pt_regs *regs, void *data) int fd = dev->fd; if (fd != -1) - files[fd].read = 1; + files[fd].read = true; #endif wake_up(&kbdfront_queue); } @@ -207,7 +207,7 @@ int kbdfront_receive(struct kbdfront_dev *dev, union xenkbd_in_event *buf, int n #ifdef HAVE_LIBC if (dev->fd != -1) { - files[dev->fd].read = 0; + files[dev->fd].read = false; mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */ } #endif @@ -229,7 +229,7 @@ int kbdfront_receive(struct kbdfront_dev *dev, union xenkbd_in_event *buf, int n #ifdef HAVE_LIBC if (cons != prod && dev->fd != -1) /* still some events to read */ - files[dev->fd].read = 1; + files[dev->fd].read = true; #endif return i; @@ -349,7 +349,7 @@ void fbfront_handler(evtchn_port_t port, struct pt_regs *regs, void *data) int fd = dev->fd; if (fd != -1) - files[fd].read = 1; + files[fd].read = true; #endif wake_up(&fbfront_queue); } @@ -376,7 +376,7 @@ int fbfront_receive(struct fbfront_dev *dev, union xenfb_in_event *buf, int n) #ifdef HAVE_LIBC if (dev->fd != -1) { - files[dev->fd].read = 0; + files[dev->fd].read = false; mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */ } #endif @@ -398,7 +398,7 @@ int fbfront_receive(struct fbfront_dev *dev, union xenfb_in_event *buf, int n) #ifdef HAVE_LIBC if (cons != prod && dev->fd != -1) /* still some events to read */ - files[dev->fd].read = 1; + files[dev->fd].read = true; #endif return i; diff --git a/include/lib.h b/include/lib.h index a638bc9..df2de9e 100644 --- a/include/lib.h +++ b/include/lib.h @@ -49,6 +49,7 @@ #define _LIB_H_ #include +#include #include #include #include @@ -183,6 +184,7 @@ struct evtchn_port_info { struct file { enum fd_type type; + bool read; /* maybe available for read */ union { struct { /* lwIP fd */ @@ -235,7 +237,6 @@ struct file { } xenbus; #endif }; - int read; /* maybe available for read */ }; extern struct file files[]; diff --git a/netfront.c b/netfront.c index dfe065b..a566e34 100644 --- a/netfront.c +++ b/netfront.c @@ -255,7 +255,7 @@ void netfront_select_handler(evtchn_port_t port, struct pt_regs *regs, void *dat local_irq_restore(flags); if (fd != -1) - files[fd].read = 1; + files[fd].read = true; wake_up(&netfront_queue); } #endif @@ -783,7 +783,7 @@ ssize_t netfront_receive(struct netfront_dev *dev, unsigned char *data, size_t l network_rx(dev); if (!dev->rlen && fd != -1) /* No data for us, make select stop returning */ - files[fd].read = 0; + files[fd].read = false; /* Before re-enabling the interrupts, in case a packet just arrived in the * meanwhile. */ local_irq_restore(flags); diff --git a/tpm_tis.c b/tpm_tis.c index 475ac5d..4a51027 100644 --- a/tpm_tis.c +++ b/tpm_tis.c @@ -845,7 +845,7 @@ int tpm_tis_send(struct tpm_chip* tpm, uint8_t* buf, size_t len) { } #ifdef HAVE_LIBC if(tpm->fd >= 0) { - files[tpm->fd].read = 0; + files[tpm->fd].read = false; files[tpm->fd].tpm_tis.respgot = 0; files[tpm->fd].tpm_tis.offset = 0; } diff --git a/tpmfront.c b/tpmfront.c index 6049244..d825b49 100644 --- a/tpmfront.c +++ b/tpmfront.c @@ -66,7 +66,7 @@ void tpmfront_handler(evtchn_port_t port, struct pt_regs *regs, void *data) { dev->waiting = 0; #ifdef HAVE_LIBC if(dev->fd >= 0) { - files[dev->fd].read = 1; + files[dev->fd].read = true; } #endif wake_up(&dev->waitq); @@ -438,7 +438,7 @@ int tpmfront_send(struct tpmfront_dev* dev, const uint8_t* msg, size_t length) dev->resplen = 0; #ifdef HAVE_LIBC if(dev->fd >= 0) { - files[dev->fd].read = 0; + files[dev->fd].read = false; files[dev->fd].tpmfront.respgot = 0; files[dev->fd].tpmfront.offset = 0; } @@ -611,7 +611,7 @@ int tpmfront_posix_fstat(int fd, struct stat* buf) /* If we have a response waiting, then read it now from the backend * so we can get its length*/ - if(dev->waiting || (files[dev->fd].read == 1 && !files[dev->fd].tpmfront.respgot)) { + if(dev->waiting || (files[dev->fd].read && !files[dev->fd].tpmfront.respgot)) { if ((rc = tpmfront_recv(dev, &dummybuf, &dummysz)) != 0) { errno = EIO; return -1; From patchwork Thu Jan 6 11:57:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705375 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0A185C433F5 for ; Thu, 6 Jan 2022 11:59:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253928.435362 (Exim 4.92) (envelope-from ) id 1n5RQ8-0003RI-S2; Thu, 06 Jan 2022 11:59:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253928.435362; Thu, 06 Jan 2022 11:59:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RQ8-0003R7-On; Thu, 06 Jan 2022 11:59:04 +0000 Received: by outflank-mailman (input) for mailman id 253928; Thu, 06 Jan 2022 11:59:04 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPI-0005UX-V6 for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:13 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e291ef39-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id C6A48212CA; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 9D50413C0D; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id kEA3JUPZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:55 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e291ef39-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470275; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x+0vw1I/hfTGOGb3eceoyxjODZK0aOUWRIC/lcz6R4A=; b=DnqYS+/rPg5//MChMz/HOdqP5Q1i1bqqVHyPWXD5pJruUm9Y4E6Nocyg5xuU88hFWGpuTe uO+ouVJC7JCpecOGRkZJRapyFPp4pzys7X1krV8/MHNO/Rqf7NL/wdzWh1RITCv84zdV1w UVYvnXlsqpLGYSIfOfgR5KDTAyewOJE= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 03/15] mini-os: make offset a common struct file member for all types Date: Thu, 6 Jan 2022 12:57:29 +0100 Message-Id: <20220106115741.3219-4-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Currently 4 file types have an offset member in their private struct file part. Make offset a common struct member shared by all file types. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- blkfront.c | 5 ++--- include/lib.h | 5 +---- lib/sys.c | 14 +++++--------- tpm_tis.c | 11 +++++------ tpmfront.c | 11 +++++------ 5 files changed, 18 insertions(+), 28 deletions(-) diff --git a/blkfront.c b/blkfront.c index 7c8eb74..8137106 100644 --- a/blkfront.c +++ b/blkfront.c @@ -563,14 +563,13 @@ int blkfront_open(struct blkfront_dev *dev) dev->fd = alloc_fd(FTYPE_BLK); printk("blk_open(%s) -> %d\n", dev->nodename, dev->fd); files[dev->fd].blk.dev = dev; - files[dev->fd].blk.offset = 0; return dev->fd; } int blkfront_posix_rwop(int fd, uint8_t* buf, size_t count, int write) { struct blkfront_dev* dev = files[fd].blk.dev; - off_t offset = files[fd].blk.offset; + off_t offset = files[fd].offset; struct blkfront_aiocb aiocb; unsigned long long disksize = dev->info.sectors * dev->info.sector_size; unsigned int blocksize = dev->info.sector_size; @@ -712,7 +711,7 @@ int blkfront_posix_rwop(int fd, uint8_t* buf, size_t count, int write) } free(copybuf); - files[fd].blk.offset += rc; + files[fd].offset += rc; return rc; } diff --git a/include/lib.h b/include/lib.h index df2de9e..4d9b14b 100644 --- a/include/lib.h +++ b/include/lib.h @@ -185,6 +185,7 @@ struct evtchn_port_info { struct file { enum fd_type type; bool read; /* maybe available for read */ + off_t offset; union { struct { /* lwIP fd */ @@ -193,7 +194,6 @@ struct file { struct { /* FS import fd */ int fd; - off_t offset; } file; struct { struct evtchn_port_list ports; @@ -204,7 +204,6 @@ struct file { } tap; struct { struct blkfront_dev *dev; - off_t offset; } blk; struct { struct kbdfront_dev *dev; @@ -219,14 +218,12 @@ struct file { struct { struct tpmfront_dev *dev; int respgot; - off_t offset; } tpmfront; #endif #ifdef CONFIG_TPM_TIS struct { struct tpm_chip *dev; int respgot; - off_t offset; } tpm_tis; #endif #ifdef CONFIG_XENBUS diff --git a/lib/sys.c b/lib/sys.c index e8d5eb2..e1cea70 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -107,6 +107,7 @@ int alloc_fd(enum fd_type type) for (i=0; ifd >= 0) { files[tpm->fd].read = false; files[tpm->fd].tpm_tis.respgot = 0; - files[tpm->fd].tpm_tis.offset = 0; + files[tpm->fd].offset = 0; } #endif return len; @@ -1290,7 +1290,6 @@ int tpm_tis_open(struct tpm_chip* tpm) tpm->fd = alloc_fd(FTYPE_TPM_TIS); printk("tpm_tis_open() -> %d\n", tpm->fd); files[tpm->fd].tpm_tis.dev = tpm; - files[tpm->fd].tpm_tis.offset = 0; files[tpm->fd].tpm_tis.respgot = 0; return tpm->fd; } @@ -1340,13 +1339,13 @@ int tpm_tis_posix_read(int fd, uint8_t* buf, size_t count) /* Handle EOF case */ - if(files[fd].tpm_tis.offset >= tpm->data_len) { + if(files[fd].offset >= tpm->data_len) { rc = 0; } else { - rc = min(tpm->data_len - files[fd].tpm_tis.offset, count); - memcpy(buf, tpm->data_buffer + files[fd].tpm_tis.offset, rc); + rc = min(tpm->data_len - files[fd].offset, count); + memcpy(buf, tpm->data_buffer + files[fd].offset, rc); } - files[fd].tpm_tis.offset += rc; + files[fd].offset += rc; /* Reset the data pending flag */ return rc; } diff --git a/tpmfront.c b/tpmfront.c index d825b49..8b2a910 100644 --- a/tpmfront.c +++ b/tpmfront.c @@ -440,7 +440,7 @@ int tpmfront_send(struct tpmfront_dev* dev, const uint8_t* msg, size_t length) if(dev->fd >= 0) { files[dev->fd].read = false; files[dev->fd].tpmfront.respgot = 0; - files[dev->fd].tpmfront.offset = 0; + files[dev->fd].offset = 0; } #endif wmb(); @@ -539,7 +539,6 @@ int tpmfront_open(struct tpmfront_dev* dev) dev->fd = alloc_fd(FTYPE_TPMFRONT); printk("tpmfront_open(%s) -> %d\n", dev->nodename, dev->fd); files[dev->fd].tpmfront.dev = dev; - files[dev->fd].tpmfront.offset = 0; files[dev->fd].tpmfront.respgot = 0; return dev->fd; } @@ -589,14 +588,14 @@ int tpmfront_posix_read(int fd, uint8_t* buf, size_t count) } /* handle EOF case */ - if(files[dev->fd].tpmfront.offset >= dev->resplen) { + if(files[dev->fd].offset >= dev->resplen) { return 0; } /* Compute the number of bytes and do the copy operation */ - if((rc = min(count, dev->resplen - files[dev->fd].tpmfront.offset)) != 0) { - memcpy(buf, dev->respbuf + files[dev->fd].tpmfront.offset, rc); - files[dev->fd].tpmfront.offset += rc; + if((rc = min(count, dev->resplen - files[dev->fd].offset)) != 0) { + memcpy(buf, dev->respbuf + files[dev->fd].offset, rc); + files[dev->fd].offset += rc; } return rc; From patchwork Thu Jan 6 11:57:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705368 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0A980C433EF for ; Thu, 6 Jan 2022 11:58:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253914.435270 (Exim 4.92) (envelope-from ) id 1n5RPA-0006fi-GV; Thu, 06 Jan 2022 11:58:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253914.435270; Thu, 06 Jan 2022 11:58:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPA-0006eH-Af; Thu, 06 Jan 2022 11:58:04 +0000 Received: by outflank-mailman (input) for mailman id 253914; Thu, 06 Jan 2022 11:58:02 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP8-0005Uf-Hj for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:02 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e2aad614-6ee7-11ec-9ce5-af14b9085ebd; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 02273212CB; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id CB74C13C0D; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id qKd1MEPZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:55 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e2aad614-6ee7-11ec-9ce5-af14b9085ebd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=51rtfDlnCwvtylJO0A+QuSOibmO2F89Q2mcJem6Kck0=; b=IvjSX2gexxgKdcxmktE+tINJhUGi/QHxpWqsA/JpnM5W2NBqMGPuSUjvaFJVxQeA5wmZjW OT3La1KL4bWX7a/BiEaFOG1LvEHxW4lWZYOk7Fp5s/0sN6CaP2Px082/dvXYmca2T+VlTK 7CGQ19MKJH7vWWNYzP8tE+dm9LJ5g4A= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 04/15] mini-os: replace multiple fd elements in struct file by common one Date: Thu, 6 Jan 2022 12:57:30 +0100 Message-Id: <20220106115741.3219-5-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 The type specific union in struct files contains two instances of "int fd". Replace them by a common one. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 9 +-------- lib/sys.c | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/include/lib.h b/include/lib.h index 4d9b14b..dc56f52 100644 --- a/include/lib.h +++ b/include/lib.h @@ -187,14 +187,7 @@ struct file { bool read; /* maybe available for read */ off_t offset; union { - struct { - /* lwIP fd */ - int fd; - } socket; - struct { - /* FS import fd */ - int fd; - } file; + int fd; /* Any fd from an upper layer. */ struct { struct evtchn_port_list ports; } evtchn; diff --git a/lib/sys.c b/lib/sys.c index e1cea70..1da7401 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -258,7 +258,7 @@ int read(int fd, void *buf, size_t nbytes) } #ifdef HAVE_LWIP case FTYPE_SOCKET: - return lwip_read(files[fd].socket.fd, buf, nbytes); + return lwip_read(files[fd].fd, buf, nbytes); #endif #ifdef CONFIG_NETFRONT case FTYPE_TAP: { @@ -335,7 +335,7 @@ int write(int fd, const void *buf, size_t nbytes) return nbytes; #ifdef HAVE_LWIP case FTYPE_SOCKET: - return lwip_write(files[fd].socket.fd, (void*) buf, nbytes); + return lwip_write(files[fd].fd, (void*) buf, nbytes); #endif #ifdef CONFIG_NETFRONT case FTYPE_TAP: @@ -428,7 +428,7 @@ int close(int fd) #endif #ifdef HAVE_LWIP case FTYPE_SOCKET: { - int res = lwip_close(files[fd].socket.fd); + int res = lwip_close(files[fd].fd); files[fd].type = FTYPE_NONE; return res; } @@ -594,7 +594,7 @@ int fcntl(int fd, int cmd, ...) if (files[fd].type == FTYPE_SOCKET && !(arg & ~O_NONBLOCK)) { /* Only flag supported: non-blocking mode */ uint32_t nblock = !!(arg & O_NONBLOCK); - return lwip_ioctl(files[fd].socket.fd, FIONBIO, &nblock); + return lwip_ioctl(files[fd].fd, FIONBIO, &nblock); } /* Fallthrough */ #endif @@ -732,15 +732,15 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce for (i = 0; i < nfds; i++) { if (files[i].type == FTYPE_SOCKET) { if (FD_ISSET(i, readfds)) { - FD_SET(files[i].socket.fd, &sock_readfds); + FD_SET(files[i].fd, &sock_readfds); sock_nfds = i+1; } if (FD_ISSET(i, writefds)) { - FD_SET(files[i].socket.fd, &sock_writefds); + FD_SET(files[i].fd, &sock_writefds); sock_nfds = i+1; } if (FD_ISSET(i, exceptfds)) { - FD_SET(files[i].socket.fd, &sock_exceptfds); + FD_SET(files[i].fd, &sock_exceptfds); sock_nfds = i+1; } } @@ -803,19 +803,19 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce case FTYPE_SOCKET: if (FD_ISSET(i, readfds)) { /* Optimize no-network-packet case. */ - if (sock_n && FD_ISSET(files[i].socket.fd, &sock_readfds)) + if (sock_n && FD_ISSET(files[i].fd, &sock_readfds)) n++; else FD_CLR(i, readfds); } if (FD_ISSET(i, writefds)) { - if (sock_n && FD_ISSET(files[i].socket.fd, &sock_writefds)) + if (sock_n && FD_ISSET(files[i].fd, &sock_writefds)) n++; else FD_CLR(i, writefds); } if (FD_ISSET(i, exceptfds)) { - if (sock_n && FD_ISSET(files[i].socket.fd, &sock_exceptfds)) + if (sock_n && FD_ISSET(files[i].fd, &sock_exceptfds)) n++; else FD_CLR(i, exceptfds); @@ -1112,7 +1112,7 @@ int socket(int domain, int type, int protocol) return -1; res = alloc_fd(FTYPE_SOCKET); printk("socket -> %d\n", res); - files[res].socket.fd = fd; + files[res].fd = fd; return res; } @@ -1124,11 +1124,11 @@ int accept(int s, struct sockaddr *addr, socklen_t *addrlen) errno = EBADF; return -1; } - fd = lwip_accept(files[s].socket.fd, addr, addrlen); + fd = lwip_accept(files[s].fd, addr, addrlen); if (fd < 0) return -1; res = alloc_fd(FTYPE_SOCKET); - files[res].socket.fd = fd; + files[res].fd = fd; printk("accepted on %d -> %d\n", s, res); return res; } @@ -1141,7 +1141,7 @@ ret name proto \ errno = EBADF; \ return -1; \ } \ - s = files[s].socket.fd; \ + s = files[s].fd; \ return lwip_##name args; \ } From patchwork Thu Jan 6 11:57:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705371 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A8495C43217 for ; Thu, 6 Jan 2022 11:58:24 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253911.435246 (Exim 4.92) (envelope-from ) id 1n5RP8-000656-Cs; Thu, 06 Jan 2022 11:58:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253911.435246; Thu, 06 Jan 2022 11:58:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP8-00064G-7B; Thu, 06 Jan 2022 11:58:02 +0000 Received: by outflank-mailman (input) for mailman id 253911; Thu, 06 Jan 2022 11:58:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP6-0005UX-TZ for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:00 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e2cc6d54-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 366F4212CC; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0300413C4A; Thu, 6 Jan 2022 11:57:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id EOQ0O0PZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:55 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e2cc6d54-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tru95lucHl6eXrRSEYruYf0s6MYSR/EyxinHg1pggO4=; b=fmz1LjyfMYD45R5dtM/5FppITveTaKMBnCxcp5u+H90M+u/rLZ2qgn5y/Q1sGv+gqgantT zDfi7S/BqLf1DvsOm6Hs7kDtIoet8QicZZBKW/TZVHUa23mV3cjYkcGOiK/JojiXXY0VMu MKhmsH0TsZytENYwJWvROX3ruUOcx5g= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 05/15] mini-os: introduce a common dev pointer in struct file Date: Thu, 6 Jan 2022 12:57:31 +0100 Message-Id: <20220106115741.3219-6-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 There are many dev pointers in a union in struct file. Prepare to switch to a single one by introducing a new common one. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/lib.h b/include/lib.h index dc56f52..60aaf1c 100644 --- a/include/lib.h +++ b/include/lib.h @@ -188,6 +188,7 @@ struct file { off_t offset; union { int fd; /* Any fd from an upper layer. */ + void *dev; struct { struct evtchn_port_list ports; } evtchn; From patchwork Thu Jan 6 11:57:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705370 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6AA7CC433F5 for ; Thu, 6 Jan 2022 11:58:24 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253912.435253 (Exim 4.92) (envelope-from ) id 1n5RP9-0006GL-3o; Thu, 06 Jan 2022 11:58:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253912.435253; Thu, 06 Jan 2022 11:58:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP8-0006Di-Pa; Thu, 06 Jan 2022 11:58:02 +0000 Received: by outflank-mailman (input) for mailman id 253912; Thu, 06 Jan 2022 11:58:01 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP7-0005Uf-Hh for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:01 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e38d72f9-6ee7-11ec-9ce5-af14b9085ebd; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 65C0B212FE; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3BE7213C0D; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id uGJfDUTZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:56 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e38d72f9-6ee7-11ec-9ce5-af14b9085ebd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bmVybJWUa0fFpI1LcBKz9xhn6xImelv7T4pQq8L9wmI=; b=Fs+UM/pWdDVvJXN8OAMiyiD3OkCUNAbWinIFWd/F0qaF9KZkPplY/ZsLiQrZC5bn42+yzU DXYYsyjqIiH0Rcz4eufKAnteQTq+nh0x3TnCxrLaV/ystB9ur0TWc/5DIhjbgmzk3M7jbW H9NWENjKQdu5+qgvy5/2JYb2t1p3E/s= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 06/15] mini-os: eliminate blkfront union member in struct file Date: Thu, 6 Jan 2022 12:57:32 +0100 Message-Id: <20220106115741.3219-7-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the blkfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- blkfront.c | 6 +++--- include/lib.h | 3 --- lib/sys.c | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/blkfront.c b/blkfront.c index 8137106..e3f42be 100644 --- a/blkfront.c +++ b/blkfront.c @@ -562,13 +562,13 @@ int blkfront_open(struct blkfront_dev *dev) } dev->fd = alloc_fd(FTYPE_BLK); printk("blk_open(%s) -> %d\n", dev->nodename, dev->fd); - files[dev->fd].blk.dev = dev; + files[dev->fd].dev = dev; return dev->fd; } int blkfront_posix_rwop(int fd, uint8_t* buf, size_t count, int write) { - struct blkfront_dev* dev = files[fd].blk.dev; + struct blkfront_dev* dev = files[fd].dev; off_t offset = files[fd].offset; struct blkfront_aiocb aiocb; unsigned long long disksize = dev->info.sectors * dev->info.sector_size; @@ -718,7 +718,7 @@ int blkfront_posix_rwop(int fd, uint8_t* buf, size_t count, int write) int blkfront_posix_fstat(int fd, struct stat* buf) { - struct blkfront_dev* dev = files[fd].blk.dev; + struct blkfront_dev* dev = files[fd].dev; buf->st_mode = dev->info.mode; buf->st_uid = 0; diff --git a/include/lib.h b/include/lib.h index 60aaf1c..3a40634 100644 --- a/include/lib.h +++ b/include/lib.h @@ -196,9 +196,6 @@ struct file { struct { struct netfront_dev *dev; } tap; - struct { - struct blkfront_dev *dev; - } blk; struct { struct kbdfront_dev *dev; } kbd; diff --git a/lib/sys.c b/lib/sys.c index 1da7401..f2fdbdf 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -456,7 +456,7 @@ int close(int fd) #endif #ifdef CONFIG_BLKFRONT case FTYPE_BLK: - shutdown_blkfront(files[fd].blk.dev); + shutdown_blkfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif From patchwork Thu Jan 6 11:57:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705379 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4B33BC433EF for ; Thu, 6 Jan 2022 12:00:45 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253965.435430 (Exim 4.92) (envelope-from ) id 1n5RRe-00073q-Si; Thu, 06 Jan 2022 12:00:38 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253965.435430; Thu, 06 Jan 2022 12:00:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RRe-00073h-PI; Thu, 06 Jan 2022 12:00:38 +0000 Received: by outflank-mailman (input) for mailman id 253965; Thu, 06 Jan 2022 12:00:37 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPF-0005UX-UT for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:10 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e30200bb-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 911F11F3A2; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 6968F13C0D; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id UFCSGETZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:56 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e30200bb-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0ADnCSUrVKDoJvsP7J4SKuUjUEXMRkB3QXB4kfD1iQE=; b=nkoh468iPXJMcFqUDXHeV++B8pzmUUI5aC7nUnBdGH5ZszTQtPxyUKPq4OU8SHE1WDw+x5 PiPO+hD1IZXECQLPBYmFWcjpe3ilx/KRS9lTA9BFicOUyuumLBMYFQHZBLRtIFj/C/qdSR PjsikQERyv4EHkwiKW4TT7G5ry6t9Vs= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 07/15] mini-os: eliminate consfront union member in struct file Date: Thu, 6 Jan 2022 12:57:33 +0100 Message-Id: <20220106115741.3219-8-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the consfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 3 --- lib/sys.c | 31 +++++++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/lib.h b/include/lib.h index 3a40634..0cedae6 100644 --- a/include/lib.h +++ b/include/lib.h @@ -202,9 +202,6 @@ struct file { struct { struct fbfront_dev *dev; } fb; - struct { - struct consfront_dev *dev; - } cons; #ifdef CONFIG_TPMFRONT struct { struct tpmfront_dev *dev; diff --git a/lib/sys.c b/lib/sys.c index f2fdbdf..62c2020 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -179,7 +179,7 @@ int posix_openpt(int flags) dev = init_consfront(NULL); dev->fd = alloc_fd(FTYPE_CONSOLE); - files[dev->fd].cons.dev = dev; + files[dev->fd].dev = dev; printk("fd(%d) = posix_openpt\n", dev->fd); return(dev->fd); @@ -194,7 +194,7 @@ int open_savefile(const char *path, int save) dev = init_consfront(nodename); dev->fd = alloc_fd(FTYPE_SAVEFILE); - files[dev->fd].cons.dev = dev; + files[dev->fd].dev = dev; printk("fd(%d) = open_savefile\n", dev->fd); return(dev->fd); @@ -248,7 +248,7 @@ int read(int fd, void *buf, size_t nbytes) DEFINE_WAIT(w); while(1) { add_waiter(w, console_queue); - ret = xencons_ring_recv(files[fd].cons.dev, buf, nbytes); + ret = xencons_ring_recv(files[fd].dev, buf, nbytes); if (ret) break; schedule(); @@ -324,14 +324,14 @@ int write(int fd, const void *buf, size_t nbytes) case FTYPE_SAVEFILE: { int ret = 0, tot = nbytes; while (nbytes > 0) { - ret = xencons_ring_send(files[fd].cons.dev, (char *)buf, nbytes); + ret = xencons_ring_send(files[fd].dev, (char *)buf, nbytes); nbytes -= ret; buf = (char *)buf + ret; } return tot - nbytes; } case FTYPE_CONSOLE: - console_print(files[fd].cons.dev, (char *)buf, nbytes); + console_print(files[fd].dev, (char *)buf, nbytes); return nbytes; #ifdef HAVE_LWIP case FTYPE_SOCKET: @@ -487,7 +487,7 @@ int close(int fd) #ifdef CONFIG_CONSFRONT case FTYPE_SAVEFILE: case FTYPE_CONSOLE: - fini_consfront(files[fd].cons.dev); + fini_consfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif @@ -764,7 +764,7 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce /* Fallthrough. */ case FTYPE_CONSOLE: if (FD_ISSET(i, readfds)) { - if (xencons_ring_avail(files[i].cons.dev)) + if (xencons_ring_avail(files[i].dev)) n++; else FD_CLR(i, readfds); @@ -1447,6 +1447,8 @@ const struct termios default_termios = {0, /* iflag */ int tcsetattr(int fildes, int action, const struct termios *tios) { + struct consfront_dev *dev; + if (fildes < 0 || fildes >= NOFILE) { errno = EBADF; return -1; @@ -1472,21 +1474,21 @@ int tcsetattr(int fildes, int action, const struct termios *tios) return -1; } - if (files[fildes].cons.dev == NULL) { + dev = files[fildes].dev; + if (dev == NULL) { errno = ENOSYS; return -1; } - if (tios->c_oflag & OPOST) - files[fildes].cons.dev->is_raw = false; - else - files[fildes].cons.dev->is_raw = true; + dev->is_raw = !(tios->c_oflag & OPOST); return 0; } int tcgetattr(int fildes, struct termios *tios) { + struct consfront_dev *dev; + if (fildes < 0 || fildes >= NOFILE) { errno = EBADF; return -1; @@ -1497,7 +1499,8 @@ int tcgetattr(int fildes, struct termios *tios) return -1; } - if (files[fildes].cons.dev == NULL) { + dev = files[fildes].dev; + if (dev == NULL) { errno = ENOSYS; return 0; } @@ -1509,7 +1512,7 @@ int tcgetattr(int fildes, struct termios *tios) memcpy(tios, &default_termios, sizeof(struct termios)); - if (files[fildes].cons.dev->is_raw) + if (dev->is_raw) tios->c_oflag &= ~OPOST; return 0; From patchwork Thu Jan 6 11:57:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705365 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B7AD7C43219 for ; Thu, 6 Jan 2022 11:58:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253915.435276 (Exim 4.92) (envelope-from ) id 1n5RPB-0006mP-40; Thu, 06 Jan 2022 11:58:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253915.435276; Thu, 06 Jan 2022 11:58:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPA-0006lY-QZ; Thu, 06 Jan 2022 11:58:04 +0000 Received: by outflank-mailman (input) for mailman id 253915; Thu, 06 Jan 2022 11:58:03 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP8-0005UX-U5 for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:02 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e3256124-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id C0B481F3A6; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 9736213C0D; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id IMWmI0TZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:56 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e3256124-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xErc7oBdwTzw610yqw3gpLQCyn3qczdDyg0iihAjKQM=; b=IPtmfN6P3iEoVunr9mUcXaEj1i9fEgD3m65LtDMKgeHnVLAeEOiyoc4jqCH8r1Bd22Fs8L Id1HWyvbLUUr4Vpj8VUNJaAxMAN+p3bdGBePEoP2sjnWYsNTpDV1K4H/lChVa+MDcsSAki sLfOeG7xXhvmJIT/1PJGOH6yOstLcNU= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 08/15] mini-os: eliminate fbfront union member in struct file Date: Thu, 6 Jan 2022 12:57:34 +0100 Message-Id: <20220106115741.3219-9-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the fbfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- fbfront.c | 2 +- include/lib.h | 3 --- lib/sys.c | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/fbfront.c b/fbfront.c index 6725da1..c8410af 100644 --- a/fbfront.c +++ b/fbfront.c @@ -703,7 +703,7 @@ int fbfront_open(struct fbfront_dev *dev) { dev->fd = alloc_fd(FTYPE_FB); printk("fb_open(%s) -> %d\n", dev->nodename, dev->fd); - files[dev->fd].fb.dev = dev; + files[dev->fd].dev = dev; return dev->fd; } #endif diff --git a/include/lib.h b/include/lib.h index 0cedae6..2a9a01c 100644 --- a/include/lib.h +++ b/include/lib.h @@ -199,9 +199,6 @@ struct file { struct { struct kbdfront_dev *dev; } kbd; - struct { - struct fbfront_dev *dev; - } fb; #ifdef CONFIG_TPMFRONT struct { struct tpmfront_dev *dev; diff --git a/lib/sys.c b/lib/sys.c index 62c2020..2d48657 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -287,7 +287,7 @@ int read(int fd, void *buf, size_t nbytes) case FTYPE_FB: { int ret, n; n = nbytes / sizeof(union xenfb_in_event); - ret = fbfront_receive(files[fd].fb.dev, buf, n); + ret = fbfront_receive(files[fd].dev, buf, n); if (ret <= 0) { errno = EAGAIN; return -1; @@ -480,7 +480,7 @@ int close(int fd) #endif #ifdef CONFIG_FBFRONT case FTYPE_FB: - shutdown_fbfront(files[fd].fb.dev); + shutdown_fbfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif From patchwork Thu Jan 6 11:57:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705366 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 80D3FC4332F for ; Thu, 6 Jan 2022 11:58:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253908.435223 (Exim 4.92) (envelope-from ) id 1n5RP7-0005Zh-0z; Thu, 06 Jan 2022 11:58:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253908.435223; Thu, 06 Jan 2022 11:58:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP6-0005Z6-NR; Thu, 06 Jan 2022 11:58:00 +0000 Received: by outflank-mailman (input) for mailman id 253908; Thu, 06 Jan 2022 11:57:59 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RP5-0005Uf-HV for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:57:59 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e33f3c66-6ee7-11ec-9ce5-af14b9085ebd; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id EDC5B1F3A7; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C5E4E13C0D; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id KPwkL0TZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:56 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e33f3c66-6ee7-11ec-9ce5-af14b9085ebd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470276; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pmQsTeEAO2F2JehoSUAYba8Y3ffpdoax96zqkTw3H6w=; b=SIUb5DfRwcn7TS4qWmIGSdd7G6qhQ/XrhDETu7o7sN0SC7IQBPp4/22hBxBXw10PqAnY9h P28ZPsi+nfl6AnKztBteqgLZ1OlxkDu1UPeDHwIfmUXRKyVzq4DEpZSVD8r37fY872FJEg 7ywrBQ4TCoVf91mYmkMlD3GkklXXA7M= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 09/15] mini-os: eliminate kbdfront union member in struct file Date: Thu, 6 Jan 2022 12:57:35 +0100 Message-Id: <20220106115741.3219-10-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the kbdfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- fbfront.c | 2 +- include/lib.h | 3 --- lib/sys.c | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/fbfront.c b/fbfront.c index c8410af..1e055fb 100644 --- a/fbfront.c +++ b/fbfront.c @@ -302,7 +302,7 @@ int kbdfront_open(struct kbdfront_dev *dev) { dev->fd = alloc_fd(FTYPE_KBD); printk("kbd_open(%s) -> %d\n", dev->nodename, dev->fd); - files[dev->fd].kbd.dev = dev; + files[dev->fd].dev = dev; return dev->fd; } #endif diff --git a/include/lib.h b/include/lib.h index 2a9a01c..5201ed7 100644 --- a/include/lib.h +++ b/include/lib.h @@ -196,9 +196,6 @@ struct file { struct { struct netfront_dev *dev; } tap; - struct { - struct kbdfront_dev *dev; - } kbd; #ifdef CONFIG_TPMFRONT struct { struct tpmfront_dev *dev; diff --git a/lib/sys.c b/lib/sys.c index 2d48657..8c7ea3c 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -275,7 +275,7 @@ int read(int fd, void *buf, size_t nbytes) case FTYPE_KBD: { int ret, n; n = nbytes / sizeof(union xenkbd_in_event); - ret = kbdfront_receive(files[fd].kbd.dev, buf, n); + ret = kbdfront_receive(files[fd].dev, buf, n); if (ret <= 0) { errno = EAGAIN; return -1; @@ -474,7 +474,7 @@ int close(int fd) #endif #ifdef CONFIG_KBDFRONT case FTYPE_KBD: - shutdown_kbdfront(files[fd].kbd.dev); + shutdown_kbdfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif From patchwork Thu Jan 6 11:57:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705373 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D5902C433EF for ; Thu, 6 Jan 2022 11:58:27 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253923.435325 (Exim 4.92) (envelope-from ) id 1n5RPG-0007f8-6D; Thu, 06 Jan 2022 11:58:10 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253923.435325; Thu, 06 Jan 2022 11:58:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPF-0007b4-7N; Thu, 06 Jan 2022 11:58:09 +0000 Received: by outflank-mailman (input) for mailman id 253923; Thu, 06 Jan 2022 11:58:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPC-0005UX-UF for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:06 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e35b35a9-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 282E51F3A8; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id F352113C0D; Thu, 6 Jan 2022 11:57:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id wIYpOkTZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:56 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e35b35a9-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470277; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yL3iNqERg5EulNmJK0ycoAwzGvfibMXTv4Vh1zCFUho=; b=G76wKbbFM05FStujvf/bF/czASQ6aHupL7jeNQeVnlWOFrqYUzFmSDKosGJMmltnA/LJJ1 USaPHOqWwxFbc1FAgAlIiKlUdkyAmeCSIElV/7K0mSOEC9ssyWZDLzcz2jL3jI42sOvyY5 C6hJQLbxXyqk3OonxIsIRRrHpEQI2/0= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 10/15] mini-os: eliminate netfront union member in struct file Date: Thu, 6 Jan 2022 12:57:36 +0100 Message-Id: <20220106115741.3219-11-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the netfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 3 --- lib/sys.c | 6 +++--- netfront.c | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/lib.h b/include/lib.h index 5201ed7..f2a124e 100644 --- a/include/lib.h +++ b/include/lib.h @@ -193,9 +193,6 @@ struct file { struct evtchn_port_list ports; } evtchn; struct gntmap gntmap; - struct { - struct netfront_dev *dev; - } tap; #ifdef CONFIG_TPMFRONT struct { struct tpmfront_dev *dev; diff --git a/lib/sys.c b/lib/sys.c index 8c7ea3c..b35e433 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -263,7 +263,7 @@ int read(int fd, void *buf, size_t nbytes) #ifdef CONFIG_NETFRONT case FTYPE_TAP: { ssize_t ret; - ret = netfront_receive(files[fd].tap.dev, buf, nbytes); + ret = netfront_receive(files[fd].dev, buf, nbytes); if (ret <= 0) { errno = EAGAIN; return -1; @@ -339,7 +339,7 @@ int write(int fd, const void *buf, size_t nbytes) #endif #ifdef CONFIG_NETFRONT case FTYPE_TAP: - netfront_xmit(files[fd].tap.dev, (void*) buf, nbytes); + netfront_xmit(files[fd].dev, (void*) buf, nbytes); return nbytes; #endif #ifdef CONFIG_BLKFRONT @@ -450,7 +450,7 @@ int close(int fd) #endif #ifdef CONFIG_NETFRONT case FTYPE_TAP: - shutdown_netfront(files[fd].tap.dev); + shutdown_netfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif diff --git a/netfront.c b/netfront.c index a566e34..7696451 100644 --- a/netfront.c +++ b/netfront.c @@ -576,7 +576,7 @@ int netfront_tap_open(char *nodename) { } dev->fd = alloc_fd(FTYPE_TAP); printk("tap_open(%s) -> %d\n", nodename, dev->fd); - files[dev->fd].tap.dev = dev; + files[dev->fd].dev = dev; return dev->fd; } #endif From patchwork Thu Jan 6 11:57:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BF2B8C433F5 for ; Thu, 6 Jan 2022 12:00:17 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253954.435400 (Exim 4.92) (envelope-from ) id 1n5RRC-0005r7-7M; Thu, 06 Jan 2022 12:00:10 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253954.435400; Thu, 06 Jan 2022 12:00:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RRC-0005qy-3C; Thu, 06 Jan 2022 12:00:10 +0000 Received: by outflank-mailman (input) for mailman id 253954; Thu, 06 Jan 2022 12:00:08 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPK-0005UX-VB for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:15 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e38fef9d-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 56DD521637; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 2F50613C0D; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id gJgyCkXZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:57 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e38fef9d-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470277; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zRc5gY/92MrOjMdEN5JMRpsapAMAJSL5mvFXRrg0SZ8=; b=EINi4iUrnmV02sZOkEQ0aY0MAvCbGsD2i1M+BL96gDxQk8ndjP1Ku7fAFaGucY5P7HstbD nGCSejiWKdhxXJAYAWY1ON+bV8q5+Xo6L7ThJLjeLIGtAE4z/tNkJTAzoO2pxzssh6mziG 1ssRJAkF0pweesDReQlfRaTtpuPCXmE= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 11/15] mini-os: move tpm respgot member of struct file to device specific data Date: Thu, 6 Jan 2022 12:57:37 +0100 Message-Id: <20220106115741.3219-12-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Tpmfront has a "respgot" flag in struct file, which can be moved to the device specific data. While at it make it a bool. The respgot flag of the tpm_tis member of struct file can be removed, as it is never read. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 2 -- include/tpmfront.h | 2 ++ tpm_tis.c | 2 -- tpmfront.c | 10 +++++----- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/include/lib.h b/include/lib.h index f2a124e..d740065 100644 --- a/include/lib.h +++ b/include/lib.h @@ -196,13 +196,11 @@ struct file { #ifdef CONFIG_TPMFRONT struct { struct tpmfront_dev *dev; - int respgot; } tpmfront; #endif #ifdef CONFIG_TPM_TIS struct { struct tpm_chip *dev; - int respgot; } tpm_tis; #endif #ifdef CONFIG_XENBUS diff --git a/include/tpmfront.h b/include/tpmfront.h index c489fae..b7da50e 100644 --- a/include/tpmfront.h +++ b/include/tpmfront.h @@ -25,6 +25,7 @@ #ifndef TPMFRONT_H #define TPMFRONT_H +#include #include #include #include @@ -53,6 +54,7 @@ struct tpmfront_dev { #ifdef HAVE_LIBC int fd; + bool respgot; #endif }; diff --git a/tpm_tis.c b/tpm_tis.c index 8a632b1..4127118 100644 --- a/tpm_tis.c +++ b/tpm_tis.c @@ -846,7 +846,6 @@ int tpm_tis_send(struct tpm_chip* tpm, uint8_t* buf, size_t len) { #ifdef HAVE_LIBC if(tpm->fd >= 0) { files[tpm->fd].read = false; - files[tpm->fd].tpm_tis.respgot = 0; files[tpm->fd].offset = 0; } #endif @@ -1290,7 +1289,6 @@ int tpm_tis_open(struct tpm_chip* tpm) tpm->fd = alloc_fd(FTYPE_TPM_TIS); printk("tpm_tis_open() -> %d\n", tpm->fd); files[tpm->fd].tpm_tis.dev = tpm; - files[tpm->fd].tpm_tis.respgot = 0; return tpm->fd; } diff --git a/tpmfront.c b/tpmfront.c index 8b2a910..be671c2 100644 --- a/tpmfront.c +++ b/tpmfront.c @@ -439,8 +439,8 @@ int tpmfront_send(struct tpmfront_dev* dev, const uint8_t* msg, size_t length) #ifdef HAVE_LIBC if(dev->fd >= 0) { files[dev->fd].read = false; - files[dev->fd].tpmfront.respgot = 0; files[dev->fd].offset = 0; + dev->respgot = false; } #endif wmb(); @@ -499,7 +499,7 @@ int i; #endif #ifdef HAVE_LIBC if(dev->fd >= 0) { - files[dev->fd].tpmfront.respgot = 1; + dev->respgot = true; } #endif quit: @@ -539,7 +539,7 @@ int tpmfront_open(struct tpmfront_dev* dev) dev->fd = alloc_fd(FTYPE_TPMFRONT); printk("tpmfront_open(%s) -> %d\n", dev->nodename, dev->fd); files[dev->fd].tpmfront.dev = dev; - files[dev->fd].tpmfront.respgot = 0; + dev->respgot = false; return dev->fd; } @@ -580,7 +580,7 @@ int tpmfront_posix_read(int fd, uint8_t* buf, size_t count) } /* get the response if we haven't already */ - if(files[dev->fd].tpmfront.respgot == 0) { + if (!dev->respgot) { if ((rc = tpmfront_recv(dev, &dummybuf, &dummysz)) != 0) { errno = EIO; return -1; @@ -610,7 +610,7 @@ int tpmfront_posix_fstat(int fd, struct stat* buf) /* If we have a response waiting, then read it now from the backend * so we can get its length*/ - if(dev->waiting || (files[dev->fd].read && !files[dev->fd].tpmfront.respgot)) { + if(dev->waiting || (files[dev->fd].read && !dev->respgot)) { if ((rc = tpmfront_recv(dev, &dummybuf, &dummysz)) != 0) { errno = EIO; return -1; From patchwork Thu Jan 6 11:57:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705369 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D38ECC4167B for ; Thu, 6 Jan 2022 11:58:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253918.435295 (Exim 4.92) (envelope-from ) id 1n5RPD-0007D2-1w; Thu, 06 Jan 2022 11:58:07 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253918.435295; Thu, 06 Jan 2022 11:58:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPC-0007CE-Rc; Thu, 06 Jan 2022 11:58:06 +0000 Received: by outflank-mailman (input) for mailman id 253918; Thu, 06 Jan 2022 11:58:04 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPA-0005Uf-Hx for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:04 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e3b29e51-6ee7-11ec-9ce5-af14b9085ebd; Thu, 06 Jan 2022 12:57:57 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 848E31F3A9; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 5D05713C0D; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id UFlkFUXZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:57 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e3b29e51-6ee7-11ec-9ce5-af14b9085ebd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470277; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OlUsXgmJVXs1bcrolch8AFDDMEltM2NC+VAU9LgoD0k=; b=lfHgdbJ6+meI0zCgqlYs1d1O3JM3OxV6m/IJ98l7HCddq4gKMv95J04jw6VHtAscXrHoLX QomAKyIBBAHOEqFzYEsSUk9GU/Ju7rEZ9dWchvkvyCDOqvQ073CobaOV4aQlduMxHyduQG kc4m6V9oqCFAeQGXoSwjiejWAfD6c6U= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 12/15] mini-os: eliminate tpmfront union member in struct file Date: Thu, 6 Jan 2022 12:57:38 +0100 Message-Id: <20220106115741.3219-13-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the tpmfront specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 5 ----- lib/sys.c | 2 +- tpmfront.c | 8 ++++---- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/include/lib.h b/include/lib.h index d740065..2ddc076 100644 --- a/include/lib.h +++ b/include/lib.h @@ -193,11 +193,6 @@ struct file { struct evtchn_port_list ports; } evtchn; struct gntmap gntmap; -#ifdef CONFIG_TPMFRONT - struct { - struct tpmfront_dev *dev; - } tpmfront; -#endif #ifdef CONFIG_TPM_TIS struct { struct tpm_chip *dev; diff --git a/lib/sys.c b/lib/sys.c index b35e433..b042bf5 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -462,7 +462,7 @@ int close(int fd) #endif #ifdef CONFIG_TPMFRONT case FTYPE_TPMFRONT: - shutdown_tpmfront(files[fd].tpmfront.dev); + shutdown_tpmfront(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif diff --git a/tpmfront.c b/tpmfront.c index be671c2..0a2fefc 100644 --- a/tpmfront.c +++ b/tpmfront.c @@ -538,7 +538,7 @@ int tpmfront_open(struct tpmfront_dev* dev) dev->fd = alloc_fd(FTYPE_TPMFRONT); printk("tpmfront_open(%s) -> %d\n", dev->nodename, dev->fd); - files[dev->fd].tpmfront.dev = dev; + files[dev->fd].dev = dev; dev->respgot = false; return dev->fd; } @@ -547,7 +547,7 @@ int tpmfront_posix_write(int fd, const uint8_t* buf, size_t count) { int rc; struct tpmfront_dev* dev; - dev = files[fd].tpmfront.dev; + dev = files[fd].dev; if(count == 0) { return 0; @@ -573,7 +573,7 @@ int tpmfront_posix_read(int fd, uint8_t* buf, size_t count) size_t dummysz; struct tpmfront_dev* dev; - dev = files[fd].tpmfront.dev; + dev = files[fd].dev; if(count == 0) { return 0; @@ -606,7 +606,7 @@ int tpmfront_posix_fstat(int fd, struct stat* buf) uint8_t* dummybuf; size_t dummysz; int rc; - struct tpmfront_dev* dev = files[fd].tpmfront.dev; + struct tpmfront_dev* dev = files[fd].dev; /* If we have a response waiting, then read it now from the backend * so we can get its length*/ From patchwork Thu Jan 6 11:57:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705380 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 63C68C433EF for ; Thu, 6 Jan 2022 12:01:02 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253975.435441 (Exim 4.92) (envelope-from ) id 1n5RRv-0007nX-4e; Thu, 06 Jan 2022 12:00:55 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253975.435441; Thu, 06 Jan 2022 12:00:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RRv-0007nQ-1F; Thu, 06 Jan 2022 12:00:55 +0000 Received: by outflank-mailman (input) for mailman id 253975; Thu, 06 Jan 2022 12:00:53 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPM-0005UX-VI for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:16 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e3acd308-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:58 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B0A17212C7; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 89F2113C0D; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 6MSCIEXZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:57 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e3acd308-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470277; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=479+ZsaQ/HR1Ri0lahF7rot1Udcg9gaoznCeT0QqN9I=; b=fP1cCOY+bPvVqpVlay1gDfX8O7NpxJ+V8buwFGlupD4VRta30a8gBxfuW2lXra6O/GVt+e pCzOXGwBw69b5smW/dAVi5M7tLZhZnqyLla5hcIvKtzGf+KKc8LR+RbsGKk0FY9xQfmcFe f4HEdxeC+uV07G6NiofcCCeYE3k5TIQ= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 13/15] mini-os: eliminate tpmtis union member in struct file Date: Thu, 6 Jan 2022 12:57:39 +0100 Message-Id: <20220106115741.3219-14-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the tpmtis specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 5 ----- lib/sys.c | 2 +- tpm_tis.c | 8 ++++---- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/include/lib.h b/include/lib.h index 2ddc076..d6a29ba 100644 --- a/include/lib.h +++ b/include/lib.h @@ -193,11 +193,6 @@ struct file { struct evtchn_port_list ports; } evtchn; struct gntmap gntmap; -#ifdef CONFIG_TPM_TIS - struct { - struct tpm_chip *dev; - } tpm_tis; -#endif #ifdef CONFIG_XENBUS struct { /* To each xenbus FD is associated a queue of watch events for this diff --git a/lib/sys.c b/lib/sys.c index b042bf5..96fc769 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -468,7 +468,7 @@ int close(int fd) #endif #ifdef CONFIG_TPM_TIS case FTYPE_TPM_TIS: - shutdown_tpm_tis(files[fd].tpm_tis.dev); + shutdown_tpm_tis(files[fd].dev); files[fd].type = FTYPE_NONE; return 0; #endif diff --git a/tpm_tis.c b/tpm_tis.c index 4127118..477f555 100644 --- a/tpm_tis.c +++ b/tpm_tis.c @@ -1288,14 +1288,14 @@ int tpm_tis_open(struct tpm_chip* tpm) tpm->fd = alloc_fd(FTYPE_TPM_TIS); printk("tpm_tis_open() -> %d\n", tpm->fd); - files[tpm->fd].tpm_tis.dev = tpm; + files[tpm->fd].dev = tpm; return tpm->fd; } int tpm_tis_posix_write(int fd, const uint8_t* buf, size_t count) { struct tpm_chip* tpm; - tpm = files[fd].tpm_tis.dev; + tpm = files[fd].dev; if(tpm->locality < 0) { printk("tpm_tis_posix_write() failed! locality not set!\n"); @@ -1323,7 +1323,7 @@ int tpm_tis_posix_read(int fd, uint8_t* buf, size_t count) { int rc; struct tpm_chip* tpm; - tpm = files[fd].tpm_tis.dev; + tpm = files[fd].dev; if(count == 0) { return 0; @@ -1350,7 +1350,7 @@ int tpm_tis_posix_read(int fd, uint8_t* buf, size_t count) int tpm_tis_posix_fstat(int fd, struct stat* buf) { struct tpm_chip* tpm; - tpm = files[fd].tpm_tis.dev; + tpm = files[fd].dev; buf->st_mode = O_RDWR; buf->st_uid = 0; From patchwork Thu Jan 6 11:57:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705374 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 83A86C433EF for ; Thu, 6 Jan 2022 11:58:29 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253924.435337 (Exim 4.92) (envelope-from ) id 1n5RPI-00083M-2G; Thu, 06 Jan 2022 11:58:12 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253924.435337; Thu, 06 Jan 2022 11:58:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPH-000814-2T; Thu, 06 Jan 2022 11:58:11 +0000 Received: by outflank-mailman (input) for mailman id 253924; Thu, 06 Jan 2022 11:58:08 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPD-0005Uf-IO for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:07 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e3c8adc9-6ee7-11ec-9ce5-af14b9085ebd; Thu, 06 Jan 2022 12:57:58 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id E0A1B1F39A; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B94E213C0D; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id uKQXLEXZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:57 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e3c8adc9-6ee7-11ec-9ce5-af14b9085ebd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470277; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=M5iLDQMfkH8htZ3wRFumo5FkHynp/HKlFIcfl/LfGDo=; b=gh+DQlcESakDUkPTEJ1soZommb+igB4NL6JjGl9BJvgGVNIBS+t0hGxmsZzXWl5ejXlCDa r/HKGE594MTOyVJUoJU6atziAFjureSrxGbYvQ70Dyx4n6W5/nCfPX321J0E3+pHaBU9Hc ptRTDos2qr4ZF4LHh4aXkS2m1+1I2Sc= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 14/15] mini-os: eliminate xenbus union member in struct file Date: Thu, 6 Jan 2022 12:57:40 +0100 Message-Id: <20220106115741.3219-15-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Replace the xenbus specific union member in struct file with the common dev pointer. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 7 ------- lib/sys.c | 2 +- lib/xs.c | 13 +++++++------ 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/include/lib.h b/include/lib.h index d6a29ba..91364ba 100644 --- a/include/lib.h +++ b/include/lib.h @@ -193,13 +193,6 @@ struct file { struct evtchn_port_list ports; } evtchn; struct gntmap gntmap; -#ifdef CONFIG_XENBUS - struct { - /* To each xenbus FD is associated a queue of watch events for this - * FD. */ - xenbus_event_queue events; - } xenbus; -#endif }; }; diff --git a/lib/sys.c b/lib/sys.c index 96fc769..6f2b026 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -776,7 +776,7 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce #ifdef CONFIG_XENBUS case FTYPE_XENBUS: if (FD_ISSET(i, readfds)) { - if (files[i].xenbus.events) + if (files[i].dev) n++; else FD_CLR(i, readfds); diff --git a/lib/xs.c b/lib/xs.c index 324bd05..0459f52 100644 --- a/lib/xs.c +++ b/lib/xs.c @@ -21,8 +21,8 @@ static inline int _xs_fileno(struct xs_handle *h) { struct xs_handle *xs_daemon_open() { int fd = alloc_fd(FTYPE_XENBUS); - files[fd].xenbus.events = NULL; - printk("xs_daemon_open -> %d, %p\n", fd, &files[fd].xenbus.events); + files[fd].dev = NULL; + printk("xs_daemon_open -> %d, %p\n", fd, &files[fd].dev); return (void*)(intptr_t) fd; } @@ -30,7 +30,7 @@ void xs_daemon_close(struct xs_handle *h) { int fd = _xs_fileno(h); struct xenbus_event *event, *next; - for (event = files[fd].xenbus.events; event; event = next) + for (event = files[fd].dev; event; event = next) { next = event->next; free(event); @@ -172,15 +172,16 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token) { int fd = _xs_fileno(h); printk("xs_watch(%s, %s)\n", path, token); - return xs_bool(xenbus_watch_path_token(XBT_NULL, path, token, &files[fd].xenbus.events)); + return xs_bool(xenbus_watch_path_token(XBT_NULL, path, token, + (xenbus_event_queue *)&files[fd].dev)); } char **xs_read_watch(struct xs_handle *h, unsigned int *num) { int fd = _xs_fileno(h); struct xenbus_event *event; - event = files[fd].xenbus.events; - files[fd].xenbus.events = event->next; + event = files[fd].dev; + files[fd].dev = event->next; printk("xs_read_watch() -> %s %s\n", event->path, event->token); *num = 2; return (char **) &event->path; From patchwork Thu Jan 6 11:57:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 12705378 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0C197C433EF for ; Thu, 6 Jan 2022 12:00:43 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.253963.435419 (Exim 4.92) (envelope-from ) id 1n5RRc-0006mY-Ju; Thu, 06 Jan 2022 12:00:36 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 253963.435419; Thu, 06 Jan 2022 12:00:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RRc-0006mR-Gi; Thu, 06 Jan 2022 12:00:36 +0000 Received: by outflank-mailman (input) for mailman id 253963; Thu, 06 Jan 2022 12:00:34 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1n5RPO-0005UX-Vf for xen-devel@lists.xenproject.org; Thu, 06 Jan 2022 11:58:18 +0000 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e3e64e6f-6ee7-11ec-81c0-a30af7de8005; Thu, 06 Jan 2022 12:57:58 +0100 (CET) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 188541F3A2; Thu, 6 Jan 2022 11:57:58 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id E4F1D13C0D; Thu, 6 Jan 2022 11:57:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id OCy1NkXZ1mHnJgAAMHmgww (envelope-from ); Thu, 06 Jan 2022 11:57:57 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e3e64e6f-6ee7-11ec-81c0-a30af7de8005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1641470278; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+GsFFIwit/Rt80w572ZQFBg1V74eYMuV1hjsub3Nyy0=; b=j/mDeu9UoOTfcQ/Pp6xXG3woMs+R3iP731Yk+OmKxmC5o4xgv83dcLoIqnL4xgZF/KUkzW 9lsqeKRBzTMviC0ajrCi4mO4MNc7tXWd9ZTMAMT9Wf38zyCnpyKxYdTNxs/ipBsp+j4eWv gMX/kIuCenCimRfwWjVkagf1Wrk9yHo= From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: samuel.thibault@ens-lyon.org, wl@xen.org, Juergen Gross Subject: [PATCH 15/15] mini-os: introduce get_file_from_fd() Date: Thu, 6 Jan 2022 12:57:41 +0100 Message-Id: <20220106115741.3219-16-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220106115741.3219-1-jgross@suse.com> References: <20220106115741.3219-1-jgross@suse.com> MIME-Version: 1.0 Exporting the files[] array especially for components outside the mini-os source tree is limiting the ability to change any file handling in mini-os. Introduce a new function get_file_from_fd() to return the struct file pointer (or NULL) for a given file descriptor. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault --- include/lib.h | 1 + lib/sys.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/lib.h b/include/lib.h index 91364ba..7a0546b 100644 --- a/include/lib.h +++ b/include/lib.h @@ -198,6 +198,7 @@ struct file { extern struct file files[]; +struct file *get_file_from_fd(int fd); int alloc_fd(enum fd_type type); void close_all_files(void); extern struct thread *main_thread; diff --git a/lib/sys.c b/lib/sys.c index 6f2b026..0e6fe5d 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -98,6 +98,14 @@ struct file files[NOFILE] = { { .type = FTYPE_CONSOLE }, /* stderr */ }; +struct file *get_file_from_fd(int fd) +{ + if ( fd < 0 || fd >= NOFILE ) + return NULL; + + return (files[fd].type == FTYPE_NONE) ? NULL : files + fd; +} + DECLARE_WAIT_QUEUE_HEAD(event_queue); int alloc_fd(enum fd_type type)