All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Fei Li <lifei1214@126.com>
Cc: "Gerd Hoffmann" <kraxel@redhat.com>,
	qemu-devel@nongnu.org, shirley17fei@gmail.com,
	"Christophe Fergeau" <cfergeau@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v11 for-4.0 06/11] qemu_thread: supplement error handling for emulated_realize
Date: Mon, 04 Feb 2019 14:30:33 +0100	[thread overview]
Message-ID: <87womfptom.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <80d9a956-2bfe-694e-7b9c-9501ae2ac6f7@126.com> (Fei Li's message of "Sun, 3 Feb 2019 15:17:52 +0800")

Fei Li <lifei1214@126.com> writes:

> 在 2019/2/1 下午9:04, Markus Armbruster 写道:
>> Fei Li <lifei1214@126.com> writes:
>>
>>> From: Fei Li <fli@suse.com>
>>>
>>> Utilize the existed errp to propagate the error and do the
>>> corresponding cleanup to replace the temporary &error_abort.
>>>
>>> Cc: Markus Armbruster <armbru@redhat.com>
>>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>>> Signed-off-by: Fei Li <fli@suse.com>
>>> ---
>>>   hw/usb/ccid-card-emulated.c | 15 ++++++++++-----
>>>   1 file changed, 10 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c
>>> index 0b170f6328..19b4b9a8fa 100644
>>> --- a/hw/usb/ccid-card-emulated.c
>>> +++ b/hw/usb/ccid-card-emulated.c
>>> @@ -544,11 +544,16 @@ static void emulated_realize(CCIDCardState *base, Error **errp)
>>>           error_setg(errp, "%s: failed to initialize vcard", TYPE_EMULATED_CCID);
>>>           goto out2;
>>>       }
>>> -    /* TODO: let the further caller handle the error instead of abort() here */
>>> -    qemu_thread_create(&card->event_thread_id, "ccid/event", event_thread,
>>> -                       card, QEMU_THREAD_JOINABLE, &error_abort);
>>> -    qemu_thread_create(&card->apdu_thread_id, "ccid/apdu", handle_apdu_thread,
>>> -                       card, QEMU_THREAD_JOINABLE, &error_abort);
>>> +    if (qemu_thread_create(&card->event_thread_id, "ccid/event", event_thread,
>>> +                           card, QEMU_THREAD_JOINABLE, errp) < 0) {
>>> +        goto out2;
>>> +    }
>>> +    if (qemu_thread_create(&card->apdu_thread_id, "ccid/apdu",
>>> +                           handle_apdu_thread, card,
>>> +                           QEMU_THREAD_JOINABLE, errp) < 0) {
>>> +        qemu_thread_join(&card->event_thread_id);
>> What makes event_thread terminate here?
>>
>> I'm asking because if it doesn't, the join will hang.
> Oops, my neglect..  Could we add a
> `qemu_thread_cancel(card->event_thread_id);` here
> before the join()?

pthread_cancel() is difficult to use correctly, and we don't use it in
QEMU so far.  Instead, we tell threads to stop, e.g. by setting a flag
the thread checks in its main loop, and making sure the thread actually
loops in bounded time.  How to best achieve that for this thread I don't
know.  Christophe, Marc-André, can you help?

  reply	other threads:[~2019-02-04 13:30 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-01  5:17 [Qemu-devel] [PATCH v11 for-4.0 00/11] qemu_thread_create: propagate the error to callers to handle Fei Li
2019-02-01  5:17 ` [Qemu-devel] [PATCH v11 for-4.0 01/11] qemu_thread: make qemu_thread_create() take Error ** argument Fei Li
2019-02-01 10:02   ` Markus Armbruster
2019-02-01  5:17 ` [Qemu-devel] [PATCH v11 for-4.0 02/11] qemu_thread: supplement error handling for qemu_X_start_vcpu Fei Li
2019-02-01 12:33   ` Markus Armbruster
2019-02-02  4:47     ` fei
2019-02-01  5:17 ` [Qemu-devel] [PATCH v11 for-4.0 03/11] qemu_thread: supplement error handling for qmp_dump_guest_memory Fei Li
2019-02-01 12:34   ` Markus Armbruster
2019-02-01  5:17 ` [Qemu-devel] [PATCH v11 for-4.0 04/11] qemu_thread: supplement error handling for pci_edu_realize Fei Li
2019-02-01 12:58   ` Markus Armbruster
2019-02-02  4:44     ` fei
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 05/11] qemu_thread: supplement error handling for h_resize_hpt_prepare Fei Li
2019-02-01 13:01   ` Markus Armbruster
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 06/11] qemu_thread: supplement error handling for emulated_realize Fei Li
2019-02-01 13:04   ` Markus Armbruster
2019-02-03  7:17     ` Fei Li
2019-02-04 13:30       ` Markus Armbruster [this message]
2019-02-15 12:35         ` Fei Li
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 07/11] qemu_thread: supplement error handling for iothread_complete Fei Li
2019-02-01 14:03   ` Markus Armbruster
2019-02-02  4:51     ` fei
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 08/11] qemu_thread: supplement error handling for qemu_signalfd_compat Fei Li
2019-02-01 14:13   ` Markus Armbruster
2019-02-02  4:52     ` fei
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 09/11] qemu_thread: supplement error handling for migration Fei Li
2019-02-01  5:35   ` Fei Li
2019-02-01 15:34   ` Markus Armbruster
2019-02-03  7:55     ` Fei Li
2019-02-04 16:34     ` Dr. David Alan Gilbert
2019-02-15 13:23       ` Fei Li
2019-02-01  5:18 ` [Qemu-devel] [PATCH v11 for-4.0 10/11] qemu_thread: supplement error handling for vnc_start_worker_thread Fei Li
2019-02-01 14:16   ` Markus Armbruster
2019-07-12  5:57 ` [Qemu-devel] [PATCH v11 for-4.0 00/11] qemu_thread_create: propagate the error to callers to handle Markus Armbruster
2019-07-16 12:25   ` fei

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=87womfptom.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=cfergeau@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=lifei1214@126.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=shirley17fei@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.