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