EN JA
DEVFS_CDEVPRIV(9)
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