* Re: Compilation Error: variable has intializer but incomplete type
2003-04-01 9:07 ` Marcus Alanen
@ 2003-04-01 9:24 ` Sean Neakums
2003-04-01 10:21 ` Jörn Engel
1 sibling, 0 replies; 4+ messages in thread
From: Sean Neakums @ 2003-04-01 9:24 UTC (permalink / raw)
To: Marcus Alanen; +Cc: ramands, linux-kernel
commence Marcus Alanen quotation:
>>i am trying to learn and write device driver on linux kernel 2.4 redhat
>> distribution
>>
>>iam getting compilation errors for driver code.
>>struct file_operations my_ops ={NULL,my_read,my_write,NULL,NULL,NULL
>>NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
>>NULL };
>>
>>ERROR -> my_ops has intializer but incomplete type
>
> This is not a good way to do it. See e.g. fs/pipe.c#read_fifo_fops
> for an easier approach:
>
> struct file_operations read_fifo_fops = {
> llseek: no_llseek,
> read: pipe_read,
> write: bad_pipe_w,
> poll: fifo_poll,
> ioctl: pipe_ioctl,
> open: pipe_read_open,
> release: pipe_read_release,
> };
Aside from this, the main issue is the "has intializer but incomplete
type" error, which indicates that the definition of struct
file_operations has not been seen by the compiler. This seems to be
defined (in 2.4.20, at least) by include/linux/fs.h, so Raman will
need to #include that file for the initialization to work.
--
Sean Neakums - <sneakums@zork.net>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Compilation Error: variable has intializer but incomplete type
2003-04-01 9:07 ` Marcus Alanen
2003-04-01 9:24 ` Sean Neakums
@ 2003-04-01 10:21 ` Jörn Engel
1 sibling, 0 replies; 4+ messages in thread
From: Jörn Engel @ 2003-04-01 10:21 UTC (permalink / raw)
To: Marcus Alanen; +Cc: ramands, linux-kernel
On Tue, 1 April 2003 12:07:22 +0300, Marcus Alanen wrote:
>
> >i am trying to learn and write device driver on linux kernel 2.4 redhat
> > distribution
> >
> >iam getting compilation errors for driver code.
> >struct file_operations my_ops ={NULL,my_read,my_write,NULL,NULL,NULL
> >NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
> >NULL };
> >
> >ERROR -> my_ops has intializer but incomplete type
>
> This is not a good way to do it. See e.g. fs/pipe.c#read_fifo_fops
> for an easier approach:
>
> struct file_operations read_fifo_fops = {
> llseek: no_llseek,
> read: pipe_read,
> write: bad_pipe_w,
> poll: fifo_poll,
> ioctl: pipe_ioctl,
> open: pipe_read_open,
> release: pipe_read_release,
> };
You should use the c99 initializers, though.
struct file_operations read_fifo_fops = {
.llseek = no_llseek,
.read = pipe_read,
.write = bad_pipe_w,
.poll = fifo_poll,
.ioctl = pipe_ioctl,
.open = pipe_read_open,
.release = pipe_read_release,
};
Jörn
--
Good warriors cause others to come to them and do not go to others.
-- Sun Tzu
^ permalink raw reply [flat|nested] 4+ messages in thread