Unix-system-calls-get-robust-list

提供:Dev Guides
移動先:案内検索

[top]#

|http://www.google.com/[Google] | a|

Web This Site
  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

[cols=",,,,,,,",]

| |  Home   | |  References   | |  Discussion Forums   | |  About TP  

[width="100%",cols="100%",]

a| == get_robust_list()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

get_robust_list、set_robust_list-堅牢なフューテックスのリストを取得/設定します

概要

#include <linux/futex.h> #include <syscall.h> long get_robust_list(int pid, struct robust_list_head* *head_ptr,                          size_t * long set_robust_list(struct robust_list_head* head, size_t len);

説明

堅牢なfutex実装では、スレッドが終了するときにロック解除される堅牢なfutexのスレッドごとのリストを保持する必要があります。 これらのリストはユーザー空間で管理され、カーネルはリストの先頭の位置についてのみ通知されます。

*get_robust_list* は、_pid_引数で定義されたTIDを持つスレッドの堅牢なフューテックスリストの先頭を返します。 _pid_が0の場合、返されるヘッドは現在のスレッドに属します。 _head_ptr_は、堅牢なフューテックスのリストの先頭へのポインターです。 *get_robust_list* 関数は、リストの先頭のアドレスをここに保存します。 _len_ptr_は、長さ変数へのポインターです。 *get_robust_list* は** sizeof(*** *__ head_ptr __* )*をここに保存します。
*set_robust_list* は、現在のスレッドが所有する堅牢なフューテックスのリストの先頭を_head_に設定します。 _len_は***** __ head__のサイズです。

返り値

*set_robust_list* および *get_robust_list* 関数は、操作が成功するとゼロを返し、それ以外の場合はエラーコードを返します。

エラー

_len_値がカーネルが予期する構造体 struct robust_list_head のサイズと一致しない場合、 set_robust_list 関数は EINVAL で失敗します。

*get_robust_list* 関数は、現在のプロセスにTID _pid_のスレッドの堅牢なフューテックスリストを表示する許可がない場合、 *EPERM* で失敗します。TID_pid_のスレッドが存在しない場合、 *ESRCH* 、または *EFAULT* 堅牢なフューテックスリストのヘッドを_head_引数で指定されたスペースに格納できない場合

アプリケーションの使用

スレッドは、堅牢なフューテックスリストを1つだけ持つことができます。したがって、この機能を使用するアプリケーションは、glibcが提供する堅牢なミューテックスを使用する必要があります。

システムコールはデバッグ目的でのみ使用でき、通常の操作には必要ありません。

両方のシステムコールは、アプリケーションプログラムでは関数として使用できません。 syscall (3)関数を使用して呼び出すことができます。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

|  

[cols="^",]

|Advertisements