LIBDISK

Section: C Library Functions (3)
索引 jman

BSD mandoc
 

索引

名称

Open_Disk Clone_Disk Free_Disk Debug_Disk Set_Bios_Geom Delete_Chunk Collapse_Disk Collapse_Chunk Create_Chunk All_FreeBSD CheckRules Disk_Names Set_Boot_Mgr Set_Boot_Blocks Write_Disk Cyl_Aligned Next_Cyl_Aligned Prev_Cyl_Aligned Track_Aligned Next_Track_Aligned Prev_Track_Aligned Create_Chunk_DWIM MakeDev MakeDevDisk ShowChunkFlags ChunkCanBeRoot chunk_n slice_type_name - スライスおよびパーティションラベルに対するインタフェースライブラリ  

索引

ライブラリ

Lb libdisk  

索引

書式

In sys/types.h In libdisk.h

Vt extern const char *chunk_n[] ; Ft const char * Fn slice_type_name int type int subtype Ft struct disk * Fn Open_Disk const char *devname Ft struct disk * Fn Clone_Disk struct disk *disk Ft void Fn Free_Disk struct disk *disk Ft void Fn Debug_Disk struct disk *disk Ft void Fn Set_Bios_Geom struct disk *disk u_long cyl u_long heads u_long sects Ft int Fn Delete_Chunk struct disk *disk struct chunk * Ft void Fn Collapse_Disk struct disk *disk Ft int Fn Collapse_Chunk struct disk *disk struct chunk *chunk Ft int Fn Create_Chunk struct disk *disk u_long offset u_long size chunk_e type int subtype u_long flags Ft void Fn All_FreeBSD struct disk *d int force_all Ft char * Fn CheckRules struct disk * Ft char ** Fn Disk_Names void Ft void Fn Set_Boot_Mgr struct disk *d const u_char *bootmgr const size_t bootmgr_size Ft int Fn Set_Boot_Blocks struct disk *d const u_char *boot1 const u_char *boot2 Ft int Fn Write_Disk struct disk *d Ft int Fn Cyl_Aligned struct disk *d u_long offset Ft u_long Fn Next_Cyl_Aligned struct disk *d u_long offset Ft u_long Fn Prev_Cyl_Aligned struct disk *d u_long offset Ft int Fn Track_Aligned struct disk *d u_long offset Ft u_long Fn Next_Track_Aligned struct disk *d u_long offset Ft u_long Fn Prev_Track_Aligned struct disk *d u_long offset Ft struct chunk * Fn Create_Chunk_DWIM struct disk *d struct chunk *parent u_long size chunk_e type int subtype u_long flags Ft int Fn MakeDev struct chunk *c const char *path Ft int Fn MakeDevDisk struct disk *d const char *path Ft char * Fn ShowChunkFlags struct chunk *c Ft char * Fn ChunkCanBeRoot struct chunk *c  

索引

解説

libdisk は、低レベルのディスクスライス およびパーティションラベルに対するインタフェースを提供します。 ほとんどの関数は、 `struct' disk または `struct' chunk という型の引数を取り動作します。

どちらの型もプログラマにはわかりにくいので、完全を期すために 以下に内部構造を示します。

struct disk {
        char            *name;
        u_long          flags;
        u_long          bios_cyl;
        u_long          bios_hd;
        u_long          bios_sect;
        u_char          *bootmgr;
        u_char          *boot1;
        u_char          *boot2;
        struct chunk    *chunks;
        u_long          sector_size;
};
関数によるフラグ値は `DISK_ON_TRACK' だけで、ディスクが On-Track ディスクマネージャによって 操作されていることを意味します。

struct chunk {
        struct chunk    *next;
        struct chunk    *part;
        struct disk     *disk;
        long            offset;
        u_long          size;
        u_long          end;
        char            *name;
        char            *oname;
        chunk_e         type;
        int             subtype;
        u_long          flags;
        void            (*private_free)(void*);
        void            *(*private_clone)(void*);
        void            *private_data;
};
`type' フィールドは `whole,' unknown, fat, freebsd, extended, part, unused のうち、どれか一つの値を取ります。

以下は `struct' chunk において `flags' が取ることのできる値です。

