[libvirt] [PATCH 02/12] Add API for thread cancellation

Daniel P. Berrange berrange at redhat.com
Wed May 2 15:26:36 UTC 2012


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




More information about the libvir-list mailing list