Lines Matching refs:pShmNode

40061   unixShmNode *pShmNode;          /* Shared memory associated with this inode */  member
40226 assert( pInode->pShmNode==0 ); in releaseInodeInfo()
43213 unixShmNode *pShmNode; /* The underlying unixShmNode object */ member
43239 unixShmNode *pShmNode = pFile->pShm->pShmNode; in unixFcntlExternalReader() local
43248 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixFcntlExternalReader()
43249 if( osFcntl(pShmNode->hShm, F_GETLK, &f)<0 ){ in unixFcntlExternalReader()
43254 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixFcntlExternalReader()
43273 unixShmNode *pShmNode; /* Apply locks to this open shared-memory segment */ in unixShmSystemLock() local
43277 pShmNode = pFile->pInode->pShmNode; in unixShmSystemLock()
43281 assert( pShmNode->nRef>=0 ); in unixShmSystemLock()
43286 assert( pShmNode->nRef>0 || unixMutexHeld() ); in unixShmSystemLock()
43287 assert( pShmNode->nRef==0 || sqlite3_mutex_held(pShmNode->pShmMutex) ); in unixShmSystemLock()
43292 assert( sqlite3_mutex_held(pShmNode->aMutex[ii]) ); in unixShmSystemLock()
43295 assert( sqlite3_mutex_held(pShmNode->pShmMutex) ); in unixShmSystemLock()
43296 assert( pShmNode->nRef>0 ); in unixShmSystemLock()
43307 if( pShmNode->hShm>=0 ){ in unixShmSystemLock()
43314 res = osSetPosixAdvisoryLock(pShmNode->hShm, &f, pFile); in unixShmSystemLock()
43375 unixShmNode *p = pFd->pInode->pShmNode; in unixShmPurge()
43399 p->pInode->pShmNode = 0; in unixShmPurge()
43413 static int unixLockSharedMemory(unixFile *pDbFd, unixShmNode *pShmNode){ in unixLockSharedMemory() argument
43439 if( osFcntl(pShmNode->hShm, F_GETLK, &lock)!=0 ) { in unixLockSharedMemory()
43442 if( pShmNode->isReadonly ){ in unixLockSharedMemory()
43443 pShmNode->isUnlocked = 1; in unixLockSharedMemory()
43465 if( rc==SQLITE_OK && robust_ftruncate(pShmNode->hShm, 3) ){ in unixLockSharedMemory()
43466 rc = unixLogError(SQLITE_IOERR_SHMOPEN,"ftruncate",pShmNode->zFilename); in unixLockSharedMemory()
43517 struct unixShmNode *pShmNode; /* The underlying mmapped file */ in unixOpenSharedMemory() local
43535 pShmNode = pInode->pShmNode; in unixOpenSharedMemory()
43536 if( pShmNode==0 ){ in unixOpenSharedMemory()
43556 pShmNode = sqlite3_malloc64( sizeof(*pShmNode) + nShmFilename ); in unixOpenSharedMemory()
43557 if( pShmNode==0 ){ in unixOpenSharedMemory()
43561 memset(pShmNode, 0, sizeof(*pShmNode)+nShmFilename); in unixOpenSharedMemory()
43562 zShm = pShmNode->zFilename = (char*)&pShmNode[1]; in unixOpenSharedMemory()
43571 pShmNode->hShm = -1; in unixOpenSharedMemory()
43572 pDbFd->pInode->pShmNode = pShmNode; in unixOpenSharedMemory()
43573 pShmNode->pInode = pDbFd->pInode; in unixOpenSharedMemory()
43575 pShmNode->pShmMutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST); in unixOpenSharedMemory()
43576 if( pShmNode->pShmMutex==0 ){ in unixOpenSharedMemory()
43584 pShmNode->aMutex[ii] = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST); in unixOpenSharedMemory()
43585 if( pShmNode->aMutex[ii]==0 ){ in unixOpenSharedMemory()
43596 pShmNode->hShm = robust_open(zShm, O_RDWR|O_CREAT|O_NOFOLLOW, in unixOpenSharedMemory()
43599 if( pShmNode->hShm<0 ){ in unixOpenSharedMemory()
43600 pShmNode->hShm = robust_open(zShm, O_RDONLY|O_NOFOLLOW, in unixOpenSharedMemory()
43602 if( pShmNode->hShm<0 ){ in unixOpenSharedMemory()
43606 pShmNode->isReadonly = 1; in unixOpenSharedMemory()
43613 robustFchown(pShmNode->hShm, sStat.st_uid, sStat.st_gid); in unixOpenSharedMemory()
43615 rc = unixLockSharedMemory(pDbFd, pShmNode); in unixOpenSharedMemory()
43621 p->pShmNode = pShmNode; in unixOpenSharedMemory()
43623 p->id = pShmNode->nextShmId++; in unixOpenSharedMemory()
43625 pShmNode->nRef++; in unixOpenSharedMemory()
43636 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixOpenSharedMemory()
43637 p->pNext = pShmNode->pFirst; in unixOpenSharedMemory()
43638 pShmNode->pFirst = p; in unixOpenSharedMemory()
43639 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixOpenSharedMemory()
43678 unixShmNode *pShmNode; in unixShmMap() local
43690 pShmNode = p->pShmNode; in unixShmMap()
43691 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmMap()
43692 if( pShmNode->isUnlocked ){ in unixShmMap()
43693 rc = unixLockSharedMemory(pDbFd, pShmNode); in unixShmMap()
43695 pShmNode->isUnlocked = 0; in unixShmMap()
43697 assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 ); in unixShmMap()
43698 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmMap()
43699 assert( pShmNode->hShm>=0 || pDbFd->pInode->bProcessLock==1 ); in unixShmMap()
43700 assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 ); in unixShmMap()
43705 if( pShmNode->nRegion<nReqRegion ){ in unixShmMap()
43710 pShmNode->szRegion = szRegion; in unixShmMap()
43712 if( pShmNode->hShm>=0 ){ in unixShmMap()
43717 if( osFstat(pShmNode->hShm, &sStat) ){ in unixShmMap()
43745 if( seekAndWriteFd(pShmNode->hShm, iPg*pgsz + pgsz-1,"",1,&x)!=1 ){ in unixShmMap()
43746 const char *zFile = pShmNode->zFilename; in unixShmMap()
43757 pShmNode->apRegion, nReqRegion*sizeof(char *) in unixShmMap()
43763 pShmNode->apRegion = apNew; in unixShmMap()
43764 while( pShmNode->nRegion<nReqRegion ){ in unixShmMap()
43768 if( pShmNode->hShm>=0 ){ in unixShmMap()
43770 pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE, in unixShmMap()
43771 MAP_SHARED, pShmNode->hShm, szRegion*(i64)pShmNode->nRegion in unixShmMap()
43774 rc = unixLogError(SQLITE_IOERR_SHMMAP, "mmap", pShmNode->zFilename); in unixShmMap()
43787 pShmNode->apRegion[pShmNode->nRegion+i] = &((char*)pMem)[szRegion*i]; in unixShmMap()
43789 pShmNode->nRegion += nShmPerMap; in unixShmMap()
43794 if( pShmNode->nRegion>iRegion ){ in unixShmMap()
43795 *pp = pShmNode->apRegion[iRegion]; in unixShmMap()
43799 if( pShmNode->isReadonly && rc==SQLITE_OK ) rc = SQLITE_READONLY; in unixShmMap()
43800 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmMap()
43812 static int assertLockingArrayOk(unixShmNode *pShmNode){ in assertLockingArrayOk() argument
43820 for(pX=pShmNode->pFirst; pX; pX=pX->pNext){ in assertLockingArrayOk()
43833 assert( 0==memcmp(pShmNode->aLock, aLock, sizeof(aLock)) ); in assertLockingArrayOk()
43834 return (memcmp(pShmNode->aLock, aLock, sizeof(aLock))==0); in assertLockingArrayOk()
43855 unixShmNode *pShmNode; /* The underlying file iNode */ in unixShmLock() local
43862 pShmNode = p->pShmNode; in unixShmLock()
43863 if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK; in unixShmLock()
43864 aLock = pShmNode->aLock; in unixShmLock()
43866 assert( pShmNode==pDbFd->pInode->pShmNode ); in unixShmLock()
43867 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmLock()
43875 assert( pShmNode->hShm>=0 || pDbFd->pInode->bProcessLock==1 ); in unixShmLock()
43876 assert( pShmNode->hShm<0 || pDbFd->pInode->bProcessLock==0 ); in unixShmLock()
43938 rc = sqlite3_mutex_try(pShmNode->aMutex[iMutex]); in unixShmLock()
43941 sqlite3_mutex_enter(pShmNode->aMutex[iMutex]); in unixShmLock()
43945 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmLock()
44022 assert( assertLockingArrayOk(pShmNode) ); in unixShmLock()
44029 sqlite3_mutex_leave(pShmNode->aMutex[iMutex]); in unixShmLock()
44032 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmLock()
44071 unixShmNode *pShmNode; /* The underlying shared-memory file */ in unixShmUnmap() local
44078 pShmNode = p->pShmNode; in unixShmUnmap()
44080 assert( pShmNode==pDbFd->pInode->pShmNode ); in unixShmUnmap()
44081 assert( pShmNode->pInode==pDbFd->pInode ); in unixShmUnmap()
44085 sqlite3_mutex_enter(pShmNode->pShmMutex); in unixShmUnmap()
44086 for(pp=&pShmNode->pFirst; (*pp)!=p; pp = &(*pp)->pNext){} in unixShmUnmap()
44092 sqlite3_mutex_leave(pShmNode->pShmMutex); in unixShmUnmap()
44098 assert( pShmNode->nRef>0 ); in unixShmUnmap()
44099 pShmNode->nRef--; in unixShmUnmap()
44100 if( pShmNode->nRef==0 ){ in unixShmUnmap()
44101 if( deleteFlag && pShmNode->hShm>=0 ){ in unixShmUnmap()
44102 osUnlink(pShmNode->zFilename); in unixShmUnmap()
51214 winShmNode *pShmNode; /* The underlying winShmNode object */ member
51283 static int winLockSharedMemory(winShmNode *pShmNode, DWORD nMs){
51284 HANDLE h = pShmNode->hSharedShm;
51287 assert( sqlite3_mutex_held(pShmNode->mutex) );
51293 if( pShmNode->isReadonly ){
51309 pShmNode->isUnlocked = 0;
51515 winShmNode *pShmNode = 0; /* The underlying mmapped file */ local
51527 pNew = sqlite3MallocZero( sizeof(*pShmNode) + (i64)nName + 17 );
51547 for(pShmNode = winShmNodeList; pShmNode; pShmNode=pShmNode->pNext){
51550 if( sqlite3StrICmp(pShmNode->zFilename, pNew->zFilename)==0 ) break;
51552 if( pShmNode==0 ){
51553 pShmNode = pNew;
51557 pShmNode->mutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST);
51558 if( pShmNode->mutex==0 ) rc = SQLITE_IOERR_NOMEM_BKPT;
51564 pShmNode->isReadonly = p->bReadonly;
51565 rc = winHandleOpen(pNew->zFilename, &pShmNode->isReadonly, &h);
51566 pShmNode->hSharedShm = h;
51572 pShmNode->pNext = winShmNodeList;
51573 winShmNodeList = pShmNode;
51576 sqlite3_mutex_free(pShmNode->mutex);
51577 if( pShmNode->hSharedShm!=INVALID_HANDLE_VALUE ){
51578 osCloseHandle(pShmNode->hSharedShm);
51586 p->pShmNode = pShmNode;
51587 pShmNode->nRef++;
51589 p->id = pShmNode->nextShmId++;
51597 assert( rc!=SQLITE_OK || pShmNode->isUnlocked==0 || pShmNode->nRegion==0 );
51613 winShmNode *pShmNode; /* The underlying shared-memory file */ local
51622 pShmNode = p->pShmNode;
51627 assert( pShmNode->nRef>0 );
51628 pShmNode->nRef--;
51629 if( pShmNode->nRef==0 ){
51651 winShmNode *pShmNode; local
51656 pShmNode = p->pShmNode;
51657 if( NEVER(pShmNode==0) ) return SQLITE_IOERR_SHMLOCK;
51788 winShmNode *pShmNode; local
51799 pShmNode = pShm->pShmNode;
51801 sqlite3_mutex_enter(pShmNode->mutex);
51802 if( pShmNode->isUnlocked ){
51804 assert( pShmNode->nRegion==0 );
51805 rc = winLockSharedMemory(pShmNode, winFileBusyTimeout(pDbFd));
51809 assert( szRegion==pShmNode->szRegion || pShmNode->nRegion==0 );
51810 if( pShmNode->nRegion<=iRegion ){
51811 HANDLE hShared = pShmNode->hSharedShm;
51816 pShmNode->szRegion = szRegion;
51844 pShmNode->aRegion, (iRegion+1)*sizeof(apNew[0])
51850 pShmNode->aRegion = apNew;
51852 if( pShmNode->isReadonly ){
51857 while( pShmNode->nRegion<=iRegion ){
51870 osGetCurrentProcessId(), pShmNode->nRegion, nByte,
51873 int iOffset = pShmNode->nRegion*szRegion;
51885 osGetCurrentProcessId(), pShmNode->nRegion, iOffset,
51889 pShmNode->lastErrno = osGetLastError();
51890 rc = winLogError(SQLITE_IOERR_SHMMAP, pShmNode->lastErrno,
51896 pShmNode->aRegion[pShmNode->nRegion].pMap = pMap;
51897 pShmNode->aRegion[pShmNode->nRegion].hMap = hMap;
51898 pShmNode->nRegion++;
51903 if( pShmNode->nRegion>iRegion ){
51906 char *p = (char *)pShmNode->aRegion[iRegion].pMap;
51911 if( pShmNode->isReadonly && rc==SQLITE_OK ){
51914 sqlite3_mutex_leave(pShmNode->mutex);