CHUNK_PAST_1024
シリンダ 1024 を越えているため、この領域からはブートできません。
CHUNK_BSD_COMPAT
この領域は、 BSD 互換であり、 `wd0s4f' -> wd0f のような短縮形も使用できます。
CHUNK_ALIGN
この領域は整合(align)していなければなりません。
CHUNK_IS_ROOT
この `part' は rootfs であり、パーティションを `a' に 割り振ります。
CHUNK_ACTIVE
MBR 内のアクティブスライスです。
CHUNK_FORCE_ALL
すべての BIOS によるジオメトリ解釈を無視し、与えられたディスク全体を 強制的に Fx 用とします。

フィールド `private_data,' `private_free', private_clone は、 アプリケーション固有のデータ、およびその管理のためのものです。この 機能がなければ、記憶域の管理はできず、クローニングによりポインタが 複製されても解放できなくなります。

Fn Open_Disk は、名前付ディスクを open し、一群 (populated) のツリーを 返します。

Fn Clone_Disk は、ツリーの複製を作成します。 ``Undo'' 機能に便利です。

Fn Free_Disk は、 Fn Open_Disk または Fn Clone_Disk で作成されたツリーを解放します。

Fn Debug_Disk は、標準出力 (stdout) のツリーの内容を出力します。

Fn Set_Bios_Geom は、 BIOS が使うジオメトリを設定します。

Fn Delete_Chunk は、disk_space の領域を解放します。

Fn Collapse_Disk および Fn Collapse_Chunk は、まだ試験的なものなので使ってはいけません。

Fn Create_Chunk は、指定されたパラメータを持つ領域を生成します。

Fn All_FreeBSD は、ディスク全体を一つの Fx の領域を作成します。 `force_all' が設定されていると、BIOS によるジオメトリ解釈をすべて無視します。

Fn CheckRules は、このディスクレイアウトの矛盾した区画規則についての警告を 文字列 `char*' として返します。

Fn Disk_Names は、 すべてのディスク名 (wd0, wd1 ...) を格納した文字列群 `char**' を返します。 配列と同様、各ポインタを手動で解放しなければなりません。

Fn Set_Boot_Mgr は、このブートマネージャをディスク上で使うように設定します。 Fn Write_Disk が呼び出されるときに書き込まれたものを取得します。

Fn Set_Boot_Blocks は、ディスク上で使われるブートブロックを設定します。 Fn Write_Disk が呼び出されるときに書き込まれたものを取得します。

Fn Write_Disk は、MBR 、ディスクラベル、ブートブロック、ブートマネージャ すべてを書き込みます。

Fn Cyl_Aligned は、BIOS ジオメトリに従って `offset' がシリンダ上に整合しているかどうかを調べます。

Fn Next_Cyl_Aligned は、BIOS ジオメトリに従って `offset' を次のシリンダに切り上げて配置します。

Fn Prev_Cyl_Aligned は、BIOS ジオメトリに従って `offset' を前のシリンダに切り下げて配置します。

Fn Track_Aligned は、BIOS ジオメトリに従って `offset' がトラック上に配置されているかどうかを調べます。

Fn Next_Track_Aligned は、BIOS ジオメトリに従って `offset' を次のトラックに切り上げて配置します。

Fn Prev_Track_Aligned は、BIOS ジオメトリに従って `offset' がトラック上に配置されているかどうかを調べます。

Fn Create_Chunk_DWIM は、指定された親領域内に指定サイズのパーティションを生成し、 そのポインタを返します。 最初に見つかった十分な大きさの未使用領域が使われます。

Fn MakeDev は、この領域のデバイスノードを作成します。

Fn MakeDevDisk は、ディスク上にあるすべての領域のデバイスノードを作成します。

Fn ShowChunkFlags は、フラグを表示する文字列を返します。

Fn ChunkCanBeRoot は、領域が `/' になれるならばヌルを返します。

領域名を示す文字列は、外部配列変数 chunk_n を使って直接アクセスできます。

Fn slice_type_name は、指定された `type' `subtype' に関連づけられた名前文字列を返します。 Fn slice_type_name がスライスに対して "unknown" を返すのは、 未知の場合、すなわち `/' です。

 

索引

作者

An -nosplit libdisk は、 An Poul-Henning Kamp が作成しました。

このマニュアルページの執筆者は An J:org Wunsch です。


 

索引

Index

名称
ライブラリ
書式
解説
作者

jman



Time: 07:06:57 GMT, January 12, 2009