wlanstats: Do not use signals

This commit is contained in:
Sebastian Huber 2022-06-10 08:00:35 +02:00
parent 217c2e2a8b
commit e583f152b4
2 changed files with 8 additions and 16 deletions

View File

@ -43,6 +43,7 @@
#ifdef __rtems__ #ifdef __rtems__
#define __need_getopt_newlib #define __need_getopt_newlib
#include <getopt.h> #include <getopt.h>
#include <string.h>
#include <machine/rtems-bsd-program.h> #include <machine/rtems-bsd-program.h>
#include <machine/rtems-bsd-commands.h> #include <machine/rtems-bsd-commands.h>
#endif /* __rtems__ */ #endif /* __rtems__ */
@ -96,6 +97,7 @@ getfmt(const char *tag)
return tag; return tag;
} }
#ifndef __rtems__
static int signalled; static int signalled;
static void static void
@ -103,6 +105,7 @@ catchalarm(int signo __unused)
{ {
signalled = 1; signalled = 1;
} }
#endif /* __rtems__ */
#if 0 #if 0
static void static void
@ -262,6 +265,7 @@ main(int argc, char *argv[])
wf->setstamac(wf, mac); wf->setstamac(wf, mac);
if (argc > 0) { if (argc > 0) {
#ifndef __rtems__
u_long interval = strtoul(argv[0], NULL, 0); u_long interval = strtoul(argv[0], NULL, 0);
int line, omask; int line, omask;
@ -283,24 +287,10 @@ main(int argc, char *argv[])
wf->print_total(wf, stdout); wf->print_total(wf, stdout);
} }
fflush(stdout); fflush(stdout);
#ifndef __rtems__
omask = sigblock(sigmask(SIGALRM)); omask = sigblock(sigmask(SIGALRM));
if (!signalled) if (!signalled)
sigpause(0); sigpause(0);
sigsetmask(omask); sigsetmask(omask);
#else /* __rtems__ */
{
sigset_t oldmask, desired, empty;
sigemptyset(&empty);
sigemptyset(&desired);
sigaddset(&desired, SIGALRM);
sigprocmask(SIG_BLOCK, &desired, &oldmask);
while (!signalled)
sigsuspend(&desired);
sigprocmask(SIG_SETMASK, &oldmask, NULL);
}
#endif /* __rtems__ */
signalled = 0; signalled = 0;
alarm(interval); alarm(interval);
line++; line++;
@ -346,6 +336,10 @@ main(int argc, char *argv[])
} while (len >= sizeof(struct ieee80211req_sta_info)); } while (len >= sizeof(struct ieee80211req_sta_info));
} }
#endif #endif
#else /* __rtems__ */
(void)mode;
printf("wlanstats: not implemented\n");
#endif /* __rtems__ */
} else { } else {
wf->collect_tot(wf); wf->collect_tot(wf);
wf->print_verbose(wf, stdout); wf->print_verbose(wf, stdout);

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-wlanstats-data.h" #include "rtems-bsd-wlanstats-data.h"
/* main.c */
RTEMS_LINKER_RWSET_CONTENT(bsd_prog_wlanstats, static int signalled);