Closed ikwzm closed 2 years ago
有難うございます。本家からコメント頂き大変光栄です。 Rust初心者なのでこのあたりの流儀がよくわかっておらず恐縮です。 uio の方はネーミングまずかった気はしておりますが、一応 new_from_name という名前でデバイス名からの生成は作っております(命名は from_name とかの方が良かったのかもしれませんが)。 https://github.com/ryuz/jelly/blob/master/rust/mem_access/src/uio_accessor.rs C++であればコンストラクタの多重定義(オーバーロード)を使うところですが、Rust 的には多重定義は使わずに別名関数とするのが流儀かと思ったのですが、ポリモーフィックにするのとどちらがトレンドなのかとかわかりますでしょうか?
udmabuf の方のデバイス名対応はできていませんでしたので是非検討させて頂きたいと思います。
すみません。実は私も今回初めて Rust を触ったので、ポリモーフィックがトレンドなのかわからないです(汗。
有難うございます。初心者があまり難しいことをすると嵌りそうなので、一旦難しいことはせずにデバイス名での生成だけ用意させていただいて、もう少しスキルアップしたら見直す方向で考えてみたいと思います。
u-dma-buf のデバイス名は自由に設定できるので
ということを知らないまま使っていたので大変参考になりました。
コード読ませていただいて、やろうとされていることは trait を使った new のオーバーロードかと理解したのですがあっておりますでしょうか?
今少し調べているのですが、 https://qiita.com/muumu/items/11e736612939a53699e9 にて 「Rustにはコンストラクタが無いのでコンストラクタのオーバーロードも無く、関数名を書き分けることが推奨されている」との記述を見つけ、元ネタを探し中です。 なるべく Rust の流儀に合わせたいなとは思っているのですが、流儀自体も移り変わりがあろうかと思いますので、最新動向としてポリモーフィックがトレンドになってきているようなら trait 追加していくことも考えたいと思います。
結局なのですが、番号指定ではなくデバイス名での指定が自然と思いましたので、そのように変更しました(番号指定は別名にして残しましたが不要な気がしています)。 https://github.com/ryuz/jelly/blob/develop/rust/mem_access/src/udmabuf_accessor.rs
最新のu-dma-buf仕様についていけてなかったのですが、かなり高機能になっているのですね。 https://github.com/ikwzm/udmabuf/blob/master/Readme.ja.md minor-number の衝突は気になっておりました。minor-number は指定せずに自動割り当てとして、device-name で紐づけるのがスマートな気がしておりますが、推奨の使い方とかありますでしょうか? uio は あくまで、/dev の下には番号由来の名前が現れて /class/uio/ の下から name 取得するのに対して、u-dam-buf は device-name が直接的に指定されるので、取り扱いポリシーが異なる認識でおります(なので uio 用と u-dma-buf とでは new まわりのポリシーは異なるAPI設計が妥当と思っています)。
私は device-name プロパティで u-dma-buf のデバイス名を指定する方法を使っています。どうも番号で指定するのは慣れませんね~。
有難うございます! サンプルも device-name 指定に変えて、デフォルトは device-name 指定のAPIにしていこうと思います。
遅くなりましたが、ひとまず device-name で open できるバージョンを v0.1.5 として publish いたしました。 https://crates.io/crates/jelly-mem_access/0.1.5 https://github.com/ryuz/jelly-mem_access/tree/v0.1.5
ポリモーフィックをご提案頂いておりますが、私のRustスキルが追い付いていない部分もありますので、特に大きな課題が残っていなければ一旦本件は close して、また別途検討させて頂きたいと思います。
uio_accessor の新しく生成する関数 new の引数を、 uio番号 または デバイス名 のどちらでも指定できるように new 関数をポリモーフィックにしてはどうでしょう?
同様に udmabuf_accessor の new にもデバイス名を指定できるようにしてほしいかな。デバイスツリーだと、u-dma-buf のデバイス名は自由に設定できるので、できれば文字列で指定できた方がいいと思います。