pthread_mutexattr_setprioceiling(3C) は、mutex の優先順位上限を設定します。
#include <pthread.h> int pthread_mutex_setprioceiling(pthread_mutex_t *restrict mutex, int prioceiling, int *restrict old_ceiling);
pthread_mutex_setprioceiling() は mutex の優先順位上限、つまり prioceiling を変更します。pthread_mutex_setprioceiling() は、mutex のロックが解除されている場合 mutex をロックするか、mutex を正常にロックできるようになるまでブロックして、mutex の優先順位上限を変更し、mutex を開放します。()mutex をロックするプロセスでは、優先順位保護プロトコルを守る必要はありません。
pthread_mutex_setprioceiling() が正常に終了すると、優先順位上限の以前の値が old_ceiling で返されます。pthread_mutex_setprioceiling() が失敗すると、mutex の優先順位上限は元のままになります。
pthread_mutex_setprioceiling() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。
次のいずれかの条件が検出されると、pthread_mutex_setprioceiling() は失敗し、対応する値を返します。
EINVAL
説明:prioceiling で要求された優先順位が範囲外です。
EINVAL
説明:mutex が、THREAD_PRIO_PROTECT の値を持つ protocol 属性で初期化されていませんでした。
EPERM
説明:呼び出し元はこの操作を行うための権限を持っていません。