1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/openenvcore/include/sys/ioccom.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,71 @@
1.4 +/*-
1.5 + * Copyright (c) 1982, 1986, 1990, 1993, 1994
1.6 + * The Regents of the University of California. All rights reserved.
1.7 + *
1.8 + * Redistribution and use in source and binary forms, with or without
1.9 + * modification, are permitted provided that the following conditions
1.10 + * are met:
1.11 + * 1. Redistributions of source code must retain the above copyright
1.12 + * notice, this list of conditions and the following disclaimer.
1.13 + * 2. Redistributions in binary form must reproduce the above copyright
1.14 + * notice, this list of conditions and the following disclaimer in the
1.15 + * documentation and/or other materials provided with the distribution.
1.16 + * 4. Neither the name of the University nor the names of its contributors
1.17 + * may be used to endorse or promote products derived from this software
1.18 + * without specific prior written permission.
1.19 + *
1.20 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1.21 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1.22 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1.23 + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
1.24 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1.25 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1.26 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1.27 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1.28 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1.29 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1.30 + * SUCH DAMAGE.
1.31 + *
1.32 + * @(#)ioccom.h 8.2 (Berkeley) 3/28/94
1.33 + * $FreeBSD: src/sys/sys/ioccom.h,v 1.15 2004/04/07 04:19:49 imp Exp $
1.34 + */
1.35 +
1.36 +#ifndef _SYS_IOCCOM_H_
1.37 +#define _SYS_IOCCOM_H_
1.38 +
1.39 +/*
1.40 + * Ioctl's have the command encoded in the lower word, and the size of
1.41 + * any in or out parameters in the upper word. The high 3 bits of the
1.42 + * upper word are used to encode the in/out status of the parameter.
1.43 + */
1.44 +#define IOCPARM_MASK 0x1fff /* parameter length, at most 13 bits */
1.45 +#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
1.46 +#define IOCBASECMD(x) ((x) & ~(IOCPARM_MASK << 16))
1.47 +#define IOCGROUP(x) (((x) >> 8) & 0xff)
1.48 +
1.49 +#define IOCPARM_MAX PAGE_SIZE /* max size of ioctl, mult. of PAGE_SIZE */
1.50 +#define IOC_VOID 0x20000000 /* no parameters */
1.51 +#define IOC_OUT 0x40000000 /* copy out parameters */
1.52 +#define IOC_IN 0x80000000 /* copy in parameters */
1.53 +#define IOC_INOUT (IOC_IN|IOC_OUT)
1.54 +#define IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */
1.55 +
1.56 +#define _IOC(inout,group,num,len) \
1.57 + ((unsigned long)(inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num)))
1.58 +#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
1.59 +#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
1.60 +#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t))
1.61 +/* this should be _IORW, but stdio got there first */
1.62 +#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
1.63 +
1.64 +#ifndef _KERNEL
1.65 +
1.66 +#include <sys/cdefs.h>
1.67 +
1.68 +__BEGIN_DECLS
1.69 +IMPORT_C int ioctl(int, unsigned long, ...);
1.70 +__END_DECLS
1.71 +
1.72 +#endif
1.73 +
1.74 +#endif /* !_SYS_IOCCOM_H_ */