スポンサーリンク

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
60 ビットのタイムスタンプの上位 28 ビットのう ちの下位の 16 ビットです。このフィールドはネイ ティブのバイトオーダで格納されます。

time_hi_and_version
60 ビットのタイムスタンプの上位 12 ビットと 4 ビットのバージョン番号の複合されたものです。 バージョン番号は 16 ビットのフィールドの上位 4 ビットに格納されます。このフィールドはネイティ ブのバイトオーダで格納されます。

clock_seq_hi_and_reserved
14 ビットのシーケンス番号の上位 6 ビットと 2 ビットのバリアント値の複合されたものです。バリ アント値の幅はそのバリアントによって決定される ことに注意してください。 uuidgen() システム コールによって生成される識別子が持つバリアント 値は 10b です。バリアント値はこのフィールドの 上位ビットに格納されます。

clock_seq_low
14 ビットのシーケンス番号の下位 8 ビットです。

node
そのノードのインタフェースの 1 つの 6 バイトの IEEE 802 (MAC) アドレスです。そのようなインタ フェースが存在しない場合には、ランダムなマルチ キャストアドレスが代わりに使用されます。

バイナリ表現はバイトオーダに対して敏感です。あらゆるマルチバイトのフィー ルドは、ローカルまたはネイティブのバイトオーダで格納されなければならず、 また識別子はそのバイトオーダに同意しないホストに対して送信されるときに、 変換されなければなりません。しかしながら、この仕様は具体的な用語で文書化 されていません。また、その他の点ではこのシステムコールの範囲を超えていま す。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

uuidgen() システムコールは失敗することがあります:

       [EFAULT]

store によって指されるバッファに、どれか 1 つのまたは 全ての識別子を書き込めません。

[EINVAL]
count
引数が 1 よりも小さい、またはハード上限の 2048 よりも大きいです。

関連項目

uuidgen(1), uuid(3)

規格

この識別子は DCE 1.1 RPC の仕様に適合して表現され、生成されます。 uuidgen() システムコールそれ自身は仕様の一部ではありません。

歴史

uuidgen() システムコールは FreeBSD 5.0 ではじめて登場しました。

FreeBSD 10.0 May 26, 2002 FreeBSD 10.0

スポンサーリンク