master/cdev.c
changeset 1600 e36c92cf58a9
parent 1597 491dea6f4fd7
child 1606 6c5849669900
equal deleted inserted replaced
1599:fe338fe37923 1600:e36c92cf58a9
  1676 
  1676 
  1677 /*****************************************************************************/
  1677 /*****************************************************************************/
  1678 
  1678 
  1679 /** Set max. number of databytes in a cycle
  1679 /** Set max. number of databytes in a cycle
  1680  */
  1680  */
  1681 int ec_cdev_ioctl_set_max_cycle_size(
  1681 int ec_cdev_ioctl_set_send_interval(
  1682         ec_master_t *master, /**< EtherCAT master. */
  1682         ec_master_t *master, /**< EtherCAT master. */
  1683         unsigned long arg, /**< ioctl() argument. */
  1683         unsigned long arg, /**< ioctl() argument. */
  1684         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
  1684         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
  1685         )
  1685         )
  1686 {
  1686 {
  1687     size_t max_cycle_size;
  1687 	size_t send_interval;
  1688 
  1688 
  1689     if (copy_from_user(&max_cycle_size, (void __user *) arg, sizeof(max_cycle_size))) {
  1689 	if (copy_from_user(&send_interval, (void __user *) arg, sizeof(send_interval))) {
  1690         return -EFAULT;
  1690         return -EFAULT;
  1691     }
  1691     }
  1692 
  1692 
  1693     if (down_interruptible(&master->master_sem))
  1693     if (down_interruptible(&master->master_sem))
  1694         return -EINTR;
  1694         return -EINTR;
  1695     master->max_queue_size = max_cycle_size;
  1695 	ec_master_set_send_interval(master,send_interval);
  1696     up(&master->master_sem);
  1696     up(&master->master_sem);
  1697 
  1697 
  1698     return 0;
  1698     return 0;
  1699 }
  1699 }
  1700 
  1700 
  3490             if (!(filp->f_mode & FMODE_WRITE))
  3490             if (!(filp->f_mode & FMODE_WRITE))
  3491                 return -EPERM;
  3491                 return -EPERM;
  3492             return ec_cdev_ioctl_voe_exec(master, arg, priv);
  3492             return ec_cdev_ioctl_voe_exec(master, arg, priv);
  3493         case EC_IOCTL_VOE_DATA:
  3493         case EC_IOCTL_VOE_DATA:
  3494             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:
  3495 		case EC_IOCTL_SET_SEND_INTERVAL:
  3496             if (!(filp->f_mode & FMODE_WRITE))
  3496             if (!(filp->f_mode & FMODE_WRITE))
  3497                 return -EPERM;
  3497                 return -EPERM;
  3498             return ec_cdev_ioctl_set_max_cycle_size(master,arg,priv);
  3498 			return ec_cdev_ioctl_set_send_interval(master,arg,priv);
  3499         default:
  3499         default:
  3500             return -ENOTTY;
  3500             return -ENOTTY;
  3501     }
  3501     }
  3502 }
  3502 }
  3503 
  3503