aboutsummaryrefslogtreecommitdiff
path: root/src/os_unix.c
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2008-11-19 13:52:30 +0000
committerdanielk1977 <danielk1977@noemail.net>2008-11-19 13:52:30 +0000
commitc70dfc477fbf99edb2cab9afbd1825724d8a1619 (patch)
tree9c7475431ed7a944c952a9c069a34673b01f775f /src/os_unix.c
parent1aa690c87c6a72c550dc232a1fc6040bbc17b828 (diff)
downloadsqlite-c70dfc477fbf99edb2cab9afbd1825724d8a1619.tar.gz
sqlite-c70dfc477fbf99edb2cab9afbd1825724d8a1619.zip
In os_unix.c, use "IS_VXWORKS" instead of "defined(__RTP__) || defined(_WRS_KERNEL)". Purely because it's easier on the eyes. (CVS 5925)
FossilOrigin-Name: 92c91a6cd7bcbe79206bdf7708fe9049a7b7fdd6
Diffstat (limited to 'src/os_unix.c')
-rw-r--r--src/os_unix.c103
1 files changed, 47 insertions, 56 deletions
diff --git a/src/os_unix.c b/src/os_unix.c
index 9f538e495..e28cda5d6 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -12,7 +12,7 @@
**
** This file contains code that is specific to Unix systems.
**
-** $Id: os_unix.c,v 1.213 2008/11/19 11:35:40 danielk1977 Exp $
+** $Id: os_unix.c,v 1.214 2008/11/19 13:52:30 danielk1977 Exp $
*/
#include "sqliteInt.h"
#if SQLITE_OS_UNIX /* This file is used on unix only */
@@ -82,15 +82,15 @@
#include <errno.h>
#if SQLITE_ENABLE_LOCKING_STYLE
-#include <sys/ioctl.h>
-#if defined(__RTP__) || defined(_WRS_KERNEL)
-#define lstat stat
-#include <semaphore.h>
-#include <limits.h>
-#else
-#include <sys/param.h>
-#include <sys/mount.h>
-#endif
+# include <sys/ioctl.h>
+# if IS_VXWORKS
+# define lstat stat
+# include <semaphore.h>
+# include <limits.h>
+# else
+# include <sys/param.h>
+# include <sys/mount.h>
+# endif
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
/*
@@ -140,7 +140,7 @@ struct unixFile {
pthread_t tid; /* The thread that "owns" this unixFile */
#endif
int lastErrno; /* The unix errno from the last I/O error */
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
int isDelete; /* Delete on close if true */
char *zRealpath;
#endif
@@ -322,7 +322,7 @@ struct unixFile {
*/
struct lockKey {
dev_t dev; /* Device number */
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
void *rnam; /* Realname since inode unusable */
#else
ino_t ino; /* Inode number */
@@ -356,7 +356,7 @@ struct lockInfo {
*/
struct openKey {
dev_t dev; /* Device number */
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
void *rnam; /* Realname since inode unusable */
#else
ino_t ino; /* Inode number */
@@ -376,7 +376,7 @@ struct openCnt {
int nLock; /* Number of outstanding locks */
int nPending; /* Number of pending close() operations */
int *aPending; /* Malloced space holding fd's awaiting a close() */
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
sem_t *pSem; /* Named POSIX semaphore */
char aSemName[MAX_PATHNAME+1]; /* Name of that semaphore */
#endif
@@ -392,7 +392,7 @@ struct openCnt {
static struct lockInfo *lockList = 0;
static struct openCnt *openList = 0;
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
/*
** This hash table is used to bind the canonical file name to a
** unixFile structure and use the hash key (= canonical name)
@@ -646,7 +646,7 @@ static void releaseOpenCnt(struct openCnt *pOpen){
}
}
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
/*
** Implementation of a realpath() like function for vxWorks
** to determine canonical path name from given name. It does
@@ -759,13 +759,10 @@ static int testLockingStyle(int fd){
}
/* Testing for flock() can give false positives. So if if the above
- ** test fails, then we fall back to using dot-file style locking.
+ ** test fails, then we fall back to using dot-file style locking (or
+ ** named-semaphore locking on vxworks).
*/
-#if defined(__RTP__) || defined(_WRS_KERNEL)
- return LOCKING_STYLE_NAMEDSEM;
-#else
- return LOCKING_STYLE_DOTFILE;
-#endif
+ return (IS_VXWORKS ? LOCKING_STYLE_NAMEDSEM : LOCKING_STYLE_DOTFILE);
}
#endif
@@ -786,7 +783,7 @@ static int detectLockingStyle(
const char *filePath,
int fd
){
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
if( !filePath ){
return LOCKING_STYLE_NONE;
}
@@ -836,7 +833,7 @@ static int detectLockingStyle(
/* Default case. Handles, amongst others, "nfs". */
return testLockingStyle(fd);
-#endif /* if defined(__RTP__) || defined(_WRS_KERNEL) */
+#endif /* if IS_VXWORKS */
return LOCKING_STYLE_POSIX;
}
#else
@@ -852,7 +849,7 @@ static int detectLockingStyle(
*/
static int findLockInfo(
int fd, /* The file descriptor used in the key */
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
void *rnam, /* vxWorks realname */
#endif
struct lockInfo **ppLock, /* Return the lockInfo structure here */
@@ -892,7 +889,7 @@ static int findLockInfo(
memset(&key1, 0, sizeof(key1));
key1.dev = statbuf.st_dev;
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
key1.rnam = rnam;
#else
key1.ino = statbuf.st_ino;
@@ -905,7 +902,7 @@ static int findLockInfo(
#endif
memset(&key2, 0, sizeof(key2));
key2.dev = statbuf.st_dev;
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
key2.rnam = rnam;
#else
key2.ino = statbuf.st_ino;
@@ -953,7 +950,7 @@ static int findLockInfo(
pOpen->pPrev = 0;
if( openList ) openList->pPrev = pOpen;
openList = pOpen;
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
pOpen->pSem = NULL;
pOpen->aSemName[0] = '\0';
#endif
@@ -1021,7 +1018,7 @@ static int transferOwnership(unixFile *pFile){
pFile->tid = hSelf;
if (pFile->pLock != NULL) {
releaseLockInfo(pFile->pLock);
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
rc = findLockInfo(pFile->h, pFile->zRealpath, &pFile->pLock, 0);
#else
rc = findLockInfo(pFile->h, &pFile->pLock, 0);
@@ -1841,7 +1838,7 @@ static int closeUnixFile(sqlite3_file *id){
if( pFile->h>=0 ){
close(pFile->h);
}
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
if( pFile->isDelete && pFile->zRealpath ){
unlink(pFile->zRealpath);
}
@@ -1904,7 +1901,7 @@ static int unixClose(sqlite3_file *id){
#if SQLITE_ENABLE_LOCKING_STYLE
-#if !defined(__RTP__) && !defined(_WRS_KERNEL)
+#if !IS_VXWORKS
#pragma mark AFP Support
/*
@@ -2352,7 +2349,7 @@ static int flockClose(sqlite3_file *id) {
return closeUnixFile(id);
}
-#endif /* !defined(__RTP__) && !defined(_WRS_KERNEL) */
+#endif /* !IS_VXWORKS */
#pragma mark Old-School .lock file based locking
@@ -2405,7 +2402,7 @@ static int dotlockLock(sqlite3_file *id, int locktype) {
** Just adjust level and punt on outta here. */
if (pFile->locktype > NO_LOCK) {
pFile->locktype = locktype;
-#if !defined(__RTP__) && !defined(_WRS_KERNEL)
+#if !IS_VXWORKS
/* Always update the timestamp on the old file */
utimes(zLockFile, NULL);
#endif
@@ -2483,25 +2480,19 @@ static int dotlockUnlock(sqlite3_file *id, int locktype) {
** Close a file.
*/
static int dotlockClose(sqlite3_file *id) {
-#if defined(__RTP__) || defined(_WRS_KERNEL)
int rc;
-#endif
if( id ){
unixFile *pFile = (unixFile*)id;
dotlockUnlock(id, NO_LOCK);
sqlite3_free(pFile->lockingContext);
}
-#if defined(__RTP__) || defined(_WRS_KERNEL)
- enterMutex();
+ if( IS_VXWORKS ) enterMutex();
rc = closeUnixFile(id);
- leaveMutex();
+ if( IS_VXWORKS ) leaveMutex();
return rc;
-#else
- return closeUnixFile(id);
-#endif
}
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
#pragma mark POSIX/vxWorks named semaphore based locking
@@ -2624,7 +2615,7 @@ static int namedsemClose(sqlite3_file *id) {
return SQLITE_OK;
}
-#endif /* defined(__RTP__) || defined(_WRS_KERNEL) */
+#endif /* IS_VXWORKS */
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
@@ -2743,7 +2734,7 @@ static int fillInUnixFile(
,IOMETHODS(nolockClose, nolockLock, nolockUnlock, nolockCheckReservedLock)
#if SQLITE_ENABLE_LOCKING_STYLE
,IOMETHODS(dotlockClose, dotlockLock, dotlockUnlock,dotlockCheckReservedLock)
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
,IOMETHODS(nolockClose, nolockLock, nolockUnlock, nolockCheckReservedLock)
,IOMETHODS(nolockClose, nolockLock, nolockUnlock, nolockCheckReservedLock)
,IOMETHODS(namedsemClose, namedsemLock, namedsemUnlock, namedsemCheckReservedLock)
@@ -2772,7 +2763,7 @@ static int fillInUnixFile(
pNew->dirfd = dirfd;
SET_THREADID(pNew);
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
{
HashElem *pElem;
char *zRealname = vxrealpath(zFilename, 1);
@@ -2818,7 +2809,7 @@ static int fillInUnixFile(
case LOCKING_STYLE_POSIX: {
enterMutex();
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
rc = findLockInfo(h, pNew->zRealpath, &pNew->pLock, &pNew->pOpen);
#else
rc = findLockInfo(h, &pNew->pLock, &pNew->pOpen);
@@ -2829,7 +2820,7 @@ static int fillInUnixFile(
#if SQLITE_ENABLE_LOCKING_STYLE
-#if !defined(__RTP__) && !defined(_WRS_KERNEL)
+#if !IS_VXWORKS
case LOCKING_STYLE_AFP: {
/* AFP locking uses the file path so it needs to be included in
** the afpLockingContext.
@@ -2866,7 +2857,7 @@ static int fillInUnixFile(
break;
}
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
case LOCKING_STYLE_NAMEDSEM: {
/* Named semaphore locking uses the file path so it needs to be
** included in the namedsemLockingContext
@@ -2890,7 +2881,7 @@ static int fillInUnixFile(
}
#endif
-#if !defined(__RTP__) && !defined(_WRS_KERNEL)
+#if !IS_VXWORKS
case LOCKING_STYLE_FLOCK:
#endif
case LOCKING_STYLE_NONE:
@@ -2899,7 +2890,7 @@ static int fillInUnixFile(
}
pNew->lastErrno = 0;
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
if( rc!=SQLITE_OK ){
unlink(zFilename);
isDelete = 0;
@@ -3115,7 +3106,7 @@ static int unixOpen(
return SQLITE_CANTOPEN;
}
if( isDelete ){
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
zPath = zName;
#else
unlink(zName);
@@ -3156,7 +3147,7 @@ static int unixDelete(sqlite3_vfs *NotUsed, const char *zPath, int dirSync){
int fd;
rc = openDirectory(zPath, &fd);
if( rc==SQLITE_OK ){
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
if( fsync(fd)==-1 )
#else
if( fsync(fd) )
@@ -3234,7 +3225,7 @@ static int unixFullPathname(
assert( pVfs->mxPathname==MAX_PATHNAME );
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
{
char *zRealname = vxrealpath(zPath, 0);
zOut[0] = '\0';
@@ -3382,7 +3373,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
** than the argument.
*/
static int unixSleep(sqlite3_vfs *NotUsed, int microseconds){
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
struct timespec sp;
sp.tv_sec = microseconds / 1000000;
@@ -3414,7 +3405,7 @@ int sqlite3_current_time = 0;
** return 0. Return 1 if the time and date cannot be found.
*/
static int unixCurrentTime(sqlite3_vfs *NotUsed, double *prNow){
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
struct timespec sNow;
clock_gettime(CLOCK_REALTIME, &sNow);
*prNow = 2440587.5 + sNow.tv_sec/86400.0 + sNow.tv_nsec/86400000000000.0;
@@ -3489,7 +3480,7 @@ int sqlite3_os_init(void){
sqlite3_vfs_register(&aVfs[i], 0);
}
#endif
-#if defined(__RTP__) || defined(_WRS_KERNEL)
+#if IS_VXWORKS
sqlite3HashInit(&nameHash, 1);
#endif
sqlite3_vfs_register(&unixVfs, 1);