名称
pthread_mutex_getprioceiling(), pthread_mutex_setprioceiling() ― mutex の prioceiling 属性の取得と設定
構文
#include <pthread.h>
int pthread_mutex_getprioceiling(
pthread_mutex_t *mutex,
int *prioceiling
);
int pthread_mutex_setprioceiling(
pthread_mutex_t *mutex,
int prioceiling,
int *old_ceiling
);
パラメータ
| mutex | | 属性 prioceiling を設定または取得する mutex へのポインター。 |
| prioceiling | | このパラメータは、 mutex の属性 prioceiling が返されるメモリー領域を指すか (get 関数)、または mutex の属性 prioceiling の新しい値を指定します (set 関数)。 |
| old_ceiling | | このパラメータは、 mutex の以前の属性 prioceiling が返されるメモリー領域を指します (set 関数のみ)。 |
説明
pthread_mutex_setprioceiling() 関数は、最初に mutex をロックします。 mutex が現在ロックされている場合、 mutex がロックできるまで、呼び出しスレッドはブロックされます。 mutex がロックされると、 mutex の属性 prioceiling は prioceiling パラメータで指定された値に変更され、 mutex はロック解除されます。 mutex の以前の最高優先順位は、 old_prioceiling に返されます。
pthread_mutex_getprioceiling() 関数は、 mutex の現在の prioceiling 属性値を prioceiling パラメータに返します。
これらの関数を使用する前に、必ず _POSIX_THREAD_PRIO_PROTECT の定義を調べてください。
すべてのシステムでこれらの関数がサポートされているとはかぎりません。
戻り値
正常終了すると、 pthread_mutex_getprioceiling() と pthread_mutex_setprioceiling() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の現象が発生した場合、 pthread_mutex_getprioceiling() と pthread_mutex_setprioceiling() 関数は、該当するエラー番号を返します。
| [ENOSYS] | | _POSIX_THREAD_PRIO_PROTECT が未定義で、これらの関数がサポートされていない場合。 |
以下の条件の場合、 pthread_mutex_getprioceiling() と pthread_mutex_setprioceiling() 関数は、該当するエラー番号を返します。
| [EINVAL] | | 優先順位値 prioceiling が正当な値ではない場合。 |
| [EINVAL] | | mutex が、有効な mutex ではない場合。 |
| [ENOSYS] | | prioceiling プロトコルが mutex でサポートされていない場合。 |
| [EPERM] | | 呼び出し元に、 mutex の最高優先順位を変更するための適切な特権がない場合。 |
| [EFAULT] | | mutex パラメータが無効なアドレスを指している場合。 |
著者
pthread_mutex_getprioceiling() と pthread_mutex_setprioceiling() は、IEEE
POSIX P1003.1c 規格から派生しました。
標準準拠
pthread_mutex_getprioceiling(): POSIX 1003.1c.
pthread_mutex_setprioceiling(): POSIX 1003.1c.