This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
I have a problem about ecos support "opendir" function or not? thank you~
- From: =?big5?q?=C1=C2=A8=C9=AA=F7(tom)?= <palapala at iii dot org dot tw>
- To: ecos-discuss at sources dot redhat dot com
- Date: Fri, 22 Sep 2006 15:22:34 +0800
- Subject: [ECOS] I have a problem about ecos support "opendir" function or not? thank you~
Hi,
I was trying to run kvm (cldc 1.1) on ecos. And my host os is red hat9 running on VMware workstation 5. The target I choose when I install ecos is ˇ§i386-elfˇ¨.
I will test on linux, so I created a configuration ecos.ecc for linux (ecosconfig new linux) and make the kernel. (include and lib)
After making the ecos kernel, I was changing the cc to i386-elf-gcc of preverify tool in cldc 1.1
When making the file, there will have problem that ˇ§DIRˇ¨ is undeclared. As you can see below, the dirent.h in ecos kernel has extern ˇ§DIRˇ¨. However, there is no lib for DIR in ecos kernel.(there is no lib which declare the struct of DIR in ecos kernel)
So I want to ask is ecos support opendir operation? I was check on google, but it is hardly to find the same problem with me. I think is the problem happened because my ecos kernel has building in a wrong way. Or actually, ecos does not support the directory operation like opendir or readdir, etc.
Thank you ~
the error message is :
[root@localhost linux]# make
i386-elf-gcc -c -I../../src -I/opt/ecos/work/helloworld/kernel/install/include/ -DUNIX -DLINUX -DJAVAVERIFY -DTRIMMED -Di386 ../../src/check_class.c
i386-elf-gcc -c -I../../src -I/opt/ecos/work/helloworld/kernel/install/include/ -DUNIX -DLINUX -DJAVAVERIFY -DTRIMMED -Di386 ../../src/main.c
../../src/main.c: In function 'recurse_dir':
../../src/main.c:95: error: 'DIR' undeclared (first use in this function)
../../src/main.c:95: error: (Each undeclared identifier is reported only once
../../src/main.c:95: error: for each function it appears in.)
../../src/main.c:95: error: 'dir' undeclared (first use in this function)
../../src/main.c:101: warning: assignment makes pointer from integer without a cast
../../src/main.c:101: warning: assignment makes pointer from integer without a cast
../../src/main.c:103: error: dereferencing pointer to incomplete type
../../src/main.c:128: error: 'S_IFDIR' undeclared (first use in this function)
../../src/main.c: In function 'ProcessInputs':
../../src/main.c:200: error: 'S_IFDIR' undeclared (first use in this function)
../../src/main.c: In function 'main':
../../src/main.c:289: warning: incompatible implicit declaration of built-in function 'strdup'
make: *** [main.o] Error 1
In /ecos/install/include/dirent.h
/* PROTOTYPES */
extern DIR *opendir( const char *dirname );
extern struct dirent *readdir( DIR *dirp );
extern int readdir_r( DIR *dirp, struct dirent *entry, struct dirent **result );
extern void rewinddir( DIR *dirp );
extern int closedir( DIR *dirp );
the code in cldc preverifier:
static void recurse_dir(char *dirname, char *pkgname)
{
struct dirent *ent;
char buf[MAXPACKAGENAME];
char pkgbuf[MAXPACKAGENAME];
DIR *dir = opendir(dirname);
if (dir == NULL) {
fprintf(stderr, "Can't open dir %s\n", dirname);
exit(1);
}
for (ent = readdir(dir); ent; ent = readdir(dir)) {
struct stat stat_buf;
char *name = ent->d_name;
int len;
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
continue;
}
Best Regards,
Tom Hsieh
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss