xref: /freebsd/contrib/ntp/kernel/sys/parsestreams.h (revision 9c2daa00)
1c0b746e5SOllivier Robert /*
2c0b746e5SOllivier Robert  * /src/NTP/ntp4-dev/kernel/sys/parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
3c0b746e5SOllivier Robert  *
4c0b746e5SOllivier Robert  * parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
5c0b746e5SOllivier Robert  *
6c0b746e5SOllivier Robert  * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
7c0b746e5SOllivier Robert  * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
8c0b746e5SOllivier Robert  *
9c0b746e5SOllivier Robert  * Redistribution and use in source and binary forms, with or without
10c0b746e5SOllivier Robert  * modification, are permitted provided that the following conditions
11c0b746e5SOllivier Robert  * are met:
12c0b746e5SOllivier Robert  * 1. Redistributions of source code must retain the above copyright
13c0b746e5SOllivier Robert  *    notice, this list of conditions and the following disclaimer.
14c0b746e5SOllivier Robert  * 2. Redistributions in binary form must reproduce the above copyright
15c0b746e5SOllivier Robert  *    notice, this list of conditions and the following disclaimer in the
16c0b746e5SOllivier Robert  *    documentation and/or other materials provided with the distribution.
17c0b746e5SOllivier Robert  * 3. Neither the name of the author nor the names of its contributors
18c0b746e5SOllivier Robert  *    may be used to endorse or promote products derived from this software
19c0b746e5SOllivier Robert  *    without specific prior written permission.
20c0b746e5SOllivier Robert  *
21c0b746e5SOllivier Robert  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22c0b746e5SOllivier Robert  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23c0b746e5SOllivier Robert  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24c0b746e5SOllivier Robert  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
25c0b746e5SOllivier Robert  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26c0b746e5SOllivier Robert  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27c0b746e5SOllivier Robert  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28c0b746e5SOllivier Robert  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29c0b746e5SOllivier Robert  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30c0b746e5SOllivier Robert  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31c0b746e5SOllivier Robert  * SUCH DAMAGE.
32c0b746e5SOllivier Robert  */
33c0b746e5SOllivier Robert 
349c2daa00SOllivier Robert #if	!(defined(lint) || defined(__GNUC__))
35c0b746e5SOllivier Robert   static char sysparsehrcsid[] = "parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A";
369c2daa00SOllivier Robert #endif
37c0b746e5SOllivier Robert 
38c0b746e5SOllivier Robert #undef PARSEKERNEL
39c0b746e5SOllivier Robert #if defined(KERNEL) || defined(_KERNEL)
40c0b746e5SOllivier Robert #ifndef PARSESTREAM
41c0b746e5SOllivier Robert #define PARSESTREAM
42c0b746e5SOllivier Robert #endif
43c0b746e5SOllivier Robert #endif
44c0b746e5SOllivier Robert #if defined(PARSESTREAM) && defined(HAVE_SYS_STREAM_H)
45c0b746e5SOllivier Robert #define PARSEKERNEL
46c0b746e5SOllivier Robert 
47c0b746e5SOllivier Robert #ifdef HAVE_SYS_TERMIOS_H
48c0b746e5SOllivier Robert #include <sys/termios.h>
49c0b746e5SOllivier Robert #endif
50c0b746e5SOllivier Robert 
51c0b746e5SOllivier Robert #include <sys/ppsclock.h>
52c0b746e5SOllivier Robert 
53c0b746e5SOllivier Robert #ifndef NTP_NEED_BOPS
54c0b746e5SOllivier Robert #define NTP_NEED_BOPS
55c0b746e5SOllivier Robert #endif
56c0b746e5SOllivier Robert 
57c0b746e5SOllivier Robert #if defined(PARSESTREAM) && (defined(_sun) || defined(__sun)) && defined(HAVE_SYS_STREAM_H)
58c0b746e5SOllivier Robert /*
59c0b746e5SOllivier Robert  * Sorry, but in SunOS 4.x AND Solaris 2.x kernels there are no
60c0b746e5SOllivier Robert  * mem* operations. I don't want them - bcopy, bzero
61c0b746e5SOllivier Robert  * are fine in the kernel
62c0b746e5SOllivier Robert  */
63c0b746e5SOllivier Robert #undef HAVE_STRING_H	/* don't include that at kernel level - prototype mismatch in Solaris 2.6 */
64c0b746e5SOllivier Robert #include "ntp_string.h"
65c0b746e5SOllivier Robert #else
66c0b746e5SOllivier Robert #include <stdio.h>
67c0b746e5SOllivier Robert #endif
68c0b746e5SOllivier Robert 
69c0b746e5SOllivier Robert struct parsestream		/* parse module local data */
70c0b746e5SOllivier Robert {
71c0b746e5SOllivier Robert   queue_t       *parse_queue;	/* read stream for this channel */
72c0b746e5SOllivier Robert   queue_t	*parse_dqueue;	/* driver queue entry (PPS support) */
73c0b746e5SOllivier Robert   unsigned long  parse_status;  /* operation flags */
74c0b746e5SOllivier Robert   void          *parse_data;	/* local data space (PPS support) */
75c0b746e5SOllivier Robert   parse_t	 parse_io;	/* io structure */
76c0b746e5SOllivier Robert   struct ppsclockev parse_ppsclockev; /* copy of last pps event */
77c0b746e5SOllivier Robert };
78c0b746e5SOllivier Robert 
79c0b746e5SOllivier Robert typedef struct parsestream parsestream_t;
80c0b746e5SOllivier Robert 
81c0b746e5SOllivier Robert #define PARSE_ENABLE	0x0001
82c0b746e5SOllivier Robert 
83c0b746e5SOllivier Robert /*--------------- debugging support ---------------------------------*/
84c0b746e5SOllivier Robert 
85c0b746e5SOllivier Robert #define DD_OPEN    0x00000001
86c0b746e5SOllivier Robert #define DD_CLOSE   0x00000002
87c0b746e5SOllivier Robert #define DD_RPUT    0x00000004
88c0b746e5SOllivier Robert #define DD_WPUT    0x00000008
89c0b746e5SOllivier Robert #define DD_RSVC    0x00000010
90c0b746e5SOllivier Robert #define DD_PARSE   0x00000020
91c0b746e5SOllivier Robert #define DD_INSTALL 0x00000040
92c0b746e5SOllivier Robert #define DD_ISR     0x00000080
93c0b746e5SOllivier Robert #define DD_RAWDCF  0x00000100
94c0b746e5SOllivier Robert 
95c0b746e5SOllivier Robert extern int parsedebug;
96c0b746e5SOllivier Robert 
97c0b746e5SOllivier Robert #ifdef DEBUG_PARSE
98c0b746e5SOllivier Robert 
99c0b746e5SOllivier Robert #define parseprintf(X, Y) if ((X) & parsedebug) printf Y
100c0b746e5SOllivier Robert 
101c0b746e5SOllivier Robert #else
102c0b746e5SOllivier Robert 
103c0b746e5SOllivier Robert #define parseprintf(X, Y)
104c0b746e5SOllivier Robert 
105c0b746e5SOllivier Robert #endif
106c0b746e5SOllivier Robert #endif
107c0b746e5SOllivier Robert 
108c0b746e5SOllivier Robert /*
109c0b746e5SOllivier Robert  * History:
110  *
111  * parsestreams.h,v
112  * Revision 4.5  2005/06/25 10:52:47  kardel
113  * fix version id / add version log
114  *
115  * Revision 4.4  1998/06/14 21:09:32  kardel
116  * Sun acc cleanup
117  *
118  * Revision 4.3  1998/06/13 18:14:32  kardel
119  * make mem*() to b*() mapping magic work on Solaris too
120  *
121  * Revision 4.2  1998/06/13 15:16:22  kardel
122  * fix mem*() to b*() function macro emulation
123  *
124  * Revision 4.1  1998/06/13 11:50:37  kardel
125  * STREAM macro gone in favor of HAVE_SYS_STREAM_H
126  *
127  * Revision 4.0  1998/04/10 19:51:30  kardel
128  * Start 4.0 release version numbering
129  *
130  * Revision 1.2  1998/04/10 19:27:42  kardel
131  * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
132  *
133  */
134