重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Linuxのカーネルのどこにpcのカメラからのデータを保持するメモリにアクセスするコードが書いてあるのでしょうか?
というのもLinuxを入れたpcでカメラが起動できるとは、以上のようなコードがあると思った為です。
また、Linuxのカーネルから偉人がどうやってカメラやキーボードなどの部分にアクセスできるようにしたのかを知りたいし見たいため質問しました。
どうかよろしくお願いします

A 回答 (5件)

アプリケーションはライブラリのfopen、fread等で入出力制御、


実際にはさらにライブラリよりopen、read、write、close等のシステムコールを
呼ぶことで、入出力制御します。。
デバイスドライバはこのopen、read等の内容が記述されています。

例えばreadの内容ですが、
大体は、
・デバイスのメモリを読んで、
・IFに合わせた形にデータを加工して、バッファメモリにコピーして、
・通知としてコピーしたデータサイズを返す。
のような感じだと理解しています。
もっと知りたいならデバイスドライバを読んでください。

あと、NO2さんの回答は少し誤っていて、
デバイスドライバはカーネルの機能です。
それから、デバイスドライバがカーネルコード外となるのは
純粋なマイクロカーネルならYESですが、
Linuxは一部は外出しして後付けでアタッチできるようになっていますが、
全てのデバイスドライバがそうなってはないはず。
    • good
    • 0

もう1個の質問とも関係しそうに思いますが、何らかのデータシートなり何なりの資料がなければドライバを書くことは非常に困難です。

まっさらな状態からだと、それはほぼ不可能と言う次元になります。

でもWindowsで動いているんなら、それはWindows用のドライバがあるからなので、それを解析してlinux用のものを書くことは可能です。メーカー的には歓迎しない、あるいは利用許諾で解析禁止と書かれてそうですけど。
    • good
    • 0

>では、ハードウェアに関してのデータシートからドライバを自作したりするのでしょうか?


ドライバが無ければ自作する。おっしゃる通りと思います。
    • good
    • 0

カーネルそのものにそうした付加機能を持たせることはしないと思いますよ。

カーネルの仕事はドライバ・サービス・アプリからのリクエストに従ってメモリを割り当てるところまでで、「このメモリに入っているのは画像である」みたいな意識がありません。そうしたカメラからの画像を引っ張ってくるのは、ドライバなりサービスの仕事です。

ある意味カーネルはフリーイベントスペースの管理者で、要請に従って場所は貸すけど、その場所で何をやってるかは全く関知しておらず、やってる人に直接聞けと言う立場です。そうやって場所の管理に特化することで、新しいことがやりたければそれができる人を連れてくればよいという発想です。
    • good
    • 0
この回答へのお礼

では、ハードウェアに関してのデータシートからドライバを自作したりするのでしょうか?
ありえないかもしれませんが、仮にカメラにアクセスするドライバがないとしての話です。

お礼日時:2018/04/19 08:58

アプリが「ファイルを読み込みたい」と「カーネル」に「システムコール」を行うとカーネルはそのアプリケーションに対して「ファイルを開いてもいいですよ」と、ファイルを開く権限(「特権モード」)を与えるとアプリケーション(「非特権モード」しかない)は、ファイルを読み込むことができる。


http://www.linuxacademy.ne.jp/lablog/infrastruct …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!