[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[update] Documentation/kernel/elf-notes.html Documentation/kernel/index.listDocumentation/kernel/kgdb.list Documentation/kernel/lazyfpu.html
- Subject: [update] Documentation/kernel/elf-notes.html Documentation/kernel/index.listDocumentation/kernel/kgdb.list Documentation/kernel/lazyfpu.html
- From: kano@na.rim.or.jp (OKANO Takayoshi)
- To: www-changes-ja@jp.netbsd.org
- Date: Thu, 18 Nov 2004 00:45:27 +0900 (JST)
- Message-Id: <200411171545.AAA89094@shell.rim.or.jp>
- Delivered-To: mailing list www-changes-ja@jp.netbsd.org
- Mailing-List: contact www-changes-ja-help@jp.netbsd.org; run by ezmlm-idx
以下の各ページの更新をしました。ツッコミをお願いします。
Documentation/kernel/elf-notes.html: 1.9 -> 1.19
Documentation/kernel/index.list: 1.76 -> 1.80
Documentation/kernel/kgdb.list: 1.12 -> 1.17
Documentation/kernel/lazyfpu.html: 1.6 -> 1.15
今日中に異議がなければ、 commit します。
対応する原文の差分はそれぞれ
http://cvsweb.netbsd.org/bsdweb.cgi/htdocs/Documentation/kernel/elf-notes.html.diff?r1=1.9&r2=1.19
http://cvsweb.netbsd.org/bsdweb.cgi/htdocs/Documentation/kernel/index.list.diff?r1=1.76&r2=1.80
http://cvsweb.netbsd.org/bsdweb.cgi/htdocs/Documentation/kernel/kgdb.list.diff?r1=1.12&r2=1.17
http://cvsweb.netbsd.org/bsdweb.cgi/htdocs/Documentation/kernel/lazyfpu.html.diff?r1=1.6&r2=1.15
です。
Index: Documentation/kernel/elf-notes.html
===================================================================
RCS file: /cvsroot/htdocs/ja/Documentation/kernel/elf-notes.html,v
retrieving revision 1.11
diff -u -r1.11 elf-notes.html
--- elf-notes.html 2004/11/10 15:09:42 1.11
+++ elf-notes.html 2004/11/17 15:40:19
@@ -3,7 +3,7 @@
<html>
<head>
<!-- Copyright (c) 1994-2003
-s The NetBSD Foundation, Inc. ALL RIGHTS RESERVED. -->
+ The NetBSD Foundation, Inc. ALL RIGHTS RESERVED. -->
<meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP">
<link rev="made" href="mailto:www@JP.NetBSD.org">
<title>NetBSD Documentation: Vendor-specific ELF Note Elements</title>
@@ -11,7 +11,7 @@
<body bgcolor="#FFFFFF" text="#000000">
<table><tr><td>
-<a href="../../../Misc/daemon-copy.html" origlink="../../Misc/daemon-copy.html">
+<a href="../../Misc/disclaimer.html#bsd-daemon">
<img align="middle" src="../../../images/BSD-daemon.jpg" origlink="../../images/BSD-daemon.jpg" border=0
width=146 height=129 alt="BSD daemon"></a>
</td><td align=center>
@@ -43,10 +43,10 @@
<li><a href="#note-names">知られている ELF 記号名</a>
<li><a href="#note-contents">ベンダー特有の ELF 記号</a>
<li><a href="#note-creation">ELF PT_NOTE セクションの作成</a>
+<li><a href="#netbsd-note">NetBSD ELF PT_NOTE セクションの作成</a>
</ul>
<p>
-
もし、あなたのオペレーティングシステムが
ベンダー特有記号要素
をバイナリーのマークに使っていて、ここの一覧に載っていないなら、
@@ -97,12 +97,10 @@
<pre>
Note Name 文字列 組織
---------------- ------------
- "NetBSD\0" <a href="#note-contents-netbsd">The NetBSD
-Project</a>
+ "NetBSD\0" <a href="#note-contents-netbsd">The NetBSD Project</a>
0x4e 0x65 0x74 0x42 0x53 0x44 0x00 (語長:7)
- "GNU\0" <a href="#note-contents-gnu">The GNU
-Project</a>
+ "GNU\0" <a href="#note-contents-gnu">The GNU Project</a>
0x47 0x4e 0x55 0x00 (語長:4)
</pre>
@@ -161,26 +159,19 @@
<pre>
Name Size: 4
- Desc Size: 4
+ Desc Size: 16
Type: 4-byte 整数 0x01 という値が入っている
Name: "GNU\0"
- Desc: 4-byte 整数 OS/version (下記参照のこと)
-</pre>
-
- OS/version 値 はこのようにエンコードされていて:
-
-<pre>
- 0xAAMMmmss
-
- AA = ABI (0 = Linux, 1 = Mach/Hurd)
- MM = ABI major バージョン番号
- mm = ABI minor バージョン番号
- ss = ABI micro バージョン番号
+ Desc: 4 個の 4-byte 整数。順序は以下のとおり:
+ OS (0 = Linux, 1 = Hurd, 2 = Solaris),
+ Major, Minor, Teeny (この ABI をサポートするearliest
+ OS バージョンで最も古いものの)
</pre>
-例えば、 OS/version が 0x01020304 というのは
- Mach/Hurd システムの ABI バージョン 2.3.4 が必要なバイナリーだと言うことを示
-します。
+GNU C ライブラリーでの ELF notes の使い方について、さらなるドキュメンテーションは、
+<a href="http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/abi-tags?cvsroot=glibc">abi-tags</a>
+および
+<a href="http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/csu/abi-note.S?cvsroot=glibc">csu/abi-note.S</a> のソースを調べてください。
</dl>
@@ -209,12 +200,14 @@
<pre>
.section ".note.ident", "a"
.p2align 2
- .long 5 # name サイズ (詰め物含まず)
- .long 8 # desc サイズ (詰め物含まず)
+ .long 1f - 0f # name サイズ (詰め物含まず)
+ .long 3f - 2f # desc サイズ (詰め物含まず)
.long 0x01234567 # type
- .ascii "NaMe\0\0\0\0" # name (4 byte 境界で詰め物をされた)
- .long 0x76543210 # desc (4 byte 境界で詰め物をされた)
+0: .asciz "NaMe" # name
+1: .p2align 2
+2: .long 0x76543210 # desc
.long 0x89abcdef
+3: .p2align 2
</pre>
<p>
@@ -226,6 +219,26 @@
desc 値は、2つの 4-byte 整数、0x76543210 と 0x89abcdef です。
<p>
+<h2><a name="netbsd-note">NetBSD ELF PT_NOTE セクションの作成</a></h2>
+
+NetBSD カーネルは、 ELF バイナリー中に PT_NOTE セクションが見つからない場合に
+ENOEXEC を返します。通常、ネイティブ NetBSD アプリケーション用の
+PT_NOTE セクションは <code>crtbegin.c</code>
+に含まれています。以下に示す例は、 NetBSD/alpha でこのセクションを作成するものです。
+(他のポートではアセンブラーの文法が若干異なることがありますが、
+エンディアンの違いを除けば、個々の断片はすべて同じです)
+
+<pre>
+ .section ".note.netbsd.ident", "a"
+ .long 2f-1f
+ .long 4f-3f
+ .long 1
+1: .asciz "NetBSD"
+2: .p2align 2
+3: .long 199905
+4: .p2align 2
+</pre>
+
<hr>
<a href="./"><em>NetBSD ドキュメンテーション: カーネル</em>にもどる</a>
<hr>
@@ -233,8 +246,8 @@
<table width="100%"><tr><td>
<table><tr><td>
<a href="../../"><img
- src="../../../images/NetBSD-flag.gif" origlink="../../images/NetBSD-flag.gif" border="0"
- width="91" height="42" alt=""></a>
+ src="../../../images/NetBSD-flag.png" origlink="../../images/NetBSD-flag.png" border="0"
+ width="90" height="90" alt=""></a>
</td><td>
<a href="../../"><img
src="../../../images/empty.gif" origlink="../../images/empty.gif" border="0"
@@ -243,8 +256,8 @@
</td><td>
<table><tr><td>
<a href="../../Documentation/"><img
- src="../../../images/NetBSD-flag.gif" origlink="../../images/NetBSD-flag.gif" border="0"
- width="91" height="42" alt=""></a>
+ src="../../../images/NetBSD-flag.png" origlink="../../images/NetBSD-flag.png" border="0"
+ width="90" height="90" alt=""></a>
</td><td>
<a href="../../Documentation/"><img
src="../../../images/empty.gif" origlink="../../images/empty.gif" border="0"
@@ -258,7 +271,7 @@
(連絡先 - <a href="http://www.NetBSD.org/cgi-bin/feedback.cgi">英語</a>,
<a href="mailto:www@JP.NetBSD.org">日本語:
www@JP.NetBSD.org</a>)<br>
- $NetBSD: elf-notes.html,v 1.9 2001/05/18 01:11:19 dent Exp $<br>
+ $NetBSD: elf-notes.html,v 1.19 2004/10/30 22:33:26 jschauma Exp $<br>
<a href="../../Misc/disclaimer.html">Copyright © 1994-2003
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.</a>
</small>
Index: Documentation/kernel/index.list
===================================================================
RCS file: /cvsroot/htdocs/ja/Documentation/kernel/index.list,v
retrieving revision 1.26
diff -u -r1.26 index.list
--- index.list 2004/11/10 15:09:42 1.26
+++ index.list 2004/11/17 15:40:19
@@ -24,6 +24,7 @@
<li><a href="uvm.html">UVM、あたらしい仮想メモリーシステム</a>
<li><a href="vfork.html">なぜ伝統的な vfork() を実装したか</a>
<li><a href="kgdb.html">GDB を用いた NetBSD カーネルのデバッグ HOWTO</a>
+<li><a href="../../../Documentation/kernel/non-exec.html" origlink="non-exec.html">非実行マップ機能に関する情報</a>
</ul>
<h2>その他のオンライン ドキュメント</h2>
@@ -38,11 +39,14 @@
<li><a href="http://www.pdl.cs.cmu.edu/RAID/index.html">RAID と RAIDframe 関連の多くのドキュメント</a>
<li><a href="http://dinsen.net/netbsd/kernel.html">Anders Dinsen の
カーネルドキュメンテーションの概要</a>
-<li>Jochen Kunz による "NetBSD Device Driver Writing Guide" [<a
-href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-treiber_schreiben-1.0.1.pdf.gz">gzip 圧縮された
-PDF</a> | <a
-href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-treiber_schreiben-1.0.1.ps.gz">gzip 圧縮された
-PS</a>] (<small>ドイツ語</small>)
+<li>Jochen Kunz による "NetBSD Device Driver Writing Guide"<br>
+[<a href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-driver_writing-1.0.1e.pdf.gz">gzip 圧縮された PDF</a> |
+ <a href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-driver_writing-1.0.1e.ps.gz">gzip 圧縮された PS</a>] (<small>英語</small>)<br>
+
+[<a href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-treiber_schreiben-1.0.1.pdf.gz">gzip 圧縮された PDF</a> |
+ <a href="http://www.unixag-kl.fh-kl.de/~jkunz/projekte/NetBSD-treiber_schreiben-1.0.1.ps.gz">gzip 圧縮された
+PS</a>] (<small>ドイツ語</small>)<br>
+
<li><a href="http://www.home.unix-ag.org/bmeurer/NetBSD/howto-lkm.html">NetBSD ローダブルカーネルモジュール入門</a></li>
</ul>
@@ -598,7 +602,7 @@
(連絡先 - <a href="http://www.NetBSD.org/cgi-bin/feedback.cgi">英語</a>,
<a href="mailto:www@JP.NetBSD.org">日本語:
www@JP.NetBSD.org</a>)<br>
- $NetBSD: index.list,v 1.76 2003/11/21 21:12:56 jschauma Exp $<br>
+ $NetBSD: index.list,v 1.80 2004/08/13 11:28:34 daniel Exp $<br>
<a href="../../Misc/disclaimer.html">Copyright © 1994-2003
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.</a>
</small>
Index: Documentation/kernel/kgdb.list
===================================================================
RCS file: /cvsroot/htdocs/ja/Documentation/kernel/kgdb.list,v
retrieving revision 1.13
diff -u -r1.13 kgdb.list
--- kgdb.list 2004/03/22 19:23:05 1.13
+++ kgdb.list 2004/11/17 15:40:21
@@ -84,13 +84,14 @@
<pre>
options KGDB # remote debugger
- options "KGDB_DEVNAME=\"com\"",KGDBADDR=0x3f8,KGDBRATE=9600
+ options "KGDB_DEVNAME=\"com\"",KGDB_DEVADDR=0x3f8,KGDB_DEVRATE=9600
makeoptions DEBUG="-g" # compile full symbol table
</pre>
TARGET マシン上で使用するシリアルポートの IO アドレス(0x3f8 は tty00、
-0x2f8 は tty01 用です)に一致するように、KGDBADDR を変更してください。
-それから、KGDBRATEを、使用するビットレートに一致させてください。<p><p>
+0x2f8 は tty01 用です)に一致するように、 KGDB_DEVADDR を変更してください。
+それから、 KGDB_DEVRATE を、使用するビットレートに一致させてください。
+<p>
<li> TARGET マシンのカーネルの設定と<a href="./#how_to_build_a_kernel">
構築</a>をおこなってください。
@@ -322,7 +323,7 @@
(連絡先 - <a href="http://www.NetBSD.org/cgi-bin/feedback.cgi">英語</a>,
<a href="mailto:www@JP.NetBSD.org">日本語:
www@JP.NetBSD.org</a>)<br>
- $NetBSD: kgdb.list,v 1.12 2003/02/16 19:30:46 grant Exp $<br>
+ $NetBSD: kgdb.list,v 1.17 2004/08/02 16:18:20 hubertf Exp $<br>
<a href="../../Misc/disclaimer.html">Copyright © 1994-2003
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.</a>
</small>
Index: Documentation/kernel/lazyfpu.html
===================================================================
RCS file: /cvsroot/htdocs/ja/Documentation/kernel/lazyfpu.html,v
retrieving revision 1.10
diff -u -r1.10 lazyfpu.html
--- lazyfpu.html 2004/03/22 19:23:06 1.10
+++ lazyfpu.html 2004/11/17 15:40:21
@@ -11,8 +11,8 @@
<body bgcolor="#FFFFFF" text="#000000">
<table><tr><td>
-<a href="../../Misc/daemon-copy.html">
-<img align="middle" src="../../images/BSD-daemon.jpg" border=0
+<a href="../../Misc/disclaimer.html#bsd-daemon">
+<img align="middle" src="../../../images/BSD-daemon.jpg" origlink="../../images/BSD-daemon.jpg" border=0
width=146 height=129 alt="BSD daemon"></a>
</td><td align=center>
<h1>NetBSD ドキュメンテーション:</h1>
@@ -24,7 +24,7 @@
<table border=0 cellpadding=0 cellspacing=0 width="98%"><tr><td bgcolor="#000000">
<table border=0 cellpadding=4 cellspacing=1 width="100%"><tr><td bgcolor="#ffffff">
<font size="-1">
-ここでは、どのようにlazy FPU コンテキストスイッチは動作するのかについて
+どのようにlazy FPU コンテキストスイッチは動作するのかについて
説明します。<br>
<br>
Tohru Nishimura<br>
@@ -37,89 +37,94 @@
<p><h3>
<font>どのように lazy FPU コンテキストスイッチは動作するのか</font>
</h3><dl><dt><dd>
-FPU が、各プロセス毎の予約済みのメモリー領域(NetBSD/mips では、
-これは u_pcb の中にあります)へ/から、ハードウェアコンテキスト
-全体を保存したりロードしたりすることは困難です。cpu_switch() が
-発生するたびに、プロセスからプロセスへ FPU コンテキスト全体を
-スイッチするのは現実的ではありません。なぜなら、FPU コンテキスト
-の保存と再ロードのオペレーションは、著じるしい CPU サイクルを消費
-するからです。
+FPU ハードウェアは一般的に、 current FPU コンテキストを保持するための
+ハードウェアレジスター一式を持っています。各プロセスは、
+そのプロセスが実行されていない間、プロセスの状態を保持するために、
+プロセス毎の予約済みのメモリー領域 (NetBSD/mips では u_pcb の中にあります)
+を持っています。コンテキストスイッチの度に FPU
+コンテキストの保存と再ロードをすることは、著しい CPU サイクルを消費します。
+
<p>
最近の CPU は、FP インストラクションを実行するために、この機能を
-無効にする方法を提供しています。CPU が FP インストラクションを
+無効にできる方法を提供しています。 CPU が FP インストラクションを
実行しようとしている時、例外が投げられ、オペレーティングシステム
は実行中のプロセスに「自分が使う事のできる FPU がない」という状況
-の処理を開始します。OS は、プロセスが FPU を使う事ができるように
+の処理を開始します。 OS は、プロセスが FPU を使う事ができるように
チェック、準備をおこないます。そして、例外が投げられた時、FP イン
ストラクションを実行するためにプロセスを再スタートさせます。今度は、
FP インストラクションは通常通りに実行され、後で他のプロセスが、この
プロセスから FPU を取得するまで、「FPU が使用不可能」という状況は
発生しません。
+
<p>
すべてのプロセスは、FPU の所有権無しで生成され、かつ FPU の使用を
禁じられています。プロセスが FP インストラクションを実行しなけ
-れば、何も特別な事はおこらず、プロセスはおだやかに終了します。
+れば、何も特別な事はおこらず、そのプロセスの実行中に FPU
+には手出しされません。
+
<p>
もし、FPU の使用を禁止されたプロセスが、FP インストラクションを
実行しようとすると、CPU は、「使用不可能」例外を投げます。グロー
バルな変数 fpcurprocはどのプロセスが FPU を所有しているかを示します。
-「使用不可能」例外が発生した時、FPU ハードウェアは所有プロセスの
-「実行イメージ」のスナップショットを持っていなればなりません。
-これは、例外を投げた curproc とは異なります。使用不可能ハンドラー
-は、fpcurproc のために、多くの FP レジスターで構成される FPU ハード
-ウェアコンテキストを保存します。そして、curproc の FPU コンテキスト
-を FPU レジスターにロードします。プロセスの FPU コンテキストが最初
-にロードされると、すべての FPU はクリアーされます。このように、FPU
-の使用を要求する他のプロセスが見つかるまで、FPU コンテキストスイッチ
-は延期されます。なぜなら、大多数のプログラムは、プロセスが生存して
-いる間、FP インストラクションを実行しません。延期された lazy FPU
-コンテキストスイッチは、やっかいな FPU の保存/ロードの操作の仕事を
-できるだけ避けて、きちんと動作します。
+「使用不可能」例外が発生した時、FPU ハードウェアはその所有プロセスの
+状況を持っています。これは、例外を投げた curproc とは異なります。
+使用不可能ハンドラーは、 FPU ハードウェアコンテキストを fpcurproc
+の予約された領域へ保存します。そして、curproc の FPU コンテキストを
+FPU レジスターにロードします。プロセスの FPU コンテキストが最初
+にロードされると、すべての FPU はクリアーされます。このように、
+他のプロセスが FPU の使用を要求するまで、FPU コンテキストスイッチ
+は延期されます。なぜなら、大多数のプログラムは、 FP インストラクションを
+一切実行しません。延期された lazy FPU コンテキストスイッチは、
+高コストな FPU の保存/ロードの回数を大幅に減らします。
+
<p>
<em> fpcurproc が指すプロセスが終了するときに、lazy に割り当てられ
ている FP context を、正しく解放するように注意しなければいけないこ
とを Matt Thomas が指摘してくれました。</em>
+
<p>
この厄介な FPU コンテキストスイッチシンドロームは、MMU がプロセス
コンテキストスイッチに直面した時の状況に似ています。
MMU は、プロセスのアドレススペースを表現するための複雑な内部「状態」、
あるいは、もっと奇妙な実行環境の「タスクディスクリプション」を持つ、
-より複雑な機構です。プロセスの本質と特徴(nature and feature)は、CPU
+より複雑なデバイスです。プロセスの本質と特徴(nature and feature)は、CPU
ハードウェアにより定義されます。いくつかの MMU は、プロセスのアドレス
スペースを示すメモリー領域をさすレジスターを使います。このような場合、
-MMU コンテキストスイッチは、特別な MMU インストラクションを実行する
-し、新しいプロセスのために他の値をレジスタに再ロードすることにより、
-きちんと動作します。ある種の CPU デザインは、MMU コンテキストスイッチ
-のためにさわがしい見せ物のような仕事をおこなうことで有名です。おどろ
+複数のメモリー領域を持ち、特別な MMU インストラクションを実行して
+レジスターを更新することでメモリー領域を切り替えることにより、
+MMU コンテキストスイッチにかかるコストを下げることができます。
+ある種の CPU デザインは、MMU コンテキストスイッチ
+のためにさわがしい見せ物のような方式をおこなうことで有名です。おどろ
くべき長さの CPU サイクルを消費して、ごく小数のレジスターの保存/ロード
し、新しいプロセスの実行コンテキストを確立するためにメモリー領域をいった
りきたりします。ハードウェアによるコンテキストスイッチのケーパビリティー
のサポートは非常にコストが高く、実際問題めったに使われることはありません。
そして、多くの人は、それは CISC 風、あるいはシリコンの浪費だと考えています。
+
</dd></dl>
<hr>
-<a href=""><em>NetBSD ドキュメンテーション: カーネル</em>にもどる</a>
+<a href="./"><em>NetBSD ドキュメンテーション: カーネル</em>にもどる</a>
<hr>
<table width="100%"><tr><td>
<table><tr><td>
<a href="../../"><img
- src="../../images/NetBSD-flag.gif" border="0"
- width="91" height="42" alt=""></a>
+ src="../../../images/NetBSD-flag.png" origlink="../../images/NetBSD-flag.png" border="0"
+ width="90" height="90" alt=""></a>
</td><td>
<a href="../../"><img
- src="../../images/empty.gif" border="0"
+ src="../../../images/empty.gif" origlink="../../images/empty.gif" border="0"
width="1" height="1" alt="NetBSD ">ホームページ</a>
</td></tr></table>
</td><td>
<table><tr><td>
<a href="../../Documentation/"><img
- src="../../images/NetBSD-flag.gif" border="0"
- width="91" height="42" alt=""></a>
+ src="../../../images/NetBSD-flag.png" origlink="../../images/NetBSD-flag.png" border="0"
+ width="90" height="90" alt=""></a>
</td><td>
<a href="../../Documentation/"><img
- src="../../images/empty.gif" border="0"
+ src="../../../images/empty.gif" origlink="../../images/empty.gif" border="0"
width="1" height="1" alt="NetBSD ">Documentation top level</a>
</td></tr></table>
</td></tr></table>
@@ -128,7 +133,7 @@
<address>
<small>
<a href="http://www.NetBSD.org/cgi-bin/feedback.cgi">(Contact us)</a>
- $NetBSD: lazyfpu.html,v 1.6 2001/03/16 14:50:44 dent Exp $<br>
+ $NetBSD: lazyfpu.html,v 1.15 2004/10/30 22:33:26 jschauma Exp $<br>
<a href="../../Misc/disclaimer.html">Copyright © 1994-2003
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.</a>
</small>