/*
mtr -- a network diagnostic tool
Copyright (C) 2016 Matt Kimball
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef COMMAND_CYGWIN_H
#define COMMAND_CYGWIN_H
/*
Though Cygwin supports the usual Unix non-blocking reads on
the command stream, we've got to use Overlapped I/O instead because
ICMP.DLL's support for sending probes requires Overlapped I/O
and alertable waits for notification of replies. Since we need
alertable waits, we can't use Cygwin's select to determine when
command stream data is available, but Overlapped I/O completion
will work.
*/
/* Overlapped I/O manament for Windows command buffer reads */
struct command_buffer_platform_t {
/* true if an overlapped I/O read is active */
bool read_active;
/* true if the command pipe is still open */
bool pipe_open;
/* Windows OVERLAPPED I/O data */
OVERLAPPED overlapped;
/* The buffer which active OVERLAPPED reads read into */
char overlapped_buffer[COMMAND_BUFFER_SIZE];
};
struct command_buffer_t;
void start_read_command(
struct command_buffer_t *buffer);
#endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>