UUIDGEN(2) FreeBSD システムコールマニュアル UUIDGEN(2)
名称
uuidgen − 全世界的に唯一の識別子の生成 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/uuid.h> int |
uuidgen(struct uuid *store, int count); |
解説 |
uuidgen() システムコールは count 個の全世界的に唯一の識別子 (UUID) を生成 し、それらを store によって指されるバッファへ書込みます。この識別子は全世 界的に唯一の識別子の異形である DEC version 1 の文法とセマンティクスに従っ て生成されます。この識別子のより詳細な記述は下記を参照してください。利用 可能な node フィールドのための IEEE 802 アドレスが無い場合には、個々のシ ステムコールの呼び出し毎に、ランダムなマルチキャストアドレスが生成されま す。時間基準の UUID の生成のアルゴリズムに従って、新しいランダムクロック シーケンスを強制します。それによって、識別子が唯一である可能性が増しま す。 複数の識別子が生成されなければならない時には、 uuidgen() システムコール は、密度の濃い識別子の集合を生成します。これの意味するところは、集合の中 で最小の識別子よりも大きくかつ、集合の中で最大の識別子よりも小さくかつ、 集合の中にまだ存在していないという条件の識別子が存在しないということで す。 地球規模に唯一の識別子 (GUID) としても知られる全世界的に唯一の識別子は、 128 ビットのバイナリ表現を持っています。これらのビットの分類と意味は以下 の構造体によって記述され、そのフィールドの説明が続きます: struct uuid { |
uint32_t |
time_low; |
|||
uint16_t |
time_mid; |
|||
uint16_t |
time_hi_and_version; |
|||
uint8_t |
clock_seq_hi_and_reserved; |
|||
uint8_t |
clock_seq_low; |
|||
uint8_t |
node[_UUID_NODE_LEN]; |
}; |
time_low
60 ビットのタイムスタンプの下位の 32 ビットで す。このフィールドはネイティブのバイトオーダで 格納されます。 time_mid time_hi_and_version clock_seq_hi_and_reserved clock_seq_low node バイナリ表現はバイトオーダに対して敏感です。あらゆるマルチバイトのフィー ルドは、ローカルまたはネイティブのバイトオーダで格納されなければならず、 また識別子はそのバイトオーダに同意しないホストに対して送信されるときに、 変換されなければなりません。しかしながら、この仕様は具体的な用語で文書化 されていません。また、その他の点ではこのシステムコールの範囲を超えていま す。 戻り値 |
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。 |
エラー
uuidgen() システムコールは失敗することがあります: |
[EFAULT]
store によって指されるバッファに、どれか 1 つのまたは 全ての識別子を書き込めません。 [EINVAL] 関連項目 |
uuidgen(1), uuid(3) |
規格
この識別子は DCE 1.1 RPC の仕様に適合して表現され、生成されます。 uuidgen() システムコールそれ自身は仕様の一部ではありません。 |
歴史
uuidgen() システムコールは FreeBSD 5.0 ではじめて登場しました。 FreeBSD 10.0 May 26, 2002 FreeBSD 10.0 |