DEVFS_CDEVPRIV(9) | FreeBSD Kernel Developer's Manual | DEVFS_CDEVPRIV(9) |
名称
devfs_set_cdevpriv, devfs_get_cdevpriv, devfs_clear_cdevpriv — デバイスのためにオープンされたファイル記述子ごとのデータを管理する書式
#include < sys/param.h>#include < sys/conf.h>
typedef void (*cdevpriv_dtr_t)(void *data);
int
devfs_get_cdevpriv( void **datap);
int
devfs_set_cdevpriv( void *priv, cdevpriv_dtr_t dtr);
void
devfs_clear_cdevpriv( void);
解説
devfs_xxx_cdevpriv() 関数ファミリによって、 cdev ドライバメソッドは、デバイス型特殊ファイルのそれぞれのユーザプロセスの open(2) でいくつかのドライバ特有のデータを関連づけることができます。現在、これらの関数の機能は、ファイル記述子を使用するシステムコールに応えて devfs(5) 操作として実行された cdevsw スイッチメソッド呼び出しのコンテキストに制限されます。devfs_set_cdevpriv() 関数は、現在の呼び出しコンテキスト (ファイル記述子) で priv によって指されたデータを関連づけます。たぶん devfs_get_cdevpriv() 関数によって、このファイル記述子で実行された別の呼び出しからデータは、後で検索されます。 devfs_clear_cdevpriv() は、コンテキストからの以前にアタッチされたデータを引き離します。動作し終わっている devfs_clear_cdevpriv() の直後に、 dtr コールバックは、 data 引数を供給するプライベートなデータで呼び出されます。また devfs_clear_cdevpriv() 関数は、オープンしたコールバック関数がエラーコードを返すなら、呼び出されます。
最後のファイル記述子のクローズにおいて、システムは、 devfs_clear_cdevpriv() 呼び出しを自動的に整えます。
成功するなら、関数は、0 を返します。
関数 devfs_set_cdevpriv() は、エラーで次の値を返します:
- [ ENOENT]
- 現在の呼び出しは、いくつのファイル記述子に関連づけられません。
- [ EBUSY]
- プライベートなドライバデータは、既に現在のファイル記述子に関連しています。
関数 devfs_get_cdevpriv() は、エラーで次の値を返します:
- [ EBADF]
- 現在の呼び出しは、いくつのファイル記述子に関連づけられません。
- [ ENOENT]
- プライベートなドライバデータは、現在のファイル記述子に関連づけられなかったか、または devfs_clear_cdevpriv() が呼び出されました。
歴史
devfs_cdevpriv() 関数ファミリは、 FreeBSD 7.1 ではじめて登場しました。August 15, 2012 | FreeBSD |