[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