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@xxxxxxxxxx> > > > > * 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list