www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | LICENSE

commit 016ef388c9056d9a8057f6f9497647a726ac4f03
parent e19deed169c371c8f6b36124caeb0f05a87c8786
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Tue,  5 Nov 2024 21:06:15 +0900

update

Diffstat:
Mman/draft/9p.html | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Mpub/draft/9p.html | 71++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mpub/rss.xml | 4++--
3 files changed, 168 insertions(+), 12 deletions(-)

diff --git a/man/draft/9p.html b/man/draft/9p.html @@ -383,13 +383,108 @@ size[4] Rwalk tag[2] nwqid[2] nwqid*(qid[13]) <code>nwname</code>と<code>nwqid</code>が一致した場合は\ 最後まで移動できたことになる。\ </p> +<p> +<code>walk</code>は<code>fid</code>を増殖させる唯一の方法である。\ +</p> + +<h3>open、create</h3> +<p> +<code>fid</code>を開いて(作成して)読み書きできる状態にする。 +</p> +<pre><code>\ +size[4] Topen tag[2] fid[4] mode[1] +size[4] Ropen tag[2] qid[13] iounit[4] + +size[4] Tcreate tag[2] fid[4] name[s] perm[4] mode[1] +size[4] Rcreate tag[2] qid[13] iounit[4] +</code></pre> +<p> +<code>open</code>は<code>fid</code>と紐付いたファイルを開く。\ +<code>mode</code>は読み込み専用の<code>OREAD</code>、\ +書き込み専用の<code>OWRITE</code>、\ +読み書きの<code>ORDWR</code>等である。\ +ファイルを開く手順は以下の通り: +<ol> +<li><code>attach</code>でルートディレクトリの<code>fid</code>を取得</li> +<li>ルートディレクトリの<code>fid</code>から\ +<code>walk</code>で開きたいファイルの<code>fid</code>を取得</li> +<li>その<code>fid</code>を<code>open</code>で開く</li> +</ol> +</p> +<p> +<code>create</code>は<code>fid</code>と紐付いたディレクトリに\ +新しいファイルを作成する。\ +<code>creat</code>ではなく<code>create</code>である。\ +作成が成功したら<code>fid</code>は新しく作成されたファイルに紐付く。\ +</p> + +<h3>read、write</h3> +<p> +ファイルを読み書きする。 +</p> +<pre><code>\ +size[4] Tread tag[2] fid[4] offset[8] count[4] +size[4] Rread tag[2] count[4] data[count] + +size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count] +size[4] Rwrite tag[2] count[4] +</code></pre> +<p> +<code>read</code>は<code>fid</code>の<code>offset</code>バイト目\ +から<code>count</code>バイト読む。\ +読んだデータと、読めたデータサイズが\ +<code>data</code>、<code>count</code>ととして返される。\ +<code>write</code>は<code>fid</code>の<code>offset</code>バイト目\ +に<code>count</code>バイトのデータ<code>data</code>を書く。\ +書きこめたサイズが<code>count</code>として返される。\ +ファイルを読み書きするためには\ +あらかじめ<code>fid</code>を<code>open</code>する必要がある。\ +</p> -<h3>open, create</h3> -<h3>create</h3> -<h3>read</h3> -<h3>write</h3> <h3>clunk</h3> +<p> +<code>fid</code>を忘れる。 +</p> +<pre><code>\ +size[4] Tclunk tag[2] fid[4] +size[4] Rclunk tag[2] +</code></pre> +<p> +いらなくなった<code>fid</code>を忘れる。\ +一度忘れた<code>fid</code>は<code>walk</code>で別のファイルを取得する際に\ +再利用できる。\ +</p> + <h3>remove</h3> -<h3>stat, wstat</h3> +<p> +ファイルを削除する。 +</p> +<pre><code>\ +size[4] Tremove tag[2] fid[4] +size[4] Rremove tag[2] +</code></pre> +<p> +<code>fid</code>と紐付いたサーバー上のファイルを削除する。\ +<code>fid</code>は<code>clunk</code>したのと同様に忘れられる。\ +</p> + +<h3>stat、wstat</h3> +<p> +ファイルの属性を読み書きする。 +</p> +<pre><code>\ +size[4] Tstat tag[2] fid[4] +size[4] Rstat tag[2] stat[n] + +size[4] Twstat tag[2] fid[4] stat[n] +size[4] Rwstat tag[2] +</code></pre> +<p> +<code>stat</code>はファイルの属性を読む。\ +読めた情報は<code>stat</code>として返される。\ +<code>wstat</code>はファイルの属性を<code>stat</code>に変更する。\ +<code>stat</code>はファイルの名前や<code>qid</code>、サイズ、\ +作成日、更新日等の情報がバイト列になったものである。\ +</p> <h2>Goによる実装</h2> diff --git a/pub/draft/9p.html b/pub/draft/9p.html @@ -238,14 +238,75 @@ size[4] Rwalk tag[2] nwqid[2] nwqid*(qid[13]) <code>fid</code>を起点に移動する。移動先のファイルを<code>newfid</code>にセットする。移動するディレクトリの数を<code>nwname</code>に、移動するディレクトリの名前を移動する順に<code>wname</code>にそれぞれセットする。例えばカレントディレクトリから<code>./dir1/dir2/</code>に移動する場合、<code>nwname</code>は<code>2</code>、<code>wname</code>は<code>{"dir1", "dir2"}</code>となる。<code>wname</code>の最後の要素はディレクトリでなくファイルでもいい。</p> <p> <code>wname</code>の最初の要素への移動が失敗した場合は<code>Rerror</code>が返される。それ以外の場合は<code>Rwalk</code>が返され、<code>qid</code>は移動が成功した順番にそのファイルの<code>qid</code>がセットされる。<code>nwname</code>と<code>nwqid</code>が一致した場合は最後まで移動できたことになる。</p> +<p> +<code>walk</code>は<code>fid</code>を増殖させる唯一の方法である。</p> + +<h3>open、create</h3> +<p> +<code>fid</code>を開いて(作成して)読み書きできる状態にする。 +</p> +<pre><code>size[4] Topen tag[2] fid[4] mode[1] +size[4] Ropen tag[2] qid[13] iounit[4] + +size[4] Tcreate tag[2] fid[4] name[s] perm[4] mode[1] +size[4] Rcreate tag[2] qid[13] iounit[4] +</code></pre> +<p> +<code>open</code>は<code>fid</code>と紐付いたファイルを開く。<code>mode</code>は読み込み専用の<code>OREAD</code>、書き込み専用の<code>OWRITE</code>、読み書きの<code>ORDWR</code>等である。ファイルを開く手順は以下の通り: +<ol> +<li><code>attach</code>でルートディレクトリの<code>fid</code>を取得</li> +<li>ルートディレクトリの<code>fid</code>から<code>walk</code>で開きたいファイルの<code>fid</code>を取得</li> +<li>その<code>fid</code>を<code>open</code>で開く</li> +</ol> +</p> +<p> +<code>create</code>は<code>fid</code>と紐付いたディレクトリに新しいファイルを作成する。<code>creat</code>ではなく<code>create</code>である。作成が成功したら<code>fid</code>は新しく作成されたファイルに紐付く。</p> + +<h3>read、write</h3> +<p> +ファイルを読み書きする。 +</p> +<pre><code>size[4] Tread tag[2] fid[4] offset[8] count[4] +size[4] Rread tag[2] count[4] data[count] + +size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count] +size[4] Rwrite tag[2] count[4] +</code></pre> +<p> +<code>read</code>は<code>fid</code>の<code>offset</code>バイト目から<code>count</code>バイト読む。読んだデータと、読めたデータサイズが<code>data</code>、<code>count</code>ととして返される。<code>write</code>は<code>fid</code>の<code>offset</code>バイト目に<code>count</code>バイトのデータ<code>data</code>を書く。書きこめたサイズが<code>count</code>として返される。ファイルを読み書きするためにはあらかじめ<code>fid</code>を<code>open</code>する必要がある。</p> -<h3>open, create</h3> -<h3>create</h3> -<h3>read</h3> -<h3>write</h3> <h3>clunk</h3> +<p> +<code>fid</code>を忘れる。 +</p> +<pre><code>size[4] Tclunk tag[2] fid[4] +size[4] Rclunk tag[2] +</code></pre> +<p> +いらなくなった<code>fid</code>を忘れる。一度忘れた<code>fid</code>は<code>walk</code>で別のファイルを取得する際に再利用できる。</p> + <h3>remove</h3> -<h3>stat, wstat</h3> +<p> +ファイルを削除する。 +</p> +<pre><code>size[4] Tremove tag[2] fid[4] +size[4] Rremove tag[2] +</code></pre> +<p> +<code>fid</code>と紐付いたサーバー上のファイルを削除する。<code>fid</code>は<code>clunk</code>したのと同様に忘れられる。</p> + +<h3>stat、wstat</h3> +<p> +ファイルの属性を読み書きする。 +</p> +<pre><code>size[4] Tstat tag[2] fid[4] +size[4] Rstat tag[2] stat[n] + +size[4] Twstat tag[2] fid[4] stat[n] +size[4] Rwstat tag[2] +</code></pre> +<p> +<code>stat</code>はファイルの属性を読む。読めた情報は<code>stat</code>として返される。<code>wstat</code>はファイルの属性を<code>stat</code>に変更する。<code>stat</code>はファイルの名前や<code>qid</code>、サイズ、作成日、更新日等の情報がバイト列になったものである。</p> <h2>Goによる実装</h2> </article> diff --git a/pub/rss.xml b/pub/rss.xml @@ -5,8 +5,8 @@ <description>ウェブページの更新履歴</description> <language>ja-jp</language> <link>https://www.mtkn.jp</link> -<lastBuildDate>Mon, 4 Nov 2024 21:10:24 +0900</lastBuildDate> -<pubDate>Mon, 4 Nov 2024 21:10:24 +0900</pubDate> +<lastBuildDate>Tue, 5 Nov 2024 21:02:53 +0900</lastBuildDate> +<pubDate>Tue, 5 Nov 2024 21:02:53 +0900</pubDate> <docs>https://www.rssboard.org/rss-specification</docs> <item> <title>麻婆豆腐</title>