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 @@ ...@@ -12,6 +12,8 @@
#include "pps_gen.h" #include "pps_gen.h"
#include "rxts_calibrator.h" #include "rxts_calibrator.h"
#include "host.h"
uint32_t _endram; uint32_t _endram;
int wrc_stat_running; int wrc_stat_running;
...@@ -74,6 +76,13 @@ void uart_init_hw(void) ...@@ -74,6 +76,13 @@ void uart_init_hw(void)
void uart_init_sw(void) void uart_init_sw(void)
{ printf("%s\n", __func__); } { printf("%s\n", __func__); }
void uart_exit(int i)
{
system("stty sane");
exit(i);
}
int uart_read_byte(void) int uart_read_byte(void)
{ {
fd_set set; fd_set set;
...@@ -86,8 +95,7 @@ int uart_read_byte(void) ...@@ -86,8 +95,7 @@ int uart_read_byte(void)
ret = getchar(); ret = getchar();
/* Use ctrl-C and ctrl-D specially (hack!) */ /* Use ctrl-C and ctrl-D specially (hack!) */
if (ret == 3 || ret == 4) { if (ret == 3 || ret == 4) {
system("stty sane"); uart_exit(0);
exit(0);
} }
return ret; return ret;
} }
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include "minic.h" #include "minic.h"
#include "hw/pps_gen_regs.h" #include "hw/pps_gen_regs.h"
#include "host.h"
static int dumpstruct(FILE *dest, char *name, void *ptr, int size) static int dumpstruct(FILE *dest, char *name, void *ptr, int size)
{ {
int ret, i; int ret, i;
...@@ -134,7 +136,6 @@ void set_mac_addr(uint8_t dev_addr[]) ...@@ -134,7 +136,6 @@ void set_mac_addr(uint8_t dev_addr[])
printf("%s: no implemented yet\n", __func__); printf("%s: no implemented yet\n", __func__);
} }
int minic_rx_frame(struct wr_ethhdr *hdr, uint8_t * payload, uint32_t buf_size, int minic_rx_frame(struct wr_ethhdr *hdr, uint8_t * payload, uint32_t buf_size,
struct hw_timestamp *hwts) struct hw_timestamp *hwts)
{ {
...@@ -144,6 +145,10 @@ int minic_rx_frame(struct wr_ethhdr *hdr, uint8_t * payload, uint32_t buf_size, ...@@ -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); ret = recv(sock, frame, sizeof(frame), MSG_DONTWAIT);
if (ret < 0 && errno == EAGAIN) if (ret < 0 && errno == EAGAIN)
return 0; return 0;
if (ret < 0) {
printf("recv(): %s\n", strerror(errno));
uart_exit(1);
}
memcpy(hdr, frame, 14); memcpy(hdr, frame, 14);
dumpstruct(stdout, "rx header", hdr, 14); dumpstruct(stdout, "rx header", hdr, 14);
ret -= 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