マルチスレッドのプログラミング

pthread_mutexattr_setprioceiling(3T)

pthread_mutexattr_setprioceiling(3T) は、mutex 属性オブジェクトの優先順位上限属性を設定します。


#include <pthread.h>

int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *attr, int prioceiling, int *oldceiling);

attr は、先の pthread_mutexattr_init() の呼び出しによって作成された mutex 属性オブジェクトを指します。


注 -

attr mutex 属性オブジェクトに優先順位上限属性が含まれるのは、シンボル _POSIX_THREAD_PRIO_PROTECT が定義されている場合だけです。


prioceiling には、初期化された mutex の優先順位上限を指定します。優先順位上限は、mutex によって保護されている重要領域が実行される最小の優先レベルを定義します。prioceiling は、SCHED_FIFO によって定義される優先順位の最大範囲内にあります。優先順位が逆転しないように、特定の mutex をロックするすべてのスレッドの中で最も高い優先順位と同じかまたはそれを上回る優先順位を prioceiling として設定します。

oldceiling には古い優先順位上限の値が入ります。

戻り値

pthread_mutexattr_setprioceiling() は、正常終了すると 0 を返します。それ以外の戻り値は、エラーが発生したことを示しています。

次のいずれかの条件が検出されると、pthread_mutexattr_setprioceiling() は失敗し、対応する値を返します。


ENOSYS

オプション _POSIX_THREAD_PRIO_PROTECT が定義されておらず、この実装はこの関数をサポートしていません。

次のどちらかの条件が検出されると、pthread_mutexattr_setprioceiling() は失敗し、対応する値を返します。


EINVAL

attr または prioceiling に指定した値は無効です。


EPERM

呼び出し元はこの操作を行うための権限を持っていません。