1

ファイル記述子をハンドルとして (おそらくカスタム カーネル ドライバーを使用して) 使用して、任意のサイズのデータ​​を読み書きすることは可能ですか?

または、ファイル記述子を介してデータを転送するために使用されるバッファ サイズに OS によって義務付けられた制限はありますか?

そんなこと知ってる

  • ディスク アクセス時間が遅いためにファイルがブロックされる
  • ソケット(ストリームと dgram) には最大パケット サイズがあります
  • パイプfifosにも何らかのバッファ制限があるようです

書き込み時にブロックしない fd を作成したいと思います。

使用法は次のようになります。

fd = open("/dev/new_buffer")
write(fd, data, huge_size, NON_BLOCK)
read(fd, data2, huge_size, NON_BLOCK)

バックエンドの実装は次のようになります (単純化しすぎてすみません):

on_write(fd, data, size, opts)
{
  void* buffers[fd] = malloc(size);
  memcpy(buffers[fd], data, size);
}

on_read(fd, data, size, opts)
{
  memcpy(data, buffers[fd], size);
}
4

0 に答える 0