Unverified Commit 1adb8410 by Edward Thomson Committed by GitHub

Merge pull request #5719 from libgit2/ethomson/nothreads

Thread-free implementation
parents 87e4597c 8f305326
...@@ -51,6 +51,14 @@ jobs: ...@@ -51,6 +51,14 @@ jobs:
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
os: ubuntu-latest os: ubuntu-latest
- # Xenial, GCC, thread-free
container:
name: xenial
env:
CC: gcc
CMAKE_OPTIONS: -DTHREADSAFE=OFF -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
CMAKE_GENERATOR: Ninja
os: ubuntu-latest
- # Focal, Clang 10, mbedTLS, MemorySanitizer - # Focal, Clang 10, mbedTLS, MemorySanitizer
container: container:
name: focal name: focal
......
...@@ -50,7 +50,7 @@ struct walk_object { ...@@ -50,7 +50,7 @@ struct walk_object {
#ifdef GIT_THREADS #ifdef GIT_THREADS
# define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) git_mutex_##op(&(pb)->mtx) # define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) git_mutex_##op(&(pb)->mtx)
#else #else
# define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) GIT_UNUSED(pb) # define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) git__noop()
#endif #endif
#define git_packbuilder__cache_lock(pb) GIT_PACKBUILDER__MUTEX_OP(pb, cache_mutex, lock) #define git_packbuilder__cache_lock(pb) GIT_PACKBUILDER__MUTEX_OP(pb, cache_mutex, lock)
......
...@@ -103,8 +103,8 @@ GIT_INLINE(int) init_unlock(void) ...@@ -103,8 +103,8 @@ GIT_INLINE(int) init_unlock(void)
# error unknown threading model # error unknown threading model
#else #else
# define init_lock() git___noop() # define init_lock() git__noop()
# define init_unlock() git___noop() # define init_unlock() git__noop()
#endif #endif
......
...@@ -235,38 +235,36 @@ GIT_INLINE(int64_t) git_atomic64_get(git_atomic64 *a) ...@@ -235,38 +235,36 @@ GIT_INLINE(int64_t) git_atomic64_get(git_atomic64 *a)
#else #else
GIT_INLINE(int) git___noop(void) { return 0; } #define git_threads_global_init git__noop
#define git_threads_global_init git___noop
#define git_thread unsigned int #define git_thread unsigned int
#define git_thread_create(thread, start_routine, arg) git___noop() #define git_thread_create(thread, start_routine, arg) git__noop()
#define git_thread_join(id, status) git___noop() #define git_thread_join(id, status) git__noop()
/* Pthreads Mutex */ /* Pthreads Mutex */
#define git_mutex unsigned int #define git_mutex unsigned int
#define git_mutex_init(a) git___noop() #define git_mutex_init(a) git__noop()
#define git_mutex_init(a) git___noop() #define git_mutex_init(a) git__noop()
#define git_mutex_lock(a) git___noop() #define git_mutex_lock(a) git__noop()
#define git_mutex_unlock(a) git___noop() #define git_mutex_unlock(a) git__noop()
#define git_mutex_free(a) git___noop() #define git_mutex_free(a) git__noop()
/* Pthreads condition vars */ /* Pthreads condition vars */
#define git_cond unsigned int #define git_cond unsigned int
#define git_cond_init(c) git___noop() #define git_cond_init(c) git__noop()
#define git_cond_free(c) git___noop() #define git_cond_free(c) git__noop()
#define git_cond_wait(c, l) git___noop() #define git_cond_wait(c, l) git__noop()
#define git_cond_signal(c) git___noop() #define git_cond_signal(c) git__noop()
#define git_cond_broadcast(c) git___noop() #define git_cond_broadcast(c) git__noop()
/* Pthreads rwlock */ /* Pthreads rwlock */
#define git_rwlock unsigned int #define git_rwlock unsigned int
#define git_rwlock_init(a) git___noop() #define git_rwlock_init(a) git__noop()
#define git_rwlock_rdlock(a) git___noop() #define git_rwlock_rdlock(a) git__noop()
#define git_rwlock_rdunlock(a) git___noop() #define git_rwlock_rdunlock(a) git__noop()
#define git_rwlock_wrlock(a) git___noop() #define git_rwlock_wrlock(a) git__noop()
#define git_rwlock_wrunlock(a) git___noop() #define git_rwlock_wrunlock(a) git__noop()
#define git_rwlock_free(a) git___noop() #define git_rwlock_free(a) git__noop()
#define GIT_RWLOCK_STATIC_INIT 0 #define GIT_RWLOCK_STATIC_INIT 0
......
...@@ -414,6 +414,8 @@ GIT_INLINE(double) git__timer(void) ...@@ -414,6 +414,8 @@ GIT_INLINE(double) git__timer(void)
extern int git__getenv(git_buf *out, const char *name); extern int git__getenv(git_buf *out, const char *name);
GIT_INLINE(int) git__noop(void) { return 0; }
#include "alloc.h" #include "alloc.h"
#endif #endif
...@@ -20,6 +20,7 @@ void test_pack_threadsafety__cleanup(void) ...@@ -20,6 +20,7 @@ void test_pack_threadsafety__cleanup(void)
cl_git_pass(git_libgit2_opts(GIT_OPT_SET_MWINDOW_FILE_LIMIT, original_mwindow_file_limit)); cl_git_pass(git_libgit2_opts(GIT_OPT_SET_MWINDOW_FILE_LIMIT, original_mwindow_file_limit));
} }
#ifdef GIT_THREADS
static void *get_status(void *arg) static void *get_status(void *arg)
{ {
const char *repo_path = (const char *)arg; const char *repo_path = (const char *)arg;
...@@ -33,6 +34,7 @@ static void *get_status(void *arg) ...@@ -33,6 +34,7 @@ static void *get_status(void *arg)
return NULL; return NULL;
} }
#endif
void test_pack_threadsafety__open_repo_in_multiple_threads(void) void test_pack_threadsafety__open_repo_in_multiple_threads(void)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment