source: branches/libc-0.6/src/emx/include/sys/ioccom.h

Last change on this file was 1739, checked in by bird, 21 years ago

Fixed TCPCALL.

  • Property cvs2svn:cvs-rev set to 1.7
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1/*-
2 * Copyright (c) 1982, 1986, 1990, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)ioccom.h 8.2 (Berkeley) 3/28/94
34 * $FreeBSD: src/sys/sys/ioccom.h,v 1.9 1999/12/29 04:24:42 peter Exp $
35 */
36
37#ifndef _SYS_IOCCOM_H_
38#define _SYS_IOCCOM_H_
39
40/*
41 * Ioctl's have the command encoded in the lower word, and the size of
42 * any in or out parameters in the upper word. The high 3 bits of the
43 * upper word are used to encode the in/out status of the parameter.
44 */
45#define IOCPARM_MASK 0x1fff /* parameter length, at most 13 bits */
46#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
47#define IOCBASECMD(x) ((x) & ~(IOCPARM_MASK << 16))
48#define IOCGROUP(x) (((x) >> 8) & 0xff)
49
50#define IOCPARM_MAX PAGE_SIZE /* max size of ioctl, mult. of PAGE_SIZE */
51#define IOC_VOID 0x20000000 /* no parameters */
52#define IOC_OUT 0x40000000 /* copy out parameters */
53#define IOC_IN 0x80000000 /* copy in parameters */
54#define IOC_INOUT (IOC_IN|IOC_OUT)
55#define IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */
56
57#ifdef TCPV40HDRS
58#define _IOC(inout,group,num,len) \
59 ( (unsigned long) ( ((group) << 8) | (num) ) )
60#else
61#define _IOC(inout,group,num,len) \
62 ((unsigned long)(inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num)))
63#endif
64#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
65#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
66#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t))
67/* this should be _IORW, but stdio got there first */
68#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
69
70#ifndef _KERNEL
71
72#include <sys/cdefs.h>
73
74__BEGIN_DECLS
75#ifdef TCPV40HDRS
76/** The v40 socket ioctl interface.
77 * @remark sys based libc have separeate handle spaces for sockets and files
78 * therefore this socket specific call.
79 */
80int TCPCALL os2_ioctl __P((int, int, char *, int));
81/** Wrapper around the ioctl() interface of OS/2 BSD 4.3. */
82int TCPCALL so_ioctl __P((int, unsigned long, ...));
83#else
84/** The v41+ BSD socket ioctl interface. */
85int TCPCALL so_ioctl __P((int, unsigned long, ...));
86/** The v41+ OS/2 specific socket ioctl interface. */
87int TCPCALL os2_ioctl __P((int, unsigned long, char *, int));
88#endif
89
90int ioctl __P((int, unsigned long, ...));
91int _ioctl __P((int, unsigned long, ...));
92__END_DECLS
93
94#endif
95
96/* toolkit */
97#define ioc(x,y) ((x<<8)|y)
98
99#endif /* !_SYS_IOCCOM_H_ */
100
Note: See TracBrowser for help on using the repository browser.