[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 886] B-Free OS で何ができるか ( コマンドの一覧 ) (2/2)
隆一です。
[b-free: 885] の続きです。
----------------------------------------------------------------------------
2.5 POSIX マネージャ関係
FTP サーバにおいてある B-Free OS をそのまま make すると、POSIX マネー
ジャが起動するようになっています。バージョン 0.0.35 では、ファイルの
読み書きができるようになっています。
ファイルの読み書きをするためには、POSIX ファイルシステムをマウントする
必要がありますが、boot すると自動的にマウントするようになっています。
(HD から起動した場合。FD から起動した場合には、メッセージが出て FD を
入れるよう促します)
POSIX マネージャは、システムコールに対応したメッセージを受けとって実行
するようになっていますので、ここで説明するコマンドもほとんどがシステム
コールのデバッグ用に作ったものです。
■ posix
posix コマンドは、POSIX のファイルシステムを root ファイルシステムとし
てマウントします。POSIX のファイルをアクセスする時には、root ファイル
システムをあらかじめマウントしておく必要があります。が、デフォルトでは、
起動時にすでにマウントしているはずなので、このコマンドを実行する必要は
まずありません。
posix デバイス名
のようにファイルシステムとなるデバイスの名前を指定します。
デバイスの名前は、UNIX の規則にしたがい、ファイル名の形式で指定するよ
うになっています。といっても、ファイル名を単純に B-Free のデバイスドラ
イバの名前、デバイス指定子へと置換しているだけです。
指定できるデバイス名は、次のとおりです。
/dev/ideXY IDE タイプの HD
X ... ドライブ番号 (0 または 1)
Y ... パーティション番号 (1 から 4)
/dev/fdX FD (フロッピィディスク)
X ... ドライブ番号
デバイス名が間違っていたりすると、エラーメッセージを出します。
■ pnoaction
何もしないシステムコール (noaction) を実行します。
POSIX マネージャの呼び出しの処理が動いているかどうかを確認するために作
りました。
引数は何もつけず、単にコマンドを指定するだけです。
■ pdir
指定したディレクトリの中身を表示します。
引数としてディレクトリを指定する必要があります。
pdir /
というように入力すると、root ファイルシステムのトップディレクトリ(root
ディレクトリ)にあるファイルの一覧が表示されます。
■ pcat
指定したファイルの内容を表示します。
pdir /etc/fstab
というように入力すると、/etc/fstab というファイルの中身をすべて表示し
ます。
2.6 その他のコマンド
■ graph
おそらく、一番派手なコマンドがこの graph です。
このコマンドは、コンソール (console) デバイスドライバの VGA 処理のデバッ
グのために作成したものです。
このコマンドを実行すると、ビデオカードのモードをグラフィクモード (VGA)
に変更し、一見ウィンドウを表示しているような画面を表示します (が、単
にウィンドウに見えるだけで絵を書いているだけに過ぎなかったりします)。
3. 新しいコマンドを作るには
新しいコマンドを追加するには、kernel/BTRON/init ディレクトリにある、
command.c を変更する必要があります。
command.c の最初の方に command_table[] という配列があります。この配列
にコマンドの一覧が書いてあります。
struct command command_table[] =
{
{ "echo", echo },
{ "help", help },
<中略>
};
配列中の各要素は、コマンド名とコマンドを実際に処理する関数のアドレスが
入っています。関数のアドレスを指定するために、配列 command_table[] の
前で関数の定義をする必要があります。
static W echo (W ac, B **av);
static W read (W ac, B **av);
関数は、2 つの引数 ac と av を受けとります。ac はコマンドの引数の数
(何も指定しない場合には、1 となります) を表わしています。av は引数の
実際の中身を指します。この辺は通常のアプリケーションの main 関数と
同じ形式になっています。
関数は、特に static である必要はありません。command.c のファイルの外に
関数の実体を置いておきたい場合には、ヘッダファイルにその関数の extern
定義を書いておきます。そして、command.c から include することによって
配列 command_table[] にその関数のアドレスを指定することができます。
command.c の中に extern の定義を書くこともできます。しかし、その場合関
数の実体を定義したファイルのために、extern の定義をもう一つ書く必要が
あります。2 重定義はバグの元になるので、ヘッダファイルに extern の定義
を書いた方がいいように思います。
コマンドを実行する関数は、処理が成功すると 0 を失敗すると 0 以外の数を
返します。といっても、返り値によって何かするわけではないので、常に 0
を返すようにしても、特に問題は起きないでしょう。
∞. 変更履歴
1997/11/20 第1版
----------------------------------------------------------------------------
p----------------------------------------------------------------------q
| FROM R.Night |
| E-mail: |
| rnaitoh@st.rim.or.jp |
b----------------------------------------------------------------------d