OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-ppc/] [ioctl.h] - Blame information for rev 1633

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
#ifndef _PPC_IOCTL_H
2
#define _PPC_IOCTL_H
3
 
4
 
5
/*
6
 * this was copied from the alpha as it's a bit cleaner there.
7
 *                         -- Cort
8
 */
9
 
10
#define _IOC_NRBITS     8
11
#define _IOC_TYPEBITS   8
12
#define _IOC_SIZEBITS   13
13
#define _IOC_DIRBITS    3
14
 
15
#define _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)
16
#define _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
17
#define _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
18
#define _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
19
 
20
#define _IOC_NRSHIFT    0
21
#define _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
22
#define _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
23
#define _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
24
 
25
/*
26
 * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit.
27
 * And this turns out useful to catch old ioctl numbers in header
28
 * files for us.
29
 */
30
#define _IOC_NONE       1U
31
#define _IOC_READ       2U
32
#define _IOC_WRITE      4U
33
 
34
#define _IOC(dir,type,nr,size) \
35
        (((dir)  << _IOC_DIRSHIFT) | \
36
         ((type) << _IOC_TYPESHIFT) | \
37
         ((nr)   << _IOC_NRSHIFT) | \
38
         ((size) << _IOC_SIZESHIFT))
39
 
40
/* used to create numbers */
41
#define _IO(type,nr)            _IOC(_IOC_NONE,(type),(nr),0)
42
#define _IOR(type,nr,size)      _IOC(_IOC_READ,(type),(nr),sizeof(size))
43
#define _IOW(type,nr,size)      _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
44
#define _IOWR(type,nr,size)     _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
45
 
46
/* used to decode them.. */
47
#define _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
48
#define _IOC_TYPE(nr)           (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
49
#define _IOC_NR(nr)             (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
50
#define _IOC_SIZE(nr)           (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
51
 
52
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.