From: "Michael S. Tsirkin" <mst@redhat.com>
To: Stefan Weil <weil@mail.berlios.de>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: [Qemu-devel] Re: [PATCH] eepro100: Restructure code (new function tx_command)
Date: Mon, 30 Nov 2009 22:39:20 +0200 [thread overview]
Message-ID: <20091130203919.GA1496@redhat.com> (raw)
In-Reply-To: <4B13FB5B.1070109@mail.berlios.de>
On Mon, Nov 30, 2009 at 06:05:31PM +0100, Stefan Weil wrote:
> Michael S. Tsirkin schrieb:
> > On Thu, Nov 19, 2009 at 09:54:46PM +0100, Stefan Weil wrote:
> >> Handling of transmit commands is rather complex,
> >> so about 80 lines of code were moved from function
> >> action_command to the new function tx_command.
> >>
> >> The two new values "tx" and "cb_address" in the
> >> eepro100 status structure made this possible without
> >> passing too many parameters.
> >>
> >> In addition, the moved code was cleaned a little bit:
> >> old comments marked with //~ were removed, C++ style
> >> comments were replaced by C style comments, C++ like
> >> variable declarations after code were reordered.
> >>
> >> Simplified mode is still broken. Nor did I fix
> >> endianess issues. Both problems will be fixed in
> >> additional patches (which need this one).
> >>
> >> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> >> ---
> >> hw/eepro100.c | 192
> >> +++++++++++++++++++++++++++++----------------------------
> >> 1 files changed, 98 insertions(+), 94 deletions(-)
> >>
> >> diff --git a/hw/eepro100.c b/hw/eepro100.c
> >> index 4210d8a..7093af8 100644
> >> --- a/hw/eepro100.c
> >> +++ b/hw/eepro100.c
> >> @@ -213,6 +213,10 @@ typedef struct {
> >> uint32_t ru_offset; /* RU address offset */
> >> uint32_t statsaddr; /* pointer to eepro100_stats_t */
> >>
> >> + /* Temporary data. */
> >> + eepro100_tx_t tx;
> >> + uint32_t cb_address;
> >> +
> >
> > That's pretty evil, as it makes routines non-reentrant.
> > How bad is it to pass 2 additional arguments around?
> > If not, maybe define struct tx_command and put necessary stuff there,
> > then pass pointer to that?
>
> Yes, I know that it makes routines non-reentrant, or
> to be more exact: it makes routines non-reentrant
> for the same device instance. Different device instances
> are reentrant because each instance maintains its
> own status.
>
> No, it's not evil.
"Temporary data" comment is very evil.
We not only don't want to document code,
we document this fact.
> The state machine of the real hardware
> is not expected to be used in a reentrant way. The same
> applies to the emulated hardware.
That code does not appear currently structured as a state machine.
> Do you expect reentrant calls of transmit or receive
> functions for one device instance?
>
> Regards,
> Stefan
Datastructures should make sense. This one does not seem to make sense.
What's the benefit here? Why is it good to pass less
parameters to functions?
--
MST
next prev parent reply other threads:[~2009-11-30 20:42 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-19 20:54 [Qemu-devel] [PATCH] eepro100: Restructure code (new function tx_command) Stefan Weil
2009-11-30 9:30 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-30 17:05 ` Stefan Weil
2009-11-30 20:39 ` Michael S. Tsirkin [this message]
2009-12-12 19:45 ` Stefan Weil
2009-12-13 8:18 ` Michael S. Tsirkin
2009-12-13 20:59 ` Stefan Weil
2009-12-13 21:36 ` Michael S. Tsirkin
2009-12-14 9:25 ` [Qemu-devel] [PATCH] eepro100: Better documentation for temporary data Stefan Weil
2009-12-15 15:49 ` [Qemu-devel] " Michael S. Tsirkin
2009-12-12 14:03 ` [Qemu-devel] Re: [PATCH] eepro100: Restructure code (new function tx_command) Stefan Weil
2009-12-12 14:05 ` [Qemu-devel] " Stefan Weil
2009-12-12 15:21 ` [Qemu-devel] " Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091130203919.GA1496@redhat.com \
--to=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=weil@mail.berlios.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).