master/cdev.c
changeset 1585 1f640e321ee4
parent 1583 017fa8fd9ac1
child 1586 eb9185dfa8ac
child 1596 ea8d2b4ee742
equal deleted inserted replaced
1584:cd9a68fd5b89 1585:1f640e321ee4
  1671 
  1671 
  1672     ecrt_master_deactivate(master);
  1672     ecrt_master_deactivate(master);
  1673     return 0;
  1673     return 0;
  1674 }
  1674 }
  1675 
  1675 
       
  1676 
       
  1677 /*****************************************************************************/
       
  1678 
       
  1679 /** Set max. number of databytes in a cycle
       
  1680  */
       
  1681 int ec_cdev_ioctl_set_max_cycle_size(
       
  1682         ec_master_t *master, /**< EtherCAT master. */
       
  1683         unsigned long arg, /**< ioctl() argument. */
       
  1684         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
       
  1685         )
       
  1686 {
       
  1687     size_t max_cycle_size;
       
  1688 
       
  1689     if (copy_from_user(&max_cycle_size, (void __user *) arg, sizeof(max_cycle_size))) {
       
  1690         return -EFAULT;
       
  1691     }
       
  1692 
       
  1693     if (down_interruptible(&master->master_sem))
       
  1694         return -EINTR;
       
  1695     master->max_queue_size = max_cycle_size;
       
  1696     up(&master->master_sem);
       
  1697 
       
  1698     return 0;
       
  1699 }
       
  1700 
       
  1701 
  1676 /*****************************************************************************/
  1702 /*****************************************************************************/
  1677 
  1703 
  1678 /** Send frames.
  1704 /** Send frames.
  1679  */
  1705  */
  1680 int ec_cdev_ioctl_send(
  1706 int ec_cdev_ioctl_send(
  3464             if (!(filp->f_mode & FMODE_WRITE))
  3490             if (!(filp->f_mode & FMODE_WRITE))
  3465                 return -EPERM;
  3491                 return -EPERM;
  3466             return ec_cdev_ioctl_voe_exec(master, arg, priv);
  3492             return ec_cdev_ioctl_voe_exec(master, arg, priv);
  3467         case EC_IOCTL_VOE_DATA:
  3493         case EC_IOCTL_VOE_DATA:
  3468             return ec_cdev_ioctl_voe_data(master, arg, priv);
  3494             return ec_cdev_ioctl_voe_data(master, arg, priv);
       
  3495         case EC_IOCTL_SET_MAX_CYCLE_SIZE:
       
  3496             if (!(filp->f_mode & FMODE_WRITE))
       
  3497                 return -EPERM;
       
  3498             return ec_cdev_ioctl_set_max_cycle_size(master,arg,priv);
  3469         default:
  3499         default:
  3470             return -ENOTTY;
  3500             return -ENOTTY;
  3471     }
  3501     }
  3472 }
  3502 }
  3473 
  3503