On Mar 28 22:32, Mark Geisert wrote: > --- > winsup/cygwin/aio.cc | 580 > +++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 580 insertions(+) > create mode 100644 winsup/cygwin/aio.cc
Only scanning for minor stuff for now: > diff --git a/winsup/cygwin/aio.cc b/winsup/cygwin/aio.cc > new file mode 100644 > index 000000000..01bf2e479 > --- /dev/null > +++ b/winsup/cygwin/aio.cc > @@ -0,0 +1,580 @@ > +/* aio.cc: Posix asynchronous i/o functions. > + > +This file is part of Cygwin. > + > +This software is a copyrighted work licensed under the terms of the > +Cygwin license. Please consult the file "CYGWIN_LICENSE" for > +details. */ > + > +#undef AIODEBUG > + > +#include "winsup.h" > +#include <aio.h> > +#include <fcntl.h> > +#include <semaphore.h> > +#include <unistd.h> > + > +#ifdef __cplusplus > +#define restrict /* meaningless in C++ */ Just use __restrict > +extern "C" { > +#endif > + > +static NO_COPY pid_t mypid; > +static NO_COPY sem_t worksem; /* indicates whether AIOs are queued > */ > +static NO_COPY struct aiocb *worklisthd = NULL; /* head of pending AIO list > */ > +static NO_COPY struct aiocb *worklisttl = NULL; /* tail of pending AIO list > */ May I suggest to use the types and macros from sys/queue.h instead of implementing queues all by yourself? TAILQ might be what you're looking for. > +static NO_COPY CRITICAL_SECTION workcrit; /* lock for pending AIO list > */ > + > +#ifdef AIODEBUG > +static void > +showqueue () > +{ > + /* critical section 'workcrit' is held on entry */ > + struct aiocb *aio = worklisthd; > + > + small_printf ("%p", aio); Better use debug_printf here so the debug output is only generated under strace Otherwise the code looks pretty neat already. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
signature.asc
Description: PGP signature