
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@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 :|