master/cdev.c
changeset 1454 b9986feec1a5
parent 1448 d7ba0c408a07
child 1455 aa18fcfe0fd1
equal deleted inserted replaced
1453:79042b9458b1 1454:b9986feec1a5
  1638     return 0;
  1638     return 0;
  1639 }
  1639 }
  1640 
  1640 
  1641 /*****************************************************************************/
  1641 /*****************************************************************************/
  1642 
  1642 
       
  1643 /** Get the master state.
       
  1644  */
       
  1645 int ec_cdev_ioctl_app_time(
       
  1646         ec_master_t *master, /**< EtherCAT master. */
       
  1647         unsigned long arg, /**< ioctl() argument. */
       
  1648         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
       
  1649         )
       
  1650 {
       
  1651     ec_ioctl_app_time_t data;
       
  1652     
       
  1653 	if (unlikely(!priv->requested))
       
  1654 		return -EPERM;
       
  1655 
       
  1656     if (copy_from_user(&data, (void __user *) arg, sizeof(data))) {
       
  1657         return -EFAULT;
       
  1658     }
       
  1659 
       
  1660     ecrt_master_application_time(master, data.app_time);
       
  1661     return 0;
       
  1662 }
       
  1663 
       
  1664 /*****************************************************************************/
       
  1665 
  1643 /** Sync the reference clock.
  1666 /** Sync the reference clock.
  1644  */
  1667  */
  1645 int ec_cdev_ioctl_sync_ref(
  1668 int ec_cdev_ioctl_sync_ref(
  1646         ec_master_t *master, /**< EtherCAT master. */
  1669         ec_master_t *master, /**< EtherCAT master. */
  1647         unsigned long arg, /**< ioctl() argument. */
  1670         unsigned long arg, /**< ioctl() argument. */
  3128             if (!(filp->f_mode & FMODE_WRITE))
  3151             if (!(filp->f_mode & FMODE_WRITE))
  3129 				return -EPERM;
  3152 				return -EPERM;
  3130 			return ec_cdev_ioctl_receive(master, arg, priv);
  3153 			return ec_cdev_ioctl_receive(master, arg, priv);
  3131         case EC_IOCTL_MASTER_STATE:
  3154         case EC_IOCTL_MASTER_STATE:
  3132 			return ec_cdev_ioctl_master_state(master, arg, priv);
  3155 			return ec_cdev_ioctl_master_state(master, arg, priv);
       
  3156         case EC_IOCTL_APP_TIME:
       
  3157             if (!(filp->f_mode & FMODE_WRITE))
       
  3158 				return -EPERM;
       
  3159 			return ec_cdev_ioctl_app_time(master, arg, priv);
  3133         case EC_IOCTL_SYNC_REF:
  3160         case EC_IOCTL_SYNC_REF:
  3134             if (!(filp->f_mode & FMODE_WRITE))
  3161             if (!(filp->f_mode & FMODE_WRITE))
  3135 				return -EPERM;
  3162 				return -EPERM;
  3136 			return ec_cdev_ioctl_sync_ref(master, arg, priv);
  3163 			return ec_cdev_ioctl_sync_ref(master, arg, priv);
  3137         case EC_IOCTL_SYNC_SLAVES:
  3164         case EC_IOCTL_SYNC_SLAVES: