From: Stefan Weil <weil@mail.berlios.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: [Qemu-devel] Re: [PATCH] eepro100: Restructure code (new function tx_command)
Date: Mon, 30 Nov 2009 18:05:31 +0100 [thread overview]
Message-ID: <4B13FB5B.1070109@mail.berlios.de> (raw)
In-Reply-To: <20091130093015.GA22395@redhat.com>
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. The state machine of the real hardware
is not expected to be used in a reentrant way. The same
applies to the emulated hardware.
Do you expect reentrant calls of transmit or receive
functions for one device instance?
Regards,
Stefan
next prev parent reply other threads:[~2009-11-30 17:06 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 [this message]
2009-11-30 20:39 ` Michael S. Tsirkin
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=4B13FB5B.1070109@mail.berlios.de \
--to=weil@mail.berlios.de \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).