これからsys/kern/init_main.c読んでみます。
【参考】
・「The Design and Implementation of the 4.4BSD Operating System」
の第2章
http://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/index.html
・*BSDでのアセンブリ
http://www.int80h.org/bsdasm/
なんか検索してみてもあんまりハックサイトひっかからないね。
Linuxより伝統あるはずなのに。
お前ら*BSDのカーネルをハックしますか?
1見習デーモン
NGNG5726
NGNG それから、__attribute__はgccの拡張だよ。info参照。
58歴史に名を残すかもしれない男
NGNG 僕は、超研究員大学生でありウィザドですが、
既存のOSはしょーもないので新しく作ります。
そこで質問です。
FreeBSDってカーネルとか弄ったりして、
ソフトとか入れて整形したものを
Linuxのディストリビュージオンみたいに配ってもいいですか?
または、FreeBSDなどを参考にして、
一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
既存のOSはしょーもないので新しく作ります。
そこで質問です。
FreeBSDってカーネルとか弄ったりして、
ソフトとか入れて整形したものを
Linuxのディストリビュージオンみたいに配ってもいいですか?
または、FreeBSDなどを参考にして、
一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
5950
NGNG 26さん、ありがとう!!
objdump --all-headersの出力は、はっきり言って分からなかった
んですが、ヒントは掴めたです。
______________________________
// a.c
extern int __start_my;
extern int __stop_my;
static void test1(void)
{
printf("test1\n");
}
static void test2(void)
{
printf("test2\n");
}
static void (*__p1)(void) __attribute__ ((section ("my"))) = test1;
static void (*__p2)(void) __attribute__ ((section ("my"))) = test2;
int main(void)
{
void (**p)(void);
for (p = &__start_my; p < &__stop_my; p++) {
(**p)();
}
return 0;
}
______________________________
// b.c
static void test3(void)
{
printf("test3\n");
}
static void test4(void)
{
printf("test4\n");
}
static void (*__p3)(void) __attribute__ ((section ("my"))) = test3;
static void (*__p4)(void) __attribute__ ((section ("my"))) = test4;
が動いて一人感動しております。
最初、関数のコード部分もmyセクションに入れてしまって
core吐きまくったです。
objdump --all-headersの出力は、はっきり言って分からなかった
んですが、ヒントは掴めたです。
______________________________
// a.c
extern int __start_my;
extern int __stop_my;
static void test1(void)
{
printf("test1\n");
}
static void test2(void)
{
printf("test2\n");
}
static void (*__p1)(void) __attribute__ ((section ("my"))) = test1;
static void (*__p2)(void) __attribute__ ((section ("my"))) = test2;
int main(void)
{
void (**p)(void);
for (p = &__start_my; p < &__stop_my; p++) {
(**p)();
}
return 0;
}
______________________________
// b.c
static void test3(void)
{
printf("test3\n");
}
static void test4(void)
{
printf("test4\n");
}
static void (*__p3)(void) __attribute__ ((section ("my"))) = test3;
static void (*__p4)(void) __attribute__ ((section ("my"))) = test4;
が動いて一人感動しております。
最初、関数のコード部分もmyセクションに入れてしまって
core吐きまくったです。
NGNG
>58
既存のソゥースについたBSD スタァイルのコピーライトオンを改変しなけれヴぁ
問題にないはずです。
頑張ってくださイね。
既存のソゥースについたBSD スタァイルのコピーライトオンを改変しなけれヴぁ
問題にないはずです。
頑張ってくださイね。
61見習いデーモン
NGNG おひさしぶりです。
己の能力不足ですっかりカーネルの深海に溺れて土左衛門になって
スレに出入りすることもなかったんですが、
まだ地味に続いてたんですね。
26さんが情報提供してくださったりして、スレの雰囲気は良い方向
に向かってますね。
全然ついていけないんですけど、今MINIXいじって基本を勉強してるんで
いつか追いつければなぁと思ってます。
っつーかみなさんどうやってそんなにスキルつけたんですか。
己の能力不足ですっかりカーネルの深海に溺れて土左衛門になって
スレに出入りすることもなかったんですが、
まだ地味に続いてたんですね。
26さんが情報提供してくださったりして、スレの雰囲気は良い方向
に向かってますね。
全然ついていけないんですけど、今MINIXいじって基本を勉強してるんで
いつか追いつければなぁと思ってます。
っつーかみなさんどうやってそんなにスキルつけたんですか。
62名無しさん@お腹いっぱい。
NGNG >>61
oskitで遊ぶ
oskitで遊ぶ
6326
NGNG >>58
どんな簡単な物でもいいから、とりあえずドライバ書いて見たら?
今まであるドライバからコピペしたり、/usr/share/examples/にある
スクリプトを使ったテンプレートを元に書けばそんなに難しくないよ。
頭から追っていくってのは正直言うとかなり効率の悪い方法だと思う。
カーネルがprintf(9)で吐くメッセージをたよりにしたりしながら
調べるのが吉。そうすれば例えばSYSINITの実装はとりあえず理解しなくても
先に進むことが出来るし。
どんな簡単な物でもいいから、とりあえずドライバ書いて見たら?
今まであるドライバからコピペしたり、/usr/share/examples/にある
スクリプトを使ったテンプレートを元に書けばそんなに難しくないよ。
頭から追っていくってのは正直言うとかなり効率の悪い方法だと思う。
カーネルがprintf(9)で吐くメッセージをたよりにしたりしながら
調べるのが吉。そうすれば例えばSYSINITの実装はとりあえず理解しなくても
先に進むことが出来るし。
NGNG
なんか面白そうだな。
*BSD 入れたくなってきた。
*BSD 入れたくなってきた。
65名無しさん@お腹いっぱい。
NGNG Solarisのカーネルハックもここでいいの?
66名無しさん@お腹いっぱい。
NGNG Solarisの kernel source見ると、変な copyrightに汚染されませんか?
# 会社の決算期にあたって、bladeが来ない...
# 会社の決算期にあたって、bladeが来ない...
67age
NGNG age
NGNG
NGNG
Uniform Driver Interfaceどうよ?
NGNG
えと、えと。そうしてほしいの?おにいちゃん。ってのはともかく。
要はいじりたいコンポネントからせめて行くのが得策なわけで。
頭から見ても良い事はあんまり無いと言うのが本質ですな。
他機種移植だったらそれが一番大事だけど。
(もっとも、例にだしたのがドライバなのは私がその見飽きた事を
しているからでして。)次はportalfs元にいじるかな。小さくて簡単そうだし。
kernfsあたりも簡単そうだったけど。FreeBSDからは消えたし。
UDIですかぁ。うーん。努力は認めるけど....
要はいじりたいコンポネントからせめて行くのが得策なわけで。
頭から見ても良い事はあんまり無いと言うのが本質ですな。
他機種移植だったらそれが一番大事だけど。
(もっとも、例にだしたのがドライバなのは私がその見飽きた事を
しているからでして。)次はportalfs元にいじるかな。小さくて簡単そうだし。
kernfsあたりも簡単そうだったけど。FreeBSDからは消えたし。
UDIですかぁ。うーん。努力は認めるけど....
7168
NGNG >>70
個々のファイルシステムじゃなくてVFS。
VMいじれとまでは言わないっす。ドライバ書きは多いけど、そっから
昇格するやつがいないと思ったみょ。
わしも、しょうもないドライバを昔書いたけど、それいらいカーネルは
いじってないでし。(もはや一介の犬厨です)
個々のファイルシステムじゃなくてVFS。
VMいじれとまでは言わないっす。ドライバ書きは多いけど、そっから
昇格するやつがいないと思ったみょ。
わしも、しょうもないドライバを昔書いたけど、それいらいカーネルは
いじってないでし。(もはや一介の犬厨です)
72名無しさん
NGNG ソラリスのカーネルスレッドがマッチするよう
Sparcは設計されているのですか?
Sparcは設計されているのですか?
73名無しさん@お腹いっぱい。
NGNG あげ
NGNG
ドライバ書きより VFS いじる方が格が上だとでも?
ただのレイヤ違いじゃん。
ただのレイヤ違いじゃん。
NGNG
NGNG
禿同 >>74
78名無しさん@お腹いっぱい。
NGNG age
79仕様書無しさん
NGNG これも
80名無しさん@お腹いっぱい。
NGNG つづきプリーズ揚げ
81名無しさん
NGNGBSDに誰か じゃーなりんぐできるFS実装してくれたまへ。
あと、圧縮できるFSもキボンヌ
NGNG
>>82
ライセンスどうするんだろ? JFSもGPLだったよね?
ライセンスどうするんだろ? JFSもGPLだったよね?
NGNG
8583
NGNG うーんやっぱそうなるよねぇ。先が長そうだ...
とりあえず応援age
とりあえず応援age
NGNG
JFS ってわざわざスクラッチから作るほどイイの?
NGNG
とりあえずジャーナリングするファイルシステムがひとつは欲しい
NGNG
JFS for Linux を移植するよりスクラッチから書いた方が早い
NGNG
>>88
その情熱をLFSに注いでクレ
その情熱をLFSに注いでクレ
NGNG
LFSとかsoftupdateみたいなディスクへのリクエストの順序で整合性を保つ方式は
そろそろダメというのが世間のコンセンサスな気がする
そろそろダメというのが世間のコンセンサスな気がする
NGNG
ジャーナリングって
ディスクへのリクエストの順番と
実際書き込まれる順番が
デタラメになっても問題ないの?
ディスクへのリクエストの順番と
実際書き込まれる順番が
デタラメになっても問題ないの?
NGNG
NGNG
書き込み順序保証ってSCSIやATAのtagged queuingじゃダメなの?
NGNG
>>93
その手の機能をすべてのメタデータの書き込みに対して使うと遅いよ
その手の機能をすべてのメタデータの書き込みに対して使うと遅いよ
NGNG
NGNG
97名無しさん@お腹いっぱい。
NGNG age てみよう。
98名無しさん@お腹いっぱい。
NGNG 勉強のため、FreeBSD 4.5-RELEASE 上で俺ファイルシステムを
作りたいと思っています。とりあえず、procfs のように、カーネルの
覗き穴的な fs がいいかなと。
が、サパーリわかりません。というわけで、fs のスケルトンが欲しい
のですが、よいスケルトンはどれでしょうか。
ファイルサイズ的に miscfs/deadfs/ かなぁと思うのですが、deadfs は
どういう目的の fs なのかがわかりません。ぜひアドバイスをお願いします。
作りたいと思っています。とりあえず、procfs のように、カーネルの
覗き穴的な fs がいいかなと。
が、サパーリわかりません。というわけで、fs のスケルトンが欲しい
のですが、よいスケルトンはどれでしょうか。
ファイルサイズ的に miscfs/deadfs/ かなぁと思うのですが、deadfs は
どういう目的の fs なのかがわかりません。ぜひアドバイスをお願いします。
9998
NGNG deadfs は mount 方法もわからないし (そもそも mount できるのか
どうかもわからん) kernfs の方がいいかな…。
どうかもわからん) kernfs の方がいいかな…。
NGNG
procfs を換骨奪胎すればいいのでは?
101名無しさん@お腹いっぱい。
NGNG やっぱnullfsが基本では。
procfsはpseudofsレイヤができたから応用ききづらいかも。
procfsはpseudofsレイヤができたから応用ききづらいかも。
102100
NGNG nullfs は読むのに layerfs と行ったり来たりしなきゃ
いけないので面倒かもと思ったので。(NetBSD)
よく見たら >98 はFreeBSDか。
てゆーか msdosfs あたりでも見たほうがむしろ分りやすいかもとか
思ったり。
いけないので面倒かもと思ったので。(NetBSD)
よく見たら >98 はFreeBSDか。
てゆーか msdosfs あたりでも見たほうがむしろ分りやすいかもとか
思ったり。
10398
NGNG なんだこれ、ちょーかんたんじゃん! というわけでメモメモ。
/sys/conf/files に追加。
miscfs/orefs/orefs_vfsops.c standard
miscfs/orefs/orefs_vnops.c standard
/sys/sys/vnode.h に VT_OREFS を追加。
enum vtagtype {
...
VT_OREFS, /* 追加 */
};
# mkdir /sys/miscfs/orefs && cp /sys/miscfs/kernfs/* /sys/miscfs/orefs
/sys/miscfs/orefs/* を片っ端から s/kern/ore/
# cd /sys/i386/conf && config GENRIC && cd ../../compile/GENERIC
# make depend && make make install
# ln -s /sbin/mount_kernfs mount_orefs
# reboot
# mkdir /ore
# mount_orefs orefs /ore
# ls -l /ore
-r--r--r-- 1 root wheel 9 Apr 9 20:30 oresama
# cat /ore/oresama
oresama!
/sys/conf/files に追加。
miscfs/orefs/orefs_vfsops.c standard
miscfs/orefs/orefs_vnops.c standard
/sys/sys/vnode.h に VT_OREFS を追加。
enum vtagtype {
...
VT_OREFS, /* 追加 */
};
# mkdir /sys/miscfs/orefs && cp /sys/miscfs/kernfs/* /sys/miscfs/orefs
/sys/miscfs/orefs/* を片っ端から s/kern/ore/
# cd /sys/i386/conf && config GENRIC && cd ../../compile/GENERIC
# make depend && make make install
# ln -s /sbin/mount_kernfs mount_orefs
# reboot
# mkdir /ore
# mount_orefs orefs /ore
# ls -l /ore
-r--r--r-- 1 root wheel 9 Apr 9 20:30 oresama
# cat /ore/oresama
oresama!
10498
NGNG UNIX 使い始めて はや7年。やっとカーネルの世界にちょっとだけ足を踏み入れる
ことができたかな…。漏れみたいなヘタレには一生無理かとおもてたよ。感激。
というわけで、とりあえずの目標は
rootvfs/da0s1a -> vnode/1
rootvfs/ad0c -> vnode/2
vnode/1/v_flag
vnode/1/v_count
みたいな (まだわかってないので構成は適当)、各種構造体をマッピングした
ファイルシステムを作ろうと思います。
> やっぱnullfsが基本では。
nullfs の本来の使い方がいまいちわからないので、
一番サイズの小さい kernfs で行くことにしましたっす。
ことができたかな…。漏れみたいなヘタレには一生無理かとおもてたよ。感激。
というわけで、とりあえずの目標は
rootvfs/da0s1a -> vnode/1
rootvfs/ad0c -> vnode/2
vnode/1/v_flag
vnode/1/v_count
みたいな (まだわかってないので構成は適当)、各種構造体をマッピングした
ファイルシステムを作ろうと思います。
> やっぱnullfsが基本では。
nullfs の本来の使い方がいまいちわからないので、
一番サイズの小さい kernfs で行くことにしましたっす。
105名無しさん
NGNG カーネルのコンパイルについて質問です。
FreeBSD4.5でカーネルをいじってmake && make installを
しているんですが不要な部分を除いてコンパイルの時間を
短くできないでしょうか?そんな都合のいい話は
ないかもしれませんがよろしくお願いします。
FreeBSD4.5でカーネルをいじってmake && make installを
しているんですが不要な部分を除いてコンパイルの時間を
短くできないでしょうか?そんな都合のいい話は
ないかもしれませんがよろしくお願いします。
106あぼーん
NGNGあぼーん
107名無しさん@お腹いっぱい。
NGNGNGNG
>>105
本来スレ違いなんだけど…
http://www.jp.freebsd.org/www.FreeBSD.org/ja/handbook/kernelconfig.html
さらに何か疑問があればFreeBSD質問スレにGo
本来スレ違いなんだけど…
http://www.jp.freebsd.org/www.FreeBSD.org/ja/handbook/kernelconfig.html
さらに何か疑問があればFreeBSD質問スレにGo
109名無しさん@お腹いっぱい。
NGNG NULLFSは正直お勧めできない。
あれは、スタッカブルファイルシステムのテンプレ。
そうそう。Linuxネタだけど、これどうよ。(カーネル空間でORBit動かす)
http://korbit.sourceforge.net/
これ一瞬移植しようかと思ったけど、geom入ったせいで
glibと名前空間がぶつかりそう。
あれは、スタッカブルファイルシステムのテンプレ。
そうそう。Linuxネタだけど、これどうよ。(カーネル空間でORBit動かす)
http://korbit.sourceforge.net/
これ一瞬移植しようかと思ったけど、geom入ったせいで
glibと名前空間がぶつかりそう。
110名無しさん@お腹いっぱい。
NGNG うーん。
NetBSDからスタッカブルファイルシステム系全部持ってきたほうが
面白いかなぁ。
NetBSDからスタッカブルファイルシステム系全部持ってきたほうが
面白いかなぁ。
NGNG
112学生
NGNG カーネル書けるとスゴいって書き込みよく見かけますが
学生で書けたらすごいですか?
ウチの教授は書けますかね?
学生で書けたらすごいですか?
ウチの教授は書けますかね?
NGNG
NGNG
115学生
NGNG ビンゴです。
あと、以前他のスレでも見ました。
で、どうなんですか。
カーネルは上級のプロじゃないと書けないんですか?
お前ら真面目にレス下さい。
あと、以前他のスレでも見ました。
で、どうなんですか。
カーネルは上級のプロじゃないと書けないんですか?
お前ら真面目にレス下さい。
NGNG
>>115
べつにプロである必要はこれっぽっちもないわけだが
べつにプロである必要はこれっぽっちもないわけだが
117学生
NGNGNGNG
NGNG
NGNG
121117
NGNG レスありがとうございます。
ここで言う「書ける」というのは、白紙からの状態から自分で書けるという意味ですよね?
既存のプログラムを改造するとか、書籍を見て書くとか、そういう意味ではないですよね?
ここで言う「書ける」というのは、白紙からの状態から自分で書けるという意味ですよね?
既存のプログラムを改造するとか、書籍を見て書くとか、そういう意味ではないですよね?
NGNG
123名無しさん@お腹いっぱい。
NGNG >>122
UNIX使いになるためには、やっといて損はないですか?
UNIX使いになるためには、やっといて損はないですか?
NGNG
NGNG
126T大理系
NGNG みんな理系?
凄いです
尊敬します
凄いです
尊敬します
NGNG
NGNG
俺的にはドライバをバリバリ書き捲くってるような人が
プログラマとして尊敬に値すると思ってる。
カーネルはどっちかって言うと設計するものって感じだしねぇ。
プログラマとして尊敬に値すると思ってる。
カーネルはどっちかって言うと設計するものって感じだしねぇ。
NGNG
>>128
実務家っぽい御意見…
実務家っぽい御意見…
NGNG
人に訊いてからじゃないと始められない奴は結局何もできない。
hackなんてのは気づいたらやっているか、やらないと夜が明けないかのどちらかだ。
hackなんてのは気づいたらやっているか、やらないと夜が明けないかのどちらかだ。
NGNG
>>125
ネットゲーのサーバとかのように、非同期に発生する大量の要求を
うまく捌かなければならないプログラムを書くのは、
カーネルを書くのと似たようなセンスが必要な気がする。
# RDBMSとかもそうだな。
こういうシステムをうまく設計できる奴は
非常に使えるね。
ネットゲーのサーバとかのように、非同期に発生する大量の要求を
うまく捌かなければならないプログラムを書くのは、
カーネルを書くのと似たようなセンスが必要な気がする。
# RDBMSとかもそうだな。
こういうシステムをうまく設計できる奴は
非常に使えるね。
NGNG
>>130 がいいこと言った。
133学生
NGNG みなさんどうもありがとう
ところでみなさん理系ですか?
もしくはコンピュータで飯を食っている人達ですか?
ところでみなさん理系ですか?
もしくはコンピュータで飯を食っている人達ですか?
NGNG
NGNG
NGNG
あーあ
カーネルいじって遊んでたら
もー朝だよ...
寝よーっと。
カーネルいじって遊んでたら
もー朝だよ...
寝よーっと。
NGNG
カーネル・ハッカースおじさんのAAキボンヌ
NGNG
hack より fuck だと最近痛感 おっかけさぼりすぎで make world 不能状態
13926=52=.....
NGNG 某誌のネタにしますた。
140名無しさん@お腹いっぱい。
NGNG 保守age
NGNG
見習いデーモンは死んだのか?
142名無しさん@お腹いっぱい。
NGNG ど
な
たか、いらっしゃい
ま
せ
ん
か
?
な
たか、いらっしゃい
ま
せ
ん
か
?
NGNG
誰かハックしてる人いますかー。
BSDのkernel読み始めるとしたら、手をつけるところは
どこがおすすめですかねぇ
BSDのkernel読み始めるとしたら、手をつけるところは
どこがおすすめですかねぇ
NGNG
>>143
過去ログ
過去ログ
NGNG
>>143
current の SMPng
current の SMPng
146名無しさん@お腹いっぱい。
NGNGNGNG
NGNG
>>146
FreeBSD以外の*BSDってperforce使っているんですか?
FreeBSDのperforce treeってanonymousでソースを取れるんでしょうか?
できるんなら見てみたいと思っています。
FreeBSD以外の*BSDってperforce使っているんですか?
FreeBSDのperforce treeってanonymousでソースを取れるんでしょうか?
できるんなら見てみたいと思っています。
149名無しさん@お腹いっぱい。
NGNG >>148 他の*BSDでは使ってないです。
でもSMPngっていったらFreeBSDでしょ。
リポジトリのブラウズならここでどうぞ。
http://people.freebsd.org/~peter/p4db/
手元に置きたければ
http://people.freebsd.org/~peter/p4cookbook.txt
に取り方が書いてある。
でもSMPngっていったらFreeBSDでしょ。
リポジトリのブラウズならここでどうぞ。
http://people.freebsd.org/~peter/p4db/
手元に置きたければ
http://people.freebsd.org/~peter/p4cookbook.txt
に取り方が書いてある。
150名無しさん@お腹いっぱい。
NGNG FreeBSDのブートについて質問させてください。
sys/boot/common/load_elf.c を読んでるんですが、
/kernelのエントリアドレス(当方では0xc012b130)に0xff000000をマスクして
符号反転してオフセット(off)を0x40000000にしている意味がわからないです。
コメントの「i386 relocates after locore」っていうのも呪文ですし…
で、結局/kernelのプログラムヘッダの仮想アドレス(当方では0xc0100000)と
さっきのoffを加算して桁あふれさせて0x100000にして、
最終的にはこのアドレスに/kernelをロードしてるようなんですが、
なんかえらくまわりくどくないですか?私の読みが浅いだけでしょうか。
sys/boot/common/load_elf.c を読んでるんですが、
/kernelのエントリアドレス(当方では0xc012b130)に0xff000000をマスクして
符号反転してオフセット(off)を0x40000000にしている意味がわからないです。
コメントの「i386 relocates after locore」っていうのも呪文ですし…
で、結局/kernelのプログラムヘッダの仮想アドレス(当方では0xc0100000)と
さっきのoffを加算して桁あふれさせて0x100000にして、
最終的にはこのアドレスに/kernelをロードしてるようなんですが、
なんかえらくまわりくどくないですか?私の読みが浅いだけでしょうか。
151@夜勤雀棟 ◆YaKINcTg
NGNG >>150
sys/boot/common/load_elf.c
> off = - (off & 0xff000000u); /* i386 relocates after locore */
offの最上位の1バイトをクリアするだけだと。
e.g. 0xc012b130 -> 0x0012b130
>/* i386 relocates after locore */
boot2内で/kernelを16MB以下のリニアアドレス(0x00100000-)へ展開しておき、
locore.sにおいて適切なアドレス(0xc0100000-)へmapするのだと思われます。
(locore.s内でページングをenableにしている)
#ざっと眺めただけなので保証はしませんが :-p
sys/boot/common/load_elf.c
> off = - (off & 0xff000000u); /* i386 relocates after locore */
offの最上位の1バイトをクリアするだけだと。
e.g. 0xc012b130 -> 0x0012b130
>/* i386 relocates after locore */
boot2内で/kernelを16MB以下のリニアアドレス(0x00100000-)へ展開しておき、
locore.sにおいて適切なアドレス(0xc0100000-)へmapするのだと思われます。
(locore.s内でページングをenableにしている)
#ざっと眺めただけなので保証はしませんが :-p
NGNG
NGNG
NGNG
アドレスの最後の方のgameがgmakeに見えて、見に行っちゃったよ。。
155名無しさん@お腹いっぱい。
NGNG >>151
その通り。なぜ、&= ~(0xff000000)じゃないのかよう分からんけど。
で、じゃあ何故ELFヘッダの開始番地が0x100XXXなんかじゃ無くて
0xc01000XXになってるかっていうと、paging開始後はカーネル仮想メモリ
アドレスは全て0xc0000000以降になっていて、 カーネルで使用している
メモリアドレスは全てそこにマップされるから。(リンカとELFフォーマット
の機能を使えばそういう状況にも実は対応できたりするような気もするけど)
特にkernelとISAメモリ空間は(物理アドレス+0xc0000000)の位置にマップされます。
locore.sでページングを開始するまでに絶対アドレッシングが必要な
時は
#define R(foo) ((foo)-KERNBASE)
定義されるマクロを使ってアクセスしてます。
その通り。なぜ、&= ~(0xff000000)じゃないのかよう分からんけど。
で、じゃあ何故ELFヘッダの開始番地が0x100XXXなんかじゃ無くて
0xc01000XXになってるかっていうと、paging開始後はカーネル仮想メモリ
アドレスは全て0xc0000000以降になっていて、 カーネルで使用している
メモリアドレスは全てそこにマップされるから。(リンカとELFフォーマット
の機能を使えばそういう状況にも実は対応できたりするような気もするけど)
特にkernelとISAメモリ空間は(物理アドレス+0xc0000000)の位置にマップされます。
locore.sでページングを開始するまでに絶対アドレッシングが必要な
時は
#define R(foo) ((foo)-KERNBASE)
定義されるマクロを使ってアクセスしてます。
レスを投稿する
ニュース
- 【速報】習主席とトランプ大統領が電話会談 台湾問題について★3 [ニョキニョキ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに [ニョキニョキ★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 中国人「『日本は危ないから行かないように』と言われたが、日本に来たらとても安全だった」 [お断り★]
- 石破前総理「どうすれば台湾有事にならないかを考えるべき」★2 [1ゲットロボ★]
- 赤ちゃんって言うほどかわいいか?
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- 【愛国者速報】マスコミが中国人観光客に「習近平氏が訪日自粛要請しているが?」と聞いた途端、中国人観光客が黙って逃げてしまう... [856698234]
- 【高市悲報】トランプおやびん「偉大な指導者である習近平首席、米国は中国にとっての台湾問題の重要性を理解しています」 [115996789]
- トランプおやびん「米中関係は極めて強固」高市早苗「」 [834922174]
- 【画像】ブラジルの19歳超美人まんさん、同時間帯に異なる男性が膣内射精したため父親が異なる双子を出産 [776365898]
