Annotation of linux/fs/ioctl.c, revision 1.1.1.1

1.1       root        1: #include <string.h>
                      2: #include <errno.h>
                      3: #include <sys/stat.h>
                      4: 
                      5: #include <linux/sched.h>
                      6: 
                      7: extern int tty_ioctl(int dev, int cmd, int arg);
                      8: 
                      9: typedef int (*ioctl_ptr)(int dev,int cmd,int arg);
                     10: 
                     11: #define NRDEVS ((sizeof (ioctl_table))/(sizeof (ioctl_ptr)))
                     12: 
                     13: static ioctl_ptr ioctl_table[]={
                     14:        NULL,           /* nodev */
                     15:        NULL,           /* /dev/mem */
                     16:        NULL,           /* /dev/fd */
                     17:        NULL,           /* /dev/hd */
                     18:        tty_ioctl,      /* /dev/ttyx */
                     19:        tty_ioctl,      /* /dev/tty */
                     20:        NULL,           /* /dev/lp */
                     21:        NULL};          /* named pipes */
                     22:        
                     23: 
                     24: int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
                     25: {      
                     26:        struct file * filp;
                     27:        int dev,mode;
                     28: 
                     29:        if (fd >= NR_OPEN || !(filp = current->filp[fd]))
                     30:                return -EBADF;
                     31:        mode=filp->f_inode->i_mode;
                     32:        if (!S_ISCHR(mode) && !S_ISBLK(mode))
                     33:                return -EINVAL;
                     34:        dev = filp->f_inode->i_zone[0];
                     35:        if (MAJOR(dev) >= NRDEVS)
                     36:                panic("unknown device for ioctl");
                     37:        if (!ioctl_table[MAJOR(dev)])
                     38:                return -ENOTTY;
                     39:        return ioctl_table[MAJOR(dev)](dev,cmd,arg);
                     40: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.