summaryrefslogtreecommitdiff
path: root/src/linux/thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/linux/thread.c')
-rw-r--r--src/linux/thread.c129
1 files changed, 0 insertions, 129 deletions
diff --git a/src/linux/thread.c b/src/linux/thread.c
deleted file mode 100644
index b6295ef..0000000
--- a/src/linux/thread.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-* BSD 2-Clause “Simplified” License
-* Copyright (c) 2019, Aldrik Ramaekers, aldrik.ramaekers@protonmail.com
-* All rights reserved.
-*/
-
-// stop gcc from reporting implicit declaration warning..
-extern long int syscall (long int __sysno, ...);
-extern int pthread_tryjoin_np(pthread_t thread, void **retval);
-
-thread thread_start(void *(*start_routine) (void *), void *arg)
-{
- thread result;
- result.valid = false;
-
- pthread_attr_t attr;
- int attr_init_result = pthread_attr_init(&attr);
- if (attr_init_result)
- return result;
-
- int start_thread_result = pthread_create(&result.thread, &attr, start_routine, arg);
- if (start_thread_result)
- {
- pthread_attr_destroy(&attr);
- return result;
- }
-
- result.valid = true;
- pthread_attr_destroy(&attr);
-
- return result;
-}
-
-inline void thread_detach(thread *thread)
-{
- if (thread->valid)
- {
- pthread_detach(thread->thread);
- }
-}
-
-inline void thread_join(thread *thread)
-{
- if (thread->valid)
- {
- void *retval;
- pthread_join(thread->thread, &retval);
- }
-}
-
-bool thread_tryjoin(thread *thread)
-{
- if (thread->valid)
- {
- void *retval;
- bool thread_joined = !pthread_tryjoin_np(thread->thread, &retval);
- return thread_joined;
- }
- return false;
-}
-
-inline void thread_stop(thread *thread)
-{
- if (thread->valid)
- {
- pthread_cancel(thread->thread);
- }
-}
-
-mutex mutex_create()
-{
- mutex result;
-
- pthread_mutexattr_t attr;
- pthread_mutexattr_init(&attr);
- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_DEFAULT);
-
- pthread_mutex_init(&result.mutex, &attr);
-
- pthread_mutexattr_destroy(&attr);
-
- return result;
-}
-
-mutex mutex_create_recursive()
-{
- mutex result;
-
- pthread_mutexattr_t attr;
- pthread_mutexattr_init(&attr);
- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-
- pthread_mutex_init(&result.mutex, &attr);
-
- pthread_mutexattr_destroy(&attr);
-
- return result;
-}
-
-inline void mutex_lock(mutex *mutex)
-{
- pthread_mutex_lock(&mutex->mutex);
-}
-
-inline bool mutex_trylock(mutex *mutex)
-{
- return !pthread_mutex_trylock(&mutex->mutex);
-}
-
-inline void mutex_unlock(mutex *mutex)
-{
- pthread_mutex_unlock(&mutex->mutex);
-}
-
-inline void mutex_destroy(mutex *mutex)
-{
- mutex_unlock(mutex);
- pthread_mutex_destroy(&mutex->mutex);
-}
-
-inline u32 thread_get_id()
-{
- return (u32)syscall(__NR_gettid);
-}
-
-inline void thread_sleep(u64 microseconds)
-{
- usleep(microseconds);
-}