On Tue, 24 May 2022 04:08:36 -0700 Tyler Retzlaff <roret...@linux.microsoft.com> wrote:
> +static int > +thread_map_priority_to_os_value(enum rte_thread_priority eal_pri, > + int *os_pri, int *pol) > +{ > + /* Clear the output parameters */ > + *os_pri = sched_get_priority_min(SCHED_OTHER) - 1; > + *pol = -1; > + > + switch (eal_pri) { > + case RTE_THREAD_PRIORITY_NORMAL: > + *pol = SCHED_OTHER; > + > + /* > + * Choose the middle of the range to represent > + * the priority 'normal'. > + * On Linux, this should be 0, since both > + * sched_get_priority_min/_max return 0 for SCHED_OTHER. > + */ > + *os_pri = (sched_get_priority_min(SCHED_OTHER) + > + sched_get_priority_max(SCHED_OTHER))/2; > + break; > + case RTE_THREAD_PRIORITY_REALTIME_CRITICAL: > + *pol = SCHED_RR; > + *os_pri = sched_get_priority_max(SCHED_RR); > + break; Many people have experimented with realtime priorities with DPDK and Linux, and have never heard of any one not having problems. Recommend that this either be an error add a warning log message that "Setting real time priority may break" > + default: > + RTE_LOG(DEBUG, EAL, "The requested priority value is > invalid.\n"); > + return EINVAL; > + } > + return 0; > +}