#include "wiper.h"
#include "hgfsDirNotify.h"
#include "hgfsTransport.h"
+#include "userlock.h"
#if defined(_WIN32)
#include <io.h>
Bool found = FALSE;
HgfsFileNode *fileNode = NULL;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
fileNode = HgfsHandle2FileNode(handle, session);
if (fileNode == NULL) {
goto exit;
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
Bool found = FALSE;
HgfsFileNode *fileNode = NULL;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
fileNode = HgfsHandle2FileNode(handle, session);
if (fileNode == NULL) {
goto exit;
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
ASSERT(localId);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
fileNode = HgfsHandle2FileNode(handle, session);
if (fileNode == NULL) {
goto exit;
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
ASSERT(lock);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
fileNode = HgfsHandle2FileNode(handle, session);
if (fileNode == NULL) {
goto exit;
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
#else
ASSERT(session);
ASSERT(session->nodeArray);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
for (i = 0; i < session->numNodes; i++) {
existingFileNode = &session->nodeArray[i];
}
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
return found;
}
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
existingFileNode = HgfsHandle2FileNode(handle, session);
if (existingFileNode == NULL) {
found = (nameStatus == HGFS_NAME_STATUS_COMPLETE);
exit_unlock:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
return found;
}
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
existingFileNode = HgfsHandle2FileNode(handle, session);
if (existingFileNode == NULL) {
found = TRUE;
exit_unlock:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
*fileName = name;
*fileNameSize = nameSize;
ASSERT(session);
ASSERT(session->nodeArray);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
for (i = 0; i < session->numNodes; i++) {
HgfsFileNode *existingFileNode = &session->nodeArray[i];
}
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
#else
ASSERT(copy);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
original = HgfsHandle2FileNode(handle, session);
if (original == NULL) {
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return found;
}
ASSERT(sequentialOpen);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
node = HgfsHandle2FileNode(handle, session);
if (node == NULL) {
success = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return success;
}
ASSERT(sharedFolderOpen);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
node = HgfsHandle2FileNode(handle, session);
if (node == NULL) {
success = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return success;
}
HgfsFileNode *node;
Bool updated = FALSE;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
node = HgfsHandle2FileNode(handle, session);
if (node == NULL) {
updated = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return updated;
}
ASSERT(session);
ASSERT(session->nodeArray);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
for (i = 0; i < session->numNodes; i++) {
existingFileNode = &session->nodeArray[i];
}
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return updated;
}
HgfsFileNode *node;
Bool updated = FALSE;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
node = HgfsHandle2FileNode(handle, session);
if (node == NULL) {
updated = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return updated;
}
HgfsFreeFileNode(HgfsHandle handle, // IN: Handle to free
HgfsSessionInfo *session) // IN: Session info
{
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
HgfsFreeFileNodeInternal(handle, session);
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
}
{
Bool allowed;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
allowed = session->numCachedLockedNodes < MAX_LOCKED_FILENODES;
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return allowed;
}
ASSERT(copy);
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
original = HgfsSearchHandle2Search(handle, session);
if (original == NULL) {
goto exit;
found = TRUE;
exit:
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
return found;
}
HgfsSearch *search;
Bool success = FALSE;
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
search = HgfsSearchHandle2Search(handle, session);
if (search != NULL) {
success = TRUE;
}
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
return success;
}
HgfsSearch *search;
DirectoryEntry *dent = NULL;
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
search = HgfsSearchHandle2Search(handle, session);
if (search == NULL || search->dents == NULL) {
}
out:
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
return dent;
}
newBufferLen = strlen(newLocalName);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
for (i = 0; i < session->numNodes; i++) {
fileNode = &session->nodeArray[i];
}
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
}
* Initialize all our locks first as these can fail.
*/
- session->fileIOLock = HGFS_LOCK_NEW("HgfsFileIOLock");
+ session->fileIOLock = MXUser_CreateExclLock("HgfsFileIOLock", RANK_UNRANKED);
if (session->fileIOLock == NULL) {
free(session);
LOG(4, ("%s: Could not create node array sync mutex.\n", __FUNCTION__));
return FALSE;
}
- session->nodeArrayLock = HGFS_LOCK_NEW("HgfsNodeArrayLock");
+ session->nodeArrayLock = MXUser_CreateExclLock("HgfsNodeArrayLock", RANK_UNRANKED);
if (session->nodeArrayLock == NULL) {
- HGFS_LOCK_DESTROY(session->fileIOLock);
+ MXUser_DestroyExclLock(session->fileIOLock);
free(session);
LOG(4, ("%s: Could not create node array sync mutex.\n", __FUNCTION__));
return FALSE;
}
- session->searchArrayLock = HGFS_LOCK_NEW("HgfsSearchArrayLock");
+ session->searchArrayLock = MXUser_CreateExclLock("HgfsSearchArrayLock", RANK_UNRANKED);
if (session->searchArrayLock == NULL) {
- HGFS_LOCK_DESTROY(session->fileIOLock);
- HGFS_LOCK_DESTROY(session->nodeArrayLock);
+ MXUser_DestroyExclLock(session->fileIOLock);
+ MXUser_DestroyExclLock(session->nodeArrayLock);
free(session);
LOG(4, ("%s: Could not create search array sync mutex.\n", __FUNCTION__));
ASSERT(session->nodeArray);
ASSERT(session->searchArray);
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
LOG(4, ("%s: exiting.\n", __FUNCTION__));
/* Recycle all nodes that are still in use, then destroy the node pool. */
free(session->nodeArray);
session->nodeArray = NULL;
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
/*
* Recycle all searches that are still in use, then destroy the
* search pool.
*/
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
for (i = 0; i < session->numSearches; i++) {
if (DblLnkLst_IsLinked(&session->searchArray[i].links)) {
free(session->searchArray);
session->searchArray = NULL;
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
/* Teardown the locks for the sessions and destroy itself. */
- HGFS_LOCK_DESTROY(session->nodeArrayLock);
- HGFS_LOCK_DESTROY(session->searchArrayLock);
- HGFS_LOCK_DESTROY(session->fileIOLock);
+ MXUser_DestroyExclLock(session->nodeArrayLock);
+ MXUser_DestroyExclLock(session->searchArrayLock);
+ MXUser_DestroyExclLock(session->fileIOLock);
free(session);
}
LOG(4, ("%s: Beginning\n", __FUNCTION__));
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
/*
* Iterate over each node, skipping those that are unused. For each node,
}
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
/*
* Iterate over each search, skipping those that are on the free list. For
}
}
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
LOG(4, ("%s: Ending\n", __FUNCTION__));
}
unsigned int i;
HgfsSearch *search;
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
search = HgfsSearchHandle2Search(searchHandle, session);
if (search != NULL) {
}
}
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
#endif
}
ASSERT(handle);
ASSERT(shareName);
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
search = HgfsAddNewSearch(baseDir, DIRECTORY_SEARCH_TYPE_DIR, shareName,
rootDir, session);
*handle = HgfsSearch2SearchHandle(search);
out:
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
return status;
}
ASSERT(cleanupName);
ASSERT(handle);
- HGFS_LOCK_ACQUIRE(session->searchArrayLock);
+ MXUser_AcquireExclLock(session->searchArrayLock);
search = HgfsAddNewSearch("", type, "", "", session);
if (!search) {
*handle = HgfsSearch2SearchHandle(search);
out:
- HGFS_LOCK_RELEASE(session->searchArrayLock);
+ MXUser_ReleaseExclLock(session->searchArrayLock);
return status;
}
{
Bool removed = FALSE;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
removed = HgfsRemoveFromCacheInternal(handle, session);
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return removed;
}
{
Bool cached = FALSE;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
cached = HgfsIsCachedInternal(handle, session);
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return cached;
}
{
Bool added = FALSE;
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
added = HgfsAddToCacheInternal(handle, session);
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return added;
}
sharedFolderOpen = TRUE;
}
- HGFS_LOCK_ACQUIRE(session->nodeArrayLock);
+ MXUser_AcquireExclLock(session->nodeArrayLock);
node = HgfsAddNewFileNode(openInfo, localId, fileDesc, append, len,
openInfo->cpName, sharedFolderOpen, session);
if (node == NULL) {
LOG(4, ("%s: Failed to add new node.\n", __FUNCTION__));
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
HgfsCloseFile(fileDesc, NULL);
return FALSE;
HgfsCloseFile(fileDesc, NULL);
LOG(4, ("%s: Failed to add node to the cache.\n", __FUNCTION__));
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
return FALSE;
}
- HGFS_LOCK_RELEASE(session->nodeArrayLock);
+ MXUser_ReleaseExclLock(session->nodeArrayLock);
/* Only after everything is successful, save the handle in the open info. */
openInfo->file = handle;