Lines Matching refs:pShmNode
1170 unixShmNode *pShmNode; /* Shared memory associated with this inode */ member
1331 assert( pInode->pShmNode==0 ); in releaseInodeInfo()
4313 unixShmNode *pShmNode; /* The underlying unixShmNode object */ member
4339 unixShmNode *pShmNode = pFile->pShm->pShmNode; in unixFcntlExternalReader() local
4348 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixFcntlExternalReader()
4349 if( osFcntl(pShmNode->hShm, F_GETLK, &f)<0 ){ in unixFcntlExternalReader()
4354 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixFcntlExternalReader()
4373 unixShmNode *pShmNode; /* Apply locks to this open shared-memory segment */ in unixShmSystemLock() local
4378 pShmNode = pFile->pInode->pShmNode; in unixShmSystemLock()
4379 assert( pShmNode->nRef==0 || sqlite3_mutex_held(pShmNode->pShmMutex) ); in unixShmSystemLock()
4380 assert( pShmNode->nRef>0 || unixMutexHeld() ); in unixShmSystemLock()
4388 if( pShmNode->hShm>=0 ){ in unixShmSystemLock()
4395 res = osSetPosixAdvisoryLock(pShmNode->hShm, &f, pFile); in unixShmSystemLock()
4413 pShmNode->exclMask &= ~mask; in unixShmSystemLock()
4414 pShmNode->sharedMask &= ~mask; in unixShmSystemLock()
4417 pShmNode->exclMask &= ~mask; in unixShmSystemLock()
4418 pShmNode->sharedMask |= mask; in unixShmSystemLock()
4422 pShmNode->exclMask |= mask; in unixShmSystemLock()
4423 pShmNode->sharedMask &= ~mask; in unixShmSystemLock()
4436 pShmNode->sharedMask, pShmNode->exclMask)); in unixShmSystemLock()
4467 unixShmNode *p = pFd->pInode->pShmNode; in unixShmPurge()
4486 p->pInode->pShmNode = 0; in unixShmPurge()
4500 static int unixLockSharedMemory(unixFile *pDbFd, unixShmNode *pShmNode){ in unixLockSharedMemory() argument
4526 if( osFcntl(pShmNode->hShm, F_GETLK, &lock)!=0 ) { in unixLockSharedMemory()
4529 if( pShmNode->isReadonly ){ in unixLockSharedMemory()
4530 pShmNode->isUnlocked = 1; in unixLockSharedMemory()
4539 if( rc==SQLITE_OK && robust_ftruncate(pShmNode->hShm, 3) ){ in unixLockSharedMemory()
4540 rc = unixLogError(SQLITE_IOERR_SHMOPEN,"ftruncate",pShmNode->zFilename); in unixLockSharedMemory()
4591 struct unixShmNode *pShmNode; /* The underlying mmapped file */ in unixOpenSharedMemory() local
4609 pShmNode = pInode->pShmNode; in unixOpenSharedMemory()
4610 if( pShmNode==0 ){ in unixOpenSharedMemory()
4630 pShmNode = sqlite3_malloc64( sizeof(*pShmNode) + nShmFilename ); in unixOpenSharedMemory()
4631 if( pShmNode==0 ){ in unixOpenSharedMemory()
4635 memset(pShmNode, 0, sizeof(*pShmNode)+nShmFilename); in unixOpenSharedMemory()
4636 zShm = pShmNode->zFilename = (char*)&pShmNode[1]; in unixOpenSharedMemory()
4645 pShmNode->hShm = -1; in unixOpenSharedMemory()
4646 pDbFd->pInode->pShmNode = pShmNode; in unixOpenSharedMemory()
4647 pShmNode->pInode = pDbFd->pInode; in unixOpenSharedMemory()
4649 pShmNode->pShmMutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST); in unixOpenSharedMemory()
4650 if( pShmNode->pShmMutex==0 ){ in unixOpenSharedMemory()
4658 pShmNode->hShm = robust_open(zShm, O_RDWR|O_CREAT|O_NOFOLLOW, in unixOpenSharedMemory()
4661 if( pShmNode->hShm<0 ){ in unixOpenSharedMemory()
4662 pShmNode->hShm = robust_open(zShm, O_RDONLY|O_NOFOLLOW, in unixOpenSharedMemory()
4664 if( pShmNode->hShm<0 ){ in unixOpenSharedMemory()
4668 pShmNode->isReadonly = 1; in unixOpenSharedMemory()
4675 robustFchown(pShmNode->hShm, sStat.st_uid, sStat.st_gid); in unixOpenSharedMemory()
4677 rc = unixLockSharedMemory(pDbFd, pShmNode); in unixOpenSharedMemory()
4683 p->pShmNode = pShmNode; in unixOpenSharedMemory()
4685 p->id = pShmNode->nextShmId++; in unixOpenSharedMemory()
4687 pShmNode->nRef++; in unixOpenSharedMemory()
4698 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixOpenSharedMemory()
4699 p->pNext = pShmNode->pFirst; in unixOpenSharedMemory()
4700 pShmNode->pFirst = p; in unixOpenSharedMemory()
4701 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixOpenSharedMemory()
4740 unixShmNode *pShmNode; in unixShmMap() local
4752 pShmNode = p->pShmNode; in unixShmMap()
4753 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmMap()
4754 if( pShmNode->isUnlocked ){ in unixShmMap()
4755 rc = unixLockSharedMemory(pDbFd, pShmNode); in unixShmMap()
4757 pShmNode->isUnlocked = 0; in unixShmMap()
4759 assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 ); in unixShmMap()
4760 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmMap()
4761 assert( pShmNode->hShm>=0 || pDbFd->pInode->bProcessLock==1 ); in unixShmMap()
4762 assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 ); in unixShmMap()
4767 if( pShmNode->nRegion<nReqRegion ){ in unixShmMap()
4772 pShmNode->szRegion = szRegion; in unixShmMap()
4774 if( pShmNode->hShm>=0 ){ in unixShmMap()
4779 if( osFstat(pShmNode->hShm, &sStat) ){ in unixShmMap()
4807 if( seekAndWriteFd(pShmNode->hShm, iPg*pgsz + pgsz-1,"",1,&x)!=1 ){ in unixShmMap()
4808 const char *zFile = pShmNode->zFilename; in unixShmMap()
4819 pShmNode->apRegion, nReqRegion*sizeof(char *) in unixShmMap()
4825 pShmNode->apRegion = apNew; in unixShmMap()
4826 while( pShmNode->nRegion<nReqRegion ){ in unixShmMap()
4830 if( pShmNode->hShm>=0 ){ in unixShmMap()
4832 pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE, in unixShmMap()
4833 MAP_SHARED, pShmNode->hShm, szRegion*(i64)pShmNode->nRegion in unixShmMap()
4836 rc = unixLogError(SQLITE_IOERR_SHMMAP, "mmap", pShmNode->zFilename); in unixShmMap()
4849 pShmNode->apRegion[pShmNode->nRegion+i] = &((char*)pMem)[szRegion*i]; in unixShmMap()
4851 pShmNode->nRegion += nShmPerMap; in unixShmMap()
4856 if( pShmNode->nRegion>iRegion ){ in unixShmMap()
4857 *pp = pShmNode->apRegion[iRegion]; in unixShmMap()
4861 if( pShmNode->isReadonly && rc==SQLITE_OK ) rc = SQLITE_READONLY; in unixShmMap()
4862 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmMap()
4874 static int assertLockingArrayOk(unixShmNode *pShmNode){ in assertLockingArrayOk() argument
4877 assert( sqlite3_mutex_held(pShmNode->pShmMutex) ); in assertLockingArrayOk()
4880 for(pX=pShmNode->pFirst; pX; pX=pX->pNext){ in assertLockingArrayOk()
4893 assert( 0==memcmp(pShmNode->aLock, aLock, sizeof(aLock)) ); in assertLockingArrayOk()
4894 return (memcmp(pShmNode->aLock, aLock, sizeof(aLock))==0); in assertLockingArrayOk()
4914 unixShmNode *pShmNode; /* The underlying file iNode */ in unixShmLock() local
4921 pShmNode = p->pShmNode; in unixShmLock()
4922 if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK; in unixShmLock()
4923 aLock = pShmNode->aLock; in unixShmLock()
4925 assert( pShmNode==pDbFd->pInode->pShmNode ); in unixShmLock()
4926 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmLock()
4934 assert( pShmNode->hShm>=0 || pDbFd->pInode->bProcessLock==1 ); in unixShmLock()
4935 assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 ); in unixShmLock()
4961 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmLock()
4962 assert( assertLockingArrayOk(pShmNode) ); in unixShmLock()
5031 assert( assertLockingArrayOk(pShmNode) ); in unixShmLock()
5032 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmLock()
5068 unixShmNode *pShmNode; /* The underlying shared-memory file */ in unixShmUnmap() local
5075 pShmNode = p->pShmNode; in unixShmUnmap()
5077 assert( pShmNode==pDbFd->pInode->pShmNode ); in unixShmUnmap()
5078 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmUnmap()
5082 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmUnmap()
5083 for(pp=&pShmNode->pFirst; (*pp)!=p; pp = &(*pp)->pNext){} in unixShmUnmap()
5089 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmUnmap()
5095 assert( pShmNode->nRef>0 ); in unixShmUnmap()
5096 pShmNode->nRef--; in unixShmUnmap()
5097 if( pShmNode->nRef==0 ){ in unixShmUnmap()
5098 if( deleteFlag && pShmNode->hShm>=0 ){ in unixShmUnmap()
5099 osUnlink(pShmNode->zFilename); in unixShmUnmap()