Hello Scott, Below is my patch on the latest SQLite 3.7.3. Please notice that I only verify it with GCC 4.1.2 compiler in VxWorks 6.6/6.7/6.8(I have not verify it with my real target machine yet).
*** sqlite3.c.orig 2010-10-08 10:42:22.000000000 +0800 --- sqlite3.c 2010-10-08 19:24:18.390625000 +0800 *************** *** 17,22 **** --- 17,26 ---- ** language. The code for the "sqlite3" command-line shell is also in a ** separate file. This file contains only code for the core SQLite library. */ + #if defined(OS_VXWORKS) + #include <vxWorks.h> + #endif /* OS_VXWORKS */ + #define SQLITE_CORE 1 #define SQLITE_AMALGAMATION 1 #ifndef SQLITE_PRIVATE *************** *** 22795,22801 **** --- 22799,22811 ---- #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> + + #if defined(OS_VXWORKS) && defined(_WRS_KERNEL) + #include <sys/times.h> + #else #include <sys/time.h> + #endif /* OS_VXWORKS */ + #include <errno.h> #include <sys/mman.h> *************** *** 24945,24951 **** --- 24955,24965 ---- /* ** Close a file. */ + #if (OS_VXWORKS < 600) static int semClose(sqlite3_file *id) { + #else + static int semClose_native(sqlite3_file *id) { + #endif if( id ){ unixFile *pFile = (unixFile*)id; semUnlock(id, NO_LOCK); *************** *** 25581,25587 **** --- 25595,25607 ---- } return -1; } + + #if defined(OS_VXWORKS) && defined(_WRS_KERNEL) + got = write(id->h, (char *)pBuf, cnt); + #else got = write(id->h, pBuf, cnt); + #endif /* OS_VXWORKS */ + #endif TIMER_END; if( got<0 ){ *************** *** 26762,26768 **** --- 26782,26792 ---- semIoFinder, /* Finder function name */ semIoMethods, /* sqlite3_io_methods object name */ 1, /* shared memory is disabled */ + #if (OS_VXWORKS < 600) semClose, /* xClose method */ + #else + semClose_native, /* xClose method */ + #endif semLock, /* xLock method */ semUnlock, /* xUnlock method */ semCheckReservedLock /* xCheckReservedLock method */ *************** *** 27517,27523 **** noLock = eType!=SQLITE_OPEN_MAIN_DB; ! #if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE struct statfs fsInfo; if( fstatfs(fd, &fsInfo) == -1 ){ ((unixFile*)pFile)->lastErrno = errno; --- 27541,27547 ---- noLock = eType!=SQLITE_OPEN_MAIN_DB; ! #if (defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE) && !defined(OS_VXWORKS) struct statfs fsInfo; if( fstatfs(fd, &fsInfo) == -1 ){ ((unixFile*)pFile)->lastErrno = errno; *************** *** 27530,27536 **** } #endif ! #if SQLITE_ENABLE_LOCKING_STYLE #if SQLITE_PREFER_PROXY_LOCKING isAutoProxy = 1; #endif --- 27554,27560 ---- } #endif ! #if SQLITE_ENABLE_LOCKING_STYLE && !OS_VXWORKS #if SQLITE_PREFER_PROXY_LOCKING isAutoProxy = 1; #endif *************** *** 27793,27799 **** ** tests repeatable. */ memset(zBuf, 0, nBuf); ! #if !defined(SQLITE_TEST) { int pid, fd; fd = open("/dev/urandom", O_RDONLY); --- 27817,27823 ---- ** tests repeatable. */ memset(zBuf, 0, nBuf); ! #if !defined(SQLITE_TEST) && !defined(OS_VXWORKS) { int pid, fd; fd = open("/dev/urandom", O_RDONLY); I'v used definitions as below: EXTRA_DEFINE += -DOS_VXWORKS_660=660 EXTRA_DEFINE += -DOS_VXWORKS_670=670 EXTRA_DEFINE += -DOS_VXWORKS_680=680 EXTRA_DEFINE += -DOS_VXWORKS=OS_VXWORKS_670 EXTRA_DEFINE += -DSQLITE_HOMEGROWN_RECURSIVE_MUTEX EXTRA_DEFINE += -DSQLITE_ENABLE_LOCKING_STYLE=1 EXTRA_DEFINE += -DSQLITE_OMIT_LOAD_EXTENSION Best Regards, Huang Zhihua 2010/10/8 Scott A Mintz <sami...@ra.rockwell.com> > I searched through all the mail archives to see if I could find someone > that has ported SQLite to vxWorks in kernel mode. Apparently, there are a > few folks attempting it. And fewer succeeding at it. > > I found an article published by ZhiHua Huang where he describes the mods > he made to port SQLite 3.6.23.1 to vxWorks 6.5 > http://www.mail-archive.com/sqlite-users@sqlite.org/msg51531.html > > Using that as a starting point, I modified my files but I get the > following errors: > "C:/CCViews/Mintz_NetlinxUCS_L7x/NetLinxUCS/SQLite3_LIB/sqlite3.c", line > 27262: error (dcc:1633): parse error near 'struct' > "C:/CCViews/Mintz_NetlinxUCS_L7x/NetLinxUCS/SQLite3_LIB/sqlite3.c", line > 27262: error (dcc:1206): syntax error > "C:/CCViews/Mintz_NetlinxUCS_L7x/NetLinxUCS/SQLite3_LIB/sqlite3.c", line > 27262: fatal error (dcc:1340): can't recover from earlier errors > > This is the code it's complaining about. The "struct statfs fsInfo;" line > is line 27262. > > #ifdef FD_CLOEXEC > fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) | FD_CLOEXEC); > #endif > > noLock = eType!=SQLITE_OPEN_MAIN_DB; > > > #if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE > struct statfs fsInfo; > if( fstatfs(fd, &fsInfo) == -1 ){ > ((unixFile*)pFile)->lastErrno = errno; > if( dirfd>=0 ) close(dirfd); /* silently leak if fail, in error */ > close(fd); /* silently leak if fail, in error */ > return SQLITE_IOERR_ACCESS; > } > if (0 == strncmp("msdos", fsInfo.f_fstypename, 5)) { > ((unixFile*)pFile)->fsFlags |= SQLITE_FSFLAGS_IS_MSDOS; > } > #endif > > Any ideas? > > -Scott > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users