Lines Matching refs:pShmNode
3771 winShmNode *pShmNode; /* The underlying winShmNode object */ member
3892 static int winLockSharedMemory(winShmNode *pShmNode){ argument
3893 int rc = winShmSystemLock(pShmNode, WINSHM_WRLCK, WIN_SHM_DMS, 1);
3896 if( pShmNode->isReadonly ){
3897 pShmNode->isUnlocked = 1;
3898 winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
3900 }else if( winTruncate((sqlite3_file*)&pShmNode->hFile, 0) ){
3901 winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
3903 "winLockSharedMemory", pShmNode->zFilename);
3908 winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
3911 return winShmSystemLock(pShmNode, WINSHM_RDLCK, WIN_SHM_DMS, 1);
3923 winShmNode *pShmNode = 0; /* The underlying mmapped file */ local
3936 pNew = sqlite3MallocZero( sizeof(*pShmNode) + nName + 17 );
3949 for(pShmNode = winShmNodeList; pShmNode; pShmNode=pShmNode->pNext){
3953 if( sqlite3StrICmp(pShmNode->zFilename, pNew->zFilename)==0 ) break;
3955 if( pShmNode ){
3961 pShmNode = pNew;
3963 ((winFile*)(&pShmNode->hFile))->h = INVALID_HANDLE_VALUE;
3964 pShmNode->pNext = winShmNodeList;
3965 winShmNodeList = pShmNode;
3968 pShmNode->mutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST);
3969 if( pShmNode->mutex==0 ){
3980 rc = winOpen(pDbFd->pVfs, pShmNode->zFilename,
3981 (sqlite3_file*)&pShmNode->hFile,
3985 pShmNode->zFilename);
3988 if( outFlags==SQLITE_OPEN_READONLY ) pShmNode->isReadonly = 1;
3990 rc = winLockSharedMemory(pShmNode);
3995 p->pShmNode = pShmNode;
3997 p->id = pShmNode->nextShmId++;
3999 pShmNode->nRef++;
4010 sqlite3_mutex_enter(pShmNode->mutex);
4011 p->pNext = pShmNode->pFirst;
4012 pShmNode->pFirst = p;
4013 sqlite3_mutex_leave(pShmNode->mutex);
4018 winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
4036 winShmNode *pShmNode; /* The underlying shared-memory file */ local
4042 pShmNode = p->pShmNode;
4046 sqlite3_mutex_enter(pShmNode->mutex);
4047 for(pp=&pShmNode->pFirst; (*pp)!=p; pp = &(*pp)->pNext){}
4053 sqlite3_mutex_leave(pShmNode->mutex);
4058 assert( pShmNode->nRef>0 );
4059 pShmNode->nRef--;
4060 if( pShmNode->nRef==0 ){
4080 winShmNode *pShmNode; local
4085 pShmNode = p->pShmNode;
4086 if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK;
4098 sqlite3_mutex_enter(pShmNode->mutex);
4103 for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
4111 rc = winShmSystemLock(pShmNode, WINSHM_UNLCK, ofst+WIN_SHM_BASE, n);
4128 for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
4139 rc = winShmSystemLock(pShmNode, WINSHM_RDLCK, ofst+WIN_SHM_BASE, n);
4153 for(pX=pShmNode->pFirst; pX; pX=pX->pNext){
4164 rc = winShmSystemLock(pShmNode, WINSHM_WRLCK, ofst+WIN_SHM_BASE, n);
4171 sqlite3_mutex_leave(pShmNode->mutex);
4221 winShmNode *pShmNode; local
4232 pShmNode = pShm->pShmNode;
4234 sqlite3_mutex_enter(pShmNode->mutex);
4235 if( pShmNode->isUnlocked ){
4236 rc = winLockSharedMemory(pShmNode);
4238 pShmNode->isUnlocked = 0;
4240 assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 );
4242 if( pShmNode->nRegion<=iRegion ){
4247 pShmNode->szRegion = szRegion;
4253 rc = winFileSize((sqlite3_file *)&pShmNode->hFile, &sz);
4268 rc = winTruncate((sqlite3_file *)&pShmNode->hFile, nByte);
4278 pShmNode->aRegion, (iRegion+1)*sizeof(apNew[0])
4284 pShmNode->aRegion = apNew;
4286 if( pShmNode->isReadonly ){
4291 while( pShmNode->nRegion<=iRegion ){
4296 hMap = osCreateFileMappingFromApp(pShmNode->hFile.h,
4300 hMap = osCreateFileMappingW(pShmNode->hFile.h,
4304 hMap = osCreateFileMappingA(pShmNode->hFile.h,
4309 osGetCurrentProcessId(), pShmNode->nRegion, nByte,
4312 int iOffset = pShmNode->nRegion*szRegion;
4324 osGetCurrentProcessId(), pShmNode->nRegion, iOffset,
4328 pShmNode->lastErrno = osGetLastError();
4329 rc = winLogError(SQLITE_IOERR_SHMMAP, pShmNode->lastErrno,
4335 pShmNode->aRegion[pShmNode->nRegion].pMap = pMap;
4336 pShmNode->aRegion[pShmNode->nRegion].hMap = hMap;
4337 pShmNode->nRegion++;
4342 if( pShmNode->nRegion>iRegion ){
4345 char *p = (char *)pShmNode->aRegion[iRegion].pMap;
4350 if( pShmNode->isReadonly && rc==SQLITE_OK ) rc = SQLITE_READONLY;
4351 sqlite3_mutex_leave(pShmNode->mutex);