aboutsummaryrefslogtreecommitdiff
path: root/include/std
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-03-22 20:48:40 +0100
committerdec05eba <dec05eba@protonmail.com>2020-07-25 14:36:46 +0200
commit4f308829ad0e81a59971e172284c018cf2bdca3d (patch)
treeeb11a69a471e31aa7be8e46bce6d1b3ded28e056 /include/std
parent5df7f92e715ba764ee57f65d78e73111492bb64c (diff)
Add mutex for lhs expr, add error for missing lhs expr for func, struct
TODO: Use mutex in lhs expr and set resolved_type
Diffstat (limited to 'include/std')
-rw-r--r--include/std/scoped_allocator.h4
-rw-r--r--include/std/thread.h13
2 files changed, 12 insertions, 5 deletions
diff --git a/include/std/scoped_allocator.h b/include/std/scoped_allocator.h
index 9090767..d7ec1e1 100644
--- a/include/std/scoped_allocator.h
+++ b/include/std/scoped_allocator.h
@@ -15,7 +15,10 @@ struct ScopedAllocatorNode {
struct ScopedAllocator {
ScopedAllocatorNode head;
ScopedAllocatorNode *current;
+ /* TODO: Use linked-list instead, since the elements are dynamically allocated anyways */
+ /* Find another way to store mutexes */
Buffer/*<Buffer*>*/ buffers;
+ Buffer/*<amal_mutex*>*/ mutexes;
};
CHECK_RESULT int scoped_allocator_node_init(ScopedAllocatorNode *self);
@@ -25,5 +28,6 @@ CHECK_RESULT int scoped_allocator_init(ScopedAllocator *self);
void scoped_allocator_deinit(ScopedAllocator *self);
CHECK_RESULT int scoped_allocator_alloc(ScopedAllocator *self, usize size, void **mem);
CHECK_RESULT int scoped_allocator_add_buffer(ScopedAllocator *self, Buffer *buffer);
+CHECK_RESULT int scoped_allocator_create_mutex(ScopedAllocator *self, amal_mutex **mutex);
#endif
diff --git a/include/std/thread.h b/include/std/thread.h
index 6eedb08..356ebf0 100644
--- a/include/std/thread.h
+++ b/include/std/thread.h
@@ -13,6 +13,8 @@ typedef void* (AmalThreadCallbackFunc)(void *userdata);
#define AMAL_THREAD_ERR -1
#define AMAL_THREAD_NOT_JOINABLE -23
+/*#define AMAL_MUTEX_DEBUG*/
+
struct amal_thread {
pthread_t thread_id;
pthread_attr_t thread_attr;
@@ -28,7 +30,9 @@ typedef enum {
struct amal_mutex {
pthread_mutex_t mutex;
+ #ifdef AMAL_MUTEX_DEBUG
const char *lock_identifier;
+ #endif
bool locked;
pthread_t owner_thread;
};
@@ -39,6 +43,10 @@ CHECK_RESULT int amal_thread_deinit(amal_thread *self);
CHECK_RESULT int amal_thread_detach(amal_thread *self);
CHECK_RESULT int amal_thread_join(amal_thread *self, void **result);
+bool amal_thread_is_main();
+/* Returns 0 if the number of usable threads is unknown */
+int amal_get_usable_thread_count();
+
void amal_mutex_init(amal_mutex *self);
void amal_mutex_deinit(amal_mutex *self);
CHECK_RESULT int amal_mutex_lock(amal_mutex *self, const char *lock_identifier);
@@ -46,9 +54,4 @@ CHECK_RESULT int amal_mutex_lock(amal_mutex *self, const char *lock_identifier);
CHECK_RESULT int amal_mutex_unlock(amal_mutex *self);
void amal_mutex_tryunlock(amal_mutex *self);
-bool amal_thread_is_main();
-
-/* Returns 0 if the number of usable threads is unknown */
-int amal_get_usable_thread_count();
-
#endif