136 lines
4.9 KiB
Groff
136 lines
4.9 KiB
Groff
.\" Copyright (c) 2002 Marcel Moolenaar
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\"
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %FreeBSD: src/lib/libc/sys/uuidgen.2,v 1.7 2003/06/27 13:41:29 yar Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd May 26, 2002
|
|
.Dt UUIDGEN 2
|
|
.Os
|
|
.Sh 名称
|
|
.Nm uuidgen
|
|
.Nd 全世界的に唯一の識別子の生成
|
|
.Sh ライブラリ
|
|
.Lb libc
|
|
.Sh 書式
|
|
.In sys/uuid.h
|
|
.Ft int
|
|
.Fn uuidgen "struct uuid *store" "int count"
|
|
.Sh 解説
|
|
.Fn uuidgen
|
|
システムコールは
|
|
.Fa count
|
|
個の全世界的に唯一の識別子 (UUID) を生成し、それらを
|
|
.Fa store
|
|
によって指されるバッファへ書込みます。
|
|
この識別子は全世界的に唯一の識別子の異形である DEC version 1 の
|
|
文法とセマンティクスに従って生成されます。
|
|
この識別子のより詳細な記述は下記を参照してください。
|
|
利用可能な node フィールドのための IEEE 802 アドレスが無い場合には、
|
|
個々のシステムコールの呼び出し毎に、ランダムなマルチキャストアドレスが
|
|
生成されます。
|
|
時間基準の UUID の生成のアルゴリズムに従って、
|
|
新しいランダムクロックシーケンスを強制します。
|
|
それによって、識別子が唯一である可能性が増します。
|
|
.Pp
|
|
複数の識別子が生成されなければならない時には、
|
|
.Fn uuidgen
|
|
システムコールは、密度の濃い識別子の集合を生成します。
|
|
これの意味するところは、
|
|
集合の中で最小の識別子よりも大きくかつ、
|
|
集合の中で最大の識別子よりも小さくかつ、
|
|
集合の中にまだ存在していないという条件の識別子が存在しないということです。
|
|
.Pp
|
|
地球規模に唯一の識別子 (GUID) としても知られる全世界的に唯一の識別子は、
|
|
128 ビットのバイナリ表現を持っています。
|
|
これらのビットの分類と意味は以下の構造体によって記述され、
|
|
そのフィールドの説明が続きます:
|
|
.Bd -literal
|
|
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];
|
|
};
|
|
.Ed
|
|
.Bl -tag -width ".Va clock_seq_hi_and_reserved"
|
|
.It Va time_low
|
|
60 ビットのタイムスタンプの下位の 32 ビットです。
|
|
このフィールドはネイティブのバイトオーダで格納されます。
|
|
.It Va time_mid
|
|
60 ビットのタイムスタンプの上位 28 ビットのうちの下位の 16 ビットです。
|
|
このフィールドはネイティブのバイトオーダで格納されます。
|
|
.It Va time_hi_and_version
|
|
60 ビットのタイムスタンプの上位 12 ビットと 4 ビットのバージョン番号の
|
|
複合されたものです。
|
|
バージョン番号は 16 ビットのフィールドの上位 4 ビットに格納されます。
|
|
このフィールドはネイティブのバイトオーダで格納されます。
|
|
.It Va clock_seq_hi_and_reserved
|
|
14 ビットのシーケンス番号の上位 6 ビットと 2 ビットのバリアント値の
|
|
複合されたものです。
|
|
バリアント値の幅はそのバリアントによって決定されることに注意してください。
|
|
.Fn uuidgen
|
|
システムコールによって生成される識別子が持つバリアント値は 10b です。
|
|
バリアント値はこのフィールドの上位ビットに格納されます。
|
|
.It Va clock_seq_low
|
|
14 ビットのシーケンス番号の下位 8 ビットです。
|
|
.It Va node
|
|
そのノードのインタフェースの 1 つの 6 バイトの IEEE 802 (MAC) アドレスです。
|
|
そのようなインタフェースが存在しない場合には、ランダムなマルチキャスト
|
|
アドレスが代わりに使用されます。
|
|
.El
|
|
.Pp
|
|
バイナリ表現はバイトオーダに対して敏感です。
|
|
あらゆるマルチバイトのフィールドは、ローカルまたはネイティブのバイトオーダで
|
|
格納されなければならず、また識別子はそのバイトオーダに同意しない
|
|
ホストに対して送信されるときに、変換されなければなりません。
|
|
しかしながら、この仕様は具体的な用語で文書化されていません。また、
|
|
その他の点ではこのシステムコールの範囲を超えています。
|
|
.Sh 戻り値
|
|
.Rv -std
|
|
.Sh エラー
|
|
.Fn uuidgen
|
|
システムコールは失敗することがあります:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EFAULT
|
|
.Fa store
|
|
によって指されるバッファに、どれか 1 つのまたは全ての識別子を書き込めません。
|
|
.It Bq Er EINVAL
|
|
.Fa count
|
|
引数が 1 よりも小さい、またはハード上限の 2048 よりも大きいです。
|
|
.El
|
|
.Sh 関連項目
|
|
.Xr uuidgen 1 ,
|
|
.Xr uuid 3
|
|
.Sh 規格
|
|
この識別子は DCE 1.1 RPC の仕様に適合して表現され、生成されます。
|
|
.Fn uuidgen
|
|
システムコールそれ自身は仕様の一部ではありません。
|
|
.Sh 歴史
|
|
.Fn uuidgen
|
|
システムコールは
|
|
.Fx 5.0
|
|
ではじめて登場しました。
|