9 const int prio_to_ac[8] = {2,3,3,2,1,1,0,0};
10 const unsigned int ac_to_tos[4] = {224,160,96,64};
11 const char *ac_to_text[4] = {[AC_VO] = "AC_VO", [AC_VI] = "AC_VI", [AC_BE] = "AC_BE", [AC_BK] = "AC_BK", };
13 void set_rt_prio(int priority)
16 static struct sched_param param;
18 if ((maxpri = sched_get_priority_max(SCHED_FIFO)) == -1) {
19 error(8, errno, "sched_get_priority_max fails");
22 if ((minpri = sched_get_priority_min(SCHED_FIFO)) == -1) {
23 error(10, errno, "sched_get_priority_min fails");
26 if (priority > maxpri) {
27 error(9, 0, "maximum priority allowed is %d.\n", maxpri);
29 if (priority < minpri) {
30 error(11, 0, "minimum priority allowed is %d.\n", minpri);
33 param.sched_priority = priority;
35 if (sched_setscheduler(0, SCHED_FIFO, ¶m) == -1) {
36 error(0, errno, "sched_setscheduler fails");
43 void block_signals(void)
48 sigaddset(&sigset, SIGINT);
49 sigaddset(&sigset, SIGTERM);
50 ret = pthread_sigmask(SIG_BLOCK, &sigset, NULL);
52 perror("pthread_sigmask failed");
57 static char *num_with_unit(char *buf, unsigned num, const char *units[])
59 const int div[] = {100,10,1};
63 while (num > 999 && units[(order+3)/3] != NULL) {
70 sprintf(buf, "%4d %s", num, units[(order+2)/3]);
72 sprintf(buf, "%d.%.*d %s", num/d, (d==10) ? 1 : 2, num%d, units[(order+2)/3]);
76 char *bandwidth_to_text(char *buf, unsigned bandwidth_bps)
78 const char *unit[] = {"bps", "kbps", "Mbps", NULL};
79 return num_with_unit(buf, bandwidth_bps, unit);
82 char *usec_to_text(char *buf, unsigned usec)
84 const char *unit[] = {"us", "ms", "s", NULL};
85 return num_with_unit(buf, usec, unit);
89 static void test_usec_to_text() __attribute__((unused));
90 static void test_usec_to_text()
95 for (i=1; i<11; i++) {
97 printf("%s = %d\n", usec_to_text(buf, num), num);