netstat: Do not use signals

This commit is contained in:
Sebastian Huber 2022-06-10 08:00:47 +02:00
parent 60986c25e0
commit da3551ad94
2 changed files with 4 additions and 17 deletions

View File

@ -512,6 +512,7 @@ intpr(void (*pfunc)(char *), int af)
freeifmaddrs(ifmap); freeifmaddrs(ifmap);
} }
#ifndef __rtems__
struct iftot { struct iftot {
u_long ift_ip; /* input packets */ u_long ift_ip; /* input packets */
u_long ift_ie; /* input errors */ u_long ift_ie; /* input errors */
@ -575,6 +576,7 @@ catchalarm(int signo __unused)
{ {
signalled = true; signalled = true;
} }
#endif /* __rtems__ */
/* /*
* Print a running summary of interface statistics. * Print a running summary of interface statistics.
@ -585,6 +587,7 @@ catchalarm(int signo __unused)
static void static void
sidewaysintpr(void) sidewaysintpr(void)
{ {
#ifndef __rtems__
struct iftot ift[2], *new, *old; struct iftot ift[2], *new, *old;
struct itimerval interval_it; struct itimerval interval_it;
int oldmask, line; int oldmask, line;
@ -619,26 +622,11 @@ loop:
xo_close_list("interface-statistics"); xo_close_list("interface-statistics");
return; return;
} }
#ifdef __rtems__
{
sigset_t oldmask, desired, empty;
sigemptyset(&empty);
sigemptyset(&desired);
sigaddset(&desired, SIGALRM);
sigprocmask(SIG_BLOCK, &desired, &oldmask);
while (!signalled)
sigsuspend(&desired);
signalled = false;
sigprocmask(SIG_SETMASK, &oldmask, NULL);
}
#else /* __rtems__ */
oldmask = sigblock(sigmask(SIGALRM)); oldmask = sigblock(sigmask(SIGALRM));
while (!signalled) while (!signalled)
sigpause(0); sigpause(0);
signalled = false; signalled = false;
sigsetmask(oldmask); sigsetmask(oldmask);
#endif /* __rtems__ */
line++; line++;
fill_iftot(new); fill_iftot(new);
@ -681,4 +669,5 @@ loop:
goto loop; goto loop;
/* NOTREACHED */ /* NOTREACHED */
#endif /* __rtems__ */
} }

View File

@ -1,5 +1,3 @@
/* generated by userspace-header-gen.py */ /* generated by userspace-header-gen.py */
#include <rtems/linkersets.h> #include <rtems/linkersets.h>
#include "rtems-bsd-netstat-data.h" #include "rtems-bsd-netstat-data.h"
/* if.c */
RTEMS_LINKER_RWSET_CONTENT(bsd_prog_netstat, static sig_atomic_t signalled);