xref: /freebsd/contrib/ntp/kernel/sys/parsestreams.h (revision 416ba5c74546f32a993436a99516d35008e9f384)
1c0b746e5SOllivier Robert /*
2ea906c41SOllivier Robert  * /src/NTP/ntp4-dev/kernel/sys/parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
3c0b746e5SOllivier Robert  *
4ea906c41SOllivier Robert  * parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
5c0b746e5SOllivier Robert  *
6ea906c41SOllivier Robert  * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
7*a25439b6SCy Schubert  * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
8c0b746e5SOllivier Robert  *
9ea906c41SOllivier Robert  * Redistribution and use in source and binary forms, with or without
10ea906c41SOllivier Robert  * modification, are permitted provided that the following conditions
11ea906c41SOllivier Robert  * are met:
12ea906c41SOllivier Robert  * 1. Redistributions of source code must retain the above copyright
13ea906c41SOllivier Robert  *    notice, this list of conditions and the following disclaimer.
14ea906c41SOllivier Robert  * 2. Redistributions in binary form must reproduce the above copyright
15ea906c41SOllivier Robert  *    notice, this list of conditions and the following disclaimer in the
16ea906c41SOllivier Robert  *    documentation and/or other materials provided with the distribution.
17ea906c41SOllivier Robert  * 3. Neither the name of the author nor the names of its contributors
18ea906c41SOllivier Robert  *    may be used to endorse or promote products derived from this software
19ea906c41SOllivier Robert  *    without specific prior written permission.
20c0b746e5SOllivier Robert  *
21ea906c41SOllivier Robert  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22ea906c41SOllivier Robert  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23ea906c41SOllivier Robert  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24ea906c41SOllivier Robert  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
25ea906c41SOllivier Robert  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26ea906c41SOllivier Robert  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27ea906c41SOllivier Robert  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28ea906c41SOllivier Robert  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29ea906c41SOllivier Robert  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30ea906c41SOllivier Robert  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31ea906c41SOllivier Robert  * SUCH DAMAGE.
32c0b746e5SOllivier Robert  */
33c0b746e5SOllivier Robert 
34c0b746e5SOllivier Robert #if	!(defined(lint) || defined(__GNUC__))
35ea906c41SOllivier Robert   static char sysparsehrcsid[] = "parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A";
36c0b746e5SOllivier 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 
539c2daa00SOllivier Robert #ifndef NTP_NEED_BOPS
54c0b746e5SOllivier Robert #define NTP_NEED_BOPS
559c2daa00SOllivier 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 /*
109ea906c41SOllivier Robert  * History:
110ea906c41SOllivier Robert  *
111c0b746e5SOllivier Robert  * parsestreams.h,v
112ea906c41SOllivier Robert  * Revision 4.5  2005/06/25 10:52:47  kardel
113ea906c41SOllivier Robert  * fix version id / add version log
114ea906c41SOllivier Robert  *
115c0b746e5SOllivier Robert  * Revision 4.4  1998/06/14 21:09:32  kardel
116c0b746e5SOllivier Robert  * Sun acc cleanup
117c0b746e5SOllivier Robert  *
118c0b746e5SOllivier Robert  * Revision 4.3  1998/06/13 18:14:32  kardel
119c0b746e5SOllivier Robert  * make mem*() to b*() mapping magic work on Solaris too
120c0b746e5SOllivier Robert  *
121c0b746e5SOllivier Robert  * Revision 4.2  1998/06/13 15:16:22  kardel
122c0b746e5SOllivier Robert  * fix mem*() to b*() function macro emulation
123c0b746e5SOllivier Robert  *
124c0b746e5SOllivier Robert  * Revision 4.1  1998/06/13 11:50:37  kardel
125c0b746e5SOllivier Robert  * STREAM macro gone in favor of HAVE_SYS_STREAM_H
126c0b746e5SOllivier Robert  *
127c0b746e5SOllivier Robert  * Revision 4.0  1998/04/10 19:51:30  kardel
128c0b746e5SOllivier Robert  * Start 4.0 release version numbering
129c0b746e5SOllivier Robert  *
130c0b746e5SOllivier Robert  * Revision 1.2  1998/04/10 19:27:42  kardel
131c0b746e5SOllivier Robert  * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
132c0b746e5SOllivier Robert  *
133c0b746e5SOllivier Robert  */
134