On Wed, May 02, 2012 at 05:22:53PM +0200, Michal Privoznik wrote:
On 02.05.2012 13:44, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange(a)redhat.com>
>
> * src/util/threads-pthread.c, src/util/threads.h: Add virThreadCancel
> ---
> src/util/threads-pthread.c | 5 +++++
> src/util/threads.h | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/src/util/threads-pthread.c b/src/util/threads-pthread.c
> index ea64887..cfd0b24 100644
> --- a/src/util/threads-pthread.c
> +++ b/src/util/threads-pthread.c
> @@ -236,6 +236,11 @@ void virThreadJoin(virThreadPtr thread)
> pthread_join(thread->thread, NULL);
> }
>
> +void virThreadCancel(virThreadPtr thread)
> +{
> + pthread_cancel(thread->thread);
> +}
> +
> int virThreadLocalInit(virThreadLocalPtr l,
> virThreadLocalCleanup c)
> {
> diff --git a/src/util/threads.h b/src/util/threads.h
> index e5000ea..9c1ef99 100644
> --- a/src/util/threads.h
> +++ b/src/util/threads.h
> @@ -53,6 +53,7 @@ int virThreadCreate(virThreadPtr thread,
> void virThreadSelf(virThreadPtr thread);
> bool virThreadIsSelf(virThreadPtr thread);
> void virThreadJoin(virThreadPtr thread);
> +void virThreadCancel(virThreadPtr thread);
>
> /* These next two functions are for debugging only, since they are not
> * guaranteed to give unique values for distinct threads on all
Okay, if we are brave enough. Although, win32 implementation is missing.
Yeah I hate it, but this is actually required by libselinux to stop the
AVC thread. I'm assuming libselinux is written to avoid leaking memory
upon cancellation.
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|