私はいくつかの助けが必要です。私は数時間それをやって、それを働かせることができません。一般に、私はカーネルドライバにアクセスする関数を持っており、その関数をいくつかのpthreadコードを含む別の関数へのパラメータとして渡したいと思います。私は研究し、関数ポインタが必要かもしれないことを知りました。Cプログラム:スレッドを作成する別の関数へのパラメータとして関数を渡す
ここでは、パラメータとして渡したい機能があります。ここで
static void kernelTest(char Send[BUFFER_LENGTH])
{
int fd = open("/dev/kernelTest", O_RDWR);
}
は私が渡したい機能です:
static void createKThread(void (*f)(char *))
{
pthread_t t1;
int ret;
ret = pthread_create(&t1, NULL, (*f)(char), NULL);
pthread_join(t1, NULL);
}
私は関数ポインタを試みたが、それは私にエラーを与えています。
error: expected expression before ‘char’
私は非常にレンダリングされた任意の助けに感謝。ありがとうございました!
'のpthread_create(&T1、NULLあなたは何
pthread_create
を期待と一致するようにkernelTest
の署名を変更するか必要、f、NULL); '正しいはずですが、関数ポインタのプロトタイプは' void *(*)(void *) 'でなければなりません。 – mch