use int as return type for ecrt_domain_*

See #101
This commit is contained in:
Bjarne von Horn 2024-02-09 09:20:07 +01:00
parent 3870a66c8f
commit 06b408ef1b
4 changed files with 29 additions and 20 deletions

View File

@ -1901,8 +1901,9 @@ EC_PUBLIC_API uint8_t *ecrt_domain_data(
* ecrt_domain_state() return the result of the last process data exchange. * ecrt_domain_state() return the result of the last process data exchange.
* *
* \ingroup ApplicationInterfaceRT * \ingroup ApplicationInterfaceRT
* \return 0 on success, otherwise negative error code.
*/ */
EC_PUBLIC_API void ecrt_domain_process( EC_PUBLIC_API int ecrt_domain_process(
ec_domain_t *domain /**< Domain. */ ec_domain_t *domain /**< Domain. */
); );
@ -1912,8 +1913,9 @@ EC_PUBLIC_API void ecrt_domain_process(
* next call of ecrt_master_send(). * next call of ecrt_master_send().
* *
* \ingroup ApplicationInterfaceRT * \ingroup ApplicationInterfaceRT
* \return 0 on success, otherwise negative error code.
*/ */
EC_PUBLIC_API void ecrt_domain_queue( EC_PUBLIC_API int ecrt_domain_queue(
ec_domain_t *domain /**< Domain. */ ec_domain_t *domain /**< Domain. */
); );
@ -1924,8 +1926,9 @@ EC_PUBLIC_API void ecrt_domain_queue(
* Using this method, the process data exchange can be monitored in realtime. * Using this method, the process data exchange can be monitored in realtime.
* *
* \ingroup ApplicationInterfaceRT * \ingroup ApplicationInterfaceRT
* \return 0 on success, otherwise negative error code.
*/ */
EC_PUBLIC_API void ecrt_domain_state( EC_PUBLIC_API int ecrt_domain_state(
const ec_domain_t *domain, /**< Domain. */ const ec_domain_t *domain, /**< Domain. */
ec_domain_state_t *state /**< Pointer to a state object to store the ec_domain_state_t *state /**< Pointer to a state object to store the
information. */ information. */

View File

@ -90,33 +90,33 @@ uint8_t *ecrt_domain_data(const ec_domain_t *domain)
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_process(ec_domain_t *domain) int ecrt_domain_process(ec_domain_t *domain)
{ {
int ret; int ret;
ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_PROCESS, domain->index); ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_PROCESS, domain->index);
if (EC_IOCTL_IS_ERROR(ret)) { if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to process domain: %s\n", return -EC_IOCTL_ERRNO(ret);
strerror(EC_IOCTL_ERRNO(ret)));
} }
return 0;
} }
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_queue(ec_domain_t *domain) int ecrt_domain_queue(ec_domain_t *domain)
{ {
int ret; int ret;
ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_QUEUE, domain->index); ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_QUEUE, domain->index);
if (EC_IOCTL_IS_ERROR(ret)) { if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to queue domain: %s\n", return -EC_IOCTL_ERRNO(ret);
strerror(EC_IOCTL_ERRNO(ret)));
} }
return 0;
} }
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state) int ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
{ {
ec_ioctl_domain_state_t data; ec_ioctl_domain_state_t data;
int ret; int ret;
@ -126,9 +126,9 @@ void ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_STATE, &data); ret = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_STATE, &data);
if (EC_IOCTL_IS_ERROR(ret)) { if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to get domain state: %s\n", return -EC_IOCTL_ERRNO(ret);
strerror(EC_IOCTL_ERRNO(ret)));
} }
return 0;
} }
/****************************************************************************/ /****************************************************************************/

View File

@ -447,7 +447,7 @@ uint8_t *ecrt_domain_data(const ec_domain_t *domain)
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_process(ec_domain_t *domain) int ecrt_domain_process(ec_domain_t *domain)
{ {
uint16_t wc_sum[EC_MAX_NUM_DEVICES] = {}, wc_total; uint16_t wc_sum[EC_MAX_NUM_DEVICES] = {}, wc_total;
ec_datagram_pair_t *pair; ec_datagram_pair_t *pair;
@ -633,11 +633,12 @@ void ecrt_domain_process(ec_domain_t *domain)
domain->working_counter_changes = 0; domain->working_counter_changes = 0;
} }
#endif #endif
return 0;
} }
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_queue(ec_domain_t *domain) int ecrt_domain_queue(ec_domain_t *domain)
{ {
ec_datagram_pair_t *datagram_pair; ec_datagram_pair_t *datagram_pair;
ec_device_index_t dev_idx; ec_device_index_t dev_idx;
@ -663,11 +664,12 @@ void ecrt_domain_queue(ec_domain_t *domain)
&datagram_pair->datagrams[dev_idx]); &datagram_pair->datagrams[dev_idx]);
} }
} }
return 0;
} }
/****************************************************************************/ /****************************************************************************/
void ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state) int ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
{ {
unsigned int dev_idx; unsigned int dev_idx;
uint16_t wc = 0; uint16_t wc = 0;
@ -690,6 +692,7 @@ void ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
} }
state->redundancy_active = domain->redundancy_active; state->redundancy_active = domain->redundancy_active;
return 0;
} }
/****************************************************************************/ /****************************************************************************/

View File

@ -3334,8 +3334,7 @@ static ATTRIBUTES int ec_ioctl_domain_process(
return -ENOENT; return -ENOENT;
} }
ecrt_domain_process(domain); return ecrt_domain_process(domain);
return 0;
} }
/****************************************************************************/ /****************************************************************************/
@ -3351,6 +3350,7 @@ static ATTRIBUTES int ec_ioctl_domain_queue(
) )
{ {
ec_domain_t *domain; ec_domain_t *domain;
int ret;
if (unlikely(!ctx->requested)) if (unlikely(!ctx->requested))
return -EPERM; return -EPERM;
@ -3365,9 +3365,9 @@ static ATTRIBUTES int ec_ioctl_domain_queue(
if (ec_ioctl_lock_interruptible(&master->io_mutex)) if (ec_ioctl_lock_interruptible(&master->io_mutex))
return -EINTR; return -EINTR;
ecrt_domain_queue(domain); ret = ecrt_domain_queue(domain);
ec_ioctl_unlock(&master->io_mutex); ec_ioctl_unlock(&master->io_mutex);
return 0; return ret;
} }
/****************************************************************************/ /****************************************************************************/
@ -3385,6 +3385,7 @@ static ATTRIBUTES int ec_ioctl_domain_state(
ec_ioctl_domain_state_t data; ec_ioctl_domain_state_t data;
const ec_domain_t *domain; const ec_domain_t *domain;
ec_domain_state_t state; ec_domain_state_t state;
int ret;
if (unlikely(!ctx->requested)) if (unlikely(!ctx->requested))
return -EPERM; return -EPERM;
@ -3400,7 +3401,9 @@ static ATTRIBUTES int ec_ioctl_domain_state(
return -ENOENT; return -ENOENT;
} }
ecrt_domain_state(domain, &state); ret = ecrt_domain_state(domain, &state);
if (ret)
return ret;
if (ec_copy_to_user((void __user *) data.state, &state, sizeof(state), if (ec_copy_to_user((void __user *) data.state, &state, sizeof(state),
ctx)) ctx))