Example #1
0
static
int pscom_psm_do_read(pscom_con_t *con)
{
	pspsm_con_info_t *ci = con->arch.psm.ci;

	/* old request outstanding? */
	if (ci->rbuf) return 0;

	/* post a new request */
	pscom_read_get_buf_locked(con, &ci->rbuf, &ci->rbuflen);
	int ret = pspsm_recvlook(ci);

	if (ret == -EPIPE) goto err;
	assert(ret == -EAGAIN);
	return 0;

 err:
	errno = -ret;
	pscom_con_error(con, PSCOM_OP_READ, PSCOM_ERR_STDERROR);
	return 1;
}
Example #2
0
static
int pscom_psm_do_read(pscom_con_t *con)
{
	pspsm_con_info_t *ci = con->arch.psm.ci;
	char *rbuf;             /**< buffer to be used for next receive */
	size_t rbuflen;         /**< size of buffer */

	/* old request outstanding? */
	if (pspsm_recv_pending(ci)) return 0;

	/* post a new request */
	pscom_read_get_buf_locked(con, &rbuf, &rbuflen);
	int ret = pspsm_recv_start(ci, rbuf, rbuflen);

	if (ret) goto err;
	return 0;
err:
	errno = -ret;
	pscom_con_error(con, PSCOM_OP_READ, PSCOM_ERR_STDERROR);
	return 1;
}