>>924 >関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
>壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
ってことは、例えばユーザランドのある関数を実行中に
そのプロセスの実行割り当て時間を使いきった場合、
その時点で使用していたレジスタを退避するのでしょうか?
であるなら、switch_toや__switch_toを処理している時点では、
汎用レジスタを退避しなくてもいいということになるんですが。
>そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
そうなんですけど、いったいどこでそれをしているのかよくわかっていないので。
926 :
login:Penguin:04/08/29 11:10 ID:1PFwUqWG
switch_to()の前に、switch_toがやってるはず。
switch_to()は引数をeax、edxから引っこ抜くわけだから、
そのとき既に、このレジスタに(仮にA、Bとすると)その値が
保存されてないといけないわけ。
退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
ああ、面倒。ここまで書いたら解かると思いますけど。
この辺り開けば、等価なコードが書かれてるでしょう。
>>926 >switch_to()は引数をeax、edxから引っこ抜くわけだから、
>そのとき既に、このレジスタに(仮にA、Bとすると)その値が
>保存されてないといけないわけ。
引数にeaxとかが設定されているのはわかります。
>退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
>ああ、面倒。ここまで書いたら解かると思いますけど。
いえ、自分が期待していたのはどっかで汎用レジスタを退避しているのでは
と思っていたのです。どっかでpusha,popaでもしているのかなと。
なんかよくわからなくなってきたので、もう一度調べてみます。
レスしてくれた方、ありがとう。
>>925 ユーザーランドで使っているレジスタは例外発生時に退避されます。
entry.SのSAVE_ALLマクロ使ってる所。
930 :
923:04/08/30 02:36 ID:s/M5nqAJ
なんかわかったような気がしてきました。
暗闇の中に一筋の光が見えてきました。
linux programmingスレが無かったのでここで聞いてみる。
2.2用のカーネルモジュール(driver)がありまして、2.4で使いたいのですけ
ど、カーネルに変更が加わった為かソースはそのままではmakeが通らないです。
一般的な話でいいのですが、kernel2.2から2.4などバージョンを上げる時
moduleのソースはどの辺りに修正加えてますか?
>>932 オライリーの「LINUXデバイスドライバ」ぐらい持っとけ。
>>932 2.2と2.4の同じデバイスのドライバ見比べてみたらどうでしょうか。
あと、「LINUXデバイスドライバ」って英語版はWeb上で読めましたっけ。
x86カーネルだと、1GByteのメモリを使うのですら、
HIGHMEMが必要なわけですが、
HIGHMEMを使うにあたって、ペナルティ等はありますか?
2.6になって改善されたというような記事は見つかったのですが、
具体的な問題については見つかりませんでした。
936 :
login:Penguin:04/12/30 10:00:07 ID:4MuG0KSs
guluの皆様、ご教示ください。
モジュールでシステムコールを追加する方法というのはありますが、
(hoge.oをロードしてる間だけhoge()と言うシステムコールが使える)
既存のシステムコールを上書きすることはできるのでしょうか。
(hoge.oをロードしている間だけカスタマイズしたopen()、close()が使えるような)
カーネルがROなROMに焼かれているシステムですので、カーネルに直接
手を入れることができず上記のような発想で対応したいと考えています。
>>936 なお、対象のカーネルは2.4.17です。
おしえろ
# define __acquire(x)__context__(1)
__context__(1)ってのはどういう意味?
教えてくれた人には俺の妹をもれなくプレゼント!
>>939 コンテキストスイッチ。
って何だったっけ?
ああ、不完全だからおぱーいとマソこだけでいいよ。
>>940 とりあえずレスに感謝。あんた最高だよ、ただコンテキストスイッチじゃないんだよな。
不正解だから
>>940には、俺の使用済みティッシュ(3年分)をもれなくプレゼント!
__context__(1)ってのはどうもgcc拡張っぽい気がするんだ。
このスレ最高
943 :
login:Penguin:05/02/03 12:58:08 ID:8pVcdBBv
linux2.6 の include/asm-generic/percpu.h の per_cpu() がどういうものなのか
理解できずに苦しんでます。どうかご教授ください。
うぉ!2週間前か…。
946 :
943:05/02/23 08:44:24 ID:L5tOcRY0
>>944 ありがとうございますm(_ _)m
半分、あきらめかけていました。
947 :
CPUID:05/02/25 14:48:05 ID:T5ngmMgI
ユーザ空間からプロセススクリプトのアドレス取得する方法があれば教えて下さい。
プロセススクリプト? 何のことを言おうとしているのだろう・・・
949 :
login:Penguin:05/02/25 23:10:03 ID:L0S86Pvn
すみません。
すプロセスディスクリプタの誤りです。
>>949 そんなんユーザー空間から見えちゃまずいだろう。
951 :
login:Penguin:05/02/26 13:57:10 ID:NTEY/KLT
何をするつもりだ
>>949 お前は一人で世界を救おうというのか!
おい。
カーネルを理解したいのだ。
「この本をこの通りに順番に読め!」
というのがあったら、教えてください。
953 :
login:Penguin:05/02/26 21:54:11 ID:PsgioYqx
↓の2つのマクロの意味が分かりません。もう限界です。
これ以上理解できない状態が続くと、妻を道連れに逝くかもしれません。
そうなったらお前らすごい後悔するよな、そうだよな、そうだろ!
心の中で否定しても無駄だ、絶対後悔しちゃうぞ。
後悔したくないよな、そうだよな。
じゃー、さっさと教えてちょ!
include/linux/compiler.h
# define __releases(x)__attribute__((context(1,0)))
# define __acquire(x)__context__(1)
すいません、ちょっと強気に迫ってみましたが、教えてください。
本当に困ってます。頼みます。m(_ _)m
>>952 1. UnixUserのLinux2.6解読室
2. 詳解Linuxカーネル
3. Linuxのソース
>>955 詳細Linuxカーネルは持ってます。
UnixUserのブートの本も。
ただ、それに至る知識がないのです。
Linuxプログラミング(ソフトバンクのやつ)も読んでいるのですが、
「何かが足りない」感じなのです。
UNIXカーネルの設計でも読んで、修行します。
>>956 恐らくハードウェアの知識と根性
>>954 それバージョンいくつ?そんな内容ないし。
それに__attribute__について知りたいならgccのinfoで
C Extensionの項目の
* Function Attributes:: Declaring that functions have no side effects,
or that they can never return.
* Attribute Syntax:: Formal syntax for attributes.
* Variable Attributes::Specifying attributes of variables.
* Type Attributes::Specifying attributes of types.
この辺り見れば?
>>956 あくまで個人的な意見だが、Linuxカーネルはプロセッサの知識
が無いと苦しい。
「はじめて読む8086」→「はじめて読む486」
を読んで、プロセッサの知識を身につけておいた方が良いと思う。
ただ、「あれやって、これやって、そしてLinuxカーネルを読もう」
とあまり遠回りをするのではなく、プロセッサとC言語の知識が
あったら、すぐにLinuxカーネルを読み始めた方がよいように思う。
960 :
954:05/02/27 21:00:55 ID:BnGxFurs
>>958 とりあえずレス、サンクス!感謝感謝感謝
Linux2.6.10です。
探してみたんだけど見つかりません>gccのinfo (ToT)
context()っていう関数が一体、どの関数のことなのか知りたいです。
962 :
960:05/03/01 07:37:21 ID:yi/Urpst
>>961 サンクス、ちょっと試してみます!
追って報告する!
963 :
960:05/03/01 11:16:17 ID:yi/Urpst
仕事を2chに丸投げですか そうですか。
>>963 >これ以上停滞してると、・・・お、お客さんが怖い・・・
ソースを解析する仕事??
出来もしない仕事なんて引き受けるなよ…
967 :
960:05/03/01 13:45:21 ID:yi/Urpst
>>964-966 スイマセン。
ソースを解析する仕事じゃないんだけど、ちょっと行き詰ってまして・・・。
むしろ
>>963の質問よりも仕事内容の方が気になった...
969 :
960:05/03/01 16:13:44 ID:yi/Urpst
とある医療関連会社のシステムの試作(主にデバドラ)をやってます。
下請けなので断れない立場です(T_T)
できもしない仕事請けるなよ。
おたがい不幸になるだけだ。
>>969 ちょっと調べたら自分はわかったよ。
言っておくけどデバドラ開発ならこれらは知らなくても別に問題ないよ。
無視してもいい。
ちょっとだけヒント:これらはgccでは使用しません
973 :
960:05/03/01 16:44:06 ID:yi/Urpst
>>972 サンクス!x9
か、かなり気が楽になったよ。お前は神だ!
できればどこを調べたのか知りたいのだが・・・頼む.com
>>970は厳しいね。
仕事、断れるくらい大きい会社に勤めてるんだろうね。うらやましぃ...
>>973 >できればどこを調べたのか知りたいのだが・・・頼む.com
(ーー;)
無視してもよいと言ってるではないか...
Use the source and google,
>>963 − May the source be with
>>963!