On Thu, Jan 25, 2018 at 09:32:49AM -0600, Eric Blake wrote: > Commit d02d9c9d used pthread_mutex to avoid interleaving output. > However, the standard provides flockfile() for grouping related > FILE* I/O that must not be interleaved; and that may be > lighter-weight than rolling our own locking. > > Signed-off-by: Eric Blake <[email protected]> > --- > > Pushing this one; as a related conversation on another mailing list > reminded me about flockfile(). > > src/errors.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/src/errors.c b/src/errors.c > index c1efae6..471e3ea 100644 > --- a/src/errors.c > +++ b/src/errors.c > @@ -1,5 +1,5 @@ > /* nbdkit > - * Copyright (C) 2013-2017 Red Hat Inc. > + * Copyright (C) 2013-2018 Red Hat Inc. > * All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > @@ -44,21 +44,16 @@ > #include "nbdkit-plugin.h" > #include "internal.h" > > -/* Used to group piecemeal message construction into atomic output. */ > -static pthread_mutex_t errors_lock = PTHREAD_MUTEX_INITIALIZER; > - > static void > lock (void) > { > - int r = pthread_mutex_lock (&errors_lock); > - assert (!r); > + flockfile (stderr); > } > > static void > unlock (void) > { > - int r = pthread_mutex_unlock (&errors_lock); > - assert (!r); > + funlockfile (stderr); > } > > /* Called with lock taken. */ > --
ACK. Maybe even inline those functions? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
