Here is how it goes - I have written a small test driver as an exercise to "Linux Device Drivers" and as a preparation for writing a real, functional driver.
For the sake of seeing how far I got it working (I already implemented the open(0, read(), write() and ioctl() calls) I wrote a simple programm which queries some information from the driver:
When I try to compile it however, I get the following errors:
Here is the struct in which the problem occurs:
So, this two structures of the char dev and the semaphore are defined without "typedef"-s or anithing else in the kernel source. Anyone ahs a clue how to get rid of this errors?
As far as the compilation of the driver itself, everithing goes well.
Here's a link to the actual driver source code, which I wrote.
So, this two structures of the char dev and the semaphore are defined without "typedef"-s or anithing else in the kernel source. Anyone ahs a clue how to get rid of this errors?
A struct does not need a typedef for it to be valid.
is a valid struct.
You need to:
1. include the file which defines the structs.
2. if you are, then check what #define's control the #ifdefs.
Yes, I include <linux/cdev.h> and <asm/semaphore.h> both in the test program and in my header file.
I found this in the above mentioned headers:
Does this mean that I have to wrap my struct definition with the __KERNEL__ define directive? I though it is included by defaul when compiling modules (or maybe it's not for user space apps?).
Are you aware of the terms "user-space" and "kernel-space"?
The macro "__KERNEL__" is being used to give you the appropriate types and sizes for which ever environment your code is being compiled for.
So if you were compiling a driver or kernel module you would have "-D__KERNEL__" as one of your compile options.
A type *may* have a different layout depending on whether it's part of user-space or not, for example the kernel may change considerably without the user-space being affected, so defining __KERNEL__ in a user-space program may not have the affect you want.
OK, I got your point now, my n00b mistake was to include the driver header in my user space program, although I don't really need something defined in it. Nevertheless, a good precausion to such errors in the feature.
I am getting a dereferencing pointer to incomplete type error when i compile the following code on lines highlighted in red. Can anyone help me in identifying what is wrong in the code?
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int info;
struct node* link ;
} node;
void... (3 Replies)
Hi Gurues,
I need to modify an existing script that uses find to search a folder, and then move its contents to a folder. What I need to do is run gzip on each file after it's moved.
So, I ran this little test:
Put a ls.tar file on my $HOME, mkdir tmp, and then:
virtuo@tnpmprd01: find .... (3 Replies)
// Hello all,
I am having this error "Dereferencing pointer to incomplete type " on these 2 lines:
xpoint = my_point->x;
ypoint = my_point->y;
I am having no clue y this is happening.
Any help would be greately appreciated!!!!
#include<stdio.h>
#include<string.h>... (2 Replies)
I'm getting the following Error:
prepare_pcap.c: In function `prepare_pkts':
prepare_pcap.c:127: error: dereferencing pointer to incomplete type
prepare_pcap.c:138: error: dereferencing pointer to incomplete type
====================================
This is the part of the relevant... (8 Replies)
I'm trying to compile a 2.4.26 kernel but I have to apply two patches to it.
The patches are:
linux-2.4.26-xbox.patch
openMosix-2.4.26-1
This is the reason that it doesn't compile. There is only one error but I'm not familiar with C or C++(Unfortunately only Java and some lower-level... (2 Replies)
Dear colleagues,
One of my friend have a problem with c code. While compiling a c program it displays a message like
"array type has incomplete element type". Any body can provide a solution for it.
Jaganadh.G (1 Reply)