equal
deleted
inserted
replaced
1716 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1716 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1717 ) |
1717 ) |
1718 { |
1718 { |
1719 size_t send_interval; |
1719 size_t send_interval; |
1720 |
1720 |
|
1721 if (unlikely(!ctx->requested)) { |
|
1722 return -EPERM; |
|
1723 } |
|
1724 |
1721 if (copy_from_user(&send_interval, (void __user *) arg, |
1725 if (copy_from_user(&send_interval, (void __user *) arg, |
1722 sizeof(send_interval))) { |
1726 sizeof(send_interval))) { |
1723 return -EFAULT; |
1727 return -EFAULT; |
1724 } |
1728 } |
1725 |
1729 |
1780 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1784 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1781 ) |
1785 ) |
1782 { |
1786 { |
1783 ec_master_state_t data; |
1787 ec_master_state_t data; |
1784 |
1788 |
1785 if (unlikely(!ctx->requested)) |
|
1786 return -EPERM; |
|
1787 |
|
1788 ecrt_master_state(master, &data); |
1789 ecrt_master_state(master, &data); |
1789 |
1790 |
1790 if (copy_to_user((void __user *) arg, &data, sizeof(data))) |
1791 if (copy_to_user((void __user *) arg, &data, sizeof(data))) |
1791 return -EFAULT; |
1792 return -EFAULT; |
1792 |
1793 |
1805 { |
1806 { |
1806 ec_ioctl_link_state_t ioctl; |
1807 ec_ioctl_link_state_t ioctl; |
1807 ec_master_link_state_t state; |
1808 ec_master_link_state_t state; |
1808 int ret; |
1809 int ret; |
1809 |
1810 |
1810 if (unlikely(!ctx->requested)) { |
|
1811 return -EPERM; |
|
1812 } |
|
1813 |
|
1814 if (copy_from_user(&ioctl, (void __user *) arg, sizeof(ioctl))) { |
1811 if (copy_from_user(&ioctl, (void __user *) arg, sizeof(ioctl))) { |
1815 return -EFAULT; |
1812 return -EFAULT; |
1816 } |
1813 } |
1817 |
1814 |
1818 ret = ecrt_master_link_state(master, ioctl.dev_idx, &state); |
1815 ret = ecrt_master_link_state(master, ioctl.dev_idx, &state); |
1969 ec_master_t *master, /**< EtherCAT master. */ |
1966 ec_master_t *master, /**< EtherCAT master. */ |
1970 void *arg, /**< ioctl() argument. */ |
1967 void *arg, /**< ioctl() argument. */ |
1971 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1968 ec_ioctl_context_t *ctx /**< Private data structure of file handle. */ |
1972 ) |
1969 ) |
1973 { |
1970 { |
1974 if (unlikely(!ctx->requested)) |
|
1975 return -EPERM; |
|
1976 |
|
1977 down(&master->master_sem); |
1971 down(&master->master_sem); |
1978 ecrt_master_reset(master); |
1972 ecrt_master_reset(master); |
1979 up(&master->master_sem); |
1973 up(&master->master_sem); |
1980 return 0; |
1974 return 0; |
1981 } |
1975 } |
4168 break; |
4162 break; |
4169 } |
4163 } |
4170 ret = ec_ioctl_sc_emerg_clear(master, arg, ctx); |
4164 ret = ec_ioctl_sc_emerg_clear(master, arg, ctx); |
4171 break; |
4165 break; |
4172 case EC_IOCTL_SC_EMERG_OVERRUNS: |
4166 case EC_IOCTL_SC_EMERG_OVERRUNS: |
4173 if (!ctx->writable) { |
|
4174 ret = -EPERM; |
|
4175 break; |
|
4176 } |
|
4177 ret = ec_ioctl_sc_emerg_overruns(master, arg, ctx); |
4167 ret = ec_ioctl_sc_emerg_overruns(master, arg, ctx); |
4178 break; |
4168 break; |
4179 case EC_IOCTL_SC_SDO_REQUEST: |
4169 case EC_IOCTL_SC_SDO_REQUEST: |
4180 if (!ctx->writable) { |
4170 if (!ctx->writable) { |
4181 ret = -EPERM; |
4171 ret = -EPERM; |