• Davi Arnaut's avatar
    Bug#38477: my_pthread_setprio can change dispatch class on Solaris, not just priority · 1614b231
    Davi Arnaut authored
    The problem is that the function used by the server to increase
    the thread's priority (pthread_setschedparam) has the unintended
    side-effect of changing the calling thread scheduling policy,
    possibly overwriting a scheduling policy set by a sysadmin.
    
    The solution is to rely on the pthread_setschedprio function, if
    available, as it only changes the scheduling priority and does not
    change the scheduling policy. This function is usually available on
    Solaris and Linux, but it use won't work by default on Linux as the
    the default scheduling policy only accepts a static priority 0 -- this
    is acceptable for now as priority changing on Linux is broken anyway.
    
    configure.in:
      Check for the existence of the pthread_setschedprio function.
    include/my_pthread.h:
      Use the pthread_setschedprio function to set the thread priority
      if the function is available.
    1614b231
my_pthread.h 26 KB