Hi Olaf,
I do not understand why you destory the fifo immediately after you install
a handler for it in init_module ? I guess that is might be the problem.
Dingrong
on Wed, 14 Feb 2001, Olaf Petzold wrote:
> Hello,
>
> what's wrong with the following code. If I do a read op on user space the
> handler isn't called. If I read the man page right, the installed handler is
> called on all ops regardless read/write.
>
> # uname -a
> Linux rtreg 2.2.17-rtl3b9 #2 Thu Dec 7 10:25:11 CET 2000 i686 unknown
>
> Thanks,
> Olaf
>
> --------------------------------------------
> #define RTF 0
>
> size_t number(void) { return RTF; }
>
> int rtfHandler(size_t fifo)
> {
> size_t sz;
> const char *msg = "Hallo World\n";
> DBG("notify Rtf%d\n", fifo);
> sz = strlen(msg);
> rtf_put(number(), &sz, sizeof(sz));
> rtf_put(number(), (void*)msg, sz);
> return 0;
> }
>
> int init_module(void)
> {
> int ret;
> size_t sz = 4000;
> (void)rtf_destroy(number());
> if((ret = rtf_create(number(), sz)) < 0) {
> ERROR("Error opening RTF%d\n", number());
> return -1;
> }
> if((ret = rtf_create_handler(number(), &rtfHandler)) < 0) {
> ERROR("Error installing handler on RTF%d\n", number());
> (void)rtf_destroy(number());
> return -1;
>
> }
> return 0;
> }
>
>
> void cleanup_module(void)
> {
> (void)rtf_destroy(number());
> }
> -----------------
>
>