Cで記述された linux とかだと,デバイスドライバは
struct device {
int (*open)(int arg);
int (*close)();
int (*read)(int arg);
int (*write)(int arg);
int (*ioctl)(int arg);
};
のような構造体で管理されるのですが,
C++で記述されたAireOSでは
class device {
virtual int open(int arg)=0;
virtual int close()=0;
virtual int read(int arg)=0;
virtual int write(int arg)=0;
virtual int ioctl(int arg)=0;
};
というクラスを継承して実装されるようですね.
OrangePekoeの後継か (スコア:2, 興味深い)
ひょっとしてクローズド?
(だからと言って/.jpのニュースに相応しくないと言うつもりはない。)
Re:OrangePekoeの後継か (スコア:4, 興味深い)
0.15は「Orange Pekoeの遺志を継ぐ最後のリリース」だそうです。
OrangePekoeは64bitのたたき台となるようなオープンソースな独自OSを目指していました。
それはAireOSに受け継がれていますし、最後のリリースであるからには。
そのへんはちゃんと試せばわかる・・・のですが、あなたのためにソースをupしておきましたよ。
http://aireos.org/sv.cgi/ver_20050328/
#しかし、セクションローカルかぁ^^;;
ソースを読んでみました. (スコア:3, 参考になる)
ソースを軽く読んで見ました.
Cで記述された linux とかだと,デバイスドライバは
struct device {
int (*open)(int arg);
int (*close)();
int (*read)(int arg);
int (*write)(int arg);
int (*ioctl)(int arg);
};
のような構造体で管理されるのですが,
C++で記述されたAireOSでは
class device {
virtual int open(int arg)=0;
virtual int close()=0;
virtual int read(int arg)=0;
virtual int write(int arg)=0;
virtual int ioctl(int arg)=0;
};
というクラスを継承して実装されるようですね.
ただこれだけでは,いまいちC++で記述したメリットが感じられないです.
smart pointer を使ったリソース管理のような,C++ならではの実装は行っていないのでしょうか?
詳しい方,解説をお願いします.
# IGenericDevice の volume_info vi; で管理しているのかな?
# doxygen あたりを使っていただけると,ソースをしっかり読めるのですが.
Re:ソースを読んでみました. (スコア:2, 参考になる)
クラスを使ってるのはグラフィックスドライバだけです。
ドキュメントの整理等は人手不足で手が回らない状況ですみません。
Re:OrangePekoeの後継か (スコア:1, おもしろおかしい)
きっと、転職するとトップ掲載されますよ
Re:OrangePekoeの後継か (スコア:0)