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:
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
CMAKE_GENERATOR: Ninja
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
container:
name: focal
......
......@@ -50,7 +50,7 @@ struct walk_object {
#ifdef GIT_THREADS
# define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) git_mutex_##op(&(pb)->mtx)
#else
# define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) GIT_UNUSED(pb)
# define GIT_PACKBUILDER__MUTEX_OP(pb, mtx, op) git__noop()
#endif
#define git_packbuilder__cache_lock(pb) GIT_PACKBUILDER__MUTEX_OP(pb, cache_mutex, lock)
......
......@@ -103,8 +103,8 @@ GIT_INLINE(int) init_unlock(void)
# error unknown threading model
#else
# define init_lock() git___noop()
# define init_unlock() git___noop()
# define init_lock() git__noop()
# define init_unlock() git__noop()
#endif
......
......@@ -235,38 +235,36 @@ GIT_INLINE(int64_t) git_atomic64_get(git_atomic64 *a)
#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_create(thread, start_routine, arg) git___noop()
#define git_thread_join(id, status) git___noop()
#define git_thread_create(thread, start_routine, arg) git__noop()
#define git_thread_join(id, status) git__noop()
/* Pthreads Mutex */
#define git_mutex unsigned int
#define git_mutex_init(a) git___noop()
#define git_mutex_init(a) git___noop()
#define git_mutex_lock(a) git___noop()
#define git_mutex_unlock(a) git___noop()
#define git_mutex_free(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_unlock(a) git__noop()
#define git_mutex_free(a) git__noop()
/* Pthreads condition vars */
#define git_cond unsigned int
#define git_cond_init(c) git___noop()
#define git_cond_free(c) git___noop()
#define git_cond_wait(c, l) git___noop()
#define git_cond_signal(c) git___noop()
#define git_cond_broadcast(c) git___noop()
#define git_cond_init(c) git__noop()
#define git_cond_free(c) git__noop()
#define git_cond_wait(c, l) git__noop()
#define git_cond_signal(c) git__noop()
#define git_cond_broadcast(c) git__noop()
/* Pthreads rwlock */
#define git_rwlock unsigned int
#define git_rwlock_init(a) git___noop()
#define git_rwlock_rdlock(a) git___noop()
#define git_rwlock_rdunlock(a) git___noop()
#define git_rwlock_wrlock(a) git___noop()
#define git_rwlock_wrunlock(a) git___noop()
#define git_rwlock_free(a) git___noop()
#define git_rwlock_init(a) git__noop()
#define git_rwlock_rdlock(a) git__noop()
#define git_rwlock_rdunlock(a) git__noop()
#define git_rwlock_wrlock(a) git__noop()
#define git_rwlock_wrunlock(a) git__noop()
#define git_rwlock_free(a) git__noop()
#define GIT_RWLOCK_STATIC_INIT 0
......
......@@ -414,6 +414,8 @@ GIT_INLINE(double) git__timer(void)
extern int git__getenv(git_buf *out, const char *name);
GIT_INLINE(int) git__noop(void) { return 0; }
#include "alloc.h"
#endif
......@@ -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));
}
#ifdef GIT_THREADS
static void *get_status(void *arg)
{
const char *repo_path = (const char *)arg;
......@@ -33,6 +34,7 @@ static void *get_status(void *arg)
return NULL;
}
#endif
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