ファイルをシミュレートするためにlinuxのcharデバイスドライバを書きます。デバイスドライバとしてのLinux仮想ファイル
static ssize_t data_read(struct file *f, char __user *buf, size_t count, loff_t *f_pos){
char *msg_pointer;
int bytes_read = 0;
if(vault.storage==NULL)
return -EFAULT;
msg_pointer = vault.storage + *f_pos;
while (count && (*f_pos < vault.size)) {
put_user(*(msg_pointer++), buf++);
count--;
bytes_read++;
++*f_pos;
}
return bytes_read;
}
vault.storageはkmallocの創造へのポインタである...データは、配列に格納されたと私は、「読み取りファイル」-handlerを実装したいです。私は、DDでコピーしてコードをテストする場合、期待どおりには動作しますが、私はC
if((fp_data = open("/dev/vault0", O_RDWR)) < 0){
perror("could not open file.\n");
}
err = write(fp_data, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", 36);
if (err < 0){
perror("failed to write to sv \n");
}
read(fp_data, buffer, 36);
read(fp_data, buffer, 36);
最初のリード・コマンドが返す4でファイルを開きたいとき...二0 - どのようにこれは可能ですか?
に属し、私はコードのみを脱脂、多分あなたは '書き込みの間で求めるべきである私はあなたのデバイスファイルのメジャー番号とマイナー番号を意味し、あなたのドライバが読み取りと書き込みの機能が適切に呼ばれていることを前提としてい'と'読んだ 'ものです。 – asveikau
偉大な、これは理にかなっていますが、どうすれば探せますか?それはストリームではないので、私はfseekを使用することはできません... – NaN
ところで、あなたはファイル記述子 'fp_svdata'を開きますが、あなたは' fp_data'から書き込んで読み込みます... 'fp_data'はタイプミスですか? – Jason