Silphire (7255) の日記

2003 年 01 月 30 日
午後 11:51

pthread日記(25) - pthread_attr_setguardsize()

属性オブジェクトのguardsize属性をセットします。

int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);

pthread_attr_setguardsize()は、attrが参照する属性オブジェクトのguardsize属性をguardsizeが示す値に設定します。guardsizeが0の時は、スタックのガードエリアは無くなります。guardsizeが正の値の時は、attrを使ってスレッドを新規に作成する時、少なくとも指定されたguardsizeの値だけのガードエリアを作るようにします。

デフォルトのguardsize属性の値はPAGESIZEです。PAGESIZEはpthreadの実装に依存します。

stackaddr属性がセットされた場合、guardsize属性は無視され、ガードエリアも作成されません。その時は、プログラム側でスタックのオーバーフローを管理する必要があります。

guardsize属性は、作成されたスレッドのスタックのガードエリアを制御する属性です。guardsize属性は、スタックポインタのオーバーフローを保護する機構を提供します。guardsize属性が指定されてスレッドが作成された時、そのスレッドのスタックはguardsize属性に指定された分だけ大きくなります。もしプログラムがその領域をアクセスした時は、一般にそのスレッドに対してSYSSEGVを発生させます。

pthread_attr_setguardsize()が成功した時には0を返します。エラーの時はエラーに応じた値を返します。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Stay hungry, Stay foolish. -- Steven Paul Jobs

処理中...