Насколько я понял у Роба Кертенера (или как там его склонять

) pthread_attr_setschedparam() необязательно использовать, а можно просто присвоить приоритет следующим образом
attr.param.shed_priotity = newprio;
Насчет проверки ошибок: все ошибки проверяются, все функции возвращают EOK.
Способ, предложенный lestat тоже не помог.
А вот с импульсом интересно. Заменил
SIGEV_PULSE_INIT( &event, coid, SIGEV_PULSE_PRIO_INHERIT, 0, 0 );
на
SIGEV_PULSE_INIT( &event, coid, 30, 0, 0 );
и приоритет потока сразу изменился на 30.
Почему приоритет изменился понятно, почему не менялся с SIGEV_PULSE_PRIO_INHERIT не понятно. Насколько я понял из документации, SIGEV_PULSE_PRIO_INHERIT просто не дает менять приоритет потока после приема импульса