File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / mtr / packet / command_cygwin.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 21 14:25:31 2019 UTC (5 years, 5 months ago) by misho
Branches: mtr, MAIN
CVS tags: v0_92, HEAD
mtr ver 0.92

    1: /*
    2:     mtr  --  a network diagnostic tool
    3:     Copyright (C) 2016  Matt Kimball
    4: 
    5:     This program is free software; you can redistribute it and/or modify
    6:     it under the terms of the GNU General Public License version 2 as
    7:     published by the Free Software Foundation.
    8: 
    9:     This program is distributed in the hope that it will be useful,
   10:     but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   12:     GNU General Public License for more details.
   13: 
   14:     You should have received a copy of the GNU General Public License
   15:     along with this program; if not, write to the Free Software
   16:     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   17: */
   18: 
   19: #ifndef COMMAND_CYGWIN_H
   20: #define COMMAND_CYGWIN_H
   21: 
   22: /*
   23:     Though Cygwin supports the usual Unix non-blocking reads on
   24:     the command stream, we've got to use Overlapped I/O instead because
   25:     ICMP.DLL's support for sending probes requires Overlapped I/O
   26:     and alertable waits for notification of replies.  Since we need
   27:     alertable waits, we can't use Cygwin's select to determine when
   28:     command stream data is available, but Overlapped I/O completion
   29:     will work.
   30: */
   31: 
   32: /*  Overlapped I/O manament for Windows command buffer reads  */
   33: struct command_buffer_platform_t {
   34:     /*  true if an overlapped I/O read is active  */
   35:     bool read_active;
   36: 
   37:     /*  true if the command pipe is still open  */
   38:     bool pipe_open;
   39: 
   40:     /*  Windows OVERLAPPED I/O data  */
   41:     OVERLAPPED overlapped;
   42: 
   43:     /*  The buffer which active OVERLAPPED reads read into  */
   44:     char overlapped_buffer[COMMAND_BUFFER_SIZE];
   45: };
   46: 
   47: struct command_buffer_t;
   48: 
   49: void start_read_command(
   50:     struct command_buffer_t *buffer);
   51: 
   52: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>