diff --git a/aqvm/base/CMakeLists.txt b/aqvm/base/CMakeLists.txt index 38fc593..d92d9ef 100644 --- a/aqvm/base/CMakeLists.txt +++ b/aqvm/base/CMakeLists.txt @@ -9,21 +9,21 @@ include_directories(${PROJECT_SOURCE_DIR}) set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/base.c) add_subdirectory(file) -add_subdirectory(time) -add_subdirectory(process) -add_subdirectory(threading) add_subdirectory(hash) add_subdirectory(io) add_subdirectory(linked_list) add_subdirectory(logging) +add_subdirectory(process) +add_subdirectory(threading) +add_subdirectory(time) add_library(AqvmBase STATIC ${SOURCES}) target_link_libraries(AqvmBase PRIVATE AqvmBaseFile) -target_link_libraries(AqvmBase PRIVATE AqvmBaseTime) -target_link_libraries(AqvmBase PRIVATE AqvmBaseProcess) -target_link_libraries(AqvmBase PRIVATE AqvmBaseThreading) target_link_libraries(AqvmBase PRIVATE AqvmBaseHash) target_link_libraries(AqvmBase PRIVATE AqvmBaseIo) target_link_libraries(AqvmBase PRIVATE AqvmBaseLinkedList) -target_link_libraries(AqvmBase PRIVATE AqvmBaseLogging) \ No newline at end of file +target_link_libraries(AqvmBase PRIVATE AqvmBaseLogging) +target_link_libraries(AqvmBase PRIVATE AqvmBaseProcess) +target_link_libraries(AqvmBase PRIVATE AqvmBaseThreading) +target_link_libraries(AqvmBase PRIVATE AqvmBaseTime) \ No newline at end of file diff --git a/aqvm/base/file/CMakeLists.txt b/aqvm/base/file/CMakeLists.txt index b48266a..380294a 100644 --- a/aqvm/base/file/CMakeLists.txt +++ b/aqvm/base/file/CMakeLists.txt @@ -20,4 +20,5 @@ if (WIN32) target_link_libraries(AqvmBaseFile PRIVATE AqvmBaseFileWindows) endif() -target_link_libraries(AqvmBaseFile PRIVATE AqvmBaseFileIdentifier) \ No newline at end of file +target_link_libraries(AqvmBaseFile PRIVATE AqvmBaseFileIdentifier) +target_link_libraries(AqvmBaseFile PRIVATE AqvmBaseThreadingFileLock) \ No newline at end of file diff --git a/aqvm/base/file/file.c b/aqvm/base/file/file.c index b26de27..2b15e72 100644 --- a/aqvm/base/file/file.c +++ b/aqvm/base/file/file.c @@ -240,7 +240,7 @@ struct AqvmBaseFile_File* AqvmBaseFile_fopen(const char* filename, return NULL; } - if (AqvmBaseFileIdentifier_GetIdentifier(filename, &stream->identifier) != + if (AqvmBaseFileIdentifier_GetIdentifier(filename, stream->identifier) != 0) { // TODO fclose(stream->file); diff --git a/aqvm/base/file/identifier/unix/identifier.c b/aqvm/base/file/identifier/unix/identifier.c index be25f03..e669056 100644 --- a/aqvm/base/file/identifier/unix/identifier.c +++ b/aqvm/base/file/identifier/unix/identifier.c @@ -45,8 +45,8 @@ uint32_t AqvmBaseFileIdentifierUnix_GetIdentifierHash( } bool AqvmBaseFileIdentifierUnix_IsEqual( - const AqvmBaseFileIdentifier_Identifier* identifier1, - const AqvmBaseFileIdentifier_Identifier* identifier2) { + const AqvmBaseFileIdentifierUnix_Identifier* identifier1, + const AqvmBaseFileIdentifierUnix_Identifier* identifier2) { if (identifier1 == NULL || identifier2 == NULL) { // TODO return false; @@ -54,7 +54,8 @@ bool AqvmBaseFileIdentifierUnix_IsEqual( if (identifier1->st_dev == identifier2->st_dev || identifier1->st_ino == identifier2->st_ino) { - return true; + return true; } return false; +} #endif \ No newline at end of file diff --git a/aqvm/base/file/identifier/unix/identifier.h b/aqvm/base/file/identifier/unix/identifier.h index 818da80..d541f43 100644 --- a/aqvm/base/file/identifier/unix/identifier.h +++ b/aqvm/base/file/identifier/unix/identifier.h @@ -11,8 +11,6 @@ #include #include -#include "aqvm/base/file/file.h" - typedef struct { dev_t st_dev; ino_t st_ino; @@ -25,8 +23,8 @@ uint32_t AqvmBaseFileIdentifierUnix_GetIdentifierHash( const AqvmBaseFileIdentifierUnix_Identifier* identifier); bool AqvmBaseFileIdentifierUnix_IsEqual( - const AqvmBaseFileIdentifier_Identifier* identifier1, - const AqvmBaseFileIdentifier_Identifier* identifier2); + const AqvmBaseFileIdentifierUnix_Identifier* identifier1, + const AqvmBaseFileIdentifierUnix_Identifier* identifier2); #endif diff --git a/aqvm/base/file/identifier/windows/identifier.c b/aqvm/base/file/identifier/windows/identifier.c index a035e8a..59777cc 100644 --- a/aqvm/base/file/identifier/windows/identifier.c +++ b/aqvm/base/file/identifier/windows/identifier.c @@ -58,8 +58,8 @@ uint32_t AqvmBaseFileIdentifierWindows_GetIdentifierHash( } bool AqvmBaseFileIdentifierWindows_IsEqual( - const AqvmBaseFileIdentifier_Identifier* identifier1, - const AqvmBaseFileIdentifier_Identifier* identifier2) { + const AqvmBaseFileIdentifierWindows_Identifier* identifier1, + const AqvmBaseFileIdentifierWindows_Identifier* identifier2) { if (identifier1 == NULL || identifier2 == NULL) { // TODO return false; diff --git a/aqvm/base/file/identifier/windows/identifier.h b/aqvm/base/file/identifier/windows/identifier.h index 972e298..e890f5c 100644 --- a/aqvm/base/file/identifier/windows/identifier.h +++ b/aqvm/base/file/identifier/windows/identifier.h @@ -10,8 +10,6 @@ #include #include -#include "aqvm/base/file/file.h" - typedef struct { DWORD dwVolumeSerialNumber; DWORD nFileIndexHigh; @@ -25,8 +23,8 @@ uint32_t AqvmBaseFileIdentifierWindows_GetIdentifierHash( const AqvmBaseFileIdentifierWindows_Identifier* identifier); bool AqvmBaseFileIdentifierWindows_IsEqual( - const AqvmBaseFileIdentifier_Identifier* identifier1, - const AqvmBaseFileIdentifier_Identifier* identifier2); + const AqvmBaseFileIdentifierWindows_Identifier* identifier1, + const AqvmBaseFileIdentifierWindows_Identifier* identifier2); #endif #endif \ No newline at end of file diff --git a/aqvm/base/linked_list/linked_list.c b/aqvm/base/linked_list/linked_list.c index 3f98966..65d75c1 100644 --- a/aqvm/base/linked_list/linked_list.c +++ b/aqvm/base/linked_list/linked_list.c @@ -37,11 +37,13 @@ int AqvmBaseLinkedList_CloseLinkedList( return -1; } + struct AqvmBaseLinkedList_Node* delete_node = list->head; + struct AqvmBaseLinkedList_Node* next_node = NULL; while (list->capacity > 0) { - if (AqvmBaseLinkedList_DeleteNode(list, 0) != 0) { - // TODO - return -2; - } + next_node = delete_node->next; + free(delete_node); + delete_node = next_node; + --list->capacity; } return 0; } diff --git a/aqvm/base/threading/file_lock/file_lock.c b/aqvm/base/threading/file_lock/file_lock.c index f02b9e2..9c0af21 100644 --- a/aqvm/base/threading/file_lock/file_lock.c +++ b/aqvm/base/threading/file_lock/file_lock.c @@ -67,11 +67,17 @@ int AqvmBaseThreadingFileLock_AddFileLock(struct AqvmBaseFile_File* file) { } int AqvmBaseThreadingFileLock_RemoveFileLock(struct AqvmBaseFile_File* file) { - // TODO - if (file == NULL) { + if (file == NULL || file->lock == NULL || file->lock->lock_count == 0) { // TODO return -1; } + + --file->lock->lock_count; + /*if (file->lock->lock_count = 0) { + AqvmBaseLinkedList_DeleteNode(AqvmBaseLinkedList_GetData( + &AqvmBaseThreadingFileLock_fileLockTable.data, + AqvmBaseFileIdentifier_GetIdentifierHash(file->identifier) % 1024)); + }*/ } struct AqvmBaseFileReadWriteLock_ReadWriteLock*