Commit e6e7bc30 authored by Alessandro Rubini's avatar Alessandro Rubini

host: exit on recv() error (likely not superuser)

Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
parent e3967660
void uart_exit(int i);
......@@ -12,6 +12,8 @@
#include "pps_gen.h"
#include "rxts_calibrator.h"
#include "host.h"
uint32_t _endram;
int wrc_stat_running;
......@@ -74,6 +76,13 @@ void uart_init_hw(void)
void uart_init_sw(void)
{ printf("%s\n", __func__); }
void uart_exit(int i)
{
system("stty sane");
exit(i);
}
int uart_read_byte(void)
{
fd_set set;
......@@ -86,8 +95,7 @@ int uart_read_byte(void)
ret = getchar();
/* Use ctrl-C and ctrl-D specially (hack!) */
if (ret == 3 || ret == 4) {
system("stty sane");
exit(0);
uart_exit(0);
}
return ret;
}
......
......@@ -15,6 +15,8 @@
#include "minic.h"
#include "hw/pps_gen_regs.h"
#include "host.h"
static int dumpstruct(FILE *dest, char *name, void *ptr, int size)
{
int ret, i;
......@@ -134,7 +136,6 @@ void set_mac_addr(uint8_t dev_addr[])
printf("%s: no implemented yet\n", __func__);
}
int minic_rx_frame(struct wr_ethhdr *hdr, uint8_t * payload, uint32_t buf_size,
struct hw_timestamp *hwts)
{
......@@ -144,6 +145,10 @@ int minic_rx_frame(struct wr_ethhdr *hdr, uint8_t * payload, uint32_t buf_size,
ret = recv(sock, frame, sizeof(frame), MSG_DONTWAIT);
if (ret < 0 && errno == EAGAIN)
return 0;
if (ret < 0) {
printf("recv(): %s\n", strerror(errno));
uart_exit(1);
}
memcpy(hdr, frame, 14);
dumpstruct(stdout, "rx header", hdr, 14);
ret -= 14;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